diff --git a/src/sunstone/public/dist/main.js b/src/sunstone/public/dist/main.js
new file mode 100644
index 0000000000..cc3e19f2a0
--- /dev/null
+++ b/src/sunstone/public/dist/main.js
@@ -0,0 +1,59 @@
+function Websock(){"use strict";this._websocket=null,this._rQ=[],this._rQi=0,this._rQmax=1e4,this._sQ=[],this._mode="base64",this.maxBufferedAmount=200,this._eventHandlers={message:function(){},open:function(){},close:function(){},error:function(){}}}function DES(t){"use strict";function e(t){var e,a,n,s,i,r,o,l,c,d,u=[],p=[],h=[];for(a=0,n=56;56>a;++a,n-=8)n+=-5>n?65:-3>n?31:-1>n?63:27===n?35:0,s=7&n,u[a]=0!==(t[n>>>3]&1<<s)?1:0;for(e=0;16>e;++e){for(s=e<<1,i=s+1,h[s]=h[i]=0,r=28;59>r;r+=28)for(a=r-28;r>a;++a)n=a+g[e],p[a]=r>n?u[n]:u[n-28];for(a=0;24>a;++a)0!==p[v[a]]&&(h[s]|=1<<23-a),0!==p[v[a+24]]&&(h[i]|=1<<23-a)}for(e=0,c=0,d=0;16>e;++e)o=h[c++],l=h[c++],w[d]=(16515072&o)<<6,w[d]|=(4032&o)<<10,w[d]|=(16515072&l)>>>10,w[d]|=(4032&l)>>>6,++d,w[d]=(258048&o)<<12,w[d]|=(63&o)<<16,w[d]|=(258048&l)>>>4,w[d]|=63&l,++d}function a(t){var e,a,n,s,i=0,r=t.slice(),o=0;for(a=r[i++]<<24|r[i++]<<16|r[i++]<<8|r[i++],n=r[i++]<<24|r[i++]<<16|r[i++]<<8|r[i++],s=252645135&(a>>>4^n),n^=s,a^=s<<4,s=65535&(a>>>16^n),n^=s,a^=s<<16,s=858993459&(n>>>2^a),a^=s,n^=s<<2,s=16711935&(n>>>8^a),a^=s,n^=s<<8,n=n<<1|n>>>31&1,s=2863311530&(a^n),a^=s,n^=s,a=a<<1|a>>>31&1,i=0;8>i;++i)s=n<<28|n>>>4,s^=w[o++],e=_[63&s],e|=f[s>>>8&63],e|=p[s>>>16&63],e|=d[s>>>24&63],s=n^w[o++],e|=b[63&s],e|=m[s>>>8&63],e|=h[s>>>16&63],e|=u[s>>>24&63],a^=e,s=a<<28|a>>>4,s^=w[o++],e=_[63&s],e|=f[s>>>8&63],e|=p[s>>>16&63],e|=d[s>>>24&63],s=a^w[o++],e|=b[63&s],e|=m[s>>>8&63],e|=h[s>>>16&63],e|=u[s>>>24&63],n^=e;for(n=n<<31|n>>>1,s=2863311530&(a^n),a^=s,n^=s,a=a<<31|a>>>1,s=16711935&(a>>>8^n),n^=s,a^=s<<8,s=858993459&(a>>>2^n),n^=s,a^=s<<2,s=65535&(n>>>16^a),a^=s,n^=s<<16,s=252645135&(n>>>4^a),a^=s,n^=s<<4,s=[n,a],i=0;8>i;i++)r[i]=(s[i>>>2]>>>8*(3-i%4))%256,r[i]<0&&(r[i]+=256);return r}function n(t){return a(t.slice(0,8)).concat(a(t.slice(8,16)))}var s,i,r,o,l,c,d,u,p,h,f,m,_,b,v=[13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,25,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31],g=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],y=0,w=[];return s=65536,i=1<<24,r=s|i,o=4,l=1024,c=o|l,d=[r|l,y|y,s|y,r|c,r|o,s|c,y|o,s|y,y|l,r|l,r|c,y|l,i|c,r|o,i|y,y|o,y|c,i|l,i|l,s|l,s|l,r|y,r|y,i|c,s|o,i|o,i|o,s|o,y|y,y|c,s|c,i|y,s|y,r|c,y|o,r|y,r|l,i|y,i|y,y|l,r|o,s|y,s|l,i|o,y|l,y|o,i|c,s|c,r|c,s|o,r|y,i|c,i|o,y|c,s|c,r|l,y|c,i|l,i|l,y|y,s|o,s|l,y|y,r|o],s=1<<20,i=1<<31,r=s|i,o=32,l=32768,c=o|l,u=[r|c,i|l,y|l,s|c,s|y,y|o,r|o,i|c,i|o,r|c,r|l,i|y,i|l,s|y,y|o,r|o,s|l,s|o,i|c,y|y,i|y,y|l,s|c,r|y,s|o,i|o,y|y,s|l,y|c,r|l,r|y,y|c,y|y,s|c,r|o,s|y,i|c,r|y,r|l,y|l,r|y,i|l,y|o,r|c,s|c,y|o,y|l,i|y,y|c,r|l,s|y,i|o,s|o,i|c,i|o,s|o,s|l,y|y,i|l,y|c,i|y,r|o,r|c,s|l],s=1<<17,i=1<<27,r=s|i,o=8,l=512,c=o|l,p=[y|c,r|l,y|y,r|o,i|l,y|y,s|c,i|l,s|o,i|o,i|o,s|y,r|c,s|o,r|y,y|c,i|y,y|o,r|l,y|l,s|l,r|y,r|o,s|c,i|c,s|l,s|y,i|c,y|o,r|c,y|l,i|y,r|l,i|y,s|o,y|c,s|y,r|l,i|l,y|y,y|l,s|o,r|c,i|l,i|o,y|l,y|y,r|o,i|c,s|y,i|y,r|c,y|o,s|c,s|l,i|o,r|y,i|c,y|c,r|y,s|c,y|o,r|o,s|l],s=8192,i=1<<23,r=s|i,o=1,l=128,c=o|l,h=[r|o,s|c,s|c,y|l,r|l,i|c,i|o,s|o,y|y,r|y,r|y,r|c,y|c,y|y,i|l,i|o,y|o,s|y,i|y,r|o,y|l,i|y,s|o,s|l,i|c,y|o,s|l,i|l,s|y,r|l,r|c,y|c,i|l,i|o,r|y,r|c,y|c,y|y,y|y,r|y,s|l,i|l,i|c,y|o,r|o,s|c,s|c,y|l,r|c,y|c,y|o,s|y,i|o,s|o,r|l,i|c,s|o,s|l,i|y,r|o,y|l,i|y,s|y,r|l],s=1<<25,i=1<<30,r=s|i,o=256,l=1<<19,c=o|l,f=[y|o,s|c,s|l,r|o,y|l,y|o,i|y,s|l,i|c,y|l,s|o,i|c,r|o,r|l,y|c,i|y,s|y,i|l,i|l,y|y,i|o,r|c,r|c,s|o,r|l,i|o,y|y,r|y,s|c,s|y,r|y,y|c,y|l,r|o,y|o,s|y,i|y,s|l,r|o,i|c,s|o,i|y,r|l,s|c,i|c,y|o,s|y,r|l,r|c,y|c,r|y,r|c,s|l,y|y,i|l,r|y,y|c,s|o,i|o,y|l,y|y,i|l,s|c,i|o],s=1<<22,i=1<<29,r=s|i,o=16,l=16384,c=o|l,m=[i|o,r|y,y|l,r|c,r|y,y|o,r|c,s|y,i|l,s|c,s|y,i|o,s|o,i|l,i|y,y|c,y|y,s|o,i|c,y|l,s|l,i|c,y|o,r|o,r|o,y|y,s|c,r|l,y|c,s|l,r|l,i|y,i|l,y|o,r|o,s|l,r|c,s|y,y|c,i|o,s|y,i|l,i|y,y|c,i|o,r|c,s|l,r|y,s|c,r|l,y|y,r|o,y|o,y|l,r|y,s|c,y|l,s|o,i|c,y|y,r|l,i|y,s|o,i|c],s=1<<21,i=1<<26,r=s|i,o=2,l=2048,c=o|l,_=[s|y,r|o,i|c,y|y,y|l,i|c,s|c,r|l,r|c,s|y,y|y,i|o,y|o,i|y,r|o,y|c,i|l,s|c,s|o,i|l,i|o,r|y,r|l,s|o,r|y,y|l,y|c,r|c,s|l,y|o,i|y,s|l,i|y,s|l,s|y,i|c,i|c,r|o,r|o,y|o,s|o,i|y,i|l,s|y,r|l,y|c,s|c,r|l,y|c,i|o,r|c,r|y,s|l,y|y,y|o,r|c,y|y,s|c,r|y,y|l,i|o,i|l,y|l,s|o],s=1<<18,i=1<<28,r=s|i,o=64,l=4096,c=o|l,b=[i|c,y|l,s|y,r|c,i|y,i|c,y|o,i|y,s|o,r|y,r|c,s|l,r|l,s|c,y|l,y|o,r|y,i|o,i|l,y|c,s|l,s|o,r|o,r|l,y|c,y|y,y|y,r|o,i|o,i|l,s|c,s|y,s|c,s|y,r|l,y|l,y|o,r|o,y|l,s|c,i|l,y|o,i|o,r|y,r|o,i|y,s|y,i|c,y|y,r|c,s|o,i|o,r|y,i|l,i|c,y|y,r|c,s|l,s|l,y|c,y|c,s|o,i|y,r|l],e(t),{encrypt:n}}function KeyEventDecoder(t,e){"use strict";function a(t){for(var a=0;a<t.length;++a)e(t[a])}function n(a,n){var s={type:n},i=kbdUtil.getKey(a);i&&(s.keyId=i);var r=kbdUtil.getKeysym(a),o=t.hasShortcutModifier()||!!t.activeCharModifier();r&&("keydown"!==n||kbdUtil.nonCharacterKey(a)||o)&&(s.keysym=r);var l=16===a.keyCode||"Shift"===a.key,c=!l&&("keydown"!==n||t.hasShortcutModifier()||!!kbdUtil.nonCharacterKey(a)),d="keydown"===n&&t.activeCharModifier()&&!kbdUtil.nonCharacterKey(a),u=t.activeCharModifier();if(u&&r){for(var p=!1,h=0;h<u.length;++h)u[h]===r.keysym&&(p=!0);"keypress"!==n||p||(s.escape=t.activeCharModifier())}return d&&e({type:"stall"}),e(s),c}return{keydown:function(e){return a(t.keydown(e)),n(e,"keydown")},keypress:function(t){return n(t,"keypress")},keyup:function(e){return a(t.keyup(e)),n(e,"keyup")},syncModifiers:function(e){a(t.syncAny(e))},releaseAll:function(){e({type:"releaseall"})}}}function VerifyCharModifier(t){"use strict";function e(){if(!n)for(var s=function(){clearTimeout(n),n=null,e()};0!==a.length;){var i=a[0];switch(a=a.splice(1),i.type){case"stall":return void(n=setTimeout(s,5));case"keydown":0!==a.length&&"keypress"===a[0].type&&(!a[0].escape||i.keysym&&i.keysym.keysym===a[0].keysym.keysym||(i.escape=a[0].escape),i.keysym=a[0].keysym,a=a.splice(1))}"stall"!==i.type&&t(i)}}var a=[],n=null;return function(t){a.push(t),e()}}function TrackKeyState(t){"use strict";var e=[];return function(a){var n=0!==e.length?e[e.length-1]:null;switch(a.type){case"keydown":n&&a.keyId&&n.keyId===a.keyId||(n={keyId:a.keyId,keysyms:{}},e.push(n)),a.keysym&&(n.keysyms[a.keysym.keysym]=a.keysym,n.ignoreKeyPress=!0,t(a));break;case"keypress":n||(n={keyId:a.keyId,keysyms:{}},e.push(n)),a.keysym||console.log("keypress with no keysym:",a),a.keysym&&!n.ignoreKeyPress&&(n.keysyms[a.keysym.keysym]=a.keysym,a.type="keydown",t(a));break;case"keyup":if(0===e.length)return;for(var s=null,i=0;i!==e.length;++i)if(e[i].keyId===a.keyId){s=i;break}null===s&&(s=e.length-1);var r=e.splice(s,1)[0],o=function(){function t(){}return function(e){return t.prototype=e,new t}}();for(var l in r.keysyms){var c=o(a);c.keysym=r.keysyms[l],t(c)}break;case"releaseall":for(var i=0;i<e.length;++i)for(var l in e[i].keysyms){var d=e[i].keysyms[l];t({keyId:0,keysym:d,type:"keyup"})}e=[]}}}function EscapeModifiers(t){"use strict";return function(e){if("keydown"!==e.type||void 0===e.escape)return void t(e);for(var a=0;a<e.escape.length;++a)t({type:"keyup",keyId:0,keysym:keysyms.lookup(e.escape[a])});t(e);for(var a=0;a<e.escape.length;++a)t({type:"keydown",keyId:0,keysym:keysyms.lookup(e.escape[a])})}}function JSUnzip(){this.getInt=function(t,e){switch(e){case 4:return(255&this.data.charCodeAt(t+3))<<24|(255&this.data.charCodeAt(t+2))<<16|(255&this.data.charCodeAt(t+1))<<8|255&this.data.charCodeAt(t+0);case 2:return(255&this.data.charCodeAt(t+1))<<8|255&this.data.charCodeAt(t+0);default:return 255&this.data.charCodeAt(t)}},this.getDOSDate=function(t,e){var a=31&t,n=(t>>5&15)-1,s=1980+(t>>9&127),i=2*(31&e),r=e>>5&63;return hour=e>>11&31,new Date(s,n,a,hour,r,i)},this.open=function(t){if(this.data=t,this.files=[],this.data.length<22)return{status:!1,error:"Invalid data"};for(var e=this.data.length-22;e>=0&&101010256!=this.getInt(e,4);)--e;if(0>e)return{status:!1,error:"Invalid data"};if(0!=this.getInt(e+4,2)||0!=this.getInt(e+6,2))return{status:!1,error:"No multidisk support"};var a=this.getInt(e+8,2),n=this.getInt(e+16,4),s=this.getInt(e+20,2);this.comment=this.data.slice(e+22,e+22+s);for(var i=n,r=0;a>r;++r){if(33639248!=this.getInt(i+0,4))return{status:!1,error:"Invalid data"};if(this.getInt(i+6,2)>20)return{status:!1,error:"Unsupported version"};if(1&this.getInt(i+8,2))return{status:!1,error:"Encryption not implemented"};var o=this.getInt(i+10,2);if(0!=o&&8!=o)return{status:!1,error:"Unsupported compression method"};var l=this.getInt(i+12,2),c=this.getInt(i+14,2),d=this.getDOSDate(c,l),u=(this.getInt(i+16,4),this.getInt(i+20,4)),p=this.getInt(i+24,4),h=this.getInt(i+28,2),f=this.getInt(i+30,2),m=this.getInt(i+32,2),_=this.getInt(i+42,4),b=this.data.slice(i+46,i+46+h),v=this.data.slice(i+46+h+f,i+46+h+f+m);if(67324752!=this.getInt(_+0,4))return{status:!1,error:"Invalid data"};var g=this.getInt(_+26,2),y=this.getInt(_+28,2),w=_+30+g+y;this.files[b]={fileComment:v,compressionMethod:o,compressedSize:u,uncompressedSize:p,localFileContent:w,lastModifiedDate:d},i+=46+h+f+m}return{status:!0}},this.read=function(t){var e=this.files[t];if(e){if(8==e.compressionMethod){tinf||(tinf=new TINF,tinf.init());var a=tinf.uncompress(this.data,e.localFileContent);return a.status==tinf.OK?{status:!0,data:a.data}:{status:!1,error:a.error}}return{status:!0,data:this.data.slice(e.localFileContent,e.localFileContent+e.uncompressedSize)}}return{status:!1,error:"File '"+t+"' doesn't exist in zip"}}}function TINF(){function t(t,e,a,n,s){for(var i=0;24>e;)a|=(255&t[n++])<<e,e+=8;return i=a&65535>>16-s,a>>=s,e-=s,[e,a,n,i]}this.OK=0,this.DATA_ERROR=-3,this.WINDOW_SIZE=32768,this.TREE=function(){this.table=new Array(16),this.trans=new Array(288)},this.DATA=function(t){this.source="",this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=[],this.history=[],this.ltree=new t.TREE,this.dtree=new t.TREE},this.sltree=new this.TREE,this.sdtree=new this.TREE,this.length_bits=new Array(30),this.length_base=new Array(30),this.dist_bits=new Array(30),this.dist_base=new Array(30),this.clcidx=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],this.build_bits_base=function(t,e,a,n){var s,i;for(s=0;a>s;++s)t[s]=0;for(s=0;30-a>s;++s)t[s+a]=Math.floor(s/a);for(i=n,s=0;30>s;++s)e[s]=i,i+=1<<t[s]},this.build_fixed_trees=function(t,e){var a;for(a=0;7>a;++a)t.table[a]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,a=0;24>a;++a)t.trans[a]=256+a;for(a=0;144>a;++a)t.trans[24+a]=a;for(a=0;8>a;++a)t.trans[168+a]=280+a;for(a=0;112>a;++a)t.trans[176+a]=144+a;for(a=0;5>a;++a)e.table[a]=0;for(e.table[5]=32,a=0;32>a;++a)e.trans[a]=a},this.build_tree=function(t,e,a,n){var s,i,r=new Array(16);for(s=0;16>s;++s)t.table[s]=0;for(s=0;n>s;++s)t.table[e[a+s]]++;for(t.table[0]=0,i=0,s=0;16>s;++s)r[s]=i,i+=t.table[s];for(s=0;n>s;++s)e[a+s]&&(t.trans[r[e[a+s]]++]=s)},this.getbit=function(t){var e;return t.bitcount--||(t.tag=255&t.source[t.sourceIndex++],t.bitcount=7),e=1&t.tag,t.tag>>=1,e},this.read_bits=function(e,a,n){if(!a)return n;var s=t(e.source,e.bitcount,e.tag,e.sourceIndex,a);return e.bitcount=s[0],e.tag=s[1],e.sourceIndex=s[2],s[3]+n},this.decode_symbol=function(t,e){for(;t.bitcount<16;)t.tag=t.tag|(255&t.source[t.sourceIndex++])<<t.bitcount,t.bitcount+=8;var a=0,n=0,s=0;do n=2*n+((t.tag&1<<s)>>s),++s,a+=e.table[s],n-=e.table[s];while(n>=0);return t.tag>>=s,t.bitcount-=s,e.trans[a+n]},this.decode_trees=function(t,e,a){var n,s,i,r,o,l,c=new this.TREE,d=new Array(320);for(n=this.read_bits(t,5,257),s=this.read_bits(t,5,1),i=this.read_bits(t,4,4),r=0;19>r;++r)d[r]=0;for(r=0;i>r;++r){var u=this.read_bits(t,3,0);d[this.clcidx[r]]=u}for(this.build_tree(c,d,0,19),o=0;n+s>o;){var p=this.decode_symbol(t,c);switch(p){case 16:var h=d[o-1];for(l=this.read_bits(t,2,3);l;--l)d[o++]=h;break;case 17:for(l=this.read_bits(t,3,3);l;--l)d[o++]=0;break;case 18:for(l=this.read_bits(t,7,11);l;--l)d[o++]=0;break;default:d[o++]=p}}this.build_tree(e,d,0,n),this.build_tree(a,d,n,s)},this.inflate_block_data=function(t,e,a){for(var n=t.dest,s=n.length;;){var i=this.decode_symbol(t,e);if(256==i)return this.OK;if(256>i)n[s++]=i,t.history.push(i);else{var r,o,l,c;if(i-=257,r=this.read_bits(t,this.length_bits[i],this.length_base[i]),o=this.decode_symbol(t,a),l=t.history.length-this.read_bits(t,this.dist_bits[o],this.dist_base[o]),0>l)throw"Invalid zlib offset "+l;for(c=l;l+r>c;++c)n[s++]=t.history[c],t.history.push(t.history[c])}}},this.inflate_uncompressed_block=function(t){var e,a,n;if(t.bitcount>7){var s=Math.floor(t.bitcount/8);t.sourceIndex-=s,t.bitcount=0,t.tag=0}if(e=t.source[t.sourceIndex+1],e=256*e+t.source[t.sourceIndex],a=t.source[t.sourceIndex+3],a=256*a+t.source[t.sourceIndex+2],e!=(65535&~a))return this.DATA_ERROR;for(t.sourceIndex+=4,n=e;n;--n)t.history.push(t.source[t.sourceIndex]),t.dest[t.dest.length]=t.source[t.sourceIndex++];return t.bitcount=0,this.OK},this.inflate_fixed_block=function(t){return this.inflate_block_data(t,this.sltree,this.sdtree)},this.inflate_dynamic_block=function(t){return this.decode_trees(t,t.ltree,t.dtree),this.inflate_block_data(t,t.ltree,t.dtree)},this.init=function(){this.build_fixed_trees(this.sltree,this.sdtree),this.build_bits_base(this.length_bits,this.length_base,4,3),this.build_bits_base(this.dist_bits,this.dist_base,2,1),this.length_bits[28]=0,this.length_base[28]=258,this.reset()},this.reset=function(){this.d=new this.DATA(this),delete this.header},this.uncompress=function(t,e){var a,n=this.d;n.source=t,n.sourceIndex=e,n.bitcount=0,n.dest=[],"undefined"==typeof this.header&&(this.header=this.read_bits(n,16,0));var s=0;do{var i,r;switch(a=this.getbit(n),i=this.read_bits(n,2,0)){case 0:r=this.inflate_uncompressed_block(n);break;case 1:r=this.inflate_fixed_block(n);break;case 2:r=this.inflate_dynamic_block(n);break;default:return{status:this.DATA_ERROR}}if(r!=this.OK)return{status:this.DATA_ERROR};s++}while(!a&&n.sourceIndex<n.source.length);return n.history=n.history.slice(-this.WINDOW_SIZE),{status:this.OK,data:n.dest}}}function SpiceConn(t){if(void 0===t||void 0===t.uri||!t.uri)throw new Error("You must specify a uri");if(this.ws=new WebSocket(t.uri,"binary"),!this.ws.binaryType)throw new Error("WebSocket doesn't support binaryType.  Try a different browser.");if(this.connection_id=void 0!==t.connection_id?t.connection_id:0,this.type=void 0!==t.type?t.type:SPICE_CHANNEL_MAIN,this.chan_id=void 0!==t.chan_id?t.chan_id:0,void 0!==t.parent&&(this.parent=t.parent,this.message_id=t.parent.message_id,this.password=t.parent.password),void 0!==t.screen_id&&(this.screen_id=t.screen_id),void 0!==t.dump_id&&(this.dump_id=t.dump_id),void 0!==t.message_id&&(this.message_id=t.message_id),void 0!==t.password&&(this.password=t.password),void 0!==t.onerror&&(this.onerror=t.onerror),void 0!==t.onsuccess&&(this.onsuccess=t.onsuccess),void 0!==t.onagent&&(this.onagent=t.onagent),this.state="connecting",this.ws.parent=this,this.wire_reader=new SpiceWireReader(this,this.process_inbound),this.messages_sent=0,this.warnings=[],this.ws.addEventListener("open",function(){DEBUG>0&&console.log(">> WebSockets.onopen"),DEBUG>0&&console.log("id "+this.parent.connection_id+"; type "+this.parent.type),this.parent.send_hdr(),this.parent.wire_reader.request(SpiceLinkHeader.prototype.buffer_size()),this.parent.state="start"}),this.ws.addEventListener("error",function(t){"url"in t.target&&this.parent.log_err("WebSocket error: Can't connect to websocket on URL: "+t.target.url),this.parent.report_error(t)}),this.ws.addEventListener("close",function(t){if(DEBUG>0&&console.log(">> WebSockets.onclose"),DEBUG>0&&console.log("id "+this.parent.connection_id+"; type "+this.parent.type),DEBUG>0&&console.log(t),"closing"!=this.parent.state&&"error"!=this.parent.state&&void 0!==this.parent.onerror){var t;t=new Error("connecting"==this.parent.state?"Connection refused.":"start"==this.parent.state||"link"==this.parent.state?"Unexpected protocol mismatch.":"ticket"==this.parent.state?"Bad password.":"Unexpected close while "+this.parent.state),this.parent.onerror(t),this.parent.log_err(t.toString())}}),2==this.ws.readyState||3==this.ws.readyState)throw new Error("Unable to connect to "+t.uri);this.timeout=window.setTimeout(spiceconn_timeout,SPICE_CONNECT_TIMEOUT,this)}function spiceconn_timeout(t){SpiceConn.prototype.handle_timeout.call(t)}function SpiceArrayBufferSlice(t,e){t=t||0,e=e||this.byteLength,0>e&&(e=this.byteLength+e),0>t&&(t=this.byteLength+t),0>t&&(t=0),0>e&&(e=0),e>this.byteLength&&(e=this.byteLength),t>e&&(t=e);var a,n=new ArrayBuffer(e-t),s=new Uint8Array(this,t,e-t),i=new Uint8Array(n);for(a=0;e-t>a;a++)i[a]=s[a];return n}function combine_array_buffers(t,e){var a,n=new Uint8Array(t),s=new Uint8Array(e),i=new ArrayBuffer(t.byteLength+e.byteLength),r=new Uint8Array(i),o=0;for(a=0;a<n.length;a++)r[o++]=n[a];for(a=0;a<s.length;a++)r[o++]=s[a];return i}function hexdump_buffer(t){for(var e=new Uint8Array(t),a="",n="",s=0,i=0;i<e.length;i++){var r=Number(e[i]).toString(16);if(1==r.length&&(a+="0"),a+=r+" ",n+=10==e[i]||13==e[i]||8==e[i]?".":String.fromCharCode(e[i]),i%16==15||i==e.length-1){for(;i%16!=15;)a+="   ",i++;0==s&&console.log(a+" | "+n),"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "==a?1==s?(console.log("."),s++):0==s&&s++:s=0,a=n=""}}}function get_scancode(t){return void 0===common_scanmap[t]?-1!=navigator.userAgent.indexOf("Firefox")?firefox_scanmap[t]:DOM_scanmap[t]:common_scanmap[t]}function keycode_to_start_scan(t){var e=get_scancode(t);return void 0===e?(alert("no map for "+t),0):256>e?e:224|e-256<<8}function keycode_to_end_scan(t){var e=get_scancode(t);return void 0===e?0:256>e?128|e:32992|e-256<<8}function rfc2083_make_crc_table(){var t,e,a;for(e=0;256>e;e++){for(t=e,a=0;8>a;a++)1&t?t=(3988292384^t>>>1)>>>0&4294967295:t>>>=1;rfc2083_crc_table[e]=t}rfc2083_crc_table_computed=1}function rfc2083_update_crc(t,e,a,n){var s,i=t;for(rfc2083_crc_table_computed||rfc2083_make_crc_table(),s=0;n>s;s++)i=rfc2083_crc_table[255&(i^e[a+s])]^i>>>8;return i}function rfc2083_crc(t,e,a){return 4294967295^rfc2083_update_crc(4294967295,t,e,a)}function crc32(t,e,a){var n=new Uint8Array(t);return rfc2083_crc(n,e,a)}function PngIHDR(t,e){this.width=t,this.height=e,this.depth=8,this.type=6,this.compression=0,this.filter=0,this.interlace=0}function adler(){this.s1=1,this.s2=0}function PngIDAT(t,e,a){if(a.byteLength>65535)throw new Error("Cannot handle more than 64K");this.data=a,this.width=t,this.height=e}function PngIEND(){}function create_rgba_png(t,e,a){var n,s=new PngIHDR(t,e),i=new PngIDAT(t,e,a),r=new PngIEND,o=new ArrayBuffer(s.buffer_size()+i.buffer_size()+r.buffer_size()),l=s.to_buffer(o);l=i.to_buffer(o,l),l=r.to_buffer(o,l);var c=new Uint8Array(o),d="";for(n=0;l>n;n++)d+="%",c[n]<16&&(d+="0"),d+=c[n].toString(16);return"%89PNG%0D%0A%1A%0A"+d}function lz_rgb32_decompress(t,e,a,n,s){var r,o=e,l=0;for(r=t[o++];4*l<a.length;r=t[o++]){var c=l,d=r>>5,u=(31&r)<<8;if(r>=32){var p;if(d--,6==d)do p=t[o++],d+=p;while(255==p);if(p=t[o++],u+=p,255==p&&u-p==7936&&(u=t[o++]<<8,u+=t[o++],u+=8191),d+=1,n==LZ_IMAGE_TYPE_RGBA&&(d+=2),u+=1,c-=u,c==l-1)for(var h=c;d;--d){if(n==LZ_IMAGE_TYPE_RGBA)a[4*l+3]=a[4*h+3];else for(i=0;4>i;i++)a[4*l+i]=a[4*h+i];l++}else for(;d;--d){if(n==LZ_IMAGE_TYPE_RGBA)a[4*l+3]=a[4*c+3];else for(i=0;4>i;i++)a[4*l+i]=a[4*c+i];l++,c++}}else for(r++,n==LZ_IMAGE_TYPE_RGBA?a[4*l+3]=t[o++]:(a[4*l+0]=t[o+2],a[4*l+1]=t[o+1],a[4*l+2]=t[o+0],s&&(a[4*l+3]=255),o+=3),l++,--r;r;r--)n==LZ_IMAGE_TYPE_RGBA?a[4*l+3]=t[o++]:(a[4*l+0]=t[o+2],a[4*l+1]=t[o+1],a[4*l+2]=t[o+0],s&&(a[4*l+3]=255),o+=3),l++}return o-1}function convert_spice_lz_to_web(t,e){var a;if(e.type===LZ_IMAGE_TYPE_RGB32||e.type===LZ_IMAGE_TYPE_RGBA){var n=new Uint8Array(e.data),s=t.createImageData(e.width,e.height);a=lz_rgb32_decompress(n,0,s.data,LZ_IMAGE_TYPE_RGB32,e.type!=LZ_IMAGE_TYPE_RGBA),e.type==LZ_IMAGE_TYPE_RGBA&&lz_rgb32_decompress(n,a,s.data,LZ_IMAGE_TYPE_RGBA,!1)}else{if(e.type!==LZ_IMAGE_TYPE_XXXA)return void 0;var n=new Uint8Array(e.data),s=t.createImageData(e.width,e.height);lz_rgb32_decompress(n,0,s.data,LZ_IMAGE_TYPE_RGBA,!1)}return s}function ceil_log_2(t){if(1===t)return 0;var e=1;for(t-=1;t>>>=1;)e++;return e}function family_init(t,e,a){var n;for(n=0;e>n;n++){var s,i;s=a-e,s>bppmask[e-n]&&(s=bppmask[e-n]),i=bppmask[e]+1-(s<<n),t.nGRcodewords[n]=s<<n,t.notGRcwlen[n]=s+ceil_log_2(i),t.notGRprefixmask[n]=bppmask[32-s]>>>0,t.notGRsuffixlen[n]=ceil_log_2(i)}var r,o=bppmask[e],l=o>>>1;for(r=0;o>=r;r++)t.xlatU2L[r]=l>=r?r<<1:(o-r<<1)+1;for(r=0;o>=r;r++)t.xlatL2U[r]=1&r?o-(r>>>1):r>>>1}function quic_image_bpc(t){switch(t){case QUIC_IMAGE_TYPE_GRAY:return 8;case QUIC_IMAGE_TYPE_RGB16:return 5;case QUIC_IMAGE_TYPE_RGB24:return 8;case QUIC_IMAGE_TYPE_RGB32:return 8;case QUIC_IMAGE_TYPE_RGBA:return 8;case QUIC_IMAGE_TYPE_INVALID:default:return console.log("quic: bad image type\n"),0}}function cnt_l_zeroes(t){return 4286578688&t?lzeroes[t>>>24]:4294934528&t?8+lzeroes[t>>>16&255]:4294967168&t?16+lzeroes[t>>>8&255]:24+lzeroes[255&t]}function golomb_decoding_8bpc(t,e){var a,n;if(0>e||e>family_8bpc.notGRprefixmask[t]){var s=cnt_l_zeroes(e);n=s+1+t,a=s<<t|e>>32-n&bppmask[t]}else n=family_8bpc.notGRcwlen[t],a=family_8bpc.nGRcodewords[t]+(e>>32-n&bppmask[family_8bpc.notGRsuffixlen[t]]);return{codewordlen:n,rc:a}}function golomb_code_len_8bpc(t,e){return t<family_8bpc.nGRcodewords[e]?(t>>>e)+1+e:family_8bpc.notGRcwlen[e]}function QuicModel(t){var e,a=0;switch(this.levels=1<<t,this.n_buckets_ptrs=0,evol){case 1:this.repfirst=3,this.firstsize=1,this.repnext=2,this.mulsize=2;break;case 3:this.repfirst=1,this.firstsize=1,this.repnext=1,this.mulsize=2;break;case 5:this.repfirst=1,this.firstsize=1,this.repnext=1,this.mulsize=4;break;case 0:case 2:case 4:console.log("quic: findmodelparams(): evol value obsolete!!!\n");default:console.log("quic: findmodelparams(): evol out of range!!!\n")}this.n_buckets=0;var n=this.repfirst+1,s=this.firstsize;do e=this.n_buckets?a+1:0,--n||(n=this.repnext,s*=this.mulsize),a=e+s-1,a+s>=this.levels&&(a=this.levels-1),this.n_buckets_ptrs||(this.n_buckets_ptrs=this.levels),this.n_buckets++;while(a<this.levels-1)}function QuicBucket(){this.counters=[0,0,0,0,0,0,0,0]}function QuicFamilyStat(){this.buckets_ptrs=[],this.buckets_buf=[]}function QuicChannel(t,e){return this.state=new CommonState,this.family_stat_8bpc=new QuicFamilyStat,this.family_stat_5bpc=new QuicFamilyStat,this.correlate_row={zero:0,row:[]},this.model_8bpc=t,this.model_5bpc=e,this.buckets_ptrs=[],this.family_stat_8bpc.fill_model_structures(this.model_8bpc)?(this.family_stat_5bpc.fill_model_structures(this.model_5bpc),void 0):void 0}function CommonState(){}function QuicEncoder(){this.rgb_state=new CommonState,this.model_8bpc=new QuicModel(8),this.model_5bpc=new QuicModel(5),this.channels=[];var t;for(t=0;4>t;t++)if(this.channels[t]=new QuicChannel(this.model_8bpc,this.model_5bpc),!this.channels[t])return void console.log("quic: failed to create channel")}function SpiceQuic(){}function convert_spice_quic_to_web(t,e){var a,n=t.createImageData(e.width,e.height);for(a=0;a<n.width*n.height*4;a+=4)n.data[a+0]=e.outptr[a+2],n.data[a+1]=e.outptr[a+1],n.data[a+2]=e.outptr[a+0],n.data[a+3]=e.type!==QUIC_IMAGE_TYPE_RGBA?255:255-e.outptr[a+3];return n}function convert_spice_bitmap_to_web(t,e){var a,n,s,i=new Uint8Array(e.data);if(e.format!=SPICE_BITMAP_FMT_32BIT&&e.format!=SPICE_BITMAP_FMT_RGBA)return void 0;for(a=t.createImageData(e.x,e.y),n=0;n<e.y*e.stride;)for(s=0;s<e.x;s++,n+=4)a.data[n+0]=i[n+2],a.data[n+1]=i[n+1],a.data[n+2]=i[n+0],a.data[n+3]=e.format==SPICE_BITMAP_FMT_32BIT?255:i[n];return a}function SpiceDataView(t,e,a){this.u8=void 0!==e?void 0!==a?new Uint8Array(t,e,a):new Uint8Array(t,e):new Uint8Array(t)}function SpiceChannelId(){}function SpiceRect(){}function SpiceClipRects(){}function SpiceClip(){}function SpiceImageDescriptor(){}function SpicePalette(){}function SpiceBitmap(){}function SpiceImage(){}function SpiceQMask(){}function SpicePattern(){}function SpiceBrush(){}function SpiceFill(){}function SpiceCopy(){}function SpicePoint16(){}function SpicePoint(){}function SpiceCursorHeader(){}function SpiceCursor(){}function SpiceSurface(){}function SpiceLinkHeader(t,e){this.magic=SPICE_MAGIC,this.major_version=SPICE_VERSION_MAJOR,this.minor_version=SPICE_VERSION_MINOR,this.size=0,void 0!==t&&this.from_buffer(t,e)}function SpiceLinkMess(t,e){this.connection_id=0,this.channel_type=0,this.channel_id=0,this.common_caps=[],this.channel_caps=[],void 0!==t&&this.from_buffer(t,e)}function SpiceLinkReply(t,e){this.error=0,this.pub_key=void 0,this.common_caps=[],this.channel_caps=[],void 0!==t&&this.from_buffer(t,e)}function SpiceLinkAuthTicket(){this.auth_mechanism=0,this.encrypted_data=void 0}function SpiceLinkAuthReply(t,e){this.auth_code=0,void 0!==t&&this.from_buffer(t,e)}function SpiceMiniData(t,e){this.type=0,this.size=0,this.data=void 0,void 0!==t&&this.from_buffer(t,e)}function SpiceMsgChannels(t,e){this.num_of_channels=0,this.channels=[],void 0!==t&&this.from_buffer(t,e)}function SpiceMsgMainInit(t,e){this.from_buffer(t,e)}function SpiceMsgMainMouseMode(t,e){this.from_buffer(t,e)}function SpiceMsgMainAgentData(t,e){this.from_buffer(t,e)}function SpiceMsgMainAgentTokens(t,e){this.from_buffer(t,e)}function SpiceMsgSetAck(t,e){this.from_buffer(t,e)}function SpiceMsgcAckSync(t){this.generation=t.generation}function SpiceMsgcMainMouseModeRequest(t){this.mode=t}function SpiceMsgcMainAgentStart(t){this.num_tokens=t}function SpiceMsgcMainAgentData(t,e){this.protocol=VD_AGENT_PROTOCOL,this.type=t,this.opaque=0,this.size=e.buffer_size(),this.data=e}function VDAgentAnnounceCapabilities(t,e){e?(this.request=t,this.caps=e):this.from_buffer(t)}function VDAgentMonitorsConfig(t,e,a,n,s,i){this.num_mon=1,this.flags=t,this.width=e,this.height=a,this.depth=n,this.x=s,this.y=i}function VDAgentFileXferStatusMessage(t,e){e?(this.id=t,this.result=e):this.from_buffer(t)}function VDAgentFileXferStartMessage(t,e,a){this.id=t,this.string="[vdagent-file-xfer]\nname="+e+"\nsize="+a+"\n"}function VDAgentFileXferDataMessage(t,e,a){this.id=t,this.size=e,this.data=a}function SpiceMsgNotify(t,e){this.from_buffer(t,e)}function SpiceMsgcDisplayInit(){this.pixmap_cache_id=1,this.glz_dictionary_id=0,this.pixmap_cache_size=10485760,this.glz_dictionary_window_size=0}function SpiceMsgDisplayBase(){}function SpiceMsgDisplayDrawCopy(t,e){this.from_buffer(t,e)}function SpiceMsgDisplayDrawFill(t,e){this.from_buffer(t,e)}function SpiceMsgDisplayCopyBits(t,e){this.from_buffer(t,e)}function SpiceMsgSurfaceCreate(t,e){this.from_buffer(t,e)}function SpiceMsgSurfaceDestroy(t,e){this.from_buffer(t,e)}function SpiceMsgInputsInit(t,e){this.from_buffer(t,e)}function SpiceMsgInputsKeyModifiers(t,e){this.from_buffer(t,e)}function SpiceMsgCursorInit(t,e){this.from_buffer(t,e)}function SpiceMsgPlaybackData(t,e){this.from_buffer(t,e)}function SpiceMsgPlaybackMode(t,e){this.from_buffer(t,e)}function SpiceMsgPlaybackStart(t,e){this.from_buffer(t,e)}function SpiceMsgCursorSet(t,e){this.from_buffer(t,e)}function SpiceMsgcMousePosition(t,e){if(this.display_id=0,this.buttons_state=t.buttons_state,e){var a=document.body.scrollTop||document.documentElement.scrollTop,n=document.body.scrollLeft||document.documentElement.scrollLeft;this.x=e.clientX-t.display.surfaces[t.display.primary_surface].canvas.offsetLeft+n,this.y=e.clientY-t.display.surfaces[t.display.primary_surface].canvas.offsetTop+a,t.mousex=this.x,t.mousey=this.y}else this.x=this.y=this.buttons_state=0}function SpiceMsgcMouseMotion(t,e){this.display_id=0,this.buttons_state=t.buttons_state,e?(this.x=e.clientX-t.display.surfaces[t.display.primary_surface].canvas.offsetLeft,this.y=e.clientY-t.display.surfaces[t.display.primary_surface].canvas.offsetTop,void 0!==t.mousex&&(this.x-=t.mousex,this.y-=t.mousey),t.mousex=e.clientX-t.display.surfaces[t.display.primary_surface].canvas.offsetLeft,t.mousey=e.clientY-t.display.surfaces[t.display.primary_surface].canvas.offsetTop):this.x=this.y=this.buttons_state=0}function SpiceMsgcMousePress(t,e){e?(this.button=e.button+1,this.buttons_state=1<<e.button,t.buttons_state=this.buttons_state):(this.button=SPICE_MOUSE_BUTTON_LEFT,this.buttons_state=SPICE_MOUSE_BUTTON_MASK_LEFT)}function SpiceMsgcMouseRelease(t,e){e?(this.button=e.button+1,this.buttons_state=0,t.buttons_state=this.buttons_state):(this.button=SPICE_MOUSE_BUTTON_LEFT,this.buttons_state=0)}function SpiceMsgcKeyDown(t){this.code=t?keycode_to_start_scan(t.keyCode):0}function SpiceMsgcKeyUp(t){this.code=t?keycode_to_end_scan(t.keyCode):0}function SpiceMsgDisplayStreamCreate(t,e){this.from_buffer(t,e)}function SpiceStreamDataHeader(){}function SpiceMsgDisplayStreamData(t,e){this.from_buffer(t,e)}function SpiceMsgDisplayStreamClip(t,e){this.from_buffer(t,e)}function SpiceMsgDisplayStreamDestroy(t,e){this.from_buffer(t,e)}function SpiceMsgDisplayInvalList(t,e){this.count=0,this.resources=[],this.from_buffer(t,e)}function SpiceWireReader(t,e){this.sc=t,this.callback=e,this.needed=0,this.buffers=[],this.sc.ws.wire_reader=this,this.sc.ws.binaryType="arraybuffer",this.sc.ws.addEventListener("message",wire_blob_catcher)}function wire_blob_catcher(t){DEBUG>1&&console.log(">> WebSockets.onmessage"),DEBUG>1&&console.log("id "+this.wire_reader.sc.connection_id+"; type "+this.wire_reader.sc.type),SpiceWireReader.prototype.inbound.call(this.wire_reader,t.data)}function putImageDataWithAlpha(t,e,a,n){var s=document.createElement("canvas"),i=s.getContext("2d");s.setAttribute("width",e.width),s.setAttribute("height",e.height),i.putImageData(e,0,0),t.drawImage(s,a,n,e.width,e.height)}function stripAlpha(t){var e;for(e=0;e<t.width*t.height*4;e+=4)t.data[e+3]=255}function SpiceDisplayConn(){SpiceConn.apply(this,arguments)}function handle_mouseover(){this.focus()}function handle_mouseout(){this.sc&&this.sc.cursor&&this.sc.cursor.spice_simulated_cursor&&(this.sc.cursor.spice_simulated_cursor.style.display="none"),this.blur()}function handle_draw_jpeg_onload(){var t,e=null;if(void 0===this.o.sc.surfaces[this.o.base.surface_id]?(DEBUG>2&&this.o.sc.log_info("Discarding jpeg; presumed lost surface "+this.o.base.surface_id),e=document.createElement("canvas"),e.setAttribute("width",this.o.base.box.right),e.setAttribute("height",this.o.base.box.bottom),t=e.getContext("2d")):t=this.o.sc.surfaces[this.o.base.surface_id].canvas.context,this.alpha_img){var a=document.createElement("canvas"),n=a.getContext("2d");a.setAttribute("width",this.alpha_img.width),a.setAttribute("height",this.alpha_img.height),n.putImageData(this.alpha_img,0,0),n.globalCompositeOperation="source-in",n.drawImage(this,0,0),t.drawImage(a,this.o.base.box.left,this.o.base.box.top),this.o.descriptor&&this.o.descriptor.flags&SPICE_IMAGE_FLAGS_CACHE_ME&&("cache"in this.o.sc||(this.o.sc.cache={}),this.o.sc.cache[this.o.descriptor.id]=n.getImageData(0,0,this.alpha_img.width,this.alpha_img.height))}else t.drawImage(this,this.o.base.box.left,this.o.base.box.top),this.src=null,this.o.descriptor&&this.o.descriptor.flags&SPICE_IMAGE_FLAGS_CACHE_ME&&("cache"in this.o.sc||(this.o.sc.cache={}),this.o.sc.cache[this.o.descriptor.id]=t.getImageData(this.o.base.box.left,this.o.base.box.top,this.o.base.box.right-this.o.base.box.left,this.o.base.box.bottom-this.o.base.box.top));if(null==e){if(DUMP_DRAWS&&this.o.sc.parent.dump_id){var s=document.createElement("canvas");s.setAttribute("id",this.o.tag+"."+this.o.sc.surfaces[this.o.base.surface_id].draw_count+"."+this.o.base.surface_id+"@"+this.o.base.box.left+"x"+this.o.base.box.top),s.getContext("2d").drawImage(this,0,0),document.getElementById(this.o.sc.parent.dump_id).appendChild(s)}this.o.sc.surfaces[this.o.base.surface_id].draw_count++}}function SpiceInputsConn(){SpiceConn.apply(this,arguments),this.mousex=void 0,this.mousey=void 0,this.button_state=0,this.waiting_for_ack=0}function handle_mousemove(t){var e,a=new SpiceMiniData;this.sc.mouse_mode==SPICE_MOUSE_MODE_CLIENT?(e=new SpiceMsgcMousePosition(this.sc,t),a.build_msg(SPICE_MSGC_INPUTS_MOUSE_POSITION,e)):(e=new SpiceMsgcMouseMotion(this.sc,t),a.build_msg(SPICE_MSGC_INPUTS_MOUSE_MOTION,e)),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&(this.sc.inputs.waiting_for_ack<2*SPICE_INPUT_MOTION_ACK_BUNCH?(this.sc.inputs.send_msg(a),this.sc.inputs.waiting_for_ack++):DEBUG>0&&this.sc.log_info("Discarding mouse motion")),this.sc&&this.sc.cursor&&this.sc.cursor.spice_simulated_cursor&&(this.sc.cursor.spice_simulated_cursor.style.display="block",this.sc.cursor.spice_simulated_cursor.style.left=t.pageX-this.sc.cursor.spice_simulated_cursor.spice_hot_x+"px",this.sc.cursor.spice_simulated_cursor.style.top=t.pageY-this.sc.cursor.spice_simulated_cursor.spice_hot_y+"px",t.preventDefault())
+}function handle_mousedown(t){var e=new SpiceMsgcMousePress(this.sc,t),a=new SpiceMiniData;a.build_msg(SPICE_MSGC_INPUTS_MOUSE_PRESS,e),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(a),t.preventDefault()}function handle_contextmenu(t){return t.preventDefault(),!1}function handle_mouseup(t){var e=new SpiceMsgcMouseRelease(this.sc,t),a=new SpiceMiniData;a.build_msg(SPICE_MSGC_INPUTS_MOUSE_RELEASE,e),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(a),t.preventDefault()}function handle_mousewheel(t){var e=new SpiceMsgcMousePress,a=new SpiceMsgcMouseRelease;e.button=a.button=t.deltaY<0?SPICE_MOUSE_BUTTON_UP:SPICE_MOUSE_BUTTON_DOWN,e.buttons_state=0,a.buttons_state=0;var n=new SpiceMiniData;n.build_msg(SPICE_MSGC_INPUTS_MOUSE_PRESS,e),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(n),n.build_msg(SPICE_MSGC_INPUTS_MOUSE_RELEASE,a),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(n),t.preventDefault()}function handle_keydown(t){var e=new SpiceMsgcKeyDown(t),a=new SpiceMiniData;check_and_update_modifiers(t,e.code,this.sc),a.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN,e),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(a),t.preventDefault()}function handle_keyup(t){var e=new SpiceMsgcKeyUp(t),a=new SpiceMiniData;check_and_update_modifiers(t,e.code,this.sc),a.build_msg(SPICE_MSGC_INPUTS_KEY_UP,e),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(a),t.preventDefault()}function sendCtrlAltDel(){if(sc&&sc.inputs&&"ready"===sc.inputs.state){var t=new SpiceMsgcKeyDown,e=new SpiceMiniData;update_modifier(!0,KEY_LCtrl,sc),update_modifier(!0,KEY_Alt,sc),t.code=KEY_KP_Decimal,e.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN,t),sc.inputs.send_msg(e),e.build_msg(SPICE_MSGC_INPUTS_KEY_UP,t),sc.inputs.send_msg(e),0==Ctrl_state&&update_modifier(!1,KEY_LCtrl,sc),0==Alt_state&&update_modifier(!1,KEY_Alt,sc)}}function update_modifier(t,e,a){var n=new SpiceMiniData;if(t){var s=new SpiceMsgcKeyDown;s.code=e,n.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN,s)}else{var s=new SpiceMsgcKeyUp;s.code=128|e,n.build_msg(SPICE_MSGC_INPUTS_KEY_UP,s)}a.inputs.send_msg(n)}function check_and_update_modifiers(t,e,a){-1===Shift_state&&(Shift_state=t.shiftKey,Ctrl_state=t.ctrlKey,Alt_state=t.altKey,Meta_state=t.metaKey),e===KEY_ShiftL?Shift_state=!0:e===KEY_Alt?Alt_state=!0:e===KEY_LCtrl?Ctrl_state=!0:57525===e?Meta_state=!0:e===(128|KEY_ShiftL)?Shift_state=!1:e===(128|KEY_Alt)?Alt_state=!1:e===(128|KEY_LCtrl)?Ctrl_state=!1:57525===e&&(Meta_state=!1),a&&a.inputs&&"ready"===a.inputs.state&&(Shift_state!=t.shiftKey&&(console.log("Shift state out of sync"),update_modifier(t.shiftKey,KEY_ShiftL,a),Shift_state=t.shiftKey),Alt_state!=t.altKey&&(console.log("Alt state out of sync"),update_modifier(t.altKey,KEY_Alt,a),Alt_state=t.altKey),Ctrl_state!=t.ctrlKey&&(console.log("Ctrl state out of sync"),update_modifier(t.ctrlKey,KEY_LCtrl,a),Ctrl_state=t.ctrlKey),Meta_state!=t.metaKey&&(console.log("Meta state out of sync"),update_modifier(t.metaKey,57525,a),Meta_state=t.metaKey))}function EBML_write_u1_data_len(t,e,a){var n=128|t;return e.setUint8(a,n),a+1}function EBML_write_u8_value(t,e,a,n){return n=EBML_write_array(t,a,n),n=EBML_write_u1_data_len(1,a,n),a.setUint8(n,e),n+1}function EBML_write_u32_value(t,e,a,n){return n=EBML_write_array(t,a,n),n=EBML_write_u1_data_len(4,a,n),a.setUint32(n,e),n+4}function EBML_write_u16_value(t,e,a,n){return n=EBML_write_array(t,a,n),n=EBML_write_u1_data_len(2,a,n),a.setUint16(n,e),n+2}function EBML_write_float_value(t,e,a,n){return n=EBML_write_array(t,a,n),n=EBML_write_u1_data_len(4,a,n),a.setFloat32(n,e),n+4}function EBML_write_u64_data_len(t,e,a){e.setUint8(a++,1),e.setUint8(a++,0),e.setUint8(a++,0),e.setUint8(a++,0);for(var n=4294967295&t,s=24;s>=0;s-=8)e.setUint8(a++,n>>s);return a}function EBML_write_array(t,e,a){for(var n=0;n<t.length;n++)e.setUint8(a+n,t[n]);return a+t.length}function EBML_write_string(t,e,a){for(var n=0;n<t.length;n++)e.setUint8(a+n,t.charCodeAt(n));return a+t.length}function EBML_write_data(t,e,a,n){return n=EBML_write_array(t,a,n),n=e.length<127?EBML_write_u1_data_len(e.length,a,n):EBML_write_u64_data_len(e.length,a,n),n="string"==typeof e?EBML_write_string(e,a,n):EBML_write_array(e,a,n)}function EBMLHeader(){this.id=EBML_HEADER,this.Version=1,this.ReadVersion=1,this.MaxIDLength=4,this.MaxSizeLength=8,this.DocType="webm",this.DocTypeVersion=2,this.DocTypeReadVersion=2}function webm_Segment(){this.id=WEBM_SEGMENT_HEADER}function webm_SegmentInformation(){this.id=WEBM_SEGMENT_INFORMATION,this.timecode_scale=1e6,this.muxing_app="spice",this.writing_app="spice-html5"}function webm_Audio(t){this.id=WEBM_AUDIO,this.sampling_frequency=t,this.channels=OPUS_CHANNELS}function webm_Seek(t,e){this.id=WEBM_SEEK,this.pos=e,this.seekid=t}function webm_SeekHead(t,e){this.id=WEBM_SEEK_HEAD,this.info=new webm_Seek(WEBM_SEGMENT_INFORMATION,t),this.track=new webm_Seek(WEBM_TRACKS,e)}function webm_TrackEntry(){this.id=WEBM_TRACK_ENTRY,this.number=1,this.uid=1,this.type=2,this.flag_enabled=1,this.flag_default=1,this.flag_forced=1,this.flag_lacing=0,this.min_cache=0,this.max_block_addition_id=0,this.codec_decode_all=0,this.seek_pre_roll=0,this.codec_delay=8e7,this.codec_id="A_OPUS",this.audio=new webm_Audio(OPUS_FREQUENCY),this.codec_private=[79,112,117,115,72,101,97,100,1,OPUS_CHANNELS,0,15,128,187,0,0,0,0,0]}function webm_Tracks(t){this.id=WEBM_TRACKS,this.track_entry=t}function webm_Cluster(t,e){this.id=WEBM_CLUSTER,this.timecode=t,this.data=e}function webm_SimpleBlock(t,e,a){this.id=WEBM_SIMPLE_BLOCK,this.timecode=t,this.data=e,this.keyframe=a}function webm_Header(){this.ebml=new EBMLHeader,this.segment=new webm_Segment,this.seek_head=new webm_SeekHead(0,0),this.seek_head.info.pos=this.segment.buffer_size()+this.seek_head.buffer_size(),this.info=new webm_SegmentInformation,this.seek_head.track.pos=this.seek_head.info.pos+this.info.buffer_size(),this.track_entry=new webm_TrackEntry,this.tracks=new webm_Tracks(this.track_entry)}function SpicePlaybackConn(){SpiceConn.apply(this,arguments),this.queue=new Array,this.append_okay=!1,this.start_time=0,this.skip_until=0,this.gap_time=0}function handle_source_open(){var t=this.spiceconn;if(!t.source_buffer){if(t.source_buffer=this.addSourceBuffer(SPICE_PLAYBACK_CODEC),!t.source_buffer)return void t.log_err("Codec "+SPICE_PLAYBACK_CODEC+" not available.");t.source_buffer.spiceconn=t,t.source_buffer.mode="segments"}}function handle_source_ended(){var t=this.spiceconn;t.log_err("Audio source unexpectedly ended.")}function handle_source_closed(){var t=this.spiceconn;t.log_err("Audio source unexpectedly closed.")}function handle_append_buffer_done(){var t=this.spiceconn;if(t.queue.length>0){var e=t.queue.shift();playback_append_buffer(t,e)}else t.append_okay=!0}function handle_sourcebuffer_error(t){var e=this.spiceconn;e.log_err("source_buffer error "+t.message)}function playback_append_buffer(t,e){try{t.source_buffer.appendBuffer(e),t.append_okay=!1}catch(a){t.log_err("Error invoking appendBuffer: "+a.message)}}function SpiceCursorConn(){SpiceConn.apply(this,arguments)}function BigInteger(t,e,a){null!=t&&("number"==typeof t?this.fromNumber(t,e,a):null==e&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,e))}function nbi(){return new BigInteger(null)}function am1(t,e,a,n,s,i){for(;--i>=0;){var r=e*this[t++]+a[n]+s;s=Math.floor(r/67108864),a[n++]=67108863&r}return s}function am2(t,e,a,n,s,i){for(var r=32767&e,o=e>>15;--i>=0;){var l=32767&this[t],c=this[t++]>>15,d=o*l+c*r;l=r*l+((32767&d)<<15)+a[n]+(1073741823&s),s=(l>>>30)+(d>>>15)+o*c+(s>>>30),a[n++]=1073741823&l}return s}function am3(t,e,a,n,s,i){for(var r=16383&e,o=e>>14;--i>=0;){var l=16383&this[t],c=this[t++]>>14,d=o*l+c*r;l=r*l+((16383&d)<<14)+a[n]+s,s=(l>>28)+(d>>14)+o*c,a[n++]=268435455&l}return s}function int2char(t){return BI_RM.charAt(t)}function intAt(t,e){var a=BI_RC[t.charCodeAt(e)];return null==a?-1:a}function bnpCopyTo(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s}function bnpFromInt(t){this.t=1,this.s=0>t?-1:0,t>0?this[0]=t:-1>t?this[0]=t+DV:this.t=0}function nbv(t){var e=nbi();return e.fromInt(t),e}function bnpFromString(t,e){var a;if(16==e)a=4;else if(8==e)a=3;else if(256==e)a=8;else if(2==e)a=1;else if(32==e)a=5;else{if(4!=e)return void this.fromRadix(t,e);a=2}this.t=0,this.s=0;for(var n=t.length,s=!1,i=0;--n>=0;){var r=8==a?255&t[n]:intAt(t,n);0>r?"-"==t.charAt(n)&&(s=!0):(s=!1,0==i?this[this.t++]=r:i+a>this.DB?(this[this.t-1]|=(r&(1<<this.DB-i)-1)<<i,this[this.t++]=r>>this.DB-i):this[this.t-1]|=r<<i,i+=a,i>=this.DB&&(i-=this.DB))}8==a&&0!=(128&t[0])&&(this.s=-1,i>0&&(this[this.t-1]|=(1<<this.DB-i)-1<<i)),this.clamp(),s&&BigInteger.ZERO.subTo(this,this)}function bnpClamp(){for(var t=this.s&this.DM;this.t>0&&this[this.t-1]==t;)--this.t}function bnToString(t){if(this.s<0)return"-"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var a,n=(1<<e)-1,s=!1,i="",r=this.t,o=this.DB-r*this.DB%e;if(r-->0)for(o<this.DB&&(a=this[r]>>o)>0&&(s=!0,i=int2char(a));r>=0;)e>o?(a=(this[r]&(1<<o)-1)<<e-o,a|=this[--r]>>(o+=this.DB-e)):(a=this[r]>>(o-=e)&n,0>=o&&(o+=this.DB,--r)),a>0&&(s=!0),s&&(i+=int2char(a));return s?i:"0"}function bnNegate(){var t=nbi();return BigInteger.ZERO.subTo(this,t),t}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(t){var e=this.s-t.s;if(0!=e)return e;var a=this.t;if(e=a-t.t,0!=e)return e;for(;--a>=0;)if(0!=(e=this[a]-t[a]))return e;return 0}function nbits(t){var e,a=1;return 0!=(e=t>>>16)&&(t=e,a+=16),0!=(e=t>>8)&&(t=e,a+=8),0!=(e=t>>4)&&(t=e,a+=4),0!=(e=t>>2)&&(t=e,a+=2),0!=(e=t>>1)&&(t=e,a+=1),a}function bnBitLength(){return this.t<=0?0:this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(t,e){var a;for(a=this.t-1;a>=0;--a)e[a+t]=this[a];for(a=t-1;a>=0;--a)e[a]=0;e.t=this.t+t,e.s=this.s}function bnpDRShiftTo(t,e){for(var a=t;a<this.t;++a)e[a-t]=this[a];e.t=Math.max(this.t-t,0),e.s=this.s}function bnpLShiftTo(t,e){var a,n=t%this.DB,s=this.DB-n,i=(1<<s)-1,r=Math.floor(t/this.DB),o=this.s<<n&this.DM;for(a=this.t-1;a>=0;--a)e[a+r+1]=this[a]>>s|o,o=(this[a]&i)<<n;for(a=r-1;a>=0;--a)e[a]=0;e[r]=o,e.t=this.t+r+1,e.s=this.s,e.clamp()}function bnpRShiftTo(t,e){e.s=this.s;var a=Math.floor(t/this.DB);if(a>=this.t)return void(e.t=0);var n=t%this.DB,s=this.DB-n,i=(1<<n)-1;e[0]=this[a]>>n;for(var r=a+1;r<this.t;++r)e[r-a-1]|=(this[r]&i)<<s,e[r-a]=this[r]>>n;n>0&&(e[this.t-a-1]|=(this.s&i)<<s),e.t=this.t-a,e.clamp()}function bnpSubTo(t,e){for(var a=0,n=0,s=Math.min(t.t,this.t);s>a;)n+=this[a]-t[a],e[a++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n-=t.s;a<this.t;)n+=this[a],e[a++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;a<t.t;)n-=t[a],e[a++]=n&this.DM,n>>=this.DB;n-=t.s}e.s=0>n?-1:0,-1>n?e[a++]=this.DV+n:n>0&&(e[a++]=n),e.t=a,e.clamp()}function bnpMultiplyTo(t,e){var a=this.abs(),n=t.abs(),s=a.t;for(e.t=s+n.t;--s>=0;)e[s]=0;for(s=0;s<n.t;++s)e[s+a.t]=a.am(0,n[s],e,s,0,a.t);e.s=0,e.clamp(),this.s!=t.s&&BigInteger.ZERO.subTo(e,e)}function bnpSquareTo(t){for(var e=this.abs(),a=t.t=2*e.t;--a>=0;)t[a]=0;for(a=0;a<e.t-1;++a){var n=e.am(a,e[a],t,2*a,0,1);(t[a+e.t]+=e.am(a+1,2*e[a],t,2*a+1,n,e.t-a-1))>=e.DV&&(t[a+e.t]-=e.DV,t[a+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(a,e[a],t,2*a,0,1)),t.s=0,t.clamp()}function bnpDivRemTo(t,e,a){var n=t.abs();if(!(n.t<=0)){var s=this.abs();if(s.t<n.t)return null!=e&&e.fromInt(0),void(null!=a&&this.copyTo(a));null==a&&(a=nbi());var i=nbi(),r=this.s,o=t.s,l=this.DB-nbits(n[n.t-1]);l>0?(n.lShiftTo(l,i),s.lShiftTo(l,a)):(n.copyTo(i),s.copyTo(a));var c=i.t,d=i[c-1];if(0!=d){var u=d*(1<<this.F1)+(c>1?i[c-2]>>this.F2:0),p=this.FV/u,h=(1<<this.F1)/u,f=1<<this.F2,m=a.t,_=m-c,b=null==e?nbi():e;for(i.dlShiftTo(_,b),a.compareTo(b)>=0&&(a[a.t++]=1,a.subTo(b,a)),BigInteger.ONE.dlShiftTo(c,b),b.subTo(i,i);i.t<c;)i[i.t++]=0;for(;--_>=0;){var v=a[--m]==d?this.DM:Math.floor(a[m]*p+(a[m-1]+f)*h);if((a[m]+=i.am(0,v,a,_,0,c))<v)for(i.dlShiftTo(_,b),a.subTo(b,a);a[m]<--v;)a.subTo(b,a)}null!=e&&(a.drShiftTo(c,e),r!=o&&BigInteger.ZERO.subTo(e,e)),a.t=c,a.clamp(),l>0&&a.rShiftTo(l,a),0>r&&BigInteger.ZERO.subTo(a,a)}}}function bnMod(t){var e=nbi();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(BigInteger.ZERO)>0&&t.subTo(e,e),e}function Classic(t){this.m=t}function cConvert(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t}function cRevert(t){return t}function cReduce(t){t.divRemTo(this.m,null,t)}function cMulTo(t,e,a){t.multiplyTo(e,a),this.reduce(a)}function cSqrTo(t,e){t.squareTo(e),this.reduce(e)}function bnpInvDigit(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return e=e*(2-(15&t)*e)&15,e=e*(2-(255&t)*e)&255,e=e*(2-((65535&t)*e&65535))&65535,e=e*(2-t*e%this.DV)%this.DV,e>0?this.DV-e:-e}function Montgomery(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<t.DB-15)-1,this.mt2=2*t.t}function montConvert(t){var e=nbi();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(BigInteger.ZERO)>0&&this.m.subTo(e,e),e}function montRevert(t){var e=nbi();return t.copyTo(e),this.reduce(e),e}function montReduce(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e<this.m.t;++e){var a=32767&t[e],n=a*this.mpl+((a*this.mph+(t[e]>>15)*this.mpl&this.um)<<15)&t.DM;for(a=e+this.m.t,t[a]+=this.m.am(0,n,t,e,0,this.m.t);t[a]>=t.DV;)t[a]-=t.DV,t[++a]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)}function montSqrTo(t,e){t.squareTo(e),this.reduce(e)}function montMulTo(t,e,a){t.multiplyTo(e,a),this.reduce(a)}function bnpIsEven(){return 0==(this.t>0?1&this[0]:this.s)}function bnpExp(t,e){if(t>4294967295||1>t)return BigInteger.ONE;var a=nbi(),n=nbi(),s=e.convert(this),i=nbits(t)-1;for(s.copyTo(a);--i>=0;)if(e.sqrTo(a,n),(t&1<<i)>0)e.mulTo(n,s,a);else{var r=a;a=n,n=r}return e.revert(a)}function bnModPowInt(t,e){var a;return a=256>t||e.isEven()?new Classic(e):new Montgomery(e),this.exp(t,a)}function parseBigInt(t,e){return new BigInteger(t,e)}function linebrk(t,e){for(var a="",n=0;n+e<t.length;)a+=t.substring(n,n+e)+"\n",n+=e;return a+t.substring(n,t.length)}function byte2Hex(t){return 16>t?"0"+t.toString(16):t.toString(16)}function pkcs1pad2(t,e){if(e<t.length+11)return alert("Message too long for RSA"),null;for(var a=new Array,n=t.length-1;n>=0&&e>0;){var s=t.charCodeAt(n--);128>s?a[--e]=s:s>127&&2048>s?(a[--e]=63&s|128,a[--e]=s>>6|192):(a[--e]=63&s|128,a[--e]=s>>6&63|128,a[--e]=s>>12|224)}a[--e]=0;for(var i=new SecureRandom,r=new Array;e>2;){for(r[0]=0;0==r[0];)i.nextBytes(r);a[--e]=r[0]}return a[--e]=2,a[--e]=0,new BigInteger(a)}function RSAKey(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}function RSASetPublic(t,e){null!=t&&null!=e&&t.length>0&&e.length>0?(this.n=parseBigInt(t,16),this.e=parseInt(e,16)):alert("Invalid RSA public key")}function RSADoPublic(t){return t.modPowInt(this.e,this.n)}function RSAEncrypt(t){var e=pkcs1pad2(t,this.n.bitLength()+7>>3);if(null==e)return null;var a=this.doPublic(e);if(null==a)return null;var n=a.toString(16);return 0==(1&n.length)?n:"0"+n}function Arcfour(){this.i=0,this.j=0,this.S=new Array}function ARC4init(t){var e,a,n;for(e=0;256>e;++e)this.S[e]=e;for(a=0,e=0;256>e;++e)a=a+this.S[e]+t[e%t.length]&255,n=this.S[e],this.S[e]=this.S[a],this.S[a]=n;this.i=0,this.j=0}function ARC4next(){var t;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,t=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=t,this.S[t+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}function rng_seed_int(t){rng_pool[rng_pptr++]^=255&t,rng_pool[rng_pptr++]^=t>>8&255,rng_pool[rng_pptr++]^=t>>16&255,rng_pool[rng_pptr++]^=t>>24&255,rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}function rng_get_byte(){if(null==rng_state){for(rng_seed_time(),rng_state=prng_newstate(),rng_state.init(rng_pool),rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr)rng_pool[rng_pptr]=0;rng_pptr=0}return rng_state.next()}function rng_get_bytes(t){var e;for(e=0;e<t.length;++e)t[e]=rng_get_byte()}function SecureRandom(){}function hex_sha1(t){return rstr2hex(rstr_sha1(str2rstr_utf8(t)))}function b64_sha1(t){return rstr2b64(rstr_sha1(str2rstr_utf8(t)))}function any_sha1(t,e){return rstr2any(rstr_sha1(str2rstr_utf8(t)),e)}function hex_hmac_sha1(t,e){return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(t),str2rstr_utf8(e)))}function b64_hmac_sha1(t,e){return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(t),str2rstr_utf8(e)))}function any_hmac_sha1(t,e,a){return rstr2any(rstr_hmac_sha1(str2rstr_utf8(t),str2rstr_utf8(e)),a)}function sha1_vm_test(){return"a9993e364706816aba3e25717850c26c9cd0d89d"==hex_sha1("abc").toLowerCase()}function rstr_sha1(t){return binb2rstr(binb_sha1(rstr2binb(t),8*t.length))}function rstr_hmac_sha1(t,e){var a=rstr2binb(t);a.length>16&&(a=binb_sha1(a,8*t.length));for(var n=Array(16),s=Array(16),i=0;16>i;i++)n[i]=909522486^a[i],s[i]=1549556828^a[i];var r=binb_sha1(n.concat(rstr2binb(e)),512+8*e.length);return binb2rstr(binb_sha1(s.concat(r),672))}function rstr2hex(t){try{}catch(e){hexcase=0}for(var a,n=hexcase?"0123456789ABCDEF":"0123456789abcdef",s="",i=0;i<t.length;i++)a=t.charCodeAt(i),s+=n.charAt(a>>>4&15)+n.charAt(15&a);return s}function rstr2b64(t){try{}catch(e){b64pad=""}for(var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n="",s=t.length,i=0;s>i;i+=3)for(var r=t.charCodeAt(i)<<16|(s>i+1?t.charCodeAt(i+1)<<8:0)|(s>i+2?t.charCodeAt(i+2):0),o=0;4>o;o++)n+=8*i+6*o>8*t.length?b64pad:a.charAt(r>>>6*(3-o)&63);return n}function rstr2any(t,e){var a,n,s,i,r=e.length,o=Array(),l=Array(Math.ceil(t.length/2));for(a=0;a<l.length;a++)l[a]=t.charCodeAt(2*a)<<8|t.charCodeAt(2*a+1);for(;l.length>0;){for(i=Array(),s=0,a=0;a<l.length;a++)s=(s<<16)+l[a],n=Math.floor(s/r),s-=n*r,(i.length>0||n>0)&&(i[i.length]=n);o[o.length]=s,l=i}var c="";for(a=o.length-1;a>=0;a--)c+=e.charAt(o[a]);var d=Math.ceil(8*t.length/(Math.log(e.length)/Math.log(2)));for(a=c.length;d>a;a++)c=e[0]+c;return c}function str2rstr_utf8(t){for(var e,a,n="",s=-1;++s<t.length;)e=t.charCodeAt(s),a=s+1<t.length?t.charCodeAt(s+1):0,e>=55296&&56319>=e&&a>=56320&&57343>=a&&(e=65536+((1023&e)<<10)+(1023&a),s++),127>=e?n+=String.fromCharCode(e):2047>=e?n+=String.fromCharCode(192|e>>>6&31,128|63&e):65535>=e?n+=String.fromCharCode(224|e>>>12&15,128|e>>>6&63,128|63&e):2097151>=e&&(n+=String.fromCharCode(240|e>>>18&7,128|e>>>12&63,128|e>>>6&63,128|63&e));return n}function str2rstr_utf16le(t){for(var e="",a=0;a<t.length;a++)e+=String.fromCharCode(255&t.charCodeAt(a),t.charCodeAt(a)>>>8&255);return e}function str2rstr_utf16be(t){for(var e="",a=0;a<t.length;a++)e+=String.fromCharCode(t.charCodeAt(a)>>>8&255,255&t.charCodeAt(a));return e}function rstr2binb(t){for(var e=Array(t.length>>2),a=0;a<e.length;a++)e[a]=0;for(var a=0;a<8*t.length;a+=8)e[a>>5]|=(255&t.charCodeAt(a/8))<<24-a%32;return e}function binb2rstr(t){for(var e="",a=0;a<32*t.length;a+=8)e+=String.fromCharCode(t[a>>5]>>>24-a%32&255);return e}function binb_sha1(t,e){t[e>>5]|=128<<24-e%32,t[(e+64>>9<<4)+15]=e;for(var a=Array(80),n=1732584193,s=-271733879,i=-1732584194,r=271733878,o=-1009589776,l=0;l<t.length;l+=16){for(var c=n,d=s,u=i,p=r,h=o,f=0;80>f;f++){a[f]=16>f?t[l+f]:bit_rol(a[f-3]^a[f-8]^a[f-14]^a[f-16],1);var m=safe_add(safe_add(bit_rol(n,5),sha1_ft(f,s,i,r)),safe_add(safe_add(o,a[f]),sha1_kt(f)));o=r,r=i,i=bit_rol(s,30),s=n,n=m}n=safe_add(n,c),s=safe_add(s,d),i=safe_add(i,u),r=safe_add(r,p),o=safe_add(o,h)}return Array(n,s,i,r,o)}function sha1_ft(t,e,a,n){return 20>t?e&a|~e&n:40>t?e^a^n:60>t?e&a|e&n|a&n:e^a^n}function sha1_kt(t){return 20>t?1518500249:40>t?1859775393:60>t?-1894007588:-899497514}function safe_add(t,e){var a=(65535&t)+(65535&e),n=(t>>16)+(e>>16)+(a>>16);return n<<16|65535&a}function bit_rol(t,e){return t<<e|t>>>32-e}function MGF1(t,e){var a,n,s;for(a=0,s=0;s<t.length;a++){var i=new String;for(n=0;n<e.length;n++)i+=String.fromCharCode(e[n]);i+=String.fromCharCode(a>>24&255),i+=String.fromCharCode(a>>16&255),i+=String.fromCharCode(a>>8&255),i+=String.fromCharCode(255&a);var r=rstr_sha1(i);for(n=0;n<r.length&&s<t.length;n++,s++)t[s]=r.charCodeAt(n)}}function RSA_padding_add_PKCS1_OAEP(t,e,a){var n=new Array(SHA_DIGEST_LENGTH),s=new SecureRandom;s.nextBytes(n);var i,r=t-1-n.length,o=new Array(r),l=r-e.length-1;if(void 0===a&&(a=""),SHA_DIGEST_LENGTH>l)return console.log("Error - data too large for key size."),null;for(i=0;l>i;i++)o[i]=0;var c=rstr_sha1(a);for(i=0;i<c.length;i++)o[i]=c.charCodeAt(i);for(o[l]=1,i=0;i<e.length;i++)o[i+l+1]=e.charCodeAt(i);var d=new Array(r);if(MGF1(d,n)<0)return null;for(i=0;i<d.length;i++)o[i]^=d[i];var u=Array(SHA_DIGEST_LENGTH);if(MGF1(u,o)<0)return null;for(i=0;i<u.length;i++)n[i]^=u[i];var p=new String;for(p+=String.fromCharCode(0),i=0;i<n.length;i++)p+=String.fromCharCode(n[i]);for(i=0;i<o.length;i++)p+=String.fromCharCode(o[i]);return p}function asn_get_length(t,e){var a=t[e++];if(a>128){if(129!=a)return console.log("Error:  we lazily don't support keys bigger than 255 bytes.  It'd be easy to fix."),null;a=t[e++]}return[e,a]}function find_sequence(t,e){var a;return e=e||0,48!=t[e++]?(console.log("Error:  public key should start with a sequence flag."),null):(a=asn_get_length(t,e),a?a:null)}function create_rsa_from_mb(t,e){var a,n,s,i,r,o=new Uint8Array(t);if(n=find_sequence(o,e),!n)return null;if(e=n[0],n=find_sequence(o,e),!n)return null;if(e=n[0]+n[1],3!=o[e++])return console.log("Error: expecting bit string next."),null;if(a=asn_get_length(o,e),!a)return null;if(e=a[0],0!=o[e]&&48!=o[e+1])return console.log("Error: unexpected values in bit string."),null;if(n=find_sequence(o,e+1),!n)return null;if(e=n[0],2!=o[e++])return console.log("Error: expecting integer n next."),null;if(a=asn_get_length(o,e),!a)return null;for(e=a[0],s=new Array(a[1]),i=0;i<a[1];i++)s[i]=o[e+i];if(r=new RSAKey,r.n=new BigInteger(s),e+=a[1],2!=o[e++])return console.log("Error: expecting integer e next."),null;if(a=asn_get_length(o,e),!a)return null;for(e=a[0],r.e=o[e++],i=1;i<a[1];i++)r.e<<=8,r.e|=o[e++];return r}function rsa_encrypt(t,e){var a,n=[],s=RSA_padding_add_PKCS1_OAEP(t.n.bitLength()+7>>3,e);if(!s)return null;var i=new Array(s.length);for(a=0;a<s.length;a++)i[a]=s.charCodeAt(a);var r=new BigInteger(i),o=t.doPublic(r),l=o.toString(16);for(0!=(1&l.length)&&(l="0"+l),a=0;a<l.length;a+=2)n[a/2]=parseInt(l.substring(a,a+2),16);return n}function resize_helper(t){var e=document.getElementById(t.screen_id).clientWidth,a=document.getElementById(t.screen_id).clientHeight,n=document.getElementById(t.message_id),s=window.innerHeight-n.offsetHeight-n.offsetTop-20;a+=s,a%8>0&&(a+=8-a%8),e%8>0&&(e+=8-e%8),t.resize_window(0,e,a,32,0,0),t.spice_resize_timer=void 0}function handle_resize(){var t=window.spice_connection;t&&t.spice_resize_timer&&(window.clearTimeout(t.spice_resize_timer),t.spice_resize_timer=void 0),t.spice_resize_timer=window.setTimeout(resize_helper,200,t)}function SpiceFileXferTask(t,e){this.id=t,this.file=e}function handle_file_dragover(t){t.stopPropagation(),t.preventDefault(),t.dataTransfer.dropEffect="copy"}function handle_file_drop(t){var e=window.spice_connection,a=t.dataTransfer.files;t.stopPropagation(),t.preventDefault();for(var n=a.length-1;n>=0;n--)a[n].type,e.file_xfer_start(a[n])}function SpiceMainConn(){if("undefined"==typeof WebSocket)throw new Error("WebSocket unavailable.  You need to use a different browser.");SpiceConn.apply(this,arguments),this.agent_msg_queue=[],this.file_xfer_tasks={},this.file_xfer_task_id=0,this.file_xfer_read_queue=[]}!function(t,e){"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){function a(t){var e=t.length,a=J.type(t);return"function"===a||J.isWindow(t)?!1:1===t.nodeType&&e?!0:"array"===a||0===e||"number"==typeof e&&e>0&&e-1 in t}function n(t,e,a){if(J.isFunction(e))return J.grep(t,function(t,n){return!!e.call(t,n,t)!==a});if(e.nodeType)return J.grep(t,function(t){return t===e!==a});if("string"==typeof e){if(oe.test(e))return J.filter(e,t,a);e=J.filter(e,t)}return J.grep(t,function(t){return K.call(e,t)>=0!==a})}function s(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function i(t){var e=fe[t]={};return J.each(t.match(he)||[],function(t,a){e[a]=!0}),e}function r(){Q.removeEventListener("DOMContentLoaded",r,!1),t.removeEventListener("load",r,!1),J.ready()}function o(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=J.expando+o.uid++}function l(t,e,a){var n;if(void 0===a&&1===t.nodeType)if(n="data-"+e.replace(ye,"-$1").toLowerCase(),a=t.getAttribute(n),"string"==typeof a){try{a="true"===a?!0:"false"===a?!1:"null"===a?null:+a+""===a?+a:ge.test(a)?J.parseJSON(a):a}catch(s){}ve.set(t,e,a)}else a=void 0;return a}function c(){return!0}function d(){return!1}function u(){try{return Q.activeElement}catch(t){}}function p(t,e){return J.nodeName(t,"table")&&J.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function h(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function f(t){var e=Le.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function m(t,e){for(var a=0,n=t.length;n>a;a++)be.set(t[a],"globalEval",!e||be.get(e[a],"globalEval"))}function _(t,e){var a,n,s,i,r,o,l,c;if(1===e.nodeType){if(be.hasData(t)&&(i=be.access(t),r=be.set(e,i),c=i.events)){delete r.handle,r.events={};for(s in c)for(a=0,n=c[s].length;n>a;a++)J.event.add(e,s,c[s][a])}ve.hasData(t)&&(o=ve.access(t),l=J.extend({},o),ve.set(e,l))}}function b(t,e){var a=t.getElementsByTagName?t.getElementsByTagName(e||"*"):t.querySelectorAll?t.querySelectorAll(e||"*"):[];return void 0===e||e&&J.nodeName(t,e)?J.merge([t],a):a}function v(t,e){var a=e.nodeName.toLowerCase();"input"===a&&Se.test(t.type)?e.checked=t.checked:("input"===a||"textarea"===a)&&(e.defaultValue=t.defaultValue)}function g(e,a){var n,s=J(a.createElement(e)).appendTo(a.body),i=t.getDefaultComputedStyle&&(n=t.getDefaultComputedStyle(s[0]))?n.display:J.css(s[0],"display");return s.detach(),i}function y(t){var e=Q,a=qe[t];return a||(a=g(t,e),"none"!==a&&a||(Fe=(Fe||J("<iframe frameborder='0' width='0' height='0'/>")).appendTo(e.documentElement),e=Fe[0].contentDocument,e.write(),e.close(),a=g(t,e),Fe.detach()),qe[t]=a),a}function w(t,e,a){var n,s,i,r,o=t.style;return a=a||Ge(t),a&&(r=a.getPropertyValue(e)||a[e]),a&&(""!==r||J.contains(t.ownerDocument,t)||(r=J.style(t,e)),Ve.test(r)&&ze.test(e)&&(n=o.width,s=o.minWidth,i=o.maxWidth,o.minWidth=o.maxWidth=o.width=r,r=a.width,o.width=n,o.minWidth=s,o.maxWidth=i)),void 0!==r?r+"":r}function T(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function E(t,e){if(e in t)return e;for(var a=e[0].toUpperCase()+e.slice(1),n=e,s=We.length;s--;)if(e=We[s]+a,e in t)return e;return n}function S(t,e,a){var n=He.exec(e);return n?Math.max(0,n[1]-(a||0))+(n[2]||"px"):e}function I(t,e,a,n,s){for(var i=a===(n?"border":"content")?4:"width"===e?1:0,r=0;4>i;i+=2)"margin"===a&&(r+=J.css(t,a+Te[i],!0,s)),n?("content"===a&&(r-=J.css(t,"padding"+Te[i],!0,s)),"margin"!==a&&(r-=J.css(t,"border"+Te[i]+"Width",!0,s))):(r+=J.css(t,"padding"+Te[i],!0,s),"padding"!==a&&(r+=J.css(t,"border"+Te[i]+"Width",!0,s)));return r}function x(t,e,a){var n=!0,s="width"===e?t.offsetWidth:t.offsetHeight,i=Ge(t),r="border-box"===J.css(t,"boxSizing",!1,i);if(0>=s||null==s){if(s=w(t,e,i),(0>s||null==s)&&(s=t.style[e]),Ve.test(s))return s;n=r&&(X.boxSizingReliable()||s===t.style[e]),s=parseFloat(s)||0}return s+I(t,e,a||(r?"border":"content"),n,i)+"px"}function A(t,e){for(var a,n,s,i=[],r=0,o=t.length;o>r;r++)n=t[r],n.style&&(i[r]=be.get(n,"olddisplay"),a=n.style.display,e?(i[r]||"none"!==a||(n.style.display=""),""===n.style.display&&Ee(n)&&(i[r]=be.access(n,"olddisplay",y(n.nodeName)))):(s=Ee(n),"none"===a&&s||be.set(n,"olddisplay",s?a:J.css(n,"display"))));for(r=0;o>r;r++)n=t[r],n.style&&(e&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=e?i[r]||"":"none"));return t}function M(t,e,a,n,s){return new M.prototype.init(t,e,a,n,s)}function k(){return setTimeout(function(){Xe=void 0}),Xe=J.now()}function D(t,e){var a,n=0,s={height:t};for(e=e?1:0;4>n;n+=2-e)a=Te[n],s["margin"+a]=s["padding"+a]=t;return e&&(s.opacity=s.width=t),s}function C(t,e,a){for(var n,s=(aa[e]||[]).concat(aa["*"]),i=0,r=s.length;r>i;i++)if(n=s[i].call(a,e,t))return n}function P(t,e,a){var n,s,i,r,o,l,c,d,u=this,p={},h=t.style,f=t.nodeType&&Ee(t),m=be.get(t,"fxshow");a.queue||(o=J._queueHooks(t,"fx"),null==o.unqueued&&(o.unqueued=0,l=o.empty.fire,o.empty.fire=function(){o.unqueued||l()}),o.unqueued++,u.always(function(){u.always(function(){o.unqueued--,J.queue(t,"fx").length||o.empty.fire()})})),1===t.nodeType&&("height"in e||"width"in e)&&(a.overflow=[h.overflow,h.overflowX,h.overflowY],c=J.css(t,"display"),d="none"===c?be.get(t,"olddisplay")||y(t.nodeName):c,"inline"===d&&"none"===J.css(t,"float")&&(h.display="inline-block")),a.overflow&&(h.overflow="hidden",u.always(function(){h.overflow=a.overflow[0],h.overflowX=a.overflow[1],h.overflowY=a.overflow[2]}));for(n in e)if(s=e[n],Ze.exec(s)){if(delete e[n],i=i||"toggle"===s,s===(f?"hide":"show")){if("show"!==s||!m||void 0===m[n])continue;f=!0}p[n]=m&&m[n]||J.style(t,n)}else c=void 0;if(J.isEmptyObject(p))"inline"===("none"===c?y(t.nodeName):c)&&(h.display=c);else{m?"hidden"in m&&(f=m.hidden):m=be.access(t,"fxshow",{}),i&&(m.hidden=!f),f?J(t).show():u.done(function(){J(t).hide()}),u.done(function(){var e;be.remove(t,"fxshow");for(e in p)J.style(t,e,p[e])});for(n in p)r=C(f?m[n]:0,n,u),n in m||(m[n]=r.start,f&&(r.end=r.start,r.start="width"===n||"height"===n?1:0))}}function $(t,e){var a,n,s,i,r;for(a in t)if(n=J.camelCase(a),s=e[n],i=t[a],J.isArray(i)&&(s=i[1],i=t[a]=i[0]),a!==n&&(t[n]=i,delete t[a]),r=J.cssHooks[n],r&&"expand"in r){i=r.expand(i),delete t[n];for(a in i)a in t||(t[a]=i[a],e[a]=s)}else e[n]=s}function O(t,e,a){var n,s,i=0,r=ea.length,o=J.Deferred().always(function(){delete l.elem}),l=function(){if(s)return!1;for(var e=Xe||k(),a=Math.max(0,c.startTime+c.duration-e),n=a/c.duration||0,i=1-n,r=0,l=c.tweens.length;l>r;r++)c.tweens[r].run(i);return o.notifyWith(t,[c,i,a]),1>i&&l?a:(o.resolveWith(t,[c]),!1)},c=o.promise({elem:t,props:J.extend({},e),opts:J.extend(!0,{specialEasing:{}},a),originalProperties:e,originalOptions:a,startTime:Xe||k(),duration:a.duration,tweens:[],createTween:function(e,a){var n=J.Tween(t,c.opts,e,a,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(n),n},stop:function(e){var a=0,n=e?c.tweens.length:0;if(s)return this;for(s=!0;n>a;a++)c.tweens[a].run(1);return e?o.resolveWith(t,[c,e]):o.rejectWith(t,[c,e]),this}}),d=c.props;for($(d,c.opts.specialEasing);r>i;i++)if(n=ea[i].call(c,t,d,c.opts))return n;return J.map(d,C,c),J.isFunction(c.opts.start)&&c.opts.start.call(t,c),J.fx.timer(J.extend(l,{elem:t,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function R(t){return function(e,a){"string"!=typeof e&&(a=e,e="*");var n,s=0,i=e.toLowerCase().match(he)||[];if(J.isFunction(a))for(;n=i[s++];)"+"===n[0]?(n=n.slice(1)||"*",(t[n]=t[n]||[]).unshift(a)):(t[n]=t[n]||[]).push(a)}}function L(t,e,a,n){function s(o){var l;return i[o]=!0,J.each(t[o]||[],function(t,o){var c=o(e,a,n);return"string"!=typeof c||r||i[c]?r?!(l=c):void 0:(e.dataTypes.unshift(c),s(c),!1)}),l}var i={},r=t===ga;return s(e.dataTypes[0])||!i["*"]&&s("*")}function N(t,e){var a,n,s=J.ajaxSettings.flatOptions||{};for(a in e)void 0!==e[a]&&((s[a]?t:n||(n={}))[a]=e[a]);return n&&J.extend(!0,t,n),t}function U(t,e,a){for(var n,s,i,r,o=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===n&&(n=t.mimeType||e.getResponseHeader("Content-Type"));
+if(n)for(s in o)if(o[s]&&o[s].test(n)){l.unshift(s);break}if(l[0]in a)i=l[0];else{for(s in a){if(!l[0]||t.converters[s+" "+l[0]]){i=s;break}r||(r=s)}i=i||r}return i?(i!==l[0]&&l.unshift(i),a[i]):void 0}function F(t,e,a,n){var s,i,r,o,l,c={},d=t.dataTypes.slice();if(d[1])for(r in t.converters)c[r.toLowerCase()]=t.converters[r];for(i=d.shift();i;)if(t.responseFields[i]&&(a[t.responseFields[i]]=e),!l&&n&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=i,i=d.shift())if("*"===i)i=l;else if("*"!==l&&l!==i){if(r=c[l+" "+i]||c["* "+i],!r)for(s in c)if(o=s.split(" "),o[1]===i&&(r=c[l+" "+o[0]]||c["* "+o[0]])){r===!0?r=c[s]:c[s]!==!0&&(i=o[0],d.unshift(o[1]));break}if(r!==!0)if(r&&t["throws"])e=r(e);else try{e=r(e)}catch(u){return{state:"parsererror",error:r?u:"No conversion from "+l+" to "+i}}}return{state:"success",data:e}}function q(t,e,a,n){var s;if(J.isArray(e))J.each(e,function(e,s){a||Sa.test(t)?n(t,s):q(t+"["+("object"==typeof s?e:"")+"]",s,a,n)});else if(a||"object"!==J.type(e))n(t,e);else for(s in e)q(t+"["+s+"]",e[s],a,n)}function z(t){return J.isWindow(t)?t:9===t.nodeType&&t.defaultView}var V=[],G=V.slice,B=V.concat,H=V.push,K=V.indexOf,j={},Y=j.toString,W=j.hasOwnProperty,X={},Q=t.document,Z="2.1.3",J=function(t,e){return new J.fn.init(t,e)},te=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ee=/^-ms-/,ae=/-([\da-z])/gi,ne=function(t,e){return e.toUpperCase()};J.fn=J.prototype={jquery:Z,constructor:J,selector:"",length:0,toArray:function(){return G.call(this)},get:function(t){return null!=t?0>t?this[t+this.length]:this[t]:G.call(this)},pushStack:function(t){var e=J.merge(this.constructor(),t);return e.prevObject=this,e.context=this.context,e},each:function(t,e){return J.each(this,t,e)},map:function(t){return this.pushStack(J.map(this,function(e,a){return t.call(e,a,e)}))},slice:function(){return this.pushStack(G.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,a=+t+(0>t?e:0);return this.pushStack(a>=0&&e>a?[this[a]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:H,sort:V.sort,splice:V.splice},J.extend=J.fn.extend=function(){var t,e,a,n,s,i,r=arguments[0]||{},o=1,l=arguments.length,c=!1;for("boolean"==typeof r&&(c=r,r=arguments[o]||{},o++),"object"==typeof r||J.isFunction(r)||(r={}),o===l&&(r=this,o--);l>o;o++)if(null!=(t=arguments[o]))for(e in t)a=r[e],n=t[e],r!==n&&(c&&n&&(J.isPlainObject(n)||(s=J.isArray(n)))?(s?(s=!1,i=a&&J.isArray(a)?a:[]):i=a&&J.isPlainObject(a)?a:{},r[e]=J.extend(c,i,n)):void 0!==n&&(r[e]=n));return r},J.extend({expando:"jQuery"+(Z+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isFunction:function(t){return"function"===J.type(t)},isArray:Array.isArray,isWindow:function(t){return null!=t&&t===t.window},isNumeric:function(t){return!J.isArray(t)&&t-parseFloat(t)+1>=0},isPlainObject:function(t){return"object"!==J.type(t)||t.nodeType||J.isWindow(t)?!1:t.constructor&&!W.call(t.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},type:function(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?j[Y.call(t)]||"object":typeof t},globalEval:function(t){var e,a=eval;t=J.trim(t),t&&(1===t.indexOf("use strict")?(e=Q.createElement("script"),e.text=t,Q.head.appendChild(e).parentNode.removeChild(e)):a(t))},camelCase:function(t){return t.replace(ee,"ms-").replace(ae,ne)},nodeName:function(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()},each:function(t,e,n){var s,i=0,r=t.length,o=a(t);if(n){if(o)for(;r>i&&(s=e.apply(t[i],n),s!==!1);i++);else for(i in t)if(s=e.apply(t[i],n),s===!1)break}else if(o)for(;r>i&&(s=e.call(t[i],i,t[i]),s!==!1);i++);else for(i in t)if(s=e.call(t[i],i,t[i]),s===!1)break;return t},trim:function(t){return null==t?"":(t+"").replace(te,"")},makeArray:function(t,e){var n=e||[];return null!=t&&(a(Object(t))?J.merge(n,"string"==typeof t?[t]:t):H.call(n,t)),n},inArray:function(t,e,a){return null==e?-1:K.call(e,t,a)},merge:function(t,e){for(var a=+e.length,n=0,s=t.length;a>n;n++)t[s++]=e[n];return t.length=s,t},grep:function(t,e,a){for(var n,s=[],i=0,r=t.length,o=!a;r>i;i++)n=!e(t[i],i),n!==o&&s.push(t[i]);return s},map:function(t,e,n){var s,i=0,r=t.length,o=a(t),l=[];if(o)for(;r>i;i++)s=e(t[i],i,n),null!=s&&l.push(s);else for(i in t)s=e(t[i],i,n),null!=s&&l.push(s);return B.apply([],l)},guid:1,proxy:function(t,e){var a,n,s;return"string"==typeof e&&(a=t[e],e=t,t=a),J.isFunction(t)?(n=G.call(arguments,2),s=function(){return t.apply(e||this,n.concat(G.call(arguments)))},s.guid=t.guid=t.guid||J.guid++,s):void 0},now:Date.now,support:X}),J.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(t,e){j["[object "+e+"]"]=e.toLowerCase()});var se=function(t){function e(t,e,a,n){var s,i,r,o,l,c,u,h,f,m;if((e?e.ownerDocument||e:q)!==P&&C(e),e=e||P,a=a||[],o=e.nodeType,"string"!=typeof t||!t||1!==o&&9!==o&&11!==o)return a;if(!n&&O){if(11!==o&&(s=ve.exec(t)))if(r=s[1]){if(9===o){if(i=e.getElementById(r),!i||!i.parentNode)return a;if(i.id===r)return a.push(i),a}else if(e.ownerDocument&&(i=e.ownerDocument.getElementById(r))&&U(e,i)&&i.id===r)return a.push(i),a}else{if(s[2])return Z.apply(a,e.getElementsByTagName(t)),a;if((r=s[3])&&w.getElementsByClassName)return Z.apply(a,e.getElementsByClassName(r)),a}if(w.qsa&&(!R||!R.test(t))){if(h=u=F,f=e,m=1!==o&&t,1===o&&"object"!==e.nodeName.toLowerCase()){for(c=I(t),(u=e.getAttribute("id"))?h=u.replace(ye,"\\$&"):e.setAttribute("id",h),h="[id='"+h+"'] ",l=c.length;l--;)c[l]=h+p(c[l]);f=ge.test(t)&&d(e.parentNode)||e,m=c.join(",")}if(m)try{return Z.apply(a,f.querySelectorAll(m)),a}catch(_){}finally{u||e.removeAttribute("id")}}}return A(t.replace(le,"$1"),e,a,n)}function a(){function t(a,n){return e.push(a+" ")>T.cacheLength&&delete t[e.shift()],t[a+" "]=n}var e=[];return t}function n(t){return t[F]=!0,t}function s(t){var e=P.createElement("div");try{return!!t(e)}catch(a){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function i(t,e){for(var a=t.split("|"),n=t.length;n--;)T.attrHandle[a[n]]=e}function r(t,e){var a=e&&t,n=a&&1===t.nodeType&&1===e.nodeType&&(~e.sourceIndex||j)-(~t.sourceIndex||j);if(n)return n;if(a)for(;a=a.nextSibling;)if(a===e)return-1;return t?1:-1}function o(t){return function(e){var a=e.nodeName.toLowerCase();return"input"===a&&e.type===t}}function l(t){return function(e){var a=e.nodeName.toLowerCase();return("input"===a||"button"===a)&&e.type===t}}function c(t){return n(function(e){return e=+e,n(function(a,n){for(var s,i=t([],a.length,e),r=i.length;r--;)a[s=i[r]]&&(a[s]=!(n[s]=a[s]))})})}function d(t){return t&&"undefined"!=typeof t.getElementsByTagName&&t}function u(){}function p(t){for(var e=0,a=t.length,n="";a>e;e++)n+=t[e].value;return n}function h(t,e,a){var n=e.dir,s=a&&"parentNode"===n,i=V++;return e.first?function(e,a,i){for(;e=e[n];)if(1===e.nodeType||s)return t(e,a,i)}:function(e,a,r){var o,l,c=[z,i];if(r){for(;e=e[n];)if((1===e.nodeType||s)&&t(e,a,r))return!0}else for(;e=e[n];)if(1===e.nodeType||s){if(l=e[F]||(e[F]={}),(o=l[n])&&o[0]===z&&o[1]===i)return c[2]=o[2];if(l[n]=c,c[2]=t(e,a,r))return!0}}}function f(t){return t.length>1?function(e,a,n){for(var s=t.length;s--;)if(!t[s](e,a,n))return!1;return!0}:t[0]}function m(t,a,n){for(var s=0,i=a.length;i>s;s++)e(t,a[s],n);return n}function _(t,e,a,n,s){for(var i,r=[],o=0,l=t.length,c=null!=e;l>o;o++)(i=t[o])&&(!a||a(i,n,s))&&(r.push(i),c&&e.push(o));return r}function b(t,e,a,s,i,r){return s&&!s[F]&&(s=b(s)),i&&!i[F]&&(i=b(i,r)),n(function(n,r,o,l){var c,d,u,p=[],h=[],f=r.length,b=n||m(e||"*",o.nodeType?[o]:o,[]),v=!t||!n&&e?b:_(b,p,t,o,l),g=a?i||(n?t:f||s)?[]:r:v;if(a&&a(v,g,o,l),s)for(c=_(g,h),s(c,[],o,l),d=c.length;d--;)(u=c[d])&&(g[h[d]]=!(v[h[d]]=u));if(n){if(i||t){if(i){for(c=[],d=g.length;d--;)(u=g[d])&&c.push(v[d]=u);i(null,g=[],c,l)}for(d=g.length;d--;)(u=g[d])&&(c=i?te(n,u):p[d])>-1&&(n[c]=!(r[c]=u))}}else g=_(g===r?g.splice(f,g.length):g),i?i(null,r,g,l):Z.apply(r,g)})}function v(t){for(var e,a,n,s=t.length,i=T.relative[t[0].type],r=i||T.relative[" "],o=i?1:0,l=h(function(t){return t===e},r,!0),c=h(function(t){return te(e,t)>-1},r,!0),d=[function(t,a,n){var s=!i&&(n||a!==M)||((e=a).nodeType?l(t,a,n):c(t,a,n));return e=null,s}];s>o;o++)if(a=T.relative[t[o].type])d=[h(f(d),a)];else{if(a=T.filter[t[o].type].apply(null,t[o].matches),a[F]){for(n=++o;s>n&&!T.relative[t[n].type];n++);return b(o>1&&f(d),o>1&&p(t.slice(0,o-1).concat({value:" "===t[o-2].type?"*":""})).replace(le,"$1"),a,n>o&&v(t.slice(o,n)),s>n&&v(t=t.slice(n)),s>n&&p(t))}d.push(a)}return f(d)}function g(t,a){var s=a.length>0,i=t.length>0,r=function(n,r,o,l,c){var d,u,p,h=0,f="0",m=n&&[],b=[],v=M,g=n||i&&T.find.TAG("*",c),y=z+=null==v?1:Math.random()||.1,w=g.length;for(c&&(M=r!==P&&r);f!==w&&null!=(d=g[f]);f++){if(i&&d){for(u=0;p=t[u++];)if(p(d,r,o)){l.push(d);break}c&&(z=y)}s&&((d=!p&&d)&&h--,n&&m.push(d))}if(h+=f,s&&f!==h){for(u=0;p=a[u++];)p(m,b,r,o);if(n){if(h>0)for(;f--;)m[f]||b[f]||(b[f]=X.call(l));b=_(b)}Z.apply(l,b),c&&!n&&b.length>0&&h+a.length>1&&e.uniqueSort(l)}return c&&(z=y,M=v),m};return s?n(r):r}var y,w,T,E,S,I,x,A,M,k,D,C,P,$,O,R,L,N,U,F="sizzle"+1*new Date,q=t.document,z=0,V=0,G=a(),B=a(),H=a(),K=function(t,e){return t===e&&(D=!0),0},j=1<<31,Y={}.hasOwnProperty,W=[],X=W.pop,Q=W.push,Z=W.push,J=W.slice,te=function(t,e){for(var a=0,n=t.length;n>a;a++)if(t[a]===e)return a;return-1},ee="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ae="[\\x20\\t\\r\\n\\f]",ne="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",se=ne.replace("w","w#"),ie="\\["+ae+"*("+ne+")(?:"+ae+"*([*^$|!~]?=)"+ae+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+se+"))|)"+ae+"*\\]",re=":("+ne+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ie+")*)|.*)\\)|)",oe=new RegExp(ae+"+","g"),le=new RegExp("^"+ae+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ae+"+$","g"),ce=new RegExp("^"+ae+"*,"+ae+"*"),de=new RegExp("^"+ae+"*([>+~]|"+ae+")"+ae+"*"),ue=new RegExp("="+ae+"*([^\\]'\"]*?)"+ae+"*\\]","g"),pe=new RegExp(re),he=new RegExp("^"+se+"$"),fe={ID:new RegExp("^#("+ne+")"),CLASS:new RegExp("^\\.("+ne+")"),TAG:new RegExp("^("+ne.replace("w","w*")+")"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+re),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ae+"*(even|odd|(([+-]|)(\\d*)n|)"+ae+"*(?:([+-]|)"+ae+"*(\\d+)|))"+ae+"*\\)|)","i"),bool:new RegExp("^(?:"+ee+")$","i"),needsContext:new RegExp("^"+ae+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ae+"*((?:-\\d)?\\d*)"+ae+"*\\)|)(?=[^-]|$)","i")},me=/^(?:input|select|textarea|button)$/i,_e=/^h\d$/i,be=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ge=/[+~]/,ye=/'|\\/g,we=new RegExp("\\\\([\\da-f]{1,6}"+ae+"?|("+ae+")|.)","ig"),Te=function(t,e,a){var n="0x"+e-65536;return n!==n||a?e:0>n?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320)},Ee=function(){C()};try{Z.apply(W=J.call(q.childNodes),q.childNodes),W[q.childNodes.length].nodeType}catch(Se){Z={apply:W.length?function(t,e){Q.apply(t,J.call(e))}:function(t,e){for(var a=t.length,n=0;t[a++]=e[n++];);t.length=a-1}}}w=e.support={},S=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return e?"HTML"!==e.nodeName:!1},C=e.setDocument=function(t){var e,a,n=t?t.ownerDocument||t:q;return n!==P&&9===n.nodeType&&n.documentElement?(P=n,$=n.documentElement,a=n.defaultView,a&&a!==a.top&&(a.addEventListener?a.addEventListener("unload",Ee,!1):a.attachEvent&&a.attachEvent("onunload",Ee)),O=!S(n),w.attributes=s(function(t){return t.className="i",!t.getAttribute("className")}),w.getElementsByTagName=s(function(t){return t.appendChild(n.createComment("")),!t.getElementsByTagName("*").length}),w.getElementsByClassName=be.test(n.getElementsByClassName),w.getById=s(function(t){return $.appendChild(t).id=F,!n.getElementsByName||!n.getElementsByName(F).length}),w.getById?(T.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&O){var a=e.getElementById(t);return a&&a.parentNode?[a]:[]}},T.filter.ID=function(t){var e=t.replace(we,Te);return function(t){return t.getAttribute("id")===e}}):(delete T.find.ID,T.filter.ID=function(t){var e=t.replace(we,Te);return function(t){var a="undefined"!=typeof t.getAttributeNode&&t.getAttributeNode("id");return a&&a.value===e}}),T.find.TAG=w.getElementsByTagName?function(t,e){return"undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t):w.qsa?e.querySelectorAll(t):void 0}:function(t,e){var a,n=[],s=0,i=e.getElementsByTagName(t);if("*"===t){for(;a=i[s++];)1===a.nodeType&&n.push(a);return n}return i},T.find.CLASS=w.getElementsByClassName&&function(t,e){return O?e.getElementsByClassName(t):void 0},L=[],R=[],(w.qsa=be.test(n.querySelectorAll))&&(s(function(t){$.appendChild(t).innerHTML="<a id='"+F+"'></a><select id='"+F+"-\f]' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&R.push("[*^$]="+ae+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||R.push("\\["+ae+"*(?:value|"+ee+")"),t.querySelectorAll("[id~="+F+"-]").length||R.push("~="),t.querySelectorAll(":checked").length||R.push(":checked"),t.querySelectorAll("a#"+F+"+*").length||R.push(".#.+[+~]")}),s(function(t){var e=n.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&R.push("name"+ae+"*[*^$|!~]?="),t.querySelectorAll(":enabled").length||R.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),R.push(",.*:")})),(w.matchesSelector=be.test(N=$.matches||$.webkitMatchesSelector||$.mozMatchesSelector||$.oMatchesSelector||$.msMatchesSelector))&&s(function(t){w.disconnectedMatch=N.call(t,"div"),N.call(t,"[s!='']:x"),L.push("!=",re)}),R=R.length&&new RegExp(R.join("|")),L=L.length&&new RegExp(L.join("|")),e=be.test($.compareDocumentPosition),U=e||be.test($.contains)?function(t,e){var a=9===t.nodeType?t.documentElement:t,n=e&&e.parentNode;return t===n||!(!n||1!==n.nodeType||!(a.contains?a.contains(n):t.compareDocumentPosition&&16&t.compareDocumentPosition(n)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},K=e?function(t,e){if(t===e)return D=!0,0;var a=!t.compareDocumentPosition-!e.compareDocumentPosition;return a?a:(a=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&a||!w.sortDetached&&e.compareDocumentPosition(t)===a?t===n||t.ownerDocument===q&&U(q,t)?-1:e===n||e.ownerDocument===q&&U(q,e)?1:k?te(k,t)-te(k,e):0:4&a?-1:1)}:function(t,e){if(t===e)return D=!0,0;var a,s=0,i=t.parentNode,o=e.parentNode,l=[t],c=[e];if(!i||!o)return t===n?-1:e===n?1:i?-1:o?1:k?te(k,t)-te(k,e):0;if(i===o)return r(t,e);for(a=t;a=a.parentNode;)l.unshift(a);for(a=e;a=a.parentNode;)c.unshift(a);for(;l[s]===c[s];)s++;return s?r(l[s],c[s]):l[s]===q?-1:c[s]===q?1:0},n):P},e.matches=function(t,a){return e(t,null,null,a)},e.matchesSelector=function(t,a){if((t.ownerDocument||t)!==P&&C(t),a=a.replace(ue,"='$1']"),!(!w.matchesSelector||!O||L&&L.test(a)||R&&R.test(a)))try{var n=N.call(t,a);if(n||w.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(s){}return e(a,P,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==P&&C(t),U(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==P&&C(t);var a=T.attrHandle[e.toLowerCase()],n=a&&Y.call(T.attrHandle,e.toLowerCase())?a(t,e,!O):void 0;return void 0!==n?n:w.attributes||!O?t.getAttribute(e):(n=t.getAttributeNode(e))&&n.specified?n.value:null},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,a=[],n=0,s=0;if(D=!w.detectDuplicates,k=!w.sortStable&&t.slice(0),t.sort(K),D){for(;e=t[s++];)e===t[s]&&(n=a.push(s));for(;n--;)t.splice(a[n],1)}return k=null,t},E=e.getText=function(t){var e,a="",n=0,s=t.nodeType;if(s){if(1===s||9===s||11===s){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)a+=E(t)}else if(3===s||4===s)return t.nodeValue}else for(;e=t[n++];)a+=E(e);return a},T=e.selectors={cacheLength:50,createPseudo:n,match:fe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(we,Te),t[3]=(t[3]||t[4]||t[5]||"").replace(we,Te),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,a=!t[6]&&t[2];return fe.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":a&&pe.test(a)&&(e=I(a,!0))&&(e=a.indexOf(")",a.length-e)-a.length)&&(t[0]=t[0].slice(0,e),t[2]=a.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(we,Te).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=G[t+" "];return e||(e=new RegExp("(^|"+ae+")"+t+"("+ae+"|$)"))&&G(t,function(t){return e.test("string"==typeof t.className&&t.className||"undefined"!=typeof t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,a,n){return function(s){var i=e.attr(s,t);return null==i?"!="===a:a?(i+="","="===a?i===n:"!="===a?i!==n:"^="===a?n&&0===i.indexOf(n):"*="===a?n&&i.indexOf(n)>-1:"$="===a?n&&i.slice(-n.length)===n:"~="===a?(" "+i.replace(oe," ")+" ").indexOf(n)>-1:"|="===a?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(t,e,a,n,s){var i="nth"!==t.slice(0,3),r="last"!==t.slice(-4),o="of-type"===e;return 1===n&&0===s?function(t){return!!t.parentNode}:function(e,a,l){var c,d,u,p,h,f,m=i!==r?"nextSibling":"previousSibling",_=e.parentNode,b=o&&e.nodeName.toLowerCase(),v=!l&&!o;if(_){if(i){for(;m;){for(u=e;u=u[m];)if(o?u.nodeName.toLowerCase()===b:1===u.nodeType)return!1;f=m="only"===t&&!f&&"nextSibling"}return!0}if(f=[r?_.firstChild:_.lastChild],r&&v){for(d=_[F]||(_[F]={}),c=d[t]||[],h=c[0]===z&&c[1],p=c[0]===z&&c[2],u=h&&_.childNodes[h];u=++h&&u&&u[m]||(p=h=0)||f.pop();)if(1===u.nodeType&&++p&&u===e){d[t]=[z,h,p];break}}else if(v&&(c=(e[F]||(e[F]={}))[t])&&c[0]===z)p=c[1];else for(;(u=++h&&u&&u[m]||(p=h=0)||f.pop())&&((o?u.nodeName.toLowerCase()!==b:1!==u.nodeType)||!++p||(v&&((u[F]||(u[F]={}))[t]=[z,p]),u!==e)););return p-=s,p===n||p%n===0&&p/n>=0}}},PSEUDO:function(t,a){var s,i=T.pseudos[t]||T.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return i[F]?i(a):i.length>1?(s=[t,t,"",a],T.setFilters.hasOwnProperty(t.toLowerCase())?n(function(t,e){for(var n,s=i(t,a),r=s.length;r--;)n=te(t,s[r]),t[n]=!(e[n]=s[r])}):function(t){return i(t,0,s)}):i}},pseudos:{not:n(function(t){var e=[],a=[],s=x(t.replace(le,"$1"));return s[F]?n(function(t,e,a,n){for(var i,r=s(t,null,n,[]),o=t.length;o--;)(i=r[o])&&(t[o]=!(e[o]=i))}):function(t,n,i){return e[0]=t,s(e,null,i,a),e[0]=null,!a.pop()}}),has:n(function(t){return function(a){return e(t,a).length>0}}),contains:n(function(t){return t=t.replace(we,Te),function(e){return(e.textContent||e.innerText||E(e)).indexOf(t)>-1}}),lang:n(function(t){return he.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(we,Te).toLowerCase(),function(e){var a;do if(a=O?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return a=a.toLowerCase(),a===t||0===a.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var a=t.location&&t.location.hash;return a&&a.slice(1)===e.id},root:function(t){return t===$},focus:function(t){return t===P.activeElement&&(!P.hasFocus||P.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:function(t){return t.disabled===!1},disabled:function(t){return t.disabled===!0},checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,t.selected===!0},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!T.pseudos.empty(t)},header:function(t){return _e.test(t.nodeName)},input:function(t){return me.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:c(function(){return[0]}),last:c(function(t,e){return[e-1]}),eq:c(function(t,e,a){return[0>a?a+e:a]}),even:c(function(t,e){for(var a=0;e>a;a+=2)t.push(a);return t}),odd:c(function(t,e){for(var a=1;e>a;a+=2)t.push(a);return t}),lt:c(function(t,e,a){for(var n=0>a?a+e:a;--n>=0;)t.push(n);return t}),gt:c(function(t,e,a){for(var n=0>a?a+e:a;++n<e;)t.push(n);return t})}},T.pseudos.nth=T.pseudos.eq;for(y in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})T.pseudos[y]=o(y);for(y in{submit:!0,reset:!0})T.pseudos[y]=l(y);return u.prototype=T.filters=T.pseudos,T.setFilters=new u,I=e.tokenize=function(t,a){var n,s,i,r,o,l,c,d=B[t+" "];if(d)return a?0:d.slice(0);for(o=t,l=[],c=T.preFilter;o;){(!n||(s=ce.exec(o)))&&(s&&(o=o.slice(s[0].length)||o),l.push(i=[])),n=!1,(s=de.exec(o))&&(n=s.shift(),i.push({value:n,type:s[0].replace(le," ")}),o=o.slice(n.length));for(r in T.filter)!(s=fe[r].exec(o))||c[r]&&!(s=c[r](s))||(n=s.shift(),i.push({value:n,type:r,matches:s}),o=o.slice(n.length));if(!n)break}return a?o.length:o?e.error(t):B(t,l).slice(0)},x=e.compile=function(t,e){var a,n=[],s=[],i=H[t+" "];if(!i){for(e||(e=I(t)),a=e.length;a--;)i=v(e[a]),i[F]?n.push(i):s.push(i);i=H(t,g(s,n)),i.selector=t}return i},A=e.select=function(t,e,a,n){var s,i,r,o,l,c="function"==typeof t&&t,u=!n&&I(t=c.selector||t);if(a=a||[],1===u.length){if(i=u[0]=u[0].slice(0),i.length>2&&"ID"===(r=i[0]).type&&w.getById&&9===e.nodeType&&O&&T.relative[i[1].type]){if(e=(T.find.ID(r.matches[0].replace(we,Te),e)||[])[0],!e)return a;c&&(e=e.parentNode),t=t.slice(i.shift().value.length)}for(s=fe.needsContext.test(t)?0:i.length;s--&&(r=i[s],!T.relative[o=r.type]);)if((l=T.find[o])&&(n=l(r.matches[0].replace(we,Te),ge.test(i[0].type)&&d(e.parentNode)||e))){if(i.splice(s,1),t=n.length&&p(i),!t)return Z.apply(a,n),a;break}}return(c||x(t,u))(n,e,!O,a,ge.test(t)&&d(e.parentNode)||e),a},w.sortStable=F.split("").sort(K).join("")===F,w.detectDuplicates=!!D,C(),w.sortDetached=s(function(t){return 1&t.compareDocumentPosition(P.createElement("div"))}),s(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||i("type|href|height|width",function(t,e,a){return a?void 0:t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),w.attributes&&s(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||i("value",function(t,e,a){return a||"input"!==t.nodeName.toLowerCase()?void 0:t.defaultValue}),s(function(t){return null==t.getAttribute("disabled")})||i(ee,function(t,e,a){var n;return a?void 0:t[e]===!0?e.toLowerCase():(n=t.getAttributeNode(e))&&n.specified?n.value:null}),e}(t);J.find=se,J.expr=se.selectors,J.expr[":"]=J.expr.pseudos,J.unique=se.uniqueSort,J.text=se.getText,J.isXMLDoc=se.isXML,J.contains=se.contains;var ie=J.expr.match.needsContext,re=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,oe=/^.[^:#\[\.,]*$/;J.filter=function(t,e,a){var n=e[0];return a&&(t=":not("+t+")"),1===e.length&&1===n.nodeType?J.find.matchesSelector(n,t)?[n]:[]:J.find.matches(t,J.grep(e,function(t){return 1===t.nodeType}))},J.fn.extend({find:function(t){var e,a=this.length,n=[],s=this;if("string"!=typeof t)return this.pushStack(J(t).filter(function(){for(e=0;a>e;e++)if(J.contains(s[e],this))return!0}));for(e=0;a>e;e++)J.find(t,s[e],n);return n=this.pushStack(a>1?J.unique(n):n),n.selector=this.selector?this.selector+" "+t:t,n},filter:function(t){return this.pushStack(n(this,t||[],!1))},not:function(t){return this.pushStack(n(this,t||[],!0))},is:function(t){return!!n(this,"string"==typeof t&&ie.test(t)?J(t):t||[],!1).length}});var le,ce=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,de=J.fn.init=function(t,e){var a,n;if(!t)return this;if("string"==typeof t){if(a="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:ce.exec(t),!a||!a[1]&&e)return!e||e.jquery?(e||le).find(t):this.constructor(e).find(t);if(a[1]){if(e=e instanceof J?e[0]:e,J.merge(this,J.parseHTML(a[1],e&&e.nodeType?e.ownerDocument||e:Q,!0)),re.test(a[1])&&J.isPlainObject(e))for(a in e)J.isFunction(this[a])?this[a](e[a]):this.attr(a,e[a]);return this}return n=Q.getElementById(a[2]),n&&n.parentNode&&(this.length=1,this[0]=n),this.context=Q,this.selector=t,this}return t.nodeType?(this.context=this[0]=t,this.length=1,this):J.isFunction(t)?"undefined"!=typeof le.ready?le.ready(t):t(J):(void 0!==t.selector&&(this.selector=t.selector,this.context=t.context),J.makeArray(t,this))};de.prototype=J.fn,le=J(Q);var ue=/^(?:parents|prev(?:Until|All))/,pe={children:!0,contents:!0,next:!0,prev:!0};J.extend({dir:function(t,e,a){for(var n=[],s=void 0!==a;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(s&&J(t).is(a))break;n.push(t)}return n},sibling:function(t,e){for(var a=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&a.push(t);return a}}),J.fn.extend({has:function(t){var e=J(t,this),a=e.length;return this.filter(function(){for(var t=0;a>t;t++)if(J.contains(this,e[t]))return!0})},closest:function(t,e){for(var a,n=0,s=this.length,i=[],r=ie.test(t)||"string"!=typeof t?J(t,e||this.context):0;s>n;n++)for(a=this[n];a&&a!==e;a=a.parentNode)if(a.nodeType<11&&(r?r.index(a)>-1:1===a.nodeType&&J.find.matchesSelector(a,t))){i.push(a);break}return this.pushStack(i.length>1?J.unique(i):i)},index:function(t){return t?"string"==typeof t?K.call(J(t),this[0]):K.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(J.unique(J.merge(this.get(),J(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),J.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return J.dir(t,"parentNode")},parentsUntil:function(t,e,a){return J.dir(t,"parentNode",a)},next:function(t){return s(t,"nextSibling")},prev:function(t){return s(t,"previousSibling")},nextAll:function(t){return J.dir(t,"nextSibling")},prevAll:function(t){return J.dir(t,"previousSibling")},nextUntil:function(t,e,a){return J.dir(t,"nextSibling",a)},prevUntil:function(t,e,a){return J.dir(t,"previousSibling",a)},siblings:function(t){return J.sibling((t.parentNode||{}).firstChild,t)},children:function(t){return J.sibling(t.firstChild)},contents:function(t){return t.contentDocument||J.merge([],t.childNodes)}},function(t,e){J.fn[t]=function(a,n){var s=J.map(this,e,a);return"Until"!==t.slice(-5)&&(n=a),n&&"string"==typeof n&&(s=J.filter(n,s)),this.length>1&&(pe[t]||J.unique(s),ue.test(t)&&s.reverse()),this.pushStack(s)}});var he=/\S+/g,fe={};J.Callbacks=function(t){t="string"==typeof t?fe[t]||i(t):J.extend({},t);var e,a,n,s,r,o,l=[],c=!t.once&&[],d=function(i){for(e=t.memory&&i,a=!0,o=s||0,s=0,r=l.length,n=!0;l&&r>o;o++)if(l[o].apply(i[0],i[1])===!1&&t.stopOnFalse){e=!1;break}n=!1,l&&(c?c.length&&d(c.shift()):e?l=[]:u.disable())},u={add:function(){if(l){var a=l.length;!function i(e){J.each(e,function(e,a){var n=J.type(a);"function"===n?t.unique&&u.has(a)||l.push(a):a&&a.length&&"string"!==n&&i(a)})}(arguments),n?r=l.length:e&&(s=a,d(e))}return this},remove:function(){return l&&J.each(arguments,function(t,e){for(var a;(a=J.inArray(e,l,a))>-1;)l.splice(a,1),n&&(r>=a&&r--,o>=a&&o--)}),this},has:function(t){return t?J.inArray(t,l)>-1:!(!l||!l.length)},empty:function(){return l=[],r=0,this},disable:function(){return l=c=e=void 0,this},disabled:function(){return!l},lock:function(){return c=void 0,e||u.disable(),this},locked:function(){return!c},fireWith:function(t,e){return!l||a&&!c||(e=e||[],e=[t,e.slice?e.slice():e],n?c.push(e):d(e)),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!a}};return u},J.extend({Deferred:function(t){var e=[["resolve","done",J.Callbacks("once memory"),"resolved"],["reject","fail",J.Callbacks("once memory"),"rejected"],["notify","progress",J.Callbacks("memory")]],a="pending",n={state:function(){return a},always:function(){return s.done(arguments).fail(arguments),this},then:function(){var t=arguments;return J.Deferred(function(a){J.each(e,function(e,i){var r=J.isFunction(t[e])&&t[e];s[i[1]](function(){var t=r&&r.apply(this,arguments);t&&J.isFunction(t.promise)?t.promise().done(a.resolve).fail(a.reject).progress(a.notify):a[i[0]+"With"](this===n?a.promise():this,r?[t]:arguments)})}),t=null}).promise()},promise:function(t){return null!=t?J.extend(t,n):n}},s={};return n.pipe=n.then,J.each(e,function(t,i){var r=i[2],o=i[3];n[i[1]]=r.add,o&&r.add(function(){a=o},e[1^t][2].disable,e[2][2].lock),s[i[0]]=function(){return s[i[0]+"With"](this===s?n:this,arguments),this},s[i[0]+"With"]=r.fireWith}),n.promise(s),t&&t.call(s,s),s},when:function(t){var e,a,n,s=0,i=G.call(arguments),r=i.length,o=1!==r||t&&J.isFunction(t.promise)?r:0,l=1===o?t:J.Deferred(),c=function(t,a,n){return function(s){a[t]=this,n[t]=arguments.length>1?G.call(arguments):s,n===e?l.notifyWith(a,n):--o||l.resolveWith(a,n)}};if(r>1)for(e=new Array(r),a=new Array(r),n=new Array(r);r>s;s++)i[s]&&J.isFunction(i[s].promise)?i[s].promise().done(c(s,n,i)).fail(l.reject).progress(c(s,a,e)):--o;return o||l.resolveWith(n,i),l.promise()}});var me;J.fn.ready=function(t){return J.ready.promise().done(t),this},J.extend({isReady:!1,readyWait:1,holdReady:function(t){t?J.readyWait++:J.ready(!0)},ready:function(t){(t===!0?--J.readyWait:J.isReady)||(J.isReady=!0,t!==!0&&--J.readyWait>0||(me.resolveWith(Q,[J]),J.fn.triggerHandler&&(J(Q).triggerHandler("ready"),J(Q).off("ready"))))}}),J.ready.promise=function(e){return me||(me=J.Deferred(),"complete"===Q.readyState?setTimeout(J.ready):(Q.addEventListener("DOMContentLoaded",r,!1),t.addEventListener("load",r,!1))),me.promise(e)},J.ready.promise();var _e=J.access=function(t,e,a,n,s,i,r){var o=0,l=t.length,c=null==a;if("object"===J.type(a)){s=!0;for(o in a)J.access(t,e,o,a[o],!0,i,r)}else if(void 0!==n&&(s=!0,J.isFunction(n)||(r=!0),c&&(r?(e.call(t,n),e=null):(c=e,e=function(t,e,a){return c.call(J(t),a)})),e))for(;l>o;o++)e(t[o],a,r?n:n.call(t[o],o,e(t[o],a)));return s?t:c?e.call(t):l?e(t[0],a):i};J.acceptData=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType},o.uid=1,o.accepts=J.acceptData,o.prototype={key:function(t){if(!o.accepts(t))return 0;var e={},a=t[this.expando];if(!a){a=o.uid++;try{e[this.expando]={value:a},Object.defineProperties(t,e)}catch(n){e[this.expando]=a,J.extend(t,e)}}return this.cache[a]||(this.cache[a]={}),a},set:function(t,e,a){var n,s=this.key(t),i=this.cache[s];if("string"==typeof e)i[e]=a;else if(J.isEmptyObject(i))J.extend(this.cache[s],e);else for(n in e)i[n]=e[n];return i},get:function(t,e){var a=this.cache[this.key(t)];return void 0===e?a:a[e]},access:function(t,e,a){var n;return void 0===e||e&&"string"==typeof e&&void 0===a?(n=this.get(t,e),void 0!==n?n:this.get(t,J.camelCase(e))):(this.set(t,e,a),void 0!==a?a:e)},remove:function(t,e){var a,n,s,i=this.key(t),r=this.cache[i];if(void 0===e)this.cache[i]={};else{J.isArray(e)?n=e.concat(e.map(J.camelCase)):(s=J.camelCase(e),e in r?n=[e,s]:(n=s,n=n in r?[n]:n.match(he)||[])),a=n.length;for(;a--;)delete r[n[a]]}},hasData:function(t){return!J.isEmptyObject(this.cache[t[this.expando]]||{})},discard:function(t){t[this.expando]&&delete this.cache[t[this.expando]]}};var be=new o,ve=new o,ge=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ye=/([A-Z])/g;J.extend({hasData:function(t){return ve.hasData(t)||be.hasData(t)},data:function(t,e,a){return ve.access(t,e,a)},removeData:function(t,e){ve.remove(t,e)},_data:function(t,e,a){return be.access(t,e,a)},_removeData:function(t,e){be.remove(t,e)}}),J.fn.extend({data:function(t,e){var a,n,s,i=this[0],r=i&&i.attributes;if(void 0===t){if(this.length&&(s=ve.get(i),1===i.nodeType&&!be.get(i,"hasDataAttrs"))){for(a=r.length;a--;)r[a]&&(n=r[a].name,0===n.indexOf("data-")&&(n=J.camelCase(n.slice(5)),l(i,n,s[n])));
+be.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof t?this.each(function(){ve.set(this,t)}):_e(this,function(e){var a,n=J.camelCase(t);if(i&&void 0===e){if(a=ve.get(i,t),void 0!==a)return a;if(a=ve.get(i,n),void 0!==a)return a;if(a=l(i,n,void 0),void 0!==a)return a}else this.each(function(){var a=ve.get(this,n);ve.set(this,n,e),-1!==t.indexOf("-")&&void 0!==a&&ve.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){ve.remove(this,t)})}}),J.extend({queue:function(t,e,a){var n;return t?(e=(e||"fx")+"queue",n=be.get(t,e),a&&(!n||J.isArray(a)?n=be.access(t,e,J.makeArray(a)):n.push(a)),n||[]):void 0},dequeue:function(t,e){e=e||"fx";var a=J.queue(t,e),n=a.length,s=a.shift(),i=J._queueHooks(t,e),r=function(){J.dequeue(t,e)};"inprogress"===s&&(s=a.shift(),n--),s&&("fx"===e&&a.unshift("inprogress"),delete i.stop,s.call(t,r,i)),!n&&i&&i.empty.fire()},_queueHooks:function(t,e){var a=e+"queueHooks";return be.get(t,a)||be.access(t,a,{empty:J.Callbacks("once memory").add(function(){be.remove(t,[e+"queue",a])})})}}),J.fn.extend({queue:function(t,e){var a=2;return"string"!=typeof t&&(e=t,t="fx",a--),arguments.length<a?J.queue(this[0],t):void 0===e?this:this.each(function(){var a=J.queue(this,t,e);J._queueHooks(this,t),"fx"===t&&"inprogress"!==a[0]&&J.dequeue(this,t)})},dequeue:function(t){return this.each(function(){J.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var a,n=1,s=J.Deferred(),i=this,r=this.length,o=function(){--n||s.resolveWith(i,[i])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";r--;)a=be.get(i[r],t+"queueHooks"),a&&a.empty&&(n++,a.empty.add(o));return o(),s.promise(e)}});var we=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Te=["Top","Right","Bottom","Left"],Ee=function(t,e){return t=e||t,"none"===J.css(t,"display")||!J.contains(t.ownerDocument,t)},Se=/^(?:checkbox|radio)$/i;!function(){var t=Q.createDocumentFragment(),e=t.appendChild(Q.createElement("div")),a=Q.createElement("input");a.setAttribute("type","radio"),a.setAttribute("checked","checked"),a.setAttribute("name","t"),e.appendChild(a),X.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",X.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Ie="undefined";X.focusinBubbles="onfocusin"in t;var xe=/^key/,Ae=/^(?:mouse|pointer|contextmenu)|click/,Me=/^(?:focusinfocus|focusoutblur)$/,ke=/^([^.]*)(?:\.(.+)|)$/;J.event={global:{},add:function(t,e,a,n,s){var i,r,o,l,c,d,u,p,h,f,m,_=be.get(t);if(_)for(a.handler&&(i=a,a=i.handler,s=i.selector),a.guid||(a.guid=J.guid++),(l=_.events)||(l=_.events={}),(r=_.handle)||(r=_.handle=function(e){return typeof J!==Ie&&J.event.triggered!==e.type?J.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(he)||[""],c=e.length;c--;)o=ke.exec(e[c])||[],h=m=o[1],f=(o[2]||"").split(".").sort(),h&&(u=J.event.special[h]||{},h=(s?u.delegateType:u.bindType)||h,u=J.event.special[h]||{},d=J.extend({type:h,origType:m,data:n,handler:a,guid:a.guid,selector:s,needsContext:s&&J.expr.match.needsContext.test(s),namespace:f.join(".")},i),(p=l[h])||(p=l[h]=[],p.delegateCount=0,u.setup&&u.setup.call(t,n,f,r)!==!1||t.addEventListener&&t.addEventListener(h,r,!1)),u.add&&(u.add.call(t,d),d.handler.guid||(d.handler.guid=a.guid)),s?p.splice(p.delegateCount++,0,d):p.push(d),J.event.global[h]=!0)},remove:function(t,e,a,n,s){var i,r,o,l,c,d,u,p,h,f,m,_=be.hasData(t)&&be.get(t);if(_&&(l=_.events)){for(e=(e||"").match(he)||[""],c=e.length;c--;)if(o=ke.exec(e[c])||[],h=m=o[1],f=(o[2]||"").split(".").sort(),h){for(u=J.event.special[h]||{},h=(n?u.delegateType:u.bindType)||h,p=l[h]||[],o=o[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),r=i=p.length;i--;)d=p[i],!s&&m!==d.origType||a&&a.guid!==d.guid||o&&!o.test(d.namespace)||n&&n!==d.selector&&("**"!==n||!d.selector)||(p.splice(i,1),d.selector&&p.delegateCount--,u.remove&&u.remove.call(t,d));r&&!p.length&&(u.teardown&&u.teardown.call(t,f,_.handle)!==!1||J.removeEvent(t,h,_.handle),delete l[h])}else for(h in l)J.event.remove(t,h+e[c],a,n,!0);J.isEmptyObject(l)&&(delete _.handle,be.remove(t,"events"))}},trigger:function(e,a,n,s){var i,r,o,l,c,d,u,p=[n||Q],h=W.call(e,"type")?e.type:e,f=W.call(e,"namespace")?e.namespace.split("."):[];if(r=o=n=n||Q,3!==n.nodeType&&8!==n.nodeType&&!Me.test(h+J.event.triggered)&&(h.indexOf(".")>=0&&(f=h.split("."),h=f.shift(),f.sort()),c=h.indexOf(":")<0&&"on"+h,e=e[J.expando]?e:new J.Event(h,"object"==typeof e&&e),e.isTrigger=s?2:3,e.namespace=f.join("."),e.namespace_re=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),a=null==a?[e]:J.makeArray(a,[e]),u=J.event.special[h]||{},s||!u.trigger||u.trigger.apply(n,a)!==!1)){if(!s&&!u.noBubble&&!J.isWindow(n)){for(l=u.delegateType||h,Me.test(l+h)||(r=r.parentNode);r;r=r.parentNode)p.push(r),o=r;o===(n.ownerDocument||Q)&&p.push(o.defaultView||o.parentWindow||t)}for(i=0;(r=p[i++])&&!e.isPropagationStopped();)e.type=i>1?l:u.bindType||h,d=(be.get(r,"events")||{})[e.type]&&be.get(r,"handle"),d&&d.apply(r,a),d=c&&r[c],d&&d.apply&&J.acceptData(r)&&(e.result=d.apply(r,a),e.result===!1&&e.preventDefault());return e.type=h,s||e.isDefaultPrevented()||u._default&&u._default.apply(p.pop(),a)!==!1||!J.acceptData(n)||c&&J.isFunction(n[h])&&!J.isWindow(n)&&(o=n[c],o&&(n[c]=null),J.event.triggered=h,n[h](),J.event.triggered=void 0,o&&(n[c]=o)),e.result}},dispatch:function(t){t=J.event.fix(t);var e,a,n,s,i,r=[],o=G.call(arguments),l=(be.get(this,"events")||{})[t.type]||[],c=J.event.special[t.type]||{};if(o[0]=t,t.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,t)!==!1){for(r=J.event.handlers.call(this,t,l),e=0;(s=r[e++])&&!t.isPropagationStopped();)for(t.currentTarget=s.elem,a=0;(i=s.handlers[a++])&&!t.isImmediatePropagationStopped();)(!t.namespace_re||t.namespace_re.test(i.namespace))&&(t.handleObj=i,t.data=i.data,n=((J.event.special[i.origType]||{}).handle||i.handler).apply(s.elem,o),void 0!==n&&(t.result=n)===!1&&(t.preventDefault(),t.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(t,e){var a,n,s,i,r=[],o=e.delegateCount,l=t.target;if(o&&l.nodeType&&(!t.button||"click"!==t.type))for(;l!==this;l=l.parentNode||this)if(l.disabled!==!0||"click"!==t.type){for(n=[],a=0;o>a;a++)i=e[a],s=i.selector+" ",void 0===n[s]&&(n[s]=i.needsContext?J(s,this).index(l)>=0:J.find(s,this,null,[l]).length),n[s]&&n.push(i);n.length&&r.push({elem:l,handlers:n})}return o<e.length&&r.push({elem:this,handlers:e.slice(o)}),r},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(t,e){return null==t.which&&(t.which=null!=e.charCode?e.charCode:e.keyCode),t}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(t,e){var a,n,s,i=e.button;return null==t.pageX&&null!=e.clientX&&(a=t.target.ownerDocument||Q,n=a.documentElement,s=a.body,t.pageX=e.clientX+(n&&n.scrollLeft||s&&s.scrollLeft||0)-(n&&n.clientLeft||s&&s.clientLeft||0),t.pageY=e.clientY+(n&&n.scrollTop||s&&s.scrollTop||0)-(n&&n.clientTop||s&&s.clientTop||0)),t.which||void 0===i||(t.which=1&i?1:2&i?3:4&i?2:0),t}},fix:function(t){if(t[J.expando])return t;var e,a,n,s=t.type,i=t,r=this.fixHooks[s];for(r||(this.fixHooks[s]=r=Ae.test(s)?this.mouseHooks:xe.test(s)?this.keyHooks:{}),n=r.props?this.props.concat(r.props):this.props,t=new J.Event(i),e=n.length;e--;)a=n[e],t[a]=i[a];return t.target||(t.target=Q),3===t.target.nodeType&&(t.target=t.target.parentNode),r.filter?r.filter(t,i):t},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==u()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===u()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&J.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(t){return J.nodeName(t.target,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}},simulate:function(t,e,a,n){var s=J.extend(new J.Event,a,{type:t,isSimulated:!0,originalEvent:{}});n?J.event.trigger(s,null,e):J.event.dispatch.call(e,s),s.isDefaultPrevented()&&a.preventDefault()}},J.removeEvent=function(t,e,a){t.removeEventListener&&t.removeEventListener(e,a,!1)},J.Event=function(t,e){return this instanceof J.Event?(t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&t.returnValue===!1?c:d):this.type=t,e&&J.extend(this,e),this.timeStamp=t&&t.timeStamp||J.now(),void(this[J.expando]=!0)):new J.Event(t,e)},J.Event.prototype={isDefaultPrevented:d,isPropagationStopped:d,isImmediatePropagationStopped:d,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=c,t&&t.preventDefault&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=c,t&&t.stopPropagation&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=c,t&&t.stopImmediatePropagation&&t.stopImmediatePropagation(),this.stopPropagation()}},J.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){J.event.special[t]={delegateType:e,bindType:e,handle:function(t){var a,n=this,s=t.relatedTarget,i=t.handleObj;return(!s||s!==n&&!J.contains(n,s))&&(t.type=i.origType,a=i.handler.apply(this,arguments),t.type=e),a}}}),X.focusinBubbles||J.each({focus:"focusin",blur:"focusout"},function(t,e){var a=function(t){J.event.simulate(e,t.target,J.event.fix(t),!0)};J.event.special[e]={setup:function(){var n=this.ownerDocument||this,s=be.access(n,e);s||n.addEventListener(t,a,!0),be.access(n,e,(s||0)+1)},teardown:function(){var n=this.ownerDocument||this,s=be.access(n,e)-1;s?be.access(n,e,s):(n.removeEventListener(t,a,!0),be.remove(n,e))}}}),J.fn.extend({on:function(t,e,a,n,s){var i,r;if("object"==typeof t){"string"!=typeof e&&(a=a||e,e=void 0);for(r in t)this.on(r,e,a,t[r],s);return this}if(null==a&&null==n?(n=e,a=e=void 0):null==n&&("string"==typeof e?(n=a,a=void 0):(n=a,a=e,e=void 0)),n===!1)n=d;else if(!n)return this;return 1===s&&(i=n,n=function(t){return J().off(t),i.apply(this,arguments)},n.guid=i.guid||(i.guid=J.guid++)),this.each(function(){J.event.add(this,t,n,a,e)})},one:function(t,e,a,n){return this.on(t,e,a,n,1)},off:function(t,e,a){var n,s;if(t&&t.preventDefault&&t.handleObj)return n=t.handleObj,J(t.delegateTarget).off(n.namespace?n.origType+"."+n.namespace:n.origType,n.selector,n.handler),this;if("object"==typeof t){for(s in t)this.off(s,e,t[s]);return this}return(e===!1||"function"==typeof e)&&(a=e,e=void 0),a===!1&&(a=d),this.each(function(){J.event.remove(this,t,a,e)})},trigger:function(t,e){return this.each(function(){J.event.trigger(t,e,this)})},triggerHandler:function(t,e){var a=this[0];return a?J.event.trigger(t,e,a,!0):void 0}});var De=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Ce=/<([\w:]+)/,Pe=/<|&#?\w+;/,$e=/<(?:script|style|link)/i,Oe=/checked\s*(?:[^=]|=\s*.checked.)/i,Re=/^$|\/(?:java|ecma)script/i,Le=/^true\/(.*)/,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Ue={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Ue.optgroup=Ue.option,Ue.tbody=Ue.tfoot=Ue.colgroup=Ue.caption=Ue.thead,Ue.th=Ue.td,J.extend({clone:function(t,e,a){var n,s,i,r,o=t.cloneNode(!0),l=J.contains(t.ownerDocument,t);if(!(X.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||J.isXMLDoc(t)))for(r=b(o),i=b(t),n=0,s=i.length;s>n;n++)v(i[n],r[n]);if(e)if(a)for(i=i||b(t),r=r||b(o),n=0,s=i.length;s>n;n++)_(i[n],r[n]);else _(t,o);return r=b(o,"script"),r.length>0&&m(r,!l&&b(t,"script")),o},buildFragment:function(t,e,a,n){for(var s,i,r,o,l,c,d=e.createDocumentFragment(),u=[],p=0,h=t.length;h>p;p++)if(s=t[p],s||0===s)if("object"===J.type(s))J.merge(u,s.nodeType?[s]:s);else if(Pe.test(s)){for(i=i||d.appendChild(e.createElement("div")),r=(Ce.exec(s)||["",""])[1].toLowerCase(),o=Ue[r]||Ue._default,i.innerHTML=o[1]+s.replace(De,"<$1></$2>")+o[2],c=o[0];c--;)i=i.lastChild;J.merge(u,i.childNodes),i=d.firstChild,i.textContent=""}else u.push(e.createTextNode(s));for(d.textContent="",p=0;s=u[p++];)if((!n||-1===J.inArray(s,n))&&(l=J.contains(s.ownerDocument,s),i=b(d.appendChild(s),"script"),l&&m(i),a))for(c=0;s=i[c++];)Re.test(s.type||"")&&a.push(s);return d},cleanData:function(t){for(var e,a,n,s,i=J.event.special,r=0;void 0!==(a=t[r]);r++){if(J.acceptData(a)&&(s=a[be.expando],s&&(e=be.cache[s]))){if(e.events)for(n in e.events)i[n]?J.event.remove(a,n):J.removeEvent(a,n,e.handle);be.cache[s]&&delete be.cache[s]}delete ve.cache[a[ve.expando]]}}}),J.fn.extend({text:function(t){return _e(this,function(t){return void 0===t?J.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=t)})},null,t,arguments.length)},append:function(){return this.domManip(arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=p(this,t);e.appendChild(t)}})},prepend:function(){return this.domManip(arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=p(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return this.domManip(arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return this.domManip(arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},remove:function(t,e){for(var a,n=t?J.filter(t,this):this,s=0;null!=(a=n[s]);s++)e||1!==a.nodeType||J.cleanData(b(a)),a.parentNode&&(e&&J.contains(a.ownerDocument,a)&&m(b(a,"script")),a.parentNode.removeChild(a));return this},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(J.cleanData(b(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null==t?!1:t,e=null==e?t:e,this.map(function(){return J.clone(this,t,e)})},html:function(t){return _e(this,function(t){var e=this[0]||{},a=0,n=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!$e.test(t)&&!Ue[(Ce.exec(t)||["",""])[1].toLowerCase()]){t=t.replace(De,"<$1></$2>");try{for(;n>a;a++)e=this[a]||{},1===e.nodeType&&(J.cleanData(b(e,!1)),e.innerHTML=t);e=0}catch(s){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=arguments[0];return this.domManip(arguments,function(e){t=this.parentNode,J.cleanData(b(this)),t&&t.replaceChild(e,this)}),t&&(t.length||t.nodeType)?this:this.remove()},detach:function(t){return this.remove(t,!0)},domManip:function(t,e){t=B.apply([],t);var a,n,s,i,r,o,l=0,c=this.length,d=this,u=c-1,p=t[0],m=J.isFunction(p);if(m||c>1&&"string"==typeof p&&!X.checkClone&&Oe.test(p))return this.each(function(a){var n=d.eq(a);m&&(t[0]=p.call(this,a,n.html())),n.domManip(t,e)});if(c&&(a=J.buildFragment(t,this[0].ownerDocument,!1,this),n=a.firstChild,1===a.childNodes.length&&(a=n),n)){for(s=J.map(b(a,"script"),h),i=s.length;c>l;l++)r=a,l!==u&&(r=J.clone(r,!0,!0),i&&J.merge(s,b(r,"script"))),e.call(this[l],r,l);if(i)for(o=s[s.length-1].ownerDocument,J.map(s,f),l=0;i>l;l++)r=s[l],Re.test(r.type||"")&&!be.access(r,"globalEval")&&J.contains(o,r)&&(r.src?J._evalUrl&&J._evalUrl(r.src):J.globalEval(r.textContent.replace(Ne,"")))}return this}}),J.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){J.fn[t]=function(t){for(var a,n=[],s=J(t),i=s.length-1,r=0;i>=r;r++)a=r===i?this:this.clone(!0),J(s[r])[e](a),H.apply(n,a.get());return this.pushStack(n)}});var Fe,qe={},ze=/^margin/,Ve=new RegExp("^("+we+")(?!px)[a-z%]+$","i"),Ge=function(e){return e.ownerDocument.defaultView.opener?e.ownerDocument.defaultView.getComputedStyle(e,null):t.getComputedStyle(e,null)};!function(){function e(){r.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",r.innerHTML="",s.appendChild(i);var e=t.getComputedStyle(r,null);a="1%"!==e.top,n="4px"===e.width,s.removeChild(i)}var a,n,s=Q.documentElement,i=Q.createElement("div"),r=Q.createElement("div");r.style&&(r.style.backgroundClip="content-box",r.cloneNode(!0).style.backgroundClip="",X.clearCloneStyle="content-box"===r.style.backgroundClip,i.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",i.appendChild(r),t.getComputedStyle&&J.extend(X,{pixelPosition:function(){return e(),a},boxSizingReliable:function(){return null==n&&e(),n},reliableMarginRight:function(){var e,a=r.appendChild(Q.createElement("div"));return a.style.cssText=r.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",a.style.marginRight=a.style.width="0",r.style.width="1px",s.appendChild(i),e=!parseFloat(t.getComputedStyle(a,null).marginRight),s.removeChild(i),r.removeChild(a),e}}))}(),J.swap=function(t,e,a,n){var s,i,r={};for(i in e)r[i]=t.style[i],t.style[i]=e[i];s=a.apply(t,n||[]);for(i in e)t.style[i]=r[i];return s};var Be=/^(none|table(?!-c[ea]).+)/,He=new RegExp("^("+we+")(.*)$","i"),Ke=new RegExp("^([+-])=("+we+")","i"),je={position:"absolute",visibility:"hidden",display:"block"},Ye={letterSpacing:"0",fontWeight:"400"},We=["Webkit","O","Moz","ms"];J.extend({cssHooks:{opacity:{get:function(t,e){if(e){var a=w(t,"opacity");return""===a?"1":a}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(t,e,a,n){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var s,i,r,o=J.camelCase(e),l=t.style;return e=J.cssProps[o]||(J.cssProps[o]=E(l,o)),r=J.cssHooks[e]||J.cssHooks[o],void 0===a?r&&"get"in r&&void 0!==(s=r.get(t,!1,n))?s:l[e]:(i=typeof a,"string"===i&&(s=Ke.exec(a))&&(a=(s[1]+1)*s[2]+parseFloat(J.css(t,e)),i="number"),void(null!=a&&a===a&&("number"!==i||J.cssNumber[o]||(a+="px"),X.clearCloneStyle||""!==a||0!==e.indexOf("background")||(l[e]="inherit"),r&&"set"in r&&void 0===(a=r.set(t,a,n))||(l[e]=a))))}},css:function(t,e,a,n){var s,i,r,o=J.camelCase(e);return e=J.cssProps[o]||(J.cssProps[o]=E(t.style,o)),r=J.cssHooks[e]||J.cssHooks[o],r&&"get"in r&&(s=r.get(t,!0,a)),void 0===s&&(s=w(t,e,n)),"normal"===s&&e in Ye&&(s=Ye[e]),""===a||a?(i=parseFloat(s),a===!0||J.isNumeric(i)?i||0:s):s}}),J.each(["height","width"],function(t,e){J.cssHooks[e]={get:function(t,a,n){return a?Be.test(J.css(t,"display"))&&0===t.offsetWidth?J.swap(t,je,function(){return x(t,e,n)}):x(t,e,n):void 0},set:function(t,a,n){var s=n&&Ge(t);return S(t,a,n?I(t,e,n,"border-box"===J.css(t,"boxSizing",!1,s),s):0)}}}),J.cssHooks.marginRight=T(X.reliableMarginRight,function(t,e){return e?J.swap(t,{display:"inline-block"},w,[t,"marginRight"]):void 0}),J.each({margin:"",padding:"",border:"Width"},function(t,e){J.cssHooks[t+e]={expand:function(a){for(var n=0,s={},i="string"==typeof a?a.split(" "):[a];4>n;n++)s[t+Te[n]+e]=i[n]||i[n-2]||i[0];return s}},ze.test(t)||(J.cssHooks[t+e].set=S)}),J.fn.extend({css:function(t,e){return _e(this,function(t,e,a){var n,s,i={},r=0;if(J.isArray(e)){for(n=Ge(t),s=e.length;s>r;r++)i[e[r]]=J.css(t,e[r],!1,n);return i}return void 0!==a?J.style(t,e,a):J.css(t,e)},t,e,arguments.length>1)},show:function(){return A(this,!0)},hide:function(){return A(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){Ee(this)?J(this).show():J(this).hide()})}}),J.Tween=M,M.prototype={constructor:M,init:function(t,e,a,n,s,i){this.elem=t,this.prop=a,this.easing=s||"swing",this.options=e,this.start=this.now=this.cur(),this.end=n,this.unit=i||(J.cssNumber[a]?"":"px")},cur:function(){var t=M.propHooks[this.prop];return t&&t.get?t.get(this):M.propHooks._default.get(this)},run:function(t){var e,a=M.propHooks[this.prop];return this.pos=e=this.options.duration?J.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),a&&a.set?a.set(this):M.propHooks._default.set(this),this}},M.prototype.init.prototype=M.prototype,M.propHooks={_default:{get:function(t){var e;return null==t.elem[t.prop]||t.elem.style&&null!=t.elem.style[t.prop]?(e=J.css(t.elem,t.prop,""),e&&"auto"!==e?e:0):t.elem[t.prop]},set:function(t){J.fx.step[t.prop]?J.fx.step[t.prop](t):t.elem.style&&(null!=t.elem.style[J.cssProps[t.prop]]||J.cssHooks[t.prop])?J.style(t.elem,t.prop,t.now+t.unit):t.elem[t.prop]=t.now}}},M.propHooks.scrollTop=M.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},J.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2}},J.fx=M.prototype.init,J.fx.step={};var Xe,Qe,Ze=/^(?:toggle|show|hide)$/,Je=new RegExp("^(?:([+-])=|)("+we+")([a-z%]*)$","i"),ta=/queueHooks$/,ea=[P],aa={"*":[function(t,e){var a=this.createTween(t,e),n=a.cur(),s=Je.exec(e),i=s&&s[3]||(J.cssNumber[t]?"":"px"),r=(J.cssNumber[t]||"px"!==i&&+n)&&Je.exec(J.css(a.elem,t)),o=1,l=20;if(r&&r[3]!==i){i=i||r[3],s=s||[],r=+n||1;do o=o||".5",r/=o,J.style(a.elem,t,r+i);while(o!==(o=a.cur()/n)&&1!==o&&--l)}return s&&(r=a.start=+r||+n||0,a.unit=i,a.end=s[1]?r+(s[1]+1)*s[2]:+s[2]),a}]};J.Animation=J.extend(O,{tweener:function(t,e){J.isFunction(t)?(e=t,t=["*"]):t=t.split(" ");for(var a,n=0,s=t.length;s>n;n++)a=t[n],aa[a]=aa[a]||[],aa[a].unshift(e)},prefilter:function(t,e){e?ea.unshift(t):ea.push(t)}}),J.speed=function(t,e,a){var n=t&&"object"==typeof t?J.extend({},t):{complete:a||!a&&e||J.isFunction(t)&&t,duration:t,easing:a&&e||e&&!J.isFunction(e)&&e};return n.duration=J.fx.off?0:"number"==typeof n.duration?n.duration:n.duration in J.fx.speeds?J.fx.speeds[n.duration]:J.fx.speeds._default,(null==n.queue||n.queue===!0)&&(n.queue="fx"),n.old=n.complete,n.complete=function(){J.isFunction(n.old)&&n.old.call(this),n.queue&&J.dequeue(this,n.queue)},n},J.fn.extend({fadeTo:function(t,e,a,n){return this.filter(Ee).css("opacity",0).show().end().animate({opacity:e},t,a,n)},animate:function(t,e,a,n){var s=J.isEmptyObject(t),i=J.speed(e,a,n),r=function(){var e=O(this,J.extend({},t),i);(s||be.get(this,"finish"))&&e.stop(!0)};return r.finish=r,s||i.queue===!1?this.each(r):this.queue(i.queue,r)},stop:function(t,e,a){var n=function(t){var e=t.stop;delete t.stop,e(a)};return"string"!=typeof t&&(a=e,e=t,t=void 0),e&&t!==!1&&this.queue(t||"fx",[]),this.each(function(){var e=!0,s=null!=t&&t+"queueHooks",i=J.timers,r=be.get(this);if(s)r[s]&&r[s].stop&&n(r[s]);else for(s in r)r[s]&&r[s].stop&&ta.test(s)&&n(r[s]);for(s=i.length;s--;)i[s].elem!==this||null!=t&&i[s].queue!==t||(i[s].anim.stop(a),e=!1,i.splice(s,1));(e||!a)&&J.dequeue(this,t)})},finish:function(t){return t!==!1&&(t=t||"fx"),this.each(function(){var e,a=be.get(this),n=a[t+"queue"],s=a[t+"queueHooks"],i=J.timers,r=n?n.length:0;for(a.finish=!0,J.queue(this,t,[]),s&&s.stop&&s.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===t&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;r>e;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete a.finish})}}),J.each(["toggle","show","hide"],function(t,e){var a=J.fn[e];J.fn[e]=function(t,n,s){return null==t||"boolean"==typeof t?a.apply(this,arguments):this.animate(D(e,!0),t,n,s)}}),J.each({slideDown:D("show"),slideUp:D("hide"),slideToggle:D("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){J.fn[t]=function(t,a,n){return this.animate(e,t,a,n)}}),J.timers=[],J.fx.tick=function(){var t,e=0,a=J.timers;for(Xe=J.now();e<a.length;e++)t=a[e],t()||a[e]!==t||a.splice(e--,1);a.length||J.fx.stop(),Xe=void 0},J.fx.timer=function(t){J.timers.push(t),t()?J.fx.start():J.timers.pop()},J.fx.interval=13,J.fx.start=function(){Qe||(Qe=setInterval(J.fx.tick,J.fx.interval))},J.fx.stop=function(){clearInterval(Qe),Qe=null},J.fx.speeds={slow:600,fast:200,_default:400},J.fn.delay=function(t,e){return t=J.fx?J.fx.speeds[t]||t:t,e=e||"fx",this.queue(e,function(e,a){var n=setTimeout(e,t);a.stop=function(){clearTimeout(n)}})},function(){var t=Q.createElement("input"),e=Q.createElement("select"),a=e.appendChild(Q.createElement("option"));t.type="checkbox",X.checkOn=""!==t.value,X.optSelected=a.selected,e.disabled=!0,X.optDisabled=!a.disabled,t=Q.createElement("input"),t.value="t",t.type="radio",X.radioValue="t"===t.value}();var na,sa,ia=J.expr.attrHandle;J.fn.extend({attr:function(t,e){return _e(this,J.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){J.removeAttr(this,t)})}}),J.extend({attr:function(t,e,a){var n,s,i=t.nodeType;return t&&3!==i&&8!==i&&2!==i?typeof t.getAttribute===Ie?J.prop(t,e,a):(1===i&&J.isXMLDoc(t)||(e=e.toLowerCase(),n=J.attrHooks[e]||(J.expr.match.bool.test(e)?sa:na)),void 0===a?n&&"get"in n&&null!==(s=n.get(t,e))?s:(s=J.find.attr(t,e),null==s?void 0:s):null!==a?n&&"set"in n&&void 0!==(s=n.set(t,a,e))?s:(t.setAttribute(e,a+""),a):void J.removeAttr(t,e)):void 0},removeAttr:function(t,e){var a,n,s=0,i=e&&e.match(he);if(i&&1===t.nodeType)for(;a=i[s++];)n=J.propFix[a]||a,J.expr.match.bool.test(a)&&(t[n]=!1),t.removeAttribute(a)},attrHooks:{type:{set:function(t,e){if(!X.radioValue&&"radio"===e&&J.nodeName(t,"input")){var a=t.value;return t.setAttribute("type",e),a&&(t.value=a),e}}}}}),sa={set:function(t,e,a){return e===!1?J.removeAttr(t,a):t.setAttribute(a,a),a}},J.each(J.expr.match.bool.source.match(/\w+/g),function(t,e){var a=ia[e]||J.find.attr;ia[e]=function(t,e,n){var s,i;return n||(i=ia[e],ia[e]=s,s=null!=a(t,e,n)?e.toLowerCase():null,ia[e]=i),s}});var ra=/^(?:input|select|textarea|button)$/i;J.fn.extend({prop:function(t,e){return _e(this,J.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[J.propFix[t]||t]})}}),J.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(t,e,a){var n,s,i,r=t.nodeType;return t&&3!==r&&8!==r&&2!==r?(i=1!==r||!J.isXMLDoc(t),i&&(e=J.propFix[e]||e,s=J.propHooks[e]),void 0!==a?s&&"set"in s&&void 0!==(n=s.set(t,a,e))?n:t[e]=a:s&&"get"in s&&null!==(n=s.get(t,e))?n:t[e]):void 0},propHooks:{tabIndex:{get:function(t){return t.hasAttribute("tabindex")||ra.test(t.nodeName)||t.href?t.tabIndex:-1}}}}),X.optSelected||(J.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null}}),J.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){J.propFix[this.toLowerCase()]=this});var oa=/[\t\r\n\f]/g;J.fn.extend({addClass:function(t){var e,a,n,s,i,r,o="string"==typeof t&&t,l=0,c=this.length;if(J.isFunction(t))return this.each(function(e){J(this).addClass(t.call(this,e,this.className))});if(o)for(e=(t||"").match(he)||[];c>l;l++)if(a=this[l],n=1===a.nodeType&&(a.className?(" "+a.className+" ").replace(oa," "):" ")){for(i=0;s=e[i++];)n.indexOf(" "+s+" ")<0&&(n+=s+" ");r=J.trim(n),a.className!==r&&(a.className=r)}return this},removeClass:function(t){var e,a,n,s,i,r,o=0===arguments.length||"string"==typeof t&&t,l=0,c=this.length;if(J.isFunction(t))return this.each(function(e){J(this).removeClass(t.call(this,e,this.className))});if(o)for(e=(t||"").match(he)||[];c>l;l++)if(a=this[l],n=1===a.nodeType&&(a.className?(" "+a.className+" ").replace(oa," "):"")){for(i=0;s=e[i++];)for(;n.indexOf(" "+s+" ")>=0;)n=n.replace(" "+s+" "," ");r=t?J.trim(n):"",a.className!==r&&(a.className=r)}return this},toggleClass:function(t,e){var a=typeof t;return"boolean"==typeof e&&"string"===a?e?this.addClass(t):this.removeClass(t):this.each(J.isFunction(t)?function(a){J(this).toggleClass(t.call(this,a,this.className,e),e)}:function(){if("string"===a)for(var e,n=0,s=J(this),i=t.match(he)||[];e=i[n++];)s.hasClass(e)?s.removeClass(e):s.addClass(e);else(a===Ie||"boolean"===a)&&(this.className&&be.set(this,"__className__",this.className),this.className=this.className||t===!1?"":be.get(this,"__className__")||"")})},hasClass:function(t){for(var e=" "+t+" ",a=0,n=this.length;n>a;a++)if(1===this[a].nodeType&&(" "+this[a].className+" ").replace(oa," ").indexOf(e)>=0)return!0;return!1}});var la=/\r/g;J.fn.extend({val:function(t){var e,a,n,s=this[0];return arguments.length?(n=J.isFunction(t),this.each(function(a){var s;1===this.nodeType&&(s=n?t.call(this,a,J(this).val()):t,null==s?s="":"number"==typeof s?s+="":J.isArray(s)&&(s=J.map(s,function(t){return null==t?"":t+""})),e=J.valHooks[this.type]||J.valHooks[this.nodeName.toLowerCase()],e&&"set"in e&&void 0!==e.set(this,s,"value")||(this.value=s))})):s?(e=J.valHooks[s.type]||J.valHooks[s.nodeName.toLowerCase()],e&&"get"in e&&void 0!==(a=e.get(s,"value"))?a:(a=s.value,"string"==typeof a?a.replace(la,""):null==a?"":a)):void 0}}),J.extend({valHooks:{option:{get:function(t){var e=J.find.attr(t,"value");return null!=e?e:J.trim(J.text(t))}},select:{get:function(t){for(var e,a,n=t.options,s=t.selectedIndex,i="select-one"===t.type||0>s,r=i?null:[],o=i?s+1:n.length,l=0>s?o:i?s:0;o>l;l++)if(a=n[l],!(!a.selected&&l!==s||(X.optDisabled?a.disabled:null!==a.getAttribute("disabled"))||a.parentNode.disabled&&J.nodeName(a.parentNode,"optgroup"))){if(e=J(a).val(),i)return e;r.push(e)}return r},set:function(t,e){for(var a,n,s=t.options,i=J.makeArray(e),r=s.length;r--;)n=s[r],(n.selected=J.inArray(n.value,i)>=0)&&(a=!0);return a||(t.selectedIndex=-1),i}}}}),J.each(["radio","checkbox"],function(){J.valHooks[this]={set:function(t,e){return J.isArray(e)?t.checked=J.inArray(J(t).val(),e)>=0:void 0}},X.checkOn||(J.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})}),J.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(t,e){J.fn[e]=function(t,a){return arguments.length>0?this.on(e,null,t,a):this.trigger(e)}}),J.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)},bind:function(t,e,a){return this.on(t,null,e,a)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,a,n){return this.on(e,t,a,n)},undelegate:function(t,e,a){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",a)}});var ca=J.now(),da=/\?/;J.parseJSON=function(t){return JSON.parse(t+"")},J.parseXML=function(t){var e,a;if(!t||"string"!=typeof t)return null;try{a=new DOMParser,e=a.parseFromString(t,"text/xml")}catch(n){e=void 0}return(!e||e.getElementsByTagName("parsererror").length)&&J.error("Invalid XML: "+t),e};var ua=/#.*$/,pa=/([?&])_=[^&]*/,ha=/^(.*?):[ \t]*([^\r\n]*)$/gm,fa=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ma=/^(?:GET|HEAD)$/,_a=/^\/\//,ba=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,va={},ga={},ya="*/".concat("*"),wa=t.location.href,Ta=ba.exec(wa.toLowerCase())||[];J.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:wa,type:"GET",isLocal:fa.test(Ta[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ya,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":J.parseJSON,"text xml":J.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?N(N(t,J.ajaxSettings),e):N(J.ajaxSettings,t)},ajaxPrefilter:R(va),ajaxTransport:R(ga),ajax:function(t,e){function a(t,e,a,r){var l,d,b,v,y,T=e;
+2!==g&&(g=2,o&&clearTimeout(o),n=void 0,i=r||"",w.readyState=t>0?4:0,l=t>=200&&300>t||304===t,a&&(v=U(u,w,a)),v=F(u,v,w,l),l?(u.ifModified&&(y=w.getResponseHeader("Last-Modified"),y&&(J.lastModified[s]=y),y=w.getResponseHeader("etag"),y&&(J.etag[s]=y)),204===t||"HEAD"===u.type?T="nocontent":304===t?T="notmodified":(T=v.state,d=v.data,b=v.error,l=!b)):(b=T,(t||!T)&&(T="error",0>t&&(t=0))),w.status=t,w.statusText=(e||T)+"",l?f.resolveWith(p,[d,T,w]):f.rejectWith(p,[w,T,b]),w.statusCode(_),_=void 0,c&&h.trigger(l?"ajaxSuccess":"ajaxError",[w,u,l?d:b]),m.fireWith(p,[w,T]),c&&(h.trigger("ajaxComplete",[w,u]),--J.active||J.event.trigger("ajaxStop")))}"object"==typeof t&&(e=t,t=void 0),e=e||{};var n,s,i,r,o,l,c,d,u=J.ajaxSetup({},e),p=u.context||u,h=u.context&&(p.nodeType||p.jquery)?J(p):J.event,f=J.Deferred(),m=J.Callbacks("once memory"),_=u.statusCode||{},b={},v={},g=0,y="canceled",w={readyState:0,getResponseHeader:function(t){var e;if(2===g){if(!r)for(r={};e=ha.exec(i);)r[e[1].toLowerCase()]=e[2];e=r[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return 2===g?i:null},setRequestHeader:function(t,e){var a=t.toLowerCase();return g||(t=v[a]=v[a]||t,b[t]=e),this},overrideMimeType:function(t){return g||(u.mimeType=t),this},statusCode:function(t){var e;if(t)if(2>g)for(e in t)_[e]=[_[e],t[e]];else w.always(t[w.status]);return this},abort:function(t){var e=t||y;return n&&n.abort(e),a(0,e),this}};if(f.promise(w).complete=m.add,w.success=w.done,w.error=w.fail,u.url=((t||u.url||wa)+"").replace(ua,"").replace(_a,Ta[1]+"//"),u.type=e.method||e.type||u.method||u.type,u.dataTypes=J.trim(u.dataType||"*").toLowerCase().match(he)||[""],null==u.crossDomain&&(l=ba.exec(u.url.toLowerCase()),u.crossDomain=!(!l||l[1]===Ta[1]&&l[2]===Ta[2]&&(l[3]||("http:"===l[1]?"80":"443"))===(Ta[3]||("http:"===Ta[1]?"80":"443")))),u.data&&u.processData&&"string"!=typeof u.data&&(u.data=J.param(u.data,u.traditional)),L(va,u,e,w),2===g)return w;c=J.event&&u.global,c&&0===J.active++&&J.event.trigger("ajaxStart"),u.type=u.type.toUpperCase(),u.hasContent=!ma.test(u.type),s=u.url,u.hasContent||(u.data&&(s=u.url+=(da.test(s)?"&":"?")+u.data,delete u.data),u.cache===!1&&(u.url=pa.test(s)?s.replace(pa,"$1_="+ca++):s+(da.test(s)?"&":"?")+"_="+ca++)),u.ifModified&&(J.lastModified[s]&&w.setRequestHeader("If-Modified-Since",J.lastModified[s]),J.etag[s]&&w.setRequestHeader("If-None-Match",J.etag[s])),(u.data&&u.hasContent&&u.contentType!==!1||e.contentType)&&w.setRequestHeader("Content-Type",u.contentType),w.setRequestHeader("Accept",u.dataTypes[0]&&u.accepts[u.dataTypes[0]]?u.accepts[u.dataTypes[0]]+("*"!==u.dataTypes[0]?", "+ya+"; q=0.01":""):u.accepts["*"]);for(d in u.headers)w.setRequestHeader(d,u.headers[d]);if(u.beforeSend&&(u.beforeSend.call(p,w,u)===!1||2===g))return w.abort();y="abort";for(d in{success:1,error:1,complete:1})w[d](u[d]);if(n=L(ga,u,e,w)){w.readyState=1,c&&h.trigger("ajaxSend",[w,u]),u.async&&u.timeout>0&&(o=setTimeout(function(){w.abort("timeout")},u.timeout));try{g=1,n.send(b,a)}catch(T){if(!(2>g))throw T;a(-1,T)}}else a(-1,"No Transport");return w},getJSON:function(t,e,a){return J.get(t,e,a,"json")},getScript:function(t,e){return J.get(t,void 0,e,"script")}}),J.each(["get","post"],function(t,e){J[e]=function(t,a,n,s){return J.isFunction(a)&&(s=s||n,n=a,a=void 0),J.ajax({url:t,type:e,dataType:s,data:a,success:n})}}),J._evalUrl=function(t){return J.ajax({url:t,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},J.fn.extend({wrapAll:function(t){var e;return J.isFunction(t)?this.each(function(e){J(this).wrapAll(t.call(this,e))}):(this[0]&&(e=J(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this)},wrapInner:function(t){return this.each(J.isFunction(t)?function(e){J(this).wrapInner(t.call(this,e))}:function(){var e=J(this),a=e.contents();a.length?a.wrapAll(t):e.append(t)})},wrap:function(t){var e=J.isFunction(t);return this.each(function(a){J(this).wrapAll(e?t.call(this,a):t)})},unwrap:function(){return this.parent().each(function(){J.nodeName(this,"body")||J(this).replaceWith(this.childNodes)}).end()}}),J.expr.filters.hidden=function(t){return t.offsetWidth<=0&&t.offsetHeight<=0},J.expr.filters.visible=function(t){return!J.expr.filters.hidden(t)};var Ea=/%20/g,Sa=/\[\]$/,Ia=/\r?\n/g,xa=/^(?:submit|button|image|reset|file)$/i,Aa=/^(?:input|select|textarea|keygen)/i;J.param=function(t,e){var a,n=[],s=function(t,e){e=J.isFunction(e)?e():null==e?"":e,n[n.length]=encodeURIComponent(t)+"="+encodeURIComponent(e)};if(void 0===e&&(e=J.ajaxSettings&&J.ajaxSettings.traditional),J.isArray(t)||t.jquery&&!J.isPlainObject(t))J.each(t,function(){s(this.name,this.value)});else for(a in t)q(a,t[a],e,s);return n.join("&").replace(Ea,"+")},J.fn.extend({serialize:function(){return J.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=J.prop(this,"elements");return t?J.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!J(this).is(":disabled")&&Aa.test(this.nodeName)&&!xa.test(t)&&(this.checked||!Se.test(t))}).map(function(t,e){var a=J(this).val();return null==a?null:J.isArray(a)?J.map(a,function(t){return{name:e.name,value:t.replace(Ia,"\r\n")}}):{name:e.name,value:a.replace(Ia,"\r\n")}}).get()}}),J.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(t){}};var Ma=0,ka={},Da={0:200,1223:204},Ca=J.ajaxSettings.xhr();t.attachEvent&&t.attachEvent("onunload",function(){for(var t in ka)ka[t]()}),X.cors=!!Ca&&"withCredentials"in Ca,X.ajax=Ca=!!Ca,J.ajaxTransport(function(t){var e;return X.cors||Ca&&!t.crossDomain?{send:function(a,n){var s,i=t.xhr(),r=++Ma;if(i.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)i[s]=t.xhrFields[s];t.mimeType&&i.overrideMimeType&&i.overrideMimeType(t.mimeType),t.crossDomain||a["X-Requested-With"]||(a["X-Requested-With"]="XMLHttpRequest");for(s in a)i.setRequestHeader(s,a[s]);e=function(t){return function(){e&&(delete ka[r],e=i.onload=i.onerror=null,"abort"===t?i.abort():"error"===t?n(i.status,i.statusText):n(Da[i.status]||i.status,i.statusText,"string"==typeof i.responseText?{text:i.responseText}:void 0,i.getAllResponseHeaders()))}},i.onload=e(),i.onerror=e("error"),e=ka[r]=e("abort");try{i.send(t.hasContent&&t.data||null)}catch(o){if(e)throw o}},abort:function(){e&&e()}}:void 0}),J.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(t){return J.globalEval(t),t}}}),J.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),J.ajaxTransport("script",function(t){if(t.crossDomain){var e,a;return{send:function(n,s){e=J("<script>").prop({async:!0,charset:t.scriptCharset,src:t.url}).on("load error",a=function(t){e.remove(),a=null,t&&s("error"===t.type?404:200,t.type)}),Q.head.appendChild(e[0])},abort:function(){a&&a()}}}});var Pa=[],$a=/(=)\?(?=&|$)|\?\?/;J.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Pa.pop()||J.expando+"_"+ca++;return this[t]=!0,t}}),J.ajaxPrefilter("json jsonp",function(e,a,n){var s,i,r,o=e.jsonp!==!1&&($a.test(e.url)?"url":"string"==typeof e.data&&!(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&$a.test(e.data)&&"data");return o||"jsonp"===e.dataTypes[0]?(s=e.jsonpCallback=J.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,o?e[o]=e[o].replace($a,"$1"+s):e.jsonp!==!1&&(e.url+=(da.test(e.url)?"&":"?")+e.jsonp+"="+s),e.converters["script json"]=function(){return r||J.error(s+" was not called"),r[0]},e.dataTypes[0]="json",i=t[s],t[s]=function(){r=arguments},n.always(function(){t[s]=i,e[s]&&(e.jsonpCallback=a.jsonpCallback,Pa.push(s)),r&&J.isFunction(i)&&i(r[0]),r=i=void 0}),"script"):void 0}),J.parseHTML=function(t,e,a){if(!t||"string"!=typeof t)return null;"boolean"==typeof e&&(a=e,e=!1),e=e||Q;var n=re.exec(t),s=!a&&[];return n?[e.createElement(n[1])]:(n=J.buildFragment([t],e,s),s&&s.length&&J(s).remove(),J.merge([],n.childNodes))};var Oa=J.fn.load;J.fn.load=function(t,e,a){if("string"!=typeof t&&Oa)return Oa.apply(this,arguments);var n,s,i,r=this,o=t.indexOf(" ");return o>=0&&(n=J.trim(t.slice(o)),t=t.slice(0,o)),J.isFunction(e)?(a=e,e=void 0):e&&"object"==typeof e&&(s="POST"),r.length>0&&J.ajax({url:t,type:s,dataType:"html",data:e}).done(function(t){i=arguments,r.html(n?J("<div>").append(J.parseHTML(t)).find(n):t)}).complete(a&&function(t,e){r.each(a,i||[t.responseText,e,t])}),this},J.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){J.fn[e]=function(t){return this.on(e,t)}}),J.expr.filters.animated=function(t){return J.grep(J.timers,function(e){return t===e.elem}).length};var Ra=t.document.documentElement;J.offset={setOffset:function(t,e,a){var n,s,i,r,o,l,c,d=J.css(t,"position"),u=J(t),p={};"static"===d&&(t.style.position="relative"),o=u.offset(),i=J.css(t,"top"),l=J.css(t,"left"),c=("absolute"===d||"fixed"===d)&&(i+l).indexOf("auto")>-1,c?(n=u.position(),r=n.top,s=n.left):(r=parseFloat(i)||0,s=parseFloat(l)||0),J.isFunction(e)&&(e=e.call(t,a,o)),null!=e.top&&(p.top=e.top-o.top+r),null!=e.left&&(p.left=e.left-o.left+s),"using"in e?e.using.call(t,p):u.css(p)}},J.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){J.offset.setOffset(this,t,e)});var e,a,n=this[0],s={top:0,left:0},i=n&&n.ownerDocument;return i?(e=i.documentElement,J.contains(e,n)?(typeof n.getBoundingClientRect!==Ie&&(s=n.getBoundingClientRect()),a=z(i),{top:s.top+a.pageYOffset-e.clientTop,left:s.left+a.pageXOffset-e.clientLeft}):s):void 0},position:function(){if(this[0]){var t,e,a=this[0],n={top:0,left:0};return"fixed"===J.css(a,"position")?e=a.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),J.nodeName(t[0],"html")||(n=t.offset()),n.top+=J.css(t[0],"borderTopWidth",!0),n.left+=J.css(t[0],"borderLeftWidth",!0)),{top:e.top-n.top-J.css(a,"marginTop",!0),left:e.left-n.left-J.css(a,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||Ra;t&&!J.nodeName(t,"html")&&"static"===J.css(t,"position");)t=t.offsetParent;return t||Ra})}}),J.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,a){var n="pageYOffset"===a;J.fn[e]=function(s){return _e(this,function(e,s,i){var r=z(e);return void 0===i?r?r[a]:e[s]:void(r?r.scrollTo(n?t.pageXOffset:i,n?i:t.pageYOffset):e[s]=i)},e,s,arguments.length,null)}}),J.each(["top","left"],function(t,e){J.cssHooks[e]=T(X.pixelPosition,function(t,a){return a?(a=w(t,e),Ve.test(a)?J(t).position()[e]+"px":a):void 0})}),J.each({Height:"height",Width:"width"},function(t,e){J.each({padding:"inner"+t,content:e,"":"outer"+t},function(a,n){J.fn[n]=function(n,s){var i=arguments.length&&(a||"boolean"!=typeof n),r=a||(n===!0||s===!0?"margin":"border");return _e(this,function(e,a,n){var s;return J.isWindow(e)?e.document.documentElement["client"+t]:9===e.nodeType?(s=e.documentElement,Math.max(e.body["scroll"+t],s["scroll"+t],e.body["offset"+t],s["offset"+t],s["client"+t])):void 0===n?J.css(e,a,r):J.style(e,a,n,r)},e,i?n:void 0,i,null)}})}),J.fn.size=function(){return this.length},J.fn.andSelf=J.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return J});var La=t.jQuery,Na=t.$;return J.noConflict=function(e){return t.$===J&&(t.$=Na),e&&t.jQuery===J&&(t.jQuery=La),J},typeof e===Ie&&(t.jQuery=t.$=J),J}),define("tabs/dashboard-tab/tabId",["require"],function(){return"dashboard-tab"}),define("tabs/settings-tab/tabId",["require"],function(){return"settings-tab"}),define("tabs/provision-tab/tabId",["require"],function(){return"provision-tab"}),window.Modernizr=function(t,e,a){function n(t){g.cssText=t}function s(t,e){return n(E.join(t+";")+(e||""))}function i(t,e){return typeof t===e}function r(t,e){return!!~(""+t).indexOf(e)}function o(t,e){for(var n in t){var s=t[n];if(!r(s,"-")&&g[s]!==a)return"pfx"==e?s:!0}return!1}function l(t,e,n){for(var s in t){var r=e[t[s]];if(r!==a)return n===!1?t[s]:i(r,"function")?r.bind(n||e):r}return!1}function c(t,e,a){var n=t.charAt(0).toUpperCase()+t.slice(1),s=(t+" "+I.join(n+" ")+n).split(" ");return i(e,"string")||i(e,"undefined")?o(s,e):(s=(t+" "+x.join(n+" ")+n).split(" "),l(s,e,a))}function d(){f.input=function(a){for(var n=0,s=a.length;s>n;n++)D[a[n]]=!!(a[n]in y);return D.list&&(D.list=!(!e.createElement("datalist")||!t.HTMLDataListElement)),D}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),f.inputtypes=function(t){for(var n,s,i,r=0,o=t.length;o>r;r++)y.setAttribute("type",s=t[r]),n="text"!==y.type,n&&(y.value=w,y.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(s)&&y.style.WebkitAppearance!==a?(_.appendChild(y),i=e.defaultView,n=i.getComputedStyle&&"textfield"!==i.getComputedStyle(y,null).WebkitAppearance&&0!==y.offsetHeight,_.removeChild(y)):/^(search|tel)$/.test(s)||(n=/^(url|email)$/.test(s)?y.checkValidity&&y.checkValidity()===!1:y.value!=w)),k[t[r]]=!!n;return k}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var u,p,h="2.8.3",f={},m=!0,_=e.documentElement,b="modernizr",v=e.createElement(b),g=v.style,y=e.createElement("input"),w=":)",T={}.toString,E=" -webkit- -moz- -o- -ms- ".split(" "),S="Webkit Moz O ms",I=S.split(" "),x=S.toLowerCase().split(" "),A={svg:"http://www.w3.org/2000/svg"},M={},k={},D={},C=[],P=C.slice,$=function(t,a,n,s){var i,r,o,l,c=e.createElement("div"),d=e.body,u=d||e.createElement("body");if(parseInt(n,10))for(;n--;)o=e.createElement("div"),o.id=s?s[n]:b+(n+1),c.appendChild(o);return i=["&#173;",'<style id="s',b,'">',t,"</style>"].join(""),c.id=b,(d?c:u).innerHTML+=i,u.appendChild(c),d||(u.style.background="",u.style.overflow="hidden",l=_.style.overflow,_.style.overflow="hidden",_.appendChild(u)),r=a(c,t),d?c.parentNode.removeChild(c):(u.parentNode.removeChild(u),_.style.overflow=l),!!r},O=function(e){var a=t.matchMedia||t.msMatchMedia;if(a)return a(e)&&a(e).matches||!1;var n;return $("@media "+e+" { #"+b+" { position: absolute; } }",function(e){n="absolute"==(t.getComputedStyle?getComputedStyle(e,null):e.currentStyle).position}),n},R=function(){function t(t,s){s=s||e.createElement(n[t]||"div"),t="on"+t;var r=t in s;return r||(s.setAttribute||(s=e.createElement("div")),s.setAttribute&&s.removeAttribute&&(s.setAttribute(t,""),r=i(s[t],"function"),i(s[t],"undefined")||(s[t]=a),s.removeAttribute(t))),s=null,r}var n={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return t}(),L={}.hasOwnProperty;p=i(L,"undefined")||i(L.call,"undefined")?function(t,e){return e in t&&i(t.constructor.prototype[e],"undefined")}:function(t,e){return L.call(t,e)},Function.prototype.bind||(Function.prototype.bind=function(t){var e=this;if("function"!=typeof e)throw new TypeError;var a=P.call(arguments,1),n=function(){if(this instanceof n){var s=function(){};s.prototype=e.prototype;var i=new s,r=e.apply(i,a.concat(P.call(arguments)));return Object(r)===r?r:i}return e.apply(t,a.concat(P.call(arguments)))};return n}),M.flexbox=function(){return c("flexWrap")},M.flexboxlegacy=function(){return c("boxDirection")},M.canvas=function(){var t=e.createElement("canvas");return!(!t.getContext||!t.getContext("2d"))},M.canvastext=function(){return!(!f.canvas||!i(e.createElement("canvas").getContext("2d").fillText,"function"))},M.webgl=function(){return!!t.WebGLRenderingContext},M.touch=function(){var a;return"ontouchstart"in t||t.DocumentTouch&&e instanceof DocumentTouch?a=!0:$(["@media (",E.join("touch-enabled),("),b,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(t){a=9===t.offsetTop}),a},M.geolocation=function(){return"geolocation"in navigator},M.postmessage=function(){return!!t.postMessage},M.websqldatabase=function(){return!!t.openDatabase},M.indexedDB=function(){return!!c("indexedDB",t)},M.hashchange=function(){return R("hashchange",t)&&(e.documentMode===a||e.documentMode>7)},M.history=function(){return!(!t.history||!history.pushState)},M.draganddrop=function(){var t=e.createElement("div");return"draggable"in t||"ondragstart"in t&&"ondrop"in t},M.websockets=function(){return"WebSocket"in t||"MozWebSocket"in t},M.rgba=function(){return n("background-color:rgba(150,255,150,.5)"),r(g.backgroundColor,"rgba")},M.hsla=function(){return n("background-color:hsla(120,40%,100%,.5)"),r(g.backgroundColor,"rgba")||r(g.backgroundColor,"hsla")},M.multiplebgs=function(){return n("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(g.background)},M.backgroundsize=function(){return c("backgroundSize")},M.borderimage=function(){return c("borderImage")},M.borderradius=function(){return c("borderRadius")},M.boxshadow=function(){return c("boxShadow")},M.textshadow=function(){return""===e.createElement("div").style.textShadow},M.opacity=function(){return s("opacity:.55"),/^0.55$/.test(g.opacity)},M.cssanimations=function(){return c("animationName")},M.csscolumns=function(){return c("columnCount")},M.cssgradients=function(){var t="background-image:",e="gradient(linear,left top,right bottom,from(#9f9),to(white));",a="linear-gradient(left top,#9f9, white);";return n((t+"-webkit- ".split(" ").join(e+t)+E.join(a+t)).slice(0,-t.length)),r(g.backgroundImage,"gradient")},M.cssreflections=function(){return c("boxReflect")},M.csstransforms=function(){return!!c("transform")},M.csstransforms3d=function(){var t=!!c("perspective");return t&&"webkitPerspective"in _.style&&$("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(e){t=9===e.offsetLeft&&3===e.offsetHeight}),t},M.csstransitions=function(){return c("transition")},M.fontface=function(){var t;return $('@font-face {font-family:"font";src:url("https://")}',function(a,n){var s=e.getElementById("smodernizr"),i=s.sheet||s.styleSheet,r=i?i.cssRules&&i.cssRules[0]?i.cssRules[0].cssText:i.cssText||"":"";t=/src/i.test(r)&&0===r.indexOf(n.split(" ")[0])}),t},M.generatedcontent=function(){var t;return $(["#",b,"{font:0/0 a}#",b,':after{content:"',w,'";visibility:hidden;font:3px/1 a}'].join(""),function(e){t=e.offsetHeight>=3}),t},M.video=function(){var t=e.createElement("video"),a=!1;try{(a=!!t.canPlayType)&&(a=new Boolean(a),a.ogg=t.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),a.h264=t.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),a.webm=t.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(n){}return a},M.audio=function(){var t=e.createElement("audio"),a=!1;try{(a=!!t.canPlayType)&&(a=new Boolean(a),a.ogg=t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),a.mp3=t.canPlayType("audio/mpeg;").replace(/^no$/,""),a.wav=t.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),a.m4a=(t.canPlayType("audio/x-m4a;")||t.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(n){}return a},M.localstorage=function(){try{return localStorage.setItem(b,b),localStorage.removeItem(b),!0}catch(t){return!1}},M.sessionstorage=function(){try{return sessionStorage.setItem(b,b),sessionStorage.removeItem(b),!0}catch(t){return!1}},M.webworkers=function(){return!!t.Worker},M.applicationcache=function(){return!!t.applicationCache},M.svg=function(){return!!e.createElementNS&&!!e.createElementNS(A.svg,"svg").createSVGRect},M.inlinesvg=function(){var t=e.createElement("div");return t.innerHTML="<svg/>",(t.firstChild&&t.firstChild.namespaceURI)==A.svg},M.smil=function(){return!!e.createElementNS&&/SVGAnimate/.test(T.call(e.createElementNS(A.svg,"animate")))},M.svgclippaths=function(){return!!e.createElementNS&&/SVGClipPath/.test(T.call(e.createElementNS(A.svg,"clipPath")))};for(var N in M)p(M,N)&&(u=N.toLowerCase(),f[u]=M[N](),C.push((f[u]?"":"no-")+u));return f.input||d(),f.addTest=function(t,e){if("object"==typeof t)for(var n in t)p(t,n)&&f.addTest(n,t[n]);else{if(t=t.toLowerCase(),f[t]!==a)return f;e="function"==typeof e?e():e,"undefined"!=typeof m&&m&&(_.className+=" "+(e?"":"no-")+t),f[t]=e}return f},n(""),v=y=null,function(t,e){function a(t,e){var a=t.createElement("p"),n=t.getElementsByTagName("head")[0]||t.documentElement;return a.innerHTML="x<style>"+e+"</style>",n.insertBefore(a.lastChild,n.firstChild)}function n(){var t=v.elements;return"string"==typeof t?t.split(" "):t}function s(t){var e=b[t[m]];return e||(e={},_++,t[m]=_,b[_]=e),e}function i(t,a,n){if(a||(a=e),d)return a.createElement(t);n||(n=s(a));var i;return i=n.cache[t]?n.cache[t].cloneNode():f.test(t)?(n.cache[t]=n.createElem(t)).cloneNode():n.createElem(t),!i.canHaveChildren||h.test(t)||i.tagUrn?i:n.frag.appendChild(i)}function r(t,a){if(t||(t=e),d)return t.createDocumentFragment();a=a||s(t);for(var i=a.frag.cloneNode(),r=0,o=n(),l=o.length;l>r;r++)i.createElement(o[r]);return i}function o(t,e){e.cache||(e.cache={},e.createElem=t.createElement,e.createFrag=t.createDocumentFragment,e.frag=e.createFrag()),t.createElement=function(a){return v.shivMethods?i(a,t,e):e.createElem(a)},t.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+n().join().replace(/[\w\-]+/g,function(t){return e.createElem(t),e.frag.createElement(t),'c("'+t+'")'})+");return n}")(v,e.frag)}function l(t){t||(t=e);var n=s(t);return!v.shivCSS||c||n.hasCSS||(n.hasCSS=!!a(t,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),d||o(t,n),t}var c,d,u="3.7.0",p=t.html5||{},h=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,f=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,m="_html5shiv",_=0,b={};!function(){try{var t=e.createElement("a");t.innerHTML="<xyz></xyz>",c="hidden"in t,d=1==t.childNodes.length||function(){e.createElement("a");var t=e.createDocumentFragment();return"undefined"==typeof t.cloneNode||"undefined"==typeof t.createDocumentFragment||"undefined"==typeof t.createElement}()}catch(a){c=!0,d=!0}}();var v={elements:p.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:u,shivCSS:p.shivCSS!==!1,supportsUnknownElements:d,shivMethods:p.shivMethods!==!1,type:"default",shivDocument:l,createElement:i,createDocumentFragment:r};t.html5=v,l(e)}(this,e),f._version=h,f._prefixes=E,f._domPrefixes=x,f._cssomPrefixes=I,f.mq=O,f.hasEvent=R,f.testProp=function(t){return o([t])},f.testAllProps=c,f.testStyles=$,f.prefixed=function(t,e,a){return e?c(t,e,a):c(t,"pfx")},_.className=_.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(m?" js "+C.join(" "):""),f}(this,this.document),define("modernizr",function(t){return function(){var e;return e||t.Modernizr}}(this)),function(t,e,a,n){"use strict";function s(t){return("string"==typeof t||t instanceof String)&&(t=t.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g,"")),t}var i=function(e){for(var a=e.length,n=t("head");a--;)0===n.has("."+e[a]).length&&n.append('<meta class="'+e[a]+'" />')};i(["foundation-mq-small","foundation-mq-small-only","foundation-mq-medium","foundation-mq-medium-only","foundation-mq-large","foundation-mq-large-only","foundation-mq-xlarge","foundation-mq-xlarge-only","foundation-mq-xxlarge","foundation-data-attribute-namespace"]),t(function(){"undefined"!=typeof FastClick&&"undefined"!=typeof a.body&&FastClick.attach(a.body)});var r=function(e,n){if("string"==typeof e){if(n){var s;if(n.jquery){if(s=n[0],!s)return n}else s=n;return t(s.querySelectorAll(e))}return t(a.querySelectorAll(e))}return t(e,n)},o=function(t){var e=[];return t||e.push("data"),this.namespace.length>0&&e.push(this.namespace),e.push(this.name),e.join("-")},l=function(t){for(var e=t.split("-"),a=e.length,n=[];a--;)0!==a?n.push(e[a]):this.namespace.length>0?n.push(this.namespace,e[a]):n.push(e[a]);return n.reverse().join("-")},c=function(e,a){var n=this,s=function(){var s=r(this),i=!s.data(n.attr_name(!0)+"-init");s.data(n.attr_name(!0)+"-init",t.extend({},n.settings,a||e,n.data_options(s))),i&&n.events(this)};return r(this.scope).is("["+this.attr_name()+"]")?s.call(this.scope):r("["+this.attr_name()+"]",this.scope).each(s),"string"==typeof e?this[e].call(this,a):void 0},d=function(t,e){function a(){e(t[0])}function n(){if(this.one("load",a),/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var t=this.attr("src"),e=t.match(/\?/)?"&":"?";e+="random="+(new Date).getTime(),this.attr("src",t+e)}}return t.attr("src")?void(t[0].complete||4===t[0].readyState?a():n.call(t)):void a()};e.matchMedia=e.matchMedia||function(t){var e,a=t.documentElement,n=a.firstElementChild||a.firstChild,s=t.createElement("body"),i=t.createElement("div");return i.id="mq-test-1",i.style.cssText="position:absolute;top:-100em",s.style.background="none",s.appendChild(i),function(t){return i.innerHTML='&shy;<style media="'+t+'"> #mq-test-1 { width: 42px; }</style>',a.insertBefore(s,n),e=42===i.offsetWidth,a.removeChild(s),{matches:e,media:t}}}(a),function(t){function a(){n&&(r(a),l&&t.fx.tick())}for(var n,s=0,i=["webkit","moz"],r=e.requestAnimationFrame,o=e.cancelAnimationFrame,l="undefined"!=typeof t.fx;s<i.length&&!r;s++)r=e[i[s]+"RequestAnimationFrame"],o=o||e[i[s]+"CancelAnimationFrame"]||e[i[s]+"CancelRequestAnimationFrame"];r?(e.requestAnimationFrame=r,e.cancelAnimationFrame=o,l&&(t.fx.timer=function(e){e()&&t.timers.push(e)&&!n&&(n=!0,a())},t.fx.stop=function(){n=!1})):(e.requestAnimationFrame=function(t){var a=(new Date).getTime(),n=Math.max(0,16-(a-s)),i=e.setTimeout(function(){t(a+n)},n);return s=a+n,i},e.cancelAnimationFrame=function(t){clearTimeout(t)})}(t),e.Foundation={name:"Foundation",version:"5.5.1",media_queries:{small:r(".foundation-mq-small").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),"small-only":r(".foundation-mq-small-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),medium:r(".foundation-mq-medium").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),"medium-only":r(".foundation-mq-medium-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),large:r(".foundation-mq-large").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),"large-only":r(".foundation-mq-large-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),xlarge:r(".foundation-mq-xlarge").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),"xlarge-only":r(".foundation-mq-xlarge-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),xxlarge:r(".foundation-mq-xxlarge").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,"")},stylesheet:t("<style></style>").appendTo("head")[0].sheet,global:{namespace:n},init:function(t,a,n,s,i){var o=[t,n,s,i],l=[];if(this.rtl=/rtl/i.test(r("html").attr("dir")),this.scope=t||this.scope,this.set_namespace(),a&&"string"==typeof a&&!/reflow/i.test(a))this.libs.hasOwnProperty(a)&&l.push(this.init_lib(a,o));else for(var c in this.libs)l.push(this.init_lib(c,a));return r(e).load(function(){r(e).trigger("resize.fndtn.clearing").trigger("resize.fndtn.dropdown").trigger("resize.fndtn.equalizer").trigger("resize.fndtn.interchange").trigger("resize.fndtn.joyride").trigger("resize.fndtn.magellan").trigger("resize.fndtn.topbar").trigger("resize.fndtn.slider")}),t},init_lib:function(e,a){return this.libs.hasOwnProperty(e)?(this.patch(this.libs[e]),a&&a.hasOwnProperty(e)?("undefined"!=typeof this.libs[e].settings?t.extend(!0,this.libs[e].settings,a[e]):"undefined"!=typeof this.libs[e].defaults&&t.extend(!0,this.libs[e].defaults,a[e]),this.libs[e].init.apply(this.libs[e],[this.scope,a[e]])):(a=a instanceof Array?a:new Array(a),this.libs[e].init.apply(this.libs[e],a))):function(){}},patch:function(t){t.scope=this.scope,t.namespace=this.global.namespace,t.rtl=this.rtl,t.data_options=this.utils.data_options,t.attr_name=o,t.add_namespace=l,t.bindings=c,t.S=this.utils.S},inherit:function(t,e){for(var a=e.split(" "),n=a.length;n--;)this.utils.hasOwnProperty(a[n])&&(t[a[n]]=this.utils[a[n]])},set_namespace:function(){var e=this.global.namespace===n?t(".foundation-data-attribute-namespace").css("font-family"):this.global.namespace;this.global.namespace=e===n||/false/i.test(e)?"":e},libs:{},utils:{S:r,throttle:function(t,e){var a=null;return function(){var n=this,s=arguments;null==a&&(a=setTimeout(function(){t.apply(n,s),a=null},e))}},debounce:function(t,e,a){var n,s;return function(){var i=this,r=arguments,o=function(){n=null,a||(s=t.apply(i,r))},l=a&&!n;return clearTimeout(n),n=setTimeout(o,e),l&&(s=t.apply(i,r)),s}},data_options:function(e,a){function n(t){return!isNaN(t-0)&&null!==t&&""!==t&&t!==!1&&t!==!0}function s(e){return"string"==typeof e?t.trim(e):e}a=a||"options";var i,r,o,l={},c=function(t){var e=Foundation.global.namespace;return t.data(e.length>0?e+"-"+a:a)},d=c(e);if("object"==typeof d)return d;for(o=(d||":").split(";"),i=o.length;i--;)r=o[i].split(":"),r=[r[0],r.slice(1).join(":")],/true/i.test(r[1])&&(r[1]=!0),/false/i.test(r[1])&&(r[1]=!1),n(r[1])&&(r[1]=-1===r[1].indexOf(".")?parseInt(r[1],10):parseFloat(r[1])),2===r.length&&r[0].length>0&&(l[s(r[0])]=s(r[1]));return l},register_media:function(e,a){Foundation.media_queries[e]===n&&(t("head").append('<meta class="'+a+'"/>'),Foundation.media_queries[e]=s(t("."+a).css("font-family")))},add_custom_rule:function(t,e){if(e===n&&Foundation.stylesheet)Foundation.stylesheet.insertRule(t,Foundation.stylesheet.cssRules.length);else{var a=Foundation.media_queries[e];a!==n&&Foundation.stylesheet.insertRule("@media "+Foundation.media_queries[e]+"{ "+t+" }")}},image_loaded:function(t,e){var a=this,n=t.length;0===n&&e(t),t.each(function(){d(a.S(this),function(){n-=1,0===n&&e(t)})})},random_str:function(){return this.fidx||(this.fidx=0),this.prefix=this.prefix||[this.name||"F",(+new Date).toString(36)].join("-"),this.prefix+(this.fidx++).toString(36)},match:function(t){return e.matchMedia(t).matches},is_small_up:function(){return this.match(Foundation.media_queries.small)},is_medium_up:function(){return this.match(Foundation.media_queries.medium)},is_large_up:function(){return this.match(Foundation.media_queries.large)},is_xlarge_up:function(){return this.match(Foundation.media_queries.xlarge)},is_xxlarge_up:function(){return this.match(Foundation.media_queries.xxlarge)},is_small_only:function(){return!(this.is_medium_up()||this.is_large_up()||this.is_xlarge_up()||this.is_xxlarge_up())},is_medium_only:function(){return this.is_medium_up()&&!this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_large_only:function(){return this.is_medium_up()&&this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xxlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&this.is_xxlarge_up()}}},t.fn.foundation=function(){var t=Array.prototype.slice.call(arguments,0);return this.each(function(){return Foundation.init.apply(Foundation,[this].concat(t)),this})}}(jQuery,window,window.document),define("foundation.core",["jquery","modernizr"],function(t){return function(){var e;return e||t.Foundation}}(this)),function(t,e,a,n){"use strict";function s(t){var e=/fade/i.test(t),a=/pop/i.test(t);return{animate:e||a,pop:a,fade:e}}Foundation.libs.reveal={name:"reveal",version:"5.5.1",locked:!1,settings:{animation:"fadeAndPop",animation_speed:250,close_on_background_click:!0,close_on_esc:!0,dismiss_modal_class:"close-reveal-modal",multiple_opened:!1,bg_class:"reveal-modal-bg",root_element:"body",open:function(){},opened:function(){},close:function(){},closed:function(){},bg:t(".reveal-modal-bg"),css:{open:{opacity:0,visibility:"visible",display:"block"},close:{opacity:1,visibility:"hidden",display:"none"}}},init:function(e,a,n){t.extend(!0,this.settings,a,n),this.bindings(a,n)
+},events:function(){var t=this,e=t.S;return e(this.scope).off(".reveal").on("click.fndtn.reveal","["+this.add_namespace("data-reveal-id")+"]:not([disabled])",function(a){if(a.preventDefault(),!t.locked){var n=e(this),s=n.data(t.data_attr("reveal-ajax"));if(t.locked=!0,"undefined"==typeof s)t.open.call(t,n);else{var i=s===!0?n.attr("href"):s;t.open.call(t,n,{url:i})}}}),e(a).on("click.fndtn.reveal",this.close_targets(),function(a){if(a.preventDefault(),!t.locked){var n=e("["+t.attr_name()+"].open").data(t.attr_name(!0)+"-init")||t.settings,s=e(a.target)[0]===e("."+n.bg_class)[0];if(s){if(!n.close_on_background_click)return;a.stopPropagation()}t.locked=!0,t.close.call(t,s?e("["+t.attr_name()+"].open"):e(this).closest("["+t.attr_name()+"]"))}}),e("["+t.attr_name()+"]",this.scope).length>0?e(this.scope).on("open.fndtn.reveal",this.settings.open).on("opened.fndtn.reveal",this.settings.opened).on("opened.fndtn.reveal",this.open_video).on("close.fndtn.reveal",this.settings.close).on("closed.fndtn.reveal",this.settings.closed).on("closed.fndtn.reveal",this.close_video):e(this.scope).on("open.fndtn.reveal","["+t.attr_name()+"]",this.settings.open).on("opened.fndtn.reveal","["+t.attr_name()+"]",this.settings.opened).on("opened.fndtn.reveal","["+t.attr_name()+"]",this.open_video).on("close.fndtn.reveal","["+t.attr_name()+"]",this.settings.close).on("closed.fndtn.reveal","["+t.attr_name()+"]",this.settings.closed).on("closed.fndtn.reveal","["+t.attr_name()+"]",this.close_video),!0},key_up_on:function(){var t=this;return t.S("body").off("keyup.fndtn.reveal").on("keyup.fndtn.reveal",function(e){var a=t.S("["+t.attr_name()+"].open"),n=a.data(t.attr_name(!0)+"-init")||t.settings;n&&27===e.which&&n.close_on_esc&&!t.locked&&t.close.call(t,a)}),!0},key_up_off:function(){return this.S("body").off("keyup.fndtn.reveal"),!0},open:function(a,n){var s,i=this;a?"undefined"!=typeof a.selector?s=i.S("#"+a.data(i.data_attr("reveal-id"))).first():(s=i.S(this.scope),n=a):s=i.S(this.scope);var r=s.data(i.attr_name(!0)+"-init");if(r=r||this.settings,s.hasClass("open")&&a.attr("data-reveal-id")==s.attr("id"))return i.close(s);if(!s.hasClass("open")){var o=i.S("["+i.attr_name()+"].open");if("undefined"==typeof s.data("css-top")&&s.data("css-top",parseInt(s.css("top"),10)).data("offset",this.cache_offset(s)),this.key_up_on(s),s.on("open.fndtn.reveal").trigger("open.fndtn.reveal"),o.length<1&&this.toggle_bg(s,!0),"string"==typeof n&&(n={url:n}),"undefined"!=typeof n&&n.url){var l="undefined"!=typeof n.success?n.success:null;t.extend(n,{success:function(e,a,n){if(t.isFunction(l)){var c=l(e,a,n);"string"==typeof c&&(e=c)}s.html(e),i.S(s).foundation("section","reflow"),i.S(s).children().foundation(),o.length>0&&(r.multiple_opened?this.to_back(o):this.hide(o,r.css.close)),i.show(s,r.css.open)}}),t.ajax(n)}else o.length>0&&(r.multiple_opened?this.to_back(o):this.hide(o,r.css.close)),this.show(s,r.css.open)}i.S(e).trigger("resize")},close:function(e){var e=e&&e.length?e:this.S(this.scope),a=this.S("["+this.attr_name()+"].open"),n=e.data(this.attr_name(!0)+"-init")||this.settings;a.length>0&&(this.locked=!0,this.key_up_off(e),e.trigger("close").trigger("close.fndtn.reveal"),(n.multiple_opened&&1===a.length||!n.multiple_opened||e.length>1)&&(this.toggle_bg(e,!1),this.to_front(e)),n.multiple_opened?(this.hide(e,n.css.close,n),this.to_front(t(t.makeArray(a).reverse()[1]))):this.hide(a,n.css.close,n))},close_targets:function(){var t="."+this.settings.dismiss_modal_class;return this.settings.close_on_background_click?t+", ."+this.settings.bg_class:t},toggle_bg:function(e,a){0===this.S("."+this.settings.bg_class).length&&(this.settings.bg=t("<div />",{"class":this.settings.bg_class}).appendTo("body").hide());var s=this.settings.bg.filter(":visible").length>0;a!=s&&((a==n?s:!a)?this.hide(this.settings.bg):this.show(this.settings.bg))},show:function(a,n){if(n){var i=a.data(this.attr_name(!0)+"-init")||this.settings,r=i.root_element;if(0===a.parent(r).length){var o=a.wrap('<div style="display: none;" />').parent();a.on("closed.fndtn.reveal.wrapped",function(){a.detach().appendTo(o),a.unwrap().unbind("closed.fndtn.reveal.wrapped")}),a.detach().appendTo(r)}var l=s(i.animation);if(l.animate||(this.locked=!1),l.pop){n.top=t(e).scrollTop()-a.data("offset")+"px";var c={top:t(e).scrollTop()+a.data("css-top")+"px",opacity:1};return setTimeout(function(){return a.css(n).animate(c,i.animation_speed,"linear",function(){this.locked=!1,a.trigger("opened").trigger("opened.fndtn.reveal")}.bind(this)).addClass("open")}.bind(this),i.animation_speed/2)}if(l.fade){n.top=t(e).scrollTop()+a.data("css-top")+"px";var c={opacity:1};return setTimeout(function(){return a.css(n).animate(c,i.animation_speed,"linear",function(){this.locked=!1,a.trigger("opened").trigger("opened.fndtn.reveal")}.bind(this)).addClass("open")}.bind(this),i.animation_speed/2)}return a.css(n).show().css({opacity:1}).addClass("open").trigger("opened").trigger("opened.fndtn.reveal")}var i=this.settings;return s(i.animation).fade?a.fadeIn(i.animation_speed/2):(this.locked=!1,a.show())},to_back:function(t){t.addClass("toback")},to_front:function(t){t.removeClass("toback")},hide:function(a,n){if(n){var i=a.data(this.attr_name(!0)+"-init");i=i||this.settings;var r=s(i.animation);if(r.animate||(this.locked=!1),r.pop){var o={top:-t(e).scrollTop()-a.data("offset")+"px",opacity:0};return setTimeout(function(){return a.animate(o,i.animation_speed,"linear",function(){this.locked=!1,a.css(n).trigger("closed").trigger("closed.fndtn.reveal")}.bind(this)).removeClass("open")}.bind(this),i.animation_speed/2)}if(r.fade){var o={opacity:0};return setTimeout(function(){return a.animate(o,i.animation_speed,"linear",function(){this.locked=!1,a.css(n).trigger("closed").trigger("closed.fndtn.reveal")}.bind(this)).removeClass("open")}.bind(this),i.animation_speed/2)}return a.hide().css(n).removeClass("open").trigger("closed").trigger("closed.fndtn.reveal")}var i=this.settings;return s(i.animation).fade?a.fadeOut(i.animation_speed/2):a.hide()},close_video:function(e){var a=t(".flex-video",e.target),n=t("iframe",a);n.length>0&&(n.attr("data-src",n[0].src),n.attr("src",n.attr("src")),a.hide())},open_video:function(e){var a=t(".flex-video",e.target),s=a.find("iframe");if(s.length>0){var i=s.attr("data-src");if("string"==typeof i)s[0].src=s.attr("data-src");else{var r=s[0].src;s[0].src=n,s[0].src=r}a.show()}},data_attr:function(t){return this.namespace.length>0?this.namespace+"-"+t:t},cache_offset:function(t){var e=t.show().height()+parseInt(t.css("top"),10);return t.hide(),e},off:function(){t(this.scope).off(".fndtn.reveal")},reflow:function(){}}}(jQuery,window,window.document),define("foundation.reveal",["foundation.core"],function(){}),function(t,e,a,n){"use strict";Foundation.libs.tab={name:"tab",version:"5.5.1",settings:{active_class:"active",callback:function(){},deep_linking:!1,scroll_to_content:!0,is_hover:!1},default_tab_hashes:[],init:function(t,a,n){var s=this,i=this.S;this.bindings(a,n),s.entry_location=e.location.href,this.handle_location_hash_change(),i("["+this.attr_name()+"] > .active > a",this.scope).each(function(){s.default_tab_hashes.push(this.hash)})},events:function(){var t=this,a=this.S,n=function(e){var n=a(this).closest("["+t.attr_name()+"]").data(t.attr_name(!0)+"-init");(!n.is_hover||Modernizr.touch)&&(e.preventDefault(),e.stopPropagation(),t.toggle_active_tab(a(this).parent()))};a(this.scope).off(".tab").on("focus.fndtn.tab","["+this.attr_name()+"] > * > a",n).on("click.fndtn.tab","["+this.attr_name()+"] > * > a",n).on("mouseenter.fndtn.tab","["+this.attr_name()+"] > * > a",function(){var e=a(this).closest("["+t.attr_name()+"]").data(t.attr_name(!0)+"-init");e.is_hover&&t.toggle_active_tab(a(this).parent())}),a(e).on("hashchange.fndtn.tab",function(e){e.preventDefault(),t.handle_location_hash_change()})},handle_location_hash_change:function(){var e=this,a=this.S;a("["+this.attr_name()+"]",this.scope).each(function(){var s=a(this).data(e.attr_name(!0)+"-init");if(s.deep_linking){var i;if(i=s.scroll_to_content?e.scope.location.hash:e.scope.location.hash.replace("fndtn-",""),""!=i){var r=a(i);if(r.hasClass("content")&&r.parent().hasClass("tabs-content"))e.toggle_active_tab(t("["+e.attr_name()+"] > * > a[href="+i+"]").parent());else{var o=r.closest(".content").attr("id");o!=n&&e.toggle_active_tab(t("["+e.attr_name()+"] > * > a[href=#"+o+"]").parent(),i)}}else for(var l=0;l<e.default_tab_hashes.length;l++)e.toggle_active_tab(t("["+e.attr_name()+"] > * > a[href="+e.default_tab_hashes[l]+"]").parent())}})},toggle_active_tab:function(s,i){var r=this,o=r.S,l=s.closest("["+this.attr_name()+"]"),c=s.find("a"),d=s.children("a").first(),u="#"+d.attr("href").split("#")[1],p=o(u),h=s.siblings(),f=l.data(this.attr_name(!0)+"-init"),m=function(e){var n,s=t(this),i=t(this).parents("li").prev().children('[role="tab"]'),r=t(this).parents("li").next().children('[role="tab"]');switch(e.keyCode){case 37:n=i;break;case 39:n=r;break;default:n=!1}n.length&&(s.attr({tabindex:"-1","aria-selected":null}),n.attr({tabindex:"0","aria-selected":!0}).focus()),t('[role="tabpanel"]').attr("aria-hidden","true"),t("#"+t(a.activeElement).attr("href").substring(1)).attr("aria-hidden",null)},_=function(t){var a=e.location.href===r.entry_location,n=f.scroll_to_content?r.default_tab_hashes[0]:a?e.location.hash:"fndtn-"+r.default_tab_hashes[0].replace("#","");a&&t===n||(e.location.hash=t)};o(this).data(this.data_attr("tab-content"))&&(u="#"+o(this).data(this.data_attr("tab-content")).split("#")[1],p=o(u)),f.deep_linking&&(f.scroll_to_content?(_(i||u),i==n||i==u?s.parent()[0].scrollIntoView():o(u)[0].scrollIntoView()):_(i!=n?"fndtn-"+i.replace("#",""):"fndtn-"+u.replace("#",""))),s.addClass(f.active_class).triggerHandler("opened"),c.attr({"aria-selected":"true",tabindex:0}),h.removeClass(f.active_class),h.find("a").attr({"aria-selected":"false",tabindex:-1}),p.siblings().removeClass(f.active_class).attr({"aria-hidden":"true",tabindex:-1}),p.addClass(f.active_class).attr("aria-hidden","false").removeAttr("tabindex"),f.callback(s),p.triggerHandler("toggled",[s]),l.triggerHandler("toggled",[p]),c.off("keydown").on("keydown",m)},data_attr:function(t){return this.namespace.length>0?this.namespace+"-"+t:t},off:function(){},reflow:function(){}}}(jQuery,window,window.document),define("foundation.tab",["foundation.core"],function(){}),function(t,e,a){"use strict";Foundation.libs.dropdown={name:"dropdown",version:"5.5.1",settings:{active_class:"open",disabled_class:"disabled",mega_class:"mega",align:"bottom",is_hover:!1,hover_timeout:150,opened:function(){},closed:function(){}},init:function(e,a,n){Foundation.inherit(this,"throttle"),t.extend(!0,this.settings,a,n),this.bindings(a,n)},events:function(){var n=this,s=n.S;s(this.scope).off(".dropdown").on("click.fndtn.dropdown","["+this.attr_name()+"]",function(e){var a=s(this).data(n.attr_name(!0)+"-init")||n.settings;(!a.is_hover||Modernizr.touch)&&(e.preventDefault(),s(this).parent("[data-reveal-id]")&&e.stopPropagation(),n.toggle(t(this)))}).on("mouseenter.fndtn.dropdown","["+this.attr_name()+"], ["+this.attr_name()+"-content]",function(t){var e,a,i=s(this);clearTimeout(n.timeout),i.data(n.data_attr())?(e=s("#"+i.data(n.data_attr())),a=i):(e=i,a=s("["+n.attr_name()+'="'+e.attr("id")+'"]'));var r=a.data(n.attr_name(!0)+"-init")||n.settings;s(t.currentTarget).data(n.data_attr())&&r.is_hover&&n.closeall.call(n),r.is_hover&&n.open.apply(n,[e,a])}).on("mouseleave.fndtn.dropdown","["+this.attr_name()+"], ["+this.attr_name()+"-content]",function(){var t,e=s(this);if(e.data(n.data_attr()))t=e.data(n.data_attr(!0)+"-init")||n.settings;else var a=s("["+n.attr_name()+'="'+s(this).attr("id")+'"]'),t=a.data(n.attr_name(!0)+"-init")||n.settings;n.timeout=setTimeout(function(){e.data(n.data_attr())?t.is_hover&&n.close.call(n,s("#"+e.data(n.data_attr()))):t.is_hover&&n.close.call(n,e)}.bind(this),t.hover_timeout)}).on("click.fndtn.dropdown",function(e){var i=s(e.target).closest("["+n.attr_name()+"-content]"),r=i.find("a");return r.length>0&&"false"!==i.attr("aria-autoclose")&&n.close.call(n,s("["+n.attr_name()+"-content]")),e.target!==a&&!t.contains(a.documentElement,e.target)||s(e.target).closest("["+n.attr_name()+"]").length>0?void 0:!s(e.target).data("revealId")&&i.length>0&&(s(e.target).is("["+n.attr_name()+"-content]")||t.contains(i.first()[0],e.target))?void e.stopPropagation():void n.close.call(n,s("["+n.attr_name()+"-content]"))}).on("opened.fndtn.dropdown","["+n.attr_name()+"-content]",function(){n.settings.opened.call(this)}).on("closed.fndtn.dropdown","["+n.attr_name()+"-content]",function(){n.settings.closed.call(this)}),s(e).off(".dropdown").on("resize.fndtn.dropdown",n.throttle(function(){n.resize.call(n)},50)),this.resize()},close:function(e){var a=this;e.each(function(){var n=t("["+a.attr_name()+"="+e[0].id+"]")||t("aria-controls="+e[0].id+"]");n.attr("aria-expanded","false"),a.S(this).hasClass(a.settings.active_class)&&(a.S(this).css(Foundation.rtl?"right":"left","-99999px").attr("aria-hidden","true").removeClass(a.settings.active_class).prev("["+a.attr_name()+"]").removeClass(a.settings.active_class).removeData("target"),a.S(this).trigger("closed").trigger("closed.fndtn.dropdown",[e]))}),e.removeClass("f-open-"+this.attr_name(!0))},closeall:function(){var e=this;t.each(e.S(".f-open-"+this.attr_name(!0)),function(){e.close.call(e,e.S(this))})},open:function(t,e){this.css(t.addClass(this.settings.active_class),e),t.prev("["+this.attr_name()+"]").addClass(this.settings.active_class),t.data("target",e.get(0)).trigger("opened").trigger("opened.fndtn.dropdown",[t,e]),t.attr("aria-hidden","false"),e.attr("aria-expanded","true"),t.focus(),t.addClass("f-open-"+this.attr_name(!0))},data_attr:function(){return this.namespace.length>0?this.namespace+"-"+this.name:this.name},toggle:function(t){if(!t.hasClass(this.settings.disabled_class)){var e=this.S("#"+t.data(this.data_attr()));0!==e.length&&(this.close.call(this,this.S("["+this.attr_name()+"-content]").not(e)),e.hasClass(this.settings.active_class)?(this.close.call(this,e),e.data("target")!==t.get(0)&&this.open.call(this,e,t)):this.open.call(this,e,t))}},resize:function(){var e=this.S("["+this.attr_name()+"-content].open"),a=t(e.data("target"));e.length&&a.length&&this.css(e,a)},css:function(t,e){var a=Math.max((e.width()-t.width())/2,8),n=e.data(this.attr_name(!0)+"-init")||this.settings;if(this.clear_idx(),this.small()){var s=this.dirs.bottom.call(t,e,n);t.attr("style","").removeClass("drop-left drop-right drop-top").css({position:"absolute",width:"95%","max-width":"none",top:s.top}),t.css(Foundation.rtl?"right":"left",a)}else this.style(t,e,n);return t},style:function(e,a,n){var s=t.extend({position:"absolute"},this.dirs[n.align].call(e,a,n));e.attr("style","").css(s)},dirs:{_base:function(t){var n=this.offsetParent(),s=n.offset(),i=t.offset();i.top-=s.top,i.left-=s.left,i.missRight=!1,i.missTop=!1,i.missLeft=!1,i.leftRightFlag=!1;var r;r=a.getElementsByClassName("row")[0]?a.getElementsByClassName("row")[0].clientWidth:e.outerWidth;var o=(e.outerWidth-r)/2,l=r;return this.hasClass("mega")||(t.offset().top<=this.outerHeight()&&(i.missTop=!0,l=e.outerWidth-o,i.leftRightFlag=!0),t.offset().left+this.outerWidth()>t.offset().left+o&&t.offset().left-o>this.outerWidth()&&(i.missRight=!0,i.missLeft=!1),t.offset().left-this.outerWidth()<=0&&(i.missLeft=!0,i.missRight=!1)),i},top:function(t,e){var a=Foundation.libs.dropdown,n=a.dirs._base.call(this,t);return this.addClass("drop-top"),1==n.missTop&&(n.top=n.top+t.outerHeight()+this.outerHeight(),this.removeClass("drop-top")),1==n.missRight&&(n.left=n.left-this.outerWidth()+t.outerWidth()),(t.outerWidth()<this.outerWidth()||a.small()||this.hasClass(e.mega_menu))&&a.adjust_pip(this,t,e,n),Foundation.rtl?{left:n.left-this.outerWidth()+t.outerWidth(),top:n.top-this.outerHeight()}:{left:n.left,top:n.top-this.outerHeight()}},bottom:function(t,e){var a=Foundation.libs.dropdown,n=a.dirs._base.call(this,t);return 1==n.missRight&&(n.left=n.left-this.outerWidth()+t.outerWidth()),(t.outerWidth()<this.outerWidth()||a.small()||this.hasClass(e.mega_menu))&&a.adjust_pip(this,t,e,n),a.rtl?{left:n.left-this.outerWidth()+t.outerWidth(),top:n.top+t.outerHeight()}:{left:n.left,top:n.top+t.outerHeight()}},left:function(t){var e=Foundation.libs.dropdown.dirs._base.call(this,t);return this.addClass("drop-left"),1==e.missLeft&&(e.left=e.left+this.outerWidth(),e.top=e.top+t.outerHeight(),this.removeClass("drop-left")),{left:e.left-this.outerWidth(),top:e.top}},right:function(t,e){var a=Foundation.libs.dropdown.dirs._base.call(this,t);this.addClass("drop-right"),1==a.missRight?(a.left=a.left-this.outerWidth(),a.top=a.top+t.outerHeight(),this.removeClass("drop-right")):a.triggeredRight=!0;var n=Foundation.libs.dropdown;return(t.outerWidth()<this.outerWidth()||n.small()||this.hasClass(e.mega_menu))&&n.adjust_pip(this,t,e,a),{left:a.left+t.outerWidth(),top:a.top}}},adjust_pip:function(t,e,a,n){var s=Foundation.stylesheet,i=8;t.hasClass(a.mega_class)?i=n.left+e.outerWidth()/2-8:this.small()&&(i+=n.left-8),this.rule_idx=s.cssRules.length;var r=".f-dropdown.open:before",o=".f-dropdown.open:after",l="left: "+i+"px;",c="left: "+(i-1)+"px;";1==n.missRight&&(i=t.outerWidth()-23,r=".f-dropdown.open:before",o=".f-dropdown.open:after",l="left: "+i+"px;",c="left: "+(i-1)+"px;"),1==n.triggeredRight&&(r=".f-dropdown.open:before",o=".f-dropdown.open:after",l="left:-12px;",c="left:-14px;"),s.insertRule?(s.insertRule([r,"{",l,"}"].join(" "),this.rule_idx),s.insertRule([o,"{",c,"}"].join(" "),this.rule_idx+1)):(s.addRule(r,l,this.rule_idx),s.addRule(o,c,this.rule_idx+1))},clear_idx:function(){var t=Foundation.stylesheet;"undefined"!=typeof this.rule_idx&&(t.deleteRule(this.rule_idx),t.deleteRule(this.rule_idx),delete this.rule_idx)},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},off:function(){this.S(this.scope).off(".fndtn.dropdown"),this.S("html, body").off(".fndtn.dropdown"),this.S(e).off(".fndtn.dropdown"),this.S("[data-dropdown-content]").off(".fndtn.dropdown")},reflow:function(){}}}(jQuery,window,window.document),define("foundation.dropdown",["foundation.core"],function(){}),define("sunstone-config",["require","jquery"],function(t){t("jquery");var e=$.extend(!0,{},config),a={isTabEnabled:function(t){var a=e.view.enabled_tabs[t];return a},isTabActionEnabled:function(t,a,n){var s=!1,i=e.view.tabs[t];return void 0!=i&&(s=n?i.panel_tabs_actions[n][a]:i.actions[a]),s},isTabPanelEnabled:function(t,a){if(e.view.tabs[t]){var n=e.view.tabs[t].panel_tabs[a];return n}return!1},isFeatureEnabled:function(t){return e.view.features&&e.view.features[t]?!0:!1},tabTableColumns:function(t){if(!e.view.tabs[t])return[];var a=e.view.tabs[t].table_columns;return a?a:[]},isTemplateCreationTabEnabled:function(t){if(e.view.tabs["templates-tab"]){var a=e.view.tabs["templates-tab"].template_creation_tabs[t];return a}return!1},dashboardWidgets:function(t){if(!e.view.tabs["dashboard-tab"])return[];var a=e.view.tabs["dashboard-tab"][t];return a?a:[]},tableOrder:function(){return e.user_config.table_order},provision:{dashboard:{isEnabled:function(t){if(e.view.tabs["provision-tab"]){var a=e.view.tabs["provision-tab"].dashboard[t];return a}return!1}},create_vm:{isEnabled:function(t){return e.view.tabs["provision-tab"]&&e.view.tabs["provision-tab"].create_vm?e.view.tabs["provision-tab"].create_vm[t]:!1}},logo:e.view.provision_logo||"images/one_small_logo.png"},autoRefresh:e.view.autorefresh,tableOrder:e.user_config.table_order,vncProxyPort:e.system_config.vnc_proxy_port,vncWSS:e.user_config.vnc_wss};return a}),define("utils/locale",["require"],function(){function t(t){var e;return(null==e||""==e)&&(e=t),e}var e='<option value="en_US">English (en_US)</option>    <option value="ca">Catalan (ca)</option>    <option value="cs_CZ">Czech (cs_CZ)</option>    <option value="nl_NL">Dutch (nl_NL)</option>    <option value="da">Danish (da)</option>    <option value="fr_FR">French (fr_FR)</option>    <option value="de">German (de)</option>    <option value="el_GR">Greek (el_GR)</option>    <option value="it_IT">Italian (it_IT)</option>    <option value="ja">Japanese (ja)</option>    <option value="lt_LT">Lithuanian (lt_LT)</option>    <option value="fa_IR">Persian (fa_IR)</option>    <option value="pl">Polish (pl)</option>    <option value="pt_BR">Portuguese (pt_BR)</option>    <option value="pt_PT">Portuguese (pt_PT)</option>    <option value="ru_RU">Russian (ru_RU)</option>    <option value="zh_CN">Simplified Chinese (zh_CN)</option>    <option value="sk_SK">Slovak (sk_SK)</option>    <option value="es_ES">Spanish (es_ES)</option>    <option value="zh_TW">Traditional Chinese (zh_TW)</option>',a=new Array(t("January"),t("February"),t("March"),t("April"),t("May"),t("June"),t("July"),t("August"),t("September"),t("October"),t("November"),t("December"));return{tr:t,months:a,language_options:e}}),!function(t){t.jGrowl=function(e,a){0===t("#jGrowl").length&&t('<div id="jGrowl"></div>').addClass(a&&a.position?a.position:t.jGrowl.defaults.position).appendTo(a&&a.appendTo?a.appendTo:t.jGrowl.defaults.appendTo),t("#jGrowl").jGrowl(e,a)},t.fn.jGrowl=function(e,a){if(void 0===a&&t.isPlainObject(e)&&(a=e,e=a.message),t.isFunction(this.each)){var n=arguments;return this.each(function(){void 0===t(this).data("jGrowl.instance")&&(t(this).data("jGrowl.instance",t.extend(new t.fn.jGrowl,{notifications:[],element:null,interval:null})),t(this).data("jGrowl.instance").startup(this)),t.isFunction(t(this).data("jGrowl.instance")[e])?t(this).data("jGrowl.instance")[e].apply(t(this).data("jGrowl.instance"),t.makeArray(n).slice(1)):t(this).data("jGrowl.instance").create(e,a)})}},t.extend(t.fn.jGrowl.prototype,{defaults:{pool:0,header:"",group:"",sticky:!1,position:"top-right",appendTo:"body",glue:"after",theme:"default",themeState:"highlight",corners:"10px",check:250,life:3e3,closeDuration:"normal",openDuration:"normal",easing:"swing",closer:!0,closeTemplate:"&times;",closerTemplate:"<div>[ close all ]</div>",log:function(){},beforeOpen:function(){},afterOpen:function(){},open:function(){},beforeClose:function(){},close:function(){},click:function(){},animateOpen:{opacity:"show"},animateClose:{opacity:"hide"}},notifications:[],element:null,interval:null,create:function(e,a){var n=t.extend({},this.defaults,a);"undefined"!=typeof n.speed&&(n.openDuration=n.speed,n.closeDuration=n.speed),this.notifications.push({message:e,options:n}),n.log.apply(this.element,[this.element,e,n])},render:function(e){var a=this,n=e.message,s=e.options;s.themeState=""===s.themeState?"":"ui-state-"+s.themeState;var i=t("<div/>").addClass("jGrowl-notification alert "+s.themeState+" ui-corner-all"+(void 0!==s.group&&""!==s.group?" "+s.group:"")).append(t("<button/>").addClass("jGrowl-close").html(s.closeTemplate)).append(t("<div/>").addClass("jGrowl-header").html(s.header)).append(t("<div/>").addClass("jGrowl-message").html(n)).data("jGrowl",s).addClass(s.theme).children(".jGrowl-close").bind("click.jGrowl",function(){return t(this).parent().trigger("jGrowl.beforeClose"),!1}).parent();t(i).bind("mouseover.jGrowl",function(){t(".jGrowl-notification",a.element).data("jGrowl.pause",!0)}).bind("mouseout.jGrowl",function(){t(".jGrowl-notification",a.element).data("jGrowl.pause",!1)}).bind("jGrowl.beforeOpen",function(){s.beforeOpen.apply(i,[i,n,s,a.element])!==!1&&t(this).trigger("jGrowl.open")}).bind("jGrowl.open",function(){s.open.apply(i,[i,n,s,a.element])!==!1&&("after"==s.glue?t(".jGrowl-notification:last",a.element).after(i):t(".jGrowl-notification:first",a.element).before(i),t(this).animate(s.animateOpen,s.openDuration,s.easing,function(){t.support.opacity===!1&&this.style.removeAttribute("filter"),null!==t(this).data("jGrowl")&&"undefined"!=typeof t(this).data("jGrowl")&&(t(this).data("jGrowl").created=new Date),t(this).trigger("jGrowl.afterOpen")}))}).bind("jGrowl.afterOpen",function(){s.afterOpen.apply(i,[i,n,s,a.element])}).bind("click",function(){s.click.apply(i,[i.message,s,a.element])}).bind("jGrowl.beforeClose",function(){s.beforeClose.apply(i,[i,n,s,a.element])!==!1&&t(this).trigger("jGrowl.close")}).bind("jGrowl.close",function(){t(this).data("jGrowl.pause",!0),t(this).animate(s.animateClose,s.closeDuration,s.easing,function(){t.isFunction(s.close)?s.close.apply(i,[i,n,s,a.element])!==!1&&t(this).remove():t(this).remove()})}).trigger("jGrowl.beforeOpen"),""!==s.corners&&void 0!==t.fn.corner&&t(i).corner(s.corners),t(".jGrowl-notification:parent",a.element).length>1&&0===t(".jGrowl-closer",a.element).length&&this.defaults.closer!==!1&&t(this.defaults.closerTemplate).addClass("jGrowl-closer "+this.defaults.themeState+" ui-corner-all").addClass(this.defaults.theme).appendTo(a.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){t(this).siblings().trigger("jGrowl.beforeClose"),t.isFunction(a.defaults.closer)&&a.defaults.closer.apply(t(this).parent()[0],[t(this).parent()[0]])})},update:function(){t(this.element).find(".jGrowl-notification:parent").each(function(){void 0!==t(this).data("jGrowl")&&void 0!==t(this).data("jGrowl").created&&t(this).data("jGrowl").created.getTime()+parseInt(t(this).data("jGrowl").life,10)<(new Date).getTime()&&t(this).data("jGrowl").sticky!==!0&&(void 0===t(this).data("jGrowl.pause")||t(this).data("jGrowl.pause")!==!0)&&t(this).trigger("jGrowl.beforeClose")}),this.notifications.length>0&&(0===this.defaults.pool||t(this.element).find(".jGrowl-notification:parent").length<this.defaults.pool)&&this.render(this.notifications.shift()),t(this.element).find(".jGrowl-notification:parent").length<2&&t(this.element).find(".jGrowl-closer").animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){t(this).remove()})},startup:function(e){this.element=t(e).addClass("jGrowl").append('<div class="jGrowl-notification"></div>'),this.interval=setInterval(function(){t(e).data("jGrowl.instance").update()},parseInt(this.defaults.check,10))},shutdown:function(){t(this.element).removeClass("jGrowl").find(".jGrowl-notification").trigger("jGrowl.close").parent().empty(),clearInterval(this.interval)},close:function(){t(this.element).find(".jGrowl-notification").each(function(){t(this).trigger("jGrowl.beforeClose")})}}),t.jGrowl.defaults=t.fn.jGrowl.prototype.defaults}(jQuery),define("jgrowl",["jquery"],function(){}),define("utils/notifier",["require","jgrowl","utils/locale"],function(require){require("jgrowl");var Locale=require("utils/locale"),_notifySubmit=function(t,e,a){var n=t.replace(/OpenNebula\./,"").replace(/\./," "),s="";s+=!e||"object"==typeof e&&e.constructor!=Array?n:n+": "+e,a&&a.constructor!=Object&&(s+=" >> "+a),$.jGrowl(s,{theme:"jGrowl-notify-submit",position:"bottom-right"})},_notifyError=function(t){$.jGrowl(t,{theme:"jGrowl-notify-error",position:"bottom-right",sticky:!0})},_notifyMessage=function(t){$.jGrowl(t,{theme:"jGrowl-notify-submit",position:"bottom-right"})},_notifyCustom=function(t,e,a){e=(t?t:"")+e,$.jGrowl(e,{theme:"jGrowl-notify-submit",position:"bottom-right",sticky:a})},_onError=function(request,error_json,container){var method,action,object,id,reason,m,message=error_json.error.message;if("401"==error_json.error.http_status)return window.location.href="login",!1;if(!message)return _notifyError(Locale.tr("Cannot contact server: is it running and reachable?")),!1;if("404"==error_json.error.http_status)return _notifyError(message),!1;if(container)return container.show(),!1;if(message.match(/^Network is unreachable .+$/))return _notifyError(Locale.tr("Network is unreachable: is OpenNebula running?")),!1;var get_error=/^\[(\w+)\] Error getting ([\w ]+) \[(\d+)\]\.$/,auth_error=/^\[(\w+)\] User \[(\d+)\] not authorized to perform action on ([\w ]+).$/;if((m=message.match(get_error))?(method=m[1],action="Show",object=m[2],id=m[3]):(m=message.match(auth_error))&&(method=m[1],object=m[3],reason=Locale.tr("Unauthorized")),m){var rows,i,value;for(rows=["method","action","object","id","reason"],message="",i=0;i<rows.length;i++)key=rows[i],value=eval(key),value&&(message+='<tr><td class="key_error">'+key+"</td><td>"+value+"</td></tr>");message="<table>"+message+"</table>"}return _notifyError(message),!0};return{notifySubmit:_notifySubmit,notifyError:_notifyError,notifyMessage:_notifyMessage,notifyCustom:_notifyCustom,onError:_onError}}),define("utils/dialogs/confirm/dialogId",["require"],function(){return"confirmDialog"}),define("utils/dialogs/confirm-with-select/dialogId",["require"],function(){return"confirmWithSelectDialog"}),function(t,e){"function"==typeof define&&define.amd?define("hbs/handlebars",[],e):"object"==typeof exports?module.exports=e():t.Handlebars=t.Handlebars||e()}(this,function(){var t=function(){"use strict";function t(t){this.string=t}var e;return t.prototype.toString=function(){return""+this.string},e=t}(),e=function(t){"use strict";function e(t){return l[t]}function a(t){for(var e=1;e<arguments.length;e++)for(var a in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],a)&&(t[a]=arguments[e][a]);return t}function n(t){return t instanceof o?t.toString():null==t?"":t?(t=""+t,d.test(t)?t.replace(c,e):t):t+""}function s(t){return t||0===t?h(t)&&0===t.length?!0:!1:!0}function i(t,e){return(t?t+".":"")+e}var r={},o=t,l={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},c=/[&<>"'`]/g,d=/[&<>"'`]/;r.extend=a;var u=Object.prototype.toString;r.toString=u;var p=function(t){return"function"==typeof t};p(/x/)&&(p=function(t){return"function"==typeof t&&"[object Function]"===u.call(t)});var p;r.isFunction=p;var h=Array.isArray||function(t){return t&&"object"==typeof t?"[object Array]"===u.call(t):!1};return r.isArray=h,r.escapeExpression=n,r.isEmpty=s,r.appendContextPath=i,r}(t),a=function(){"use strict";function t(t,e){var n;e&&e.firstLine&&(n=e.firstLine,t+=" - "+n+":"+e.firstColumn);for(var s=Error.prototype.constructor.call(this,t),i=0;i<a.length;i++)this[a[i]]=s[a[i]];n&&(this.lineNumber=n,this.column=e.firstColumn)}var e,a=["description","fileName","lineNumber","message","name","number","stack"];return t.prototype=new Error,e=t}(),n=function(t,e){"use strict";function a(t,e){this.helpers=t||{},this.partials=e||{},n(this)}function n(t){t.registerHelper("helperMissing",function(){if(1===arguments.length)return void 0;throw new r("Missing helper: '"+arguments[arguments.length-1].name+"'")}),t.registerHelper("blockHelperMissing",function(e,a){var n=a.inverse,s=a.fn;if(e===!0)return s(this);if(e===!1||null==e)return n(this);if(d(e))return e.length>0?(a.ids&&(a.ids=[a.name]),t.helpers.each(e,a)):n(this);if(a.data&&a.ids){var r=_(a.data);r.contextPath=i.appendContextPath(a.data.contextPath,a.name),a={data:r}}return s(e,a)}),t.registerHelper("each",function(t,e){if(!e)throw new r("Must pass iterator to #each");var a,n,s=e.fn,o=e.inverse,l=0,c="";if(e.data&&e.ids&&(n=i.appendContextPath(e.data.contextPath,e.ids[0])+"."),u(t)&&(t=t.call(this)),e.data&&(a=_(e.data)),t&&"object"==typeof t)if(d(t))for(var p=t.length;p>l;l++)a&&(a.index=l,a.first=0===l,a.last=l===t.length-1,n&&(a.contextPath=n+l)),c+=s(t[l],{data:a});else for(var h in t)t.hasOwnProperty(h)&&(a&&(a.key=h,a.index=l,a.first=0===l,n&&(a.contextPath=n+h)),c+=s(t[h],{data:a}),l++);return 0===l&&(c=o(this)),c}),t.registerHelper("if",function(t,e){return u(t)&&(t=t.call(this)),!e.hash.includeZero&&!t||i.isEmpty(t)?e.inverse(this):e.fn(this)}),t.registerHelper("unless",function(e,a){return t.helpers["if"].call(this,e,{fn:a.inverse,inverse:a.fn,hash:a.hash})}),t.registerHelper("with",function(t,e){u(t)&&(t=t.call(this));var a=e.fn;if(i.isEmpty(t))return e.inverse(this);if(e.data&&e.ids){var n=_(e.data);n.contextPath=i.appendContextPath(e.data.contextPath,e.ids[0]),e={data:n}}return a(t,e)}),t.registerHelper("log",function(e,a){var n=a.data&&null!=a.data.level?parseInt(a.data.level,10):1;t.log(n,e)}),t.registerHelper("lookup",function(t,e){return t&&t[e]
+})}var s={},i=t,r=e,o="2.0.0";s.VERSION=o;var l=6;s.COMPILER_REVISION=l;var c={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1"};s.REVISION_CHANGES=c;var d=i.isArray,u=i.isFunction,p=i.toString,h="[object Object]";s.HandlebarsEnvironment=a,a.prototype={constructor:a,logger:f,log:m,registerHelper:function(t,e){if(p.call(t)===h){if(e)throw new r("Arg not supported with multiple helpers");i.extend(this.helpers,t)}else this.helpers[t]=e},unregisterHelper:function(t){delete this.helpers[t]},registerPartial:function(t,e){p.call(t)===h?i.extend(this.partials,t):this.partials[t]=e},unregisterPartial:function(t){delete this.partials[t]}};var f={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(t,e){if(f.level<=t){var a=f.methodMap[t];"undefined"!=typeof console&&console[a]&&console[a].call(console,e)}}};s.logger=f;var m=f.log;s.log=m;var _=function(t){var e=i.extend({},t);return e._parent=t,e};return s.createFrame=_,s}(e,a),s=function(t,e,a){"use strict";function n(t){var e=t&&t[0]||1,a=p;if(e!==a){if(a>e){var n=h[a],s=h[e];throw new u("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+n+") or downgrade your runtime to an older version ("+s+").")}throw new u("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+t[1]+").")}}function s(t,e){if(!e)throw new u("No environment passed to template");if(!t||!t.main)throw new u("Unknown template object: "+typeof t);e.VM.checkRevision(t.compiler);var a=function(a,n,s,i,r,o,l,c,p){r&&(i=d.extend({},i,r));var h=e.VM.invokePartial.call(this,a,s,i,o,l,c,p);if(null==h&&e.compile){var f={helpers:o,partials:l,data:c,depths:p};l[s]=e.compile(a,{data:void 0!==c,compat:t.compat},e),h=l[s](i,f)}if(null!=h){if(n){for(var m=h.split("\n"),_=0,b=m.length;b>_&&(m[_]||_+1!==b);_++)m[_]=n+m[_];h=m.join("\n")}return h}throw new u("The partial "+s+" could not be compiled when running in runtime-only mode")},n={lookup:function(t,e){for(var a=t.length,n=0;a>n;n++)if(t[n]&&null!=t[n][e])return t[n][e]},lambda:function(t,e){return"function"==typeof t?t.call(e):t},escapeExpression:d.escapeExpression,invokePartial:a,fn:function(e){return t[e]},programs:[],program:function(t,e,a){var n=this.programs[t],s=this.fn(t);return e||a?n=i(this,t,s,e,a):n||(n=this.programs[t]=i(this,t,s)),n},data:function(t,e){for(;t&&e--;)t=t._parent;return t},merge:function(t,e){var a=t||e;return t&&e&&t!==e&&(a=d.extend({},e,t)),a},noop:e.VM.noop,compilerInfo:t.compiler},s=function(e,a){a=a||{};var i=a.data;s._setup(a),!a.partial&&t.useData&&(i=l(e,i));var r;return t.useDepths&&(r=a.depths?[e].concat(a.depths):[e]),t.main.call(n,e,n.helpers,n.partials,i,r)};return s.isTop=!0,s._setup=function(a){a.partial?(n.helpers=a.helpers,n.partials=a.partials):(n.helpers=n.merge(a.helpers,e.helpers),t.usePartial&&(n.partials=n.merge(a.partials,e.partials)))},s._child=function(e,a,s){if(t.useDepths&&!s)throw new u("must pass parent depths");return i(n,e,t[e],a,s)},s}function i(t,e,a,n,s){var i=function(e,i){return i=i||{},a.call(t,e,t.helpers,t.partials,i.data||n,s&&[e].concat(s))};return i.program=e,i.depth=s?s.length:0,i}function r(t,e,a,n,s,i,r){var o={partial:!0,helpers:n,partials:s,data:i,depths:r};if(void 0===t)throw new u("The partial "+e+" could not be found");return t instanceof Function?t(a,o):void 0}function o(){return""}function l(t,e){return e&&"root"in e||(e=e?f(e):{},e.root=t),e}var c={},d=t,u=e,p=a.COMPILER_REVISION,h=a.REVISION_CHANGES,f=a.createFrame;return c.checkRevision=n,c.template=s,c.program=i,c.invokePartial=r,c.noop=o,c}(e,a,n),i=function(t,e,a,n,s){"use strict";var i,r=t,o=e,l=a,c=n,d=s,u=function(){var t=new r.HandlebarsEnvironment;return c.extend(t,r),t.SafeString=o,t.Exception=l,t.Utils=c,t.escapeExpression=c.escapeExpression,t.VM=d,t.template=function(e){return d.template(e,t)},t},p=u();return p.create=u,p["default"]=p,i=p}(n,t,a,e,s),r=function(t){"use strict";function e(t){t=t||{},this.firstLine=t.first_line,this.firstColumn=t.first_column,this.lastColumn=t.last_column,this.lastLine=t.last_line}var a,n=t,s={ProgramNode:function(t,a,n){e.call(this,n),this.type="program",this.statements=t,this.strip=a},MustacheNode:function(t,a,n,i,r){if(e.call(this,r),this.type="mustache",this.strip=i,null!=n&&n.charAt){var o=n.charAt(3)||n.charAt(2);this.escaped="{"!==o&&"&"!==o}else this.escaped=!!n;this.sexpr=t instanceof s.SexprNode?t:new s.SexprNode(t,a),this.id=this.sexpr.id,this.params=this.sexpr.params,this.hash=this.sexpr.hash,this.eligibleHelper=this.sexpr.eligibleHelper,this.isHelper=this.sexpr.isHelper},SexprNode:function(t,a,n){e.call(this,n),this.type="sexpr",this.hash=a;var s=this.id=t[0],i=this.params=t.slice(1);this.isHelper=!(!i.length&&!a),this.eligibleHelper=this.isHelper||s.isSimple},PartialNode:function(t,a,n,s,i){e.call(this,i),this.type="partial",this.partialName=t,this.context=a,this.hash=n,this.strip=s,this.strip.inlineStandalone=!0},BlockNode:function(t,a,n,s,i){e.call(this,i),this.type="block",this.mustache=t,this.program=a,this.inverse=n,this.strip=s,n&&!a&&(this.isInverse=!0)},RawBlockNode:function(t,a,i,r){if(e.call(this,r),t.sexpr.id.original!==i)throw new n(t.sexpr.id.original+" doesn't match "+i,this);a=new s.ContentNode(a,r),this.type="block",this.mustache=t,this.program=new s.ProgramNode([a],{},r)},ContentNode:function(t,a){e.call(this,a),this.type="content",this.original=this.string=t},HashNode:function(t,a){e.call(this,a),this.type="hash",this.pairs=t},IdNode:function(t,a){e.call(this,a),this.type="ID";for(var s="",i=[],r=0,o="",l=0,c=t.length;c>l;l++){var d=t[l].part;if(s+=(t[l].separator||"")+d,".."===d||"."===d||"this"===d){if(i.length>0)throw new n("Invalid path: "+s,this);".."===d?(r++,o+="../"):this.isScoped=!0}else i.push(d)}this.original=s,this.parts=i,this.string=i.join("."),this.depth=r,this.idName=o+this.string,this.isSimple=1===t.length&&!this.isScoped&&0===r,this.stringModeValue=this.string},PartialNameNode:function(t,a){e.call(this,a),this.type="PARTIAL_NAME",this.name=t.original},DataNode:function(t,a){e.call(this,a),this.type="DATA",this.id=t,this.stringModeValue=t.stringModeValue,this.idName="@"+t.stringModeValue},StringNode:function(t,a){e.call(this,a),this.type="STRING",this.original=this.string=this.stringModeValue=t},NumberNode:function(t,a){e.call(this,a),this.type="NUMBER",this.original=this.number=t,this.stringModeValue=Number(t)},BooleanNode:function(t,a){e.call(this,a),this.type="BOOLEAN",this.bool=t,this.stringModeValue="true"===t},CommentNode:function(t,a){e.call(this,a),this.type="comment",this.comment=t,this.strip={inlineStandalone:!0}}};return a=s}(a),o=function(){"use strict";var t,e=function(){function t(){this.yy={}}var e={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,CONTENT:12,COMMENT:13,openRawBlock:14,END_RAW_BLOCK:15,OPEN_RAW_BLOCK:16,sexpr:17,CLOSE_RAW_BLOCK:18,openBlock:19,block_option0:20,closeBlock:21,openInverse:22,block_option1:23,OPEN_BLOCK:24,CLOSE:25,OPEN_INVERSE:26,inverseAndProgram:27,INVERSE:28,OPEN_ENDBLOCK:29,path:30,OPEN:31,OPEN_UNESCAPED:32,CLOSE_UNESCAPED:33,OPEN_PARTIAL:34,partialName:35,param:36,partial_option0:37,partial_option1:38,sexpr_repetition0:39,sexpr_option0:40,dataName:41,STRING:42,NUMBER:43,BOOLEAN:44,OPEN_SEXPR:45,CLOSE_SEXPR:46,hash:47,hash_repetition_plus0:48,hashSegment:49,ID:50,EQUALS:51,DATA:52,pathSegments:53,SEP:54,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",12:"CONTENT",13:"COMMENT",15:"END_RAW_BLOCK",16:"OPEN_RAW_BLOCK",18:"CLOSE_RAW_BLOCK",24:"OPEN_BLOCK",25:"CLOSE",26:"OPEN_INVERSE",28:"INVERSE",29:"OPEN_ENDBLOCK",31:"OPEN",32:"OPEN_UNESCAPED",33:"CLOSE_UNESCAPED",34:"OPEN_PARTIAL",42:"STRING",43:"NUMBER",44:"BOOLEAN",45:"OPEN_SEXPR",46:"CLOSE_SEXPR",50:"ID",51:"EQUALS",52:"DATA",54:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[10,3],[14,3],[9,4],[9,4],[19,3],[22,3],[27,2],[21,3],[8,3],[8,3],[11,5],[11,4],[17,3],[17,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,3],[47,1],[49,3],[35,1],[35,1],[35,1],[41,2],[30,1],[53,3],[53,1],[6,0],[6,2],[20,0],[20,1],[23,0],[23,1],[37,0],[37,1],[38,0],[38,1],[39,0],[39,2],[40,0],[40,1],[48,1],[48,2]],performAction:function(t,e,a,n,s,i){var r=i.length-1;switch(s){case 1:return n.prepareProgram(i[r-1].statements,!0),i[r-1];case 2:this.$=new n.ProgramNode(n.prepareProgram(i[r]),{},this._$);break;case 3:this.$=i[r];break;case 4:this.$=i[r];break;case 5:this.$=i[r];break;case 6:this.$=i[r];break;case 7:this.$=new n.ContentNode(i[r],this._$);break;case 8:this.$=new n.CommentNode(i[r],this._$);break;case 9:this.$=new n.RawBlockNode(i[r-2],i[r-1],i[r],this._$);break;case 10:this.$=new n.MustacheNode(i[r-1],null,"","",this._$);break;case 11:this.$=n.prepareBlock(i[r-3],i[r-2],i[r-1],i[r],!1,this._$);break;case 12:this.$=n.prepareBlock(i[r-3],i[r-2],i[r-1],i[r],!0,this._$);break;case 13:this.$=new n.MustacheNode(i[r-1],null,i[r-2],n.stripFlags(i[r-2],i[r]),this._$);break;case 14:this.$=new n.MustacheNode(i[r-1],null,i[r-2],n.stripFlags(i[r-2],i[r]),this._$);break;case 15:this.$={strip:n.stripFlags(i[r-1],i[r-1]),program:i[r]};break;case 16:this.$={path:i[r-1],strip:n.stripFlags(i[r-2],i[r])};break;case 17:this.$=new n.MustacheNode(i[r-1],null,i[r-2],n.stripFlags(i[r-2],i[r]),this._$);break;case 18:this.$=new n.MustacheNode(i[r-1],null,i[r-2],n.stripFlags(i[r-2],i[r]),this._$);break;case 19:this.$=new n.PartialNode(i[r-3],i[r-2],i[r-1],n.stripFlags(i[r-4],i[r]),this._$);break;case 20:this.$=new n.PartialNode(i[r-2],void 0,i[r-1],n.stripFlags(i[r-3],i[r]),this._$);break;case 21:this.$=new n.SexprNode([i[r-2]].concat(i[r-1]),i[r],this._$);break;case 22:this.$=new n.SexprNode([i[r]],null,this._$);break;case 23:this.$=i[r];break;case 24:this.$=new n.StringNode(i[r],this._$);break;case 25:this.$=new n.NumberNode(i[r],this._$);break;case 26:this.$=new n.BooleanNode(i[r],this._$);break;case 27:this.$=i[r];break;case 28:i[r-1].isHelper=!0,this.$=i[r-1];break;case 29:this.$=new n.HashNode(i[r],this._$);break;case 30:this.$=[i[r-2],i[r]];break;case 31:this.$=new n.PartialNameNode(i[r],this._$);break;case 32:this.$=new n.PartialNameNode(new n.StringNode(i[r],this._$),this._$);break;case 33:this.$=new n.PartialNameNode(new n.NumberNode(i[r],this._$));break;case 34:this.$=new n.DataNode(i[r],this._$);break;case 35:this.$=new n.IdNode(i[r],this._$);break;case 36:i[r-2].push({part:i[r],separator:i[r-1]}),this.$=i[r-2];break;case 37:this.$=[{part:i[r]}];break;case 38:this.$=[];break;case 39:i[r-1].push(i[r]);break;case 48:this.$=[];break;case 49:i[r-1].push(i[r]);break;case 52:this.$=[i[r]];break;case 53:i[r-1].push(i[r])}},table:[{3:1,4:2,5:[2,38],6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],31:[2,38],32:[2,38],34:[2,38]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:[1,10],13:[1,11],14:16,16:[1,20],19:14,22:15,24:[1,18],26:[1,19],28:[2,2],29:[2,2],31:[1,12],32:[1,13],34:[1,17]},{1:[2,1]},{5:[2,39],12:[2,39],13:[2,39],16:[2,39],24:[2,39],26:[2,39],28:[2,39],29:[2,39],31:[2,39],32:[2,39],34:[2,39]},{5:[2,3],12:[2,3],13:[2,3],16:[2,3],24:[2,3],26:[2,3],28:[2,3],29:[2,3],31:[2,3],32:[2,3],34:[2,3]},{5:[2,4],12:[2,4],13:[2,4],16:[2,4],24:[2,4],26:[2,4],28:[2,4],29:[2,4],31:[2,4],32:[2,4],34:[2,4]},{5:[2,5],12:[2,5],13:[2,5],16:[2,5],24:[2,5],26:[2,5],28:[2,5],29:[2,5],31:[2,5],32:[2,5],34:[2,5]},{5:[2,6],12:[2,6],13:[2,6],16:[2,6],24:[2,6],26:[2,6],28:[2,6],29:[2,6],31:[2,6],32:[2,6],34:[2,6]},{5:[2,7],12:[2,7],13:[2,7],16:[2,7],24:[2,7],26:[2,7],28:[2,7],29:[2,7],31:[2,7],32:[2,7],34:[2,7]},{5:[2,8],12:[2,8],13:[2,8],16:[2,8],24:[2,8],26:[2,8],28:[2,8],29:[2,8],31:[2,8],32:[2,8],34:[2,8]},{17:21,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:27,30:22,41:23,50:[1,26],52:[1,25],53:24},{4:28,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{4:29,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{12:[1,30]},{30:32,35:31,42:[1,33],43:[1,34],50:[1,26],53:24},{17:35,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:36,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:37,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[1,38]},{18:[2,48],25:[2,48],33:[2,48],39:39,42:[2,48],43:[2,48],44:[2,48],45:[2,48],46:[2,48],50:[2,48],52:[2,48]},{18:[2,22],25:[2,22],33:[2,22],46:[2,22]},{18:[2,35],25:[2,35],33:[2,35],42:[2,35],43:[2,35],44:[2,35],45:[2,35],46:[2,35],50:[2,35],52:[2,35],54:[1,40]},{30:41,50:[1,26],53:24},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],52:[2,37],54:[2,37]},{33:[1,42]},{20:43,27:44,28:[1,45],29:[2,40]},{23:46,27:47,28:[1,45],29:[2,42]},{15:[1,48]},{25:[2,46],30:51,36:49,38:50,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],47:57,48:58,49:60,50:[1,59],52:[1,25],53:24},{25:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],50:[2,31],52:[2,31]},{25:[2,32],42:[2,32],43:[2,32],44:[2,32],45:[2,32],50:[2,32],52:[2,32]},{25:[2,33],42:[2,33],43:[2,33],44:[2,33],45:[2,33],50:[2,33],52:[2,33]},{25:[1,61]},{25:[1,62]},{18:[1,63]},{5:[2,17],12:[2,17],13:[2,17],16:[2,17],24:[2,17],26:[2,17],28:[2,17],29:[2,17],31:[2,17],32:[2,17],34:[2,17]},{18:[2,50],25:[2,50],30:51,33:[2,50],36:65,40:64,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],46:[2,50],47:66,48:58,49:60,50:[1,59],52:[1,25],53:24},{50:[1,67]},{18:[2,34],25:[2,34],33:[2,34],42:[2,34],43:[2,34],44:[2,34],45:[2,34],46:[2,34],50:[2,34],52:[2,34]},{5:[2,18],12:[2,18],13:[2,18],16:[2,18],24:[2,18],26:[2,18],28:[2,18],29:[2,18],31:[2,18],32:[2,18],34:[2,18]},{21:68,29:[1,69]},{29:[2,41]},{4:70,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{21:71,29:[1,69]},{29:[2,43]},{5:[2,9],12:[2,9],13:[2,9],16:[2,9],24:[2,9],26:[2,9],28:[2,9],29:[2,9],31:[2,9],32:[2,9],34:[2,9]},{25:[2,44],37:72,47:73,48:58,49:60,50:[1,74]},{25:[1,75]},{18:[2,23],25:[2,23],33:[2,23],42:[2,23],43:[2,23],44:[2,23],45:[2,23],46:[2,23],50:[2,23],52:[2,23]},{18:[2,24],25:[2,24],33:[2,24],42:[2,24],43:[2,24],44:[2,24],45:[2,24],46:[2,24],50:[2,24],52:[2,24]},{18:[2,25],25:[2,25],33:[2,25],42:[2,25],43:[2,25],44:[2,25],45:[2,25],46:[2,25],50:[2,25],52:[2,25]},{18:[2,26],25:[2,26],33:[2,26],42:[2,26],43:[2,26],44:[2,26],45:[2,26],46:[2,26],50:[2,26],52:[2,26]},{18:[2,27],25:[2,27],33:[2,27],42:[2,27],43:[2,27],44:[2,27],45:[2,27],46:[2,27],50:[2,27],52:[2,27]},{17:76,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[2,47]},{18:[2,29],25:[2,29],33:[2,29],46:[2,29],49:77,50:[1,74]},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],51:[1,78],52:[2,37],54:[2,37]},{18:[2,52],25:[2,52],33:[2,52],46:[2,52],50:[2,52]},{12:[2,13],13:[2,13],16:[2,13],24:[2,13],26:[2,13],28:[2,13],29:[2,13],31:[2,13],32:[2,13],34:[2,13]},{12:[2,14],13:[2,14],16:[2,14],24:[2,14],26:[2,14],28:[2,14],29:[2,14],31:[2,14],32:[2,14],34:[2,14]},{12:[2,10]},{18:[2,21],25:[2,21],33:[2,21],46:[2,21]},{18:[2,49],25:[2,49],33:[2,49],42:[2,49],43:[2,49],44:[2,49],45:[2,49],46:[2,49],50:[2,49],52:[2,49]},{18:[2,51],25:[2,51],33:[2,51],46:[2,51]},{18:[2,36],25:[2,36],33:[2,36],42:[2,36],43:[2,36],44:[2,36],45:[2,36],46:[2,36],50:[2,36],52:[2,36],54:[2,36]},{5:[2,11],12:[2,11],13:[2,11],16:[2,11],24:[2,11],26:[2,11],28:[2,11],29:[2,11],31:[2,11],32:[2,11],34:[2,11]},{30:79,50:[1,26],53:24},{29:[2,15]},{5:[2,12],12:[2,12],13:[2,12],16:[2,12],24:[2,12],26:[2,12],28:[2,12],29:[2,12],31:[2,12],32:[2,12],34:[2,12]},{25:[1,80]},{25:[2,45]},{51:[1,78]},{5:[2,20],12:[2,20],13:[2,20],16:[2,20],24:[2,20],26:[2,20],28:[2,20],29:[2,20],31:[2,20],32:[2,20],34:[2,20]},{46:[1,81]},{18:[2,53],25:[2,53],33:[2,53],46:[2,53],50:[2,53]},{30:51,36:82,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],50:[1,26],52:[1,25],53:24},{25:[1,83]},{5:[2,19],12:[2,19],13:[2,19],16:[2,19],24:[2,19],26:[2,19],28:[2,19],29:[2,19],31:[2,19],32:[2,19],34:[2,19]},{18:[2,28],25:[2,28],33:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],50:[2,28],52:[2,28]},{18:[2,30],25:[2,30],33:[2,30],46:[2,30],50:[2,30]},{5:[2,16],12:[2,16],13:[2,16],16:[2,16],24:[2,16],26:[2,16],28:[2,16],29:[2,16],31:[2,16],32:[2,16],34:[2,16]}],defaultActions:{4:[2,1],44:[2,41],47:[2,43],57:[2,47],63:[2,10],70:[2,15],73:[2,45]},parseError:function(t){throw new Error(t)},parse:function(t){function e(){var t;return t=a.lexer.lex()||1,"number"!=typeof t&&(t=a.symbols_[t]||t),t}var a=this,n=[0],s=[null],i=[],r=this.table,o="",l=0,c=0,d=0;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var u=this.lexer.yylloc;i.push(u);var p=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var h,f,m,_,b,v,g,y,w,T={};;){if(m=n[n.length-1],this.defaultActions[m]?_=this.defaultActions[m]:((null===h||"undefined"==typeof h)&&(h=e()),_=r[m]&&r[m][h]),"undefined"==typeof _||!_.length||!_[0]){var E="";if(!d){w=[];for(v in r[m])this.terminals_[v]&&v>2&&w.push("'"+this.terminals_[v]+"'");E=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[h]||h)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==h?"end of input":"'"+(this.terminals_[h]||h)+"'"),this.parseError(E,{text:this.lexer.match,token:this.terminals_[h]||h,line:this.lexer.yylineno,loc:u,expected:w})}}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+h);switch(_[0]){case 1:n.push(h),s.push(this.lexer.yytext),i.push(this.lexer.yylloc),n.push(_[1]),h=null,f?(h=f,f=null):(c=this.lexer.yyleng,o=this.lexer.yytext,l=this.lexer.yylineno,u=this.lexer.yylloc,d>0&&d--);break;case 2:if(g=this.productions_[_[1]][1],T.$=s[s.length-g],T._$={first_line:i[i.length-(g||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(g||1)].first_column,last_column:i[i.length-1].last_column},p&&(T._$.range=[i[i.length-(g||1)].range[0],i[i.length-1].range[1]]),b=this.performAction.call(T,o,c,l,this.yy,_[1],s,i),"undefined"!=typeof b)return b;g&&(n=n.slice(0,-1*g*2),s=s.slice(0,-1*g),i=i.slice(0,-1*g)),n.push(this.productions_[_[1]][0]),s.push(T.$),i.push(T._$),y=r[n[n.length-2]][n[n.length-1]],n.push(y);break;case 3:return!0}}return!0}},a=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t){return this._input=t,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var e=t.match(/(?:\r\n?|\n).*/g);return e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e-1),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===n.length?this.yylloc.first_column:0)+n[n.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this},more:function(){return this._more=!0,this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var t,e,a,n,s;this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),r=0;r<i.length&&(a=this._input.match(this.rules[i[r]]),!a||e&&!(a[0].length>e[0].length)||(e=a,n=r,this.options.flex));r++);return e?(s=e[0].match(/(?:\r\n?|\n).*/g),s&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],t=this.performAction.call(this,this.yy,this,i[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),t?t:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return"undefined"!=typeof t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)}};return t.options={},t.performAction=function(t,e,a,n){function s(t,a){return e.yytext=e.yytext.substr(t,e.yyleng-a)}switch(a){case 0:if("\\\\"===e.yytext.slice(-2)?(s(0,1),this.begin("mu")):"\\"===e.yytext.slice(-1)?(s(0,1),this.begin("emu")):this.begin("mu"),e.yytext)return 12;break;case 1:return 12;case 2:return this.popState(),12;case 3:return e.yytext=e.yytext.substr(5,e.yyleng-9),this.popState(),15;case 4:return 12;case 5:return s(0,4),this.popState(),13;case 6:return 45;case 7:return 46;case 8:return 16;case 9:return this.popState(),this.begin("raw"),18;case 10:return 34;case 11:return 24;case 12:return 29;case 13:return this.popState(),28;case 14:return this.popState(),28;case 15:return 26;case 16:return 26;case 17:return 32;case 18:return 31;case 19:this.popState(),this.begin("com");break;case 20:return s(3,5),this.popState(),13;case 21:return 31;case 22:return 51;case 23:return 50;case 24:return 50;case 25:return 54;case 26:break;case 27:return this.popState(),33;case 28:return this.popState(),25;case 29:return e.yytext=s(1,2).replace(/\\"/g,'"'),42;case 30:return e.yytext=s(1,2).replace(/\\'/g,"'"),42;case 31:return 52;case 32:return 44;case 33:return 44;case 34:return 43;case 35:return 50;case 36:return e.yytext=s(1,2),50;case 37:return"INVALID";case 38:return 5}},t.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{\/)))/,/^(?:[\s\S]*?--\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{!--)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{(~)?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)]))))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/],t.conditions={mu:{rules:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[5],inclusive:!1},raw:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,1,38],inclusive:!0}},t}();return e.lexer=a,t.prototype=e,e.Parser=t,new t}();return t=e}(),l=function(t){"use strict";function e(t,e){return{left:"~"===t.charAt(2),right:"~"===e.charAt(e.length-3)}}function a(t,e,a,n,l,d){if(t.sexpr.id.original!==n.path.original)throw new c(t.sexpr.id.original+" doesn't match "+n.path.original,t);var u=a&&a.program,p={left:t.strip.left,right:n.strip.right,openStandalone:i(e.statements),closeStandalone:s((u||e).statements)};if(t.strip.right&&r(e.statements,null,!0),u){var h=a.strip;h.left&&o(e.statements,null,!0),h.right&&r(u.statements,null,!0),n.strip.left&&o(u.statements,null,!0),s(e.statements)&&i(u.statements)&&(o(e.statements),r(u.statements))}else n.strip.left&&o(e.statements,null,!0);return l?new this.BlockNode(t,u,e,p,d):new this.BlockNode(t,e,u,p,d)}function n(t,e){for(var a=0,n=t.length;n>a;a++){var l=t[a],c=l.strip;if(c){var d=s(t,a,e,"partial"===l.type),u=i(t,a,e),p=c.openStandalone&&d,h=c.closeStandalone&&u,f=c.inlineStandalone&&d&&u;c.right&&r(t,a,!0),c.left&&o(t,a,!0),f&&(r(t,a),o(t,a)&&"partial"===l.type&&(l.indent=/([ \t]+$)/.exec(t[a-1].original)?RegExp.$1:"")),p&&(r((l.program||l.inverse).statements),o(t,a)),h&&(r(t,a),o((l.inverse||l.program).statements))}}return t}function s(t,e,a){void 0===e&&(e=t.length);var n=t[e-1],s=t[e-2];return n?"content"===n.type?(s||!a?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(n.original):void 0:a}function i(t,e,a){void 0===e&&(e=-1);var n=t[e+1],s=t[e+2];return n?"content"===n.type?(s||!a?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(n.original):void 0:a}function r(t,e,a){var n=t[null==e?0:e+1];if(n&&"content"===n.type&&(a||!n.rightStripped)){var s=n.string;n.string=n.string.replace(a?/^\s+/:/^[ \t]*\r?\n?/,""),n.rightStripped=n.string!==s}}function o(t,e,a){var n=t[null==e?t.length-1:e-1];if(n&&"content"===n.type&&(a||!n.leftStripped)){var s=n.string;return n.string=n.string.replace(a?/\s+$/:/[ \t]+$/,""),n.leftStripped=n.string!==s,n.leftStripped}}var l={},c=t;return l.stripFlags=e,l.prepareBlock=a,l.prepareProgram=n,l}(a),c=function(t,e,a,n){"use strict";function s(t){return t.constructor===o.ProgramNode?t:(r.yy=d,r.parse(t))}var i={},r=t,o=e,l=a,c=n.extend;i.parser=r;var d={};return c(d,l,o),i.parse=s,i}(o,r,l,e),d=function(t,e){"use strict";function a(){}function n(t,e,a){if(null==t||"string"!=typeof t&&t.constructor!==a.AST.ProgramNode)throw new o("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+t);e=e||{},"data"in e||(e.data=!0),e.compat&&(e.useDepths=!0);var n=a.parse(t),s=(new a.Compiler).compile(n,e);return(new a.JavaScriptCompiler).compile(s,e)}function s(t,e,a){function n(){var n=a.parse(t),s=(new a.Compiler).compile(n,e),i=(new a.JavaScriptCompiler).compile(s,e,void 0,!0);return a.template(i)}if(null==t||"string"!=typeof t&&t.constructor!==a.AST.ProgramNode)throw new o("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+t);e=e||{},"data"in e||(e.data=!0),e.compat&&(e.useDepths=!0);var s,i=function(t,e){return s||(s=n()),s.call(this,t,e)};return i._setup=function(t){return s||(s=n()),s._setup(t)},i._child=function(t,e,a){return s||(s=n()),s._child(t,e,a)},i}function i(t,e){if(t===e)return!0;if(l(t)&&l(e)&&t.length===e.length){for(var a=0;a<t.length;a++)if(!i(t[a],e[a]))return!1;return!0}}var r={},o=t,l=e.isArray,c=[].slice;return r.Compiler=a,a.prototype={compiler:a,equals:function(t){var e=this.opcodes.length;if(t.opcodes.length!==e)return!1;for(var a=0;e>a;a++){var n=this.opcodes[a],s=t.opcodes[a];if(n.opcode!==s.opcode||!i(n.args,s.args))return!1}for(e=this.children.length,a=0;e>a;a++)if(!this.children[a].equals(t.children[a]))return!1;return!0},guid:0,compile:function(t,e){this.opcodes=[],this.children=[],this.depths={list:[]},this.options=e,this.stringParams=e.stringParams,this.trackIds=e.trackIds;var a=this.options.knownHelpers;if(this.options.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},a)for(var n in a)this.options.knownHelpers[n]=a[n];return this.accept(t)},accept:function(t){return this[t.type](t)},program:function(t){for(var e=t.statements,a=0,n=e.length;n>a;a++)this.accept(e[a]);return this.isSimple=1===n,this.depths.list=this.depths.list.sort(function(t,e){return t-e}),this},compileProgram:function(t){var e,a=(new this.compiler).compile(t,this.options),n=this.guid++;this.usePartial=this.usePartial||a.usePartial,this.children[n]=a;for(var s=0,i=a.depths.list.length;i>s;s++)e=a.depths.list[s],2>e||this.addDepth(e-1);return n},block:function(t){var e=t.mustache,a=t.program,n=t.inverse;a&&(a=this.compileProgram(a)),n&&(n=this.compileProgram(n));var s=e.sexpr,i=this.classifySexpr(s);"helper"===i?this.helperSexpr(s,a,n):"simple"===i?(this.simpleSexpr(s),this.opcode("pushProgram",a),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("blockValue",s.id.original)):(this.ambiguousSexpr(s,a,n),this.opcode("pushProgram",a),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},hash:function(t){var e,a,n=t.pairs;for(this.opcode("pushHash"),e=0,a=n.length;a>e;e++)this.pushParam(n[e][1]);for(;e--;)this.opcode("assignToHash",n[e][0]);this.opcode("popHash")},partial:function(t){var e=t.partialName;this.usePartial=!0,t.hash?this.accept(t.hash):this.opcode("push","undefined"),t.context?this.accept(t.context):(this.opcode("getContext",0),this.opcode("pushContext")),this.opcode("invokePartial",e.name,t.indent||""),this.opcode("append")},content:function(t){t.string&&this.opcode("appendContent",t.string)},mustache:function(t){this.sexpr(t.sexpr),this.opcode(t.escaped&&!this.options.noEscape?"appendEscaped":"append")},ambiguousSexpr:function(t,e,a){var n=t.id,s=n.parts[0],i=null!=e||null!=a;this.opcode("getContext",n.depth),this.opcode("pushProgram",e),this.opcode("pushProgram",a),this.ID(n),this.opcode("invokeAmbiguous",s,i)},simpleSexpr:function(t){var e=t.id;"DATA"===e.type?this.DATA(e):e.parts.length?this.ID(e):(this.addDepth(e.depth),this.opcode("getContext",e.depth),this.opcode("pushContext")),this.opcode("resolvePossibleLambda")},helperSexpr:function(t,e,a){var n=this.setupFullMustacheParams(t,e,a),s=t.id,i=s.parts[0];if(this.options.knownHelpers[i])this.opcode("invokeKnownHelper",n.length,i);else{if(this.options.knownHelpersOnly)throw new o("You specified knownHelpersOnly, but used the unknown helper "+i,t);s.falsy=!0,this.ID(s),this.opcode("invokeHelper",n.length,s.original,s.isSimple)}},sexpr:function(t){var e=this.classifySexpr(t);"simple"===e?this.simpleSexpr(t):"helper"===e?this.helperSexpr(t):this.ambiguousSexpr(t)},ID:function(t){this.addDepth(t.depth),this.opcode("getContext",t.depth);var e=t.parts[0];e?this.opcode("lookupOnContext",t.parts,t.falsy,t.isScoped):this.opcode("pushContext")},DATA:function(t){this.options.data=!0,this.opcode("lookupData",t.id.depth,t.id.parts)},STRING:function(t){this.opcode("pushString",t.string)},NUMBER:function(t){this.opcode("pushLiteral",t.number)},BOOLEAN:function(t){this.opcode("pushLiteral",t.bool)},comment:function(){},opcode:function(t){this.opcodes.push({opcode:t,args:c.call(arguments,1)})},addDepth:function(t){0!==t&&(this.depths[t]||(this.depths[t]=!0,this.depths.list.push(t)))},classifySexpr:function(t){var e=t.isHelper,a=t.eligibleHelper,n=this.options;if(a&&!e){var s=t.id.parts[0];n.knownHelpers[s]?e=!0:n.knownHelpersOnly&&(a=!1)}return e?"helper":a?"ambiguous":"simple"},pushParams:function(t){for(var e=0,a=t.length;a>e;e++)this.pushParam(t[e])},pushParam:function(t){this.stringParams?(t.depth&&this.addDepth(t.depth),this.opcode("getContext",t.depth||0),this.opcode("pushStringParam",t.stringModeValue,t.type),"sexpr"===t.type&&this.sexpr(t)):(this.trackIds&&this.opcode("pushId",t.type,t.idName||t.stringModeValue),this.accept(t))
+},setupFullMustacheParams:function(t,e,a){var n=t.params;return this.pushParams(n),this.opcode("pushProgram",e),this.opcode("pushProgram",a),t.hash?this.hash(t.hash):this.opcode("emptyHash"),n}},r.precompile=n,r.compile=s,r}(a,e),u=function(t,e){"use strict";function a(t){this.value=t}function n(){}var s,i=t.COMPILER_REVISION,r=t.REVISION_CHANGES,o=e;n.prototype={nameLookup:function(t,e){return n.isValidJavaScriptVariableName(e)?t+"."+e:t+"['"+e+"']"},depthedLookup:function(t){return this.aliases.lookup="this.lookup",'lookup(depths, "'+t+'")'},compilerInfo:function(){var t=i,e=r[t];return[t,e]},appendToBuffer:function(t){return this.environment.isSimple?"return "+t+";":{appendToBuffer:!0,content:t,toString:function(){return"buffer += "+t+";"}}},initializeBuffer:function(){return this.quotedString("")},namespace:"Handlebars",compile:function(t,e,a,n){this.environment=t,this.options=e,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!n,this.name=this.environment.name,this.isChild=!!a,this.context=a||{programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.compileChildren(t,e),this.useDepths=this.useDepths||t.depths.list.length||this.options.compat;var s,i,r,l=t.opcodes;for(i=0,r=l.length;r>i;i++)s=l[i],this[s.opcode].apply(this,s.args);if(this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new o("Compile completed with content left on stack");var c=this.createFunctionContext(n);if(this.isChild)return c;var d={compiler:this.compilerInfo(),main:c},u=this.context.programs;for(i=0,r=u.length;r>i;i++)u[i]&&(d[i]=u[i]);return this.environment.usePartial&&(d.usePartial=!0),this.options.data&&(d.useData=!0),this.useDepths&&(d.useDepths=!0),this.options.compat&&(d.compat=!0),n||(d.compiler=JSON.stringify(d.compiler),d=this.objectLiteral(d)),d},preamble:function(){this.lastContext=0,this.source=[]},createFunctionContext:function(t){var e="",a=this.stackVars.concat(this.registers.list);a.length>0&&(e+=", "+a.join(", "));for(var n in this.aliases)this.aliases.hasOwnProperty(n)&&(e+=", "+n+"="+this.aliases[n]);var s=["depth0","helpers","partials","data"];this.useDepths&&s.push("depths");var i=this.mergeSource(e);return t?(s.push(i),Function.apply(this,s)):"function("+s.join(",")+") {\n  "+i+"}"},mergeSource:function(t){for(var e,a,n="",s=!this.forceBuffer,i=0,r=this.source.length;r>i;i++){var o=this.source[i];o.appendToBuffer?e=e?e+"\n    + "+o.content:o.content:(e&&(n?n+="buffer += "+e+";\n  ":(a=!0,n=e+";\n  "),e=void 0),n+=o+"\n  ",this.environment.isSimple||(s=!1))}return s?(e||!n)&&(n+="return "+(e||'""')+";\n"):(t+=", buffer = "+(a?"":this.initializeBuffer()),n+=e?"return buffer + "+e+";\n":"return buffer;\n"),t&&(n="var "+t.substring(2)+(a?"":";\n  ")+n),n},blockValue:function(t){this.aliases.blockHelperMissing="helpers.blockHelperMissing";var e=[this.contextName(0)];this.setupParams(t,0,e);var a=this.popStack();e.splice(1,0,a),this.push("blockHelperMissing.call("+e.join(", ")+")")},ambiguousBlockValue:function(){this.aliases.blockHelperMissing="helpers.blockHelperMissing";var t=[this.contextName(0)];this.setupParams("",0,t,!0),this.flushInline();var e=this.topStack();t.splice(1,0,e),this.pushSource("if (!"+this.lastHelper+") { "+e+" = blockHelperMissing.call("+t.join(", ")+"); }")},appendContent:function(t){this.pendingContent&&(t=this.pendingContent+t),this.pendingContent=t},append:function(){this.flushInline();var t=this.popStack();this.pushSource("if ("+t+" != null) { "+this.appendToBuffer(t)+" }"),this.environment.isSimple&&this.pushSource("else { "+this.appendToBuffer("''")+" }")},appendEscaped:function(){this.aliases.escapeExpression="this.escapeExpression",this.pushSource(this.appendToBuffer("escapeExpression("+this.popStack()+")"))},getContext:function(t){this.lastContext=t},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(t,e,a){var n=0,s=t.length;for(a||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(t[n++]));s>n;n++)this.replaceStack(function(a){var s=this.nameLookup(a,t[n],"context");return e?" && "+s:" != null ? "+s+" : "+a})},lookupData:function(t,e){this.pushStackLiteral(t?"this.data(data, "+t+")":"data");for(var a=e.length,n=0;a>n;n++)this.replaceStack(function(t){return" && "+this.nameLookup(t,e[n],"data")})},resolvePossibleLambda:function(){this.aliases.lambda="this.lambda",this.push("lambda("+this.popStack()+", "+this.contextName(0)+")")},pushStringParam:function(t,e){this.pushContext(),this.pushString(e),"sexpr"!==e&&("string"==typeof t?this.pushString(t):this.pushStackLiteral(t))},emptyHash:function(){this.pushStackLiteral("{}"),this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}"))},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var t=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push("{"+t.ids.join(",")+"}"),this.stringParams&&(this.push("{"+t.contexts.join(",")+"}"),this.push("{"+t.types.join(",")+"}")),this.push("{\n    "+t.values.join(",\n    ")+"\n  }")},pushString:function(t){this.pushStackLiteral(this.quotedString(t))},push:function(t){return this.inlineStack.push(t),t},pushLiteral:function(t){this.pushStackLiteral(t)},pushProgram:function(t){this.pushStackLiteral(null!=t?this.programExpression(t):null)},invokeHelper:function(t,e,a){this.aliases.helperMissing="helpers.helperMissing";var n=this.popStack(),s=this.setupHelper(t,e),i=(a?s.name+" || ":"")+n+" || helperMissing";this.push("(("+i+").call("+s.callParams+"))")},invokeKnownHelper:function(t,e){var a=this.setupHelper(t,e);this.push(a.name+".call("+a.callParams+")")},invokeAmbiguous:function(t,e){this.aliases.functionType='"function"',this.aliases.helperMissing="helpers.helperMissing",this.useRegister("helper");var a=this.popStack();this.emptyHash();var n=this.setupHelper(0,t,e),s=this.lastHelper=this.nameLookup("helpers",t,"helper");this.push("((helper = (helper = "+s+" || "+a+") != null ? helper : helperMissing"+(n.paramsInit?"),("+n.paramsInit:"")+"),(typeof helper === functionType ? helper.call("+n.callParams+") : helper))")},invokePartial:function(t,e){var a=[this.nameLookup("partials",t,"partial"),"'"+e+"'","'"+t+"'",this.popStack(),this.popStack(),"helpers","partials"];this.options.data?a.push("data"):this.options.compat&&a.push("undefined"),this.options.compat&&a.push("depths"),this.push("this.invokePartial("+a.join(", ")+")")},assignToHash:function(t){var e,a,n,s=this.popStack();this.trackIds&&(n=this.popStack()),this.stringParams&&(a=this.popStack(),e=this.popStack());var i=this.hash;e&&i.contexts.push("'"+t+"': "+e),a&&i.types.push("'"+t+"': "+a),n&&i.ids.push("'"+t+"': "+n),i.values.push("'"+t+"': ("+s+")")},pushId:function(t,e){"ID"===t||"DATA"===t?this.pushString(e):this.pushStackLiteral("sexpr"===t?"true":"null")},compiler:n,compileChildren:function(t,e){for(var a,n,s=t.children,i=0,r=s.length;r>i;i++){a=s[i],n=new this.compiler;var o=this.matchExistingProgram(a);null==o?(this.context.programs.push(""),o=this.context.programs.length,a.index=o,a.name="program"+o,this.context.programs[o]=n.compile(a,e,this.context,!this.precompile),this.context.environments[o]=a,this.useDepths=this.useDepths||n.useDepths):(a.index=o,a.name="program"+o)}},matchExistingProgram:function(t){for(var e=0,a=this.context.environments.length;a>e;e++){var n=this.context.environments[e];if(n&&n.equals(t))return e}},programExpression:function(t){var e=this.environment.children[t],a=(e.depths.list,this.useDepths),n=[e.index,"data"];return a&&n.push("depths"),"this.program("+n.join(", ")+")"},useRegister:function(t){this.registers[t]||(this.registers[t]=!0,this.registers.list.push(t))},pushStackLiteral:function(t){return this.push(new a(t))},pushSource:function(t){this.pendingContent&&(this.source.push(this.appendToBuffer(this.quotedString(this.pendingContent))),this.pendingContent=void 0),t&&this.source.push(t)},pushStack:function(t){this.flushInline();var e=this.incrStack();return this.pushSource(e+" = "+t+";"),this.compileStack.push(e),e},replaceStack:function(t){{var e,n,s,i="";this.isInline()}if(!this.isInline())throw new o("replaceStack on non-inline");var r=this.popStack(!0);if(r instanceof a)i=e=r.value,s=!0;else{n=!this.stackSlot;var l=n?this.incrStack():this.topStackName();i="("+this.push(l)+" = "+r+")",e=this.topStack()}var c=t.call(this,e);s||this.popStack(),n&&this.stackSlot--,this.push("("+i+c+")")},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var t=this.inlineStack;if(t.length){this.inlineStack=[];for(var e=0,n=t.length;n>e;e++){var s=t[e];s instanceof a?this.compileStack.push(s):this.pushStack(s)}}},isInline:function(){return this.inlineStack.length},popStack:function(t){var e=this.isInline(),n=(e?this.inlineStack:this.compileStack).pop();if(!t&&n instanceof a)return n.value;if(!e){if(!this.stackSlot)throw new o("Invalid stack pop");this.stackSlot--}return n},topStack:function(){var t=this.isInline()?this.inlineStack:this.compileStack,e=t[t.length-1];return e instanceof a?e.value:e},contextName:function(t){return this.useDepths&&t?"depths["+t+"]":"depth"+t},quotedString:function(t){return'"'+t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(t){var e=[];for(var a in t)t.hasOwnProperty(a)&&e.push(this.quotedString(a)+":"+t[a]);return"{"+e.join(",")+"}"},setupHelper:function(t,e,a){var n=[],s=this.setupParams(e,t,n,a),i=this.nameLookup("helpers",e,"helper");return{params:n,paramsInit:s,name:i,callParams:[this.contextName(0)].concat(n).join(", ")}},setupOptions:function(t,e,a){var n,s,i,r={},o=[],l=[],c=[];r.name=this.quotedString(t),r.hash=this.popStack(),this.trackIds&&(r.hashIds=this.popStack()),this.stringParams&&(r.hashTypes=this.popStack(),r.hashContexts=this.popStack()),s=this.popStack(),i=this.popStack(),(i||s)&&(i||(i="this.noop"),s||(s="this.noop"),r.fn=i,r.inverse=s);for(var d=e;d--;)n=this.popStack(),a[d]=n,this.trackIds&&(c[d]=this.popStack()),this.stringParams&&(l[d]=this.popStack(),o[d]=this.popStack());return this.trackIds&&(r.ids="["+c.join(",")+"]"),this.stringParams&&(r.types="["+l.join(",")+"]",r.contexts="["+o.join(",")+"]"),this.options.data&&(r.data="data"),r},setupParams:function(t,e,a,n){var s=this.objectLiteral(this.setupOptions(t,e,a));return n?(this.useRegister("options"),a.push("options"),"options="+s):(a.push(s),"")}};for(var l="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield".split(" "),c=n.RESERVED_WORDS={},d=0,u=l.length;u>d;d++)c[l[d]]=!0;return n.isValidJavaScriptVariableName=function(t){return!n.RESERVED_WORDS[t]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(t)},s=n}(n,a),p=function(t,e,a,n,s){"use strict";var i,r=t,o=e,l=a.parser,c=a.parse,d=n.Compiler,u=n.compile,p=n.precompile,h=s,f=r.create,m=function(){var t=f();return t.compile=function(e,a){return u(e,a,t)},t.precompile=function(e,a){return p(e,a,t)},t.AST=o,t.Compiler=d,t.JavaScriptCompiler=h,t.Parser=l,t.parse=c,t};return r=m(),r.create=m,r["default"]=r,i=r}(i,r,c,d,u);return p}),define("hbs/underscore",[],function(){function t(e,a,n){if(e===a)return 0!==e||1/e==1/a;if(null==e||null==a)return e===a;if(e._chain&&(e=e._wrapped),a._chain&&(a=a._wrapped),e.isEqual&&w.isFunction(e.isEqual))return e.isEqual(a);if(a.isEqual&&w.isFunction(a.isEqual))return a.isEqual(e);var s=o.call(e);if(s!=o.call(a))return!1;switch(s){case"[object String]":return e==String(a);case"[object Number]":return e!=+e?a!=+a:0==e?1/e==1/a:e==+a;case"[object Date]":case"[object Boolean]":return+e==+a;case"[object RegExp]":return e.source==a.source&&e.global==a.global&&e.multiline==a.multiline&&e.ignoreCase==a.ignoreCase}if("object"!=typeof e||"object"!=typeof a)return!1;for(var i=n.length;i--;)if(n[i]==e)return!0;n.push(e);var r=0,l=!0;if("[object Array]"==s){if(r=e.length,l=r==a.length)for(;r--&&(l=r in e==r in a&&t(e[r],a[r],n)););}else{if("constructor"in e!="constructor"in a||e.constructor!=a.constructor)return!1;for(var c in e)if(w.has(e,c)&&(r++,!(l=w.has(a,c)&&t(e[c],a[c],n))))break;if(l){for(c in a)if(w.has(a,c)&&!r--)break;l=!r}}return n.pop(),l}var e={},a=Array.prototype,n=Object.prototype,s=Function.prototype,i=a.slice,r=a.unshift,o=n.toString,l=n.hasOwnProperty,c=a.forEach,d=a.map,u=a.reduce,p=a.reduceRight,h=a.filter,f=a.every,m=a.some,_=a.indexOf,b=a.lastIndexOf,v=Array.isArray,g=Object.keys,y=s.bind,w=function(t){return new P(t)};w.VERSION="1.3.3";var T=w.each=w.forEach=function(t,a,n){if(null!=t)if(c&&t.forEach===c)t.forEach(a,n);else if(t.length===+t.length){for(var s=0,i=t.length;i>s;s++)if(s in t&&a.call(n,t[s],s,t)===e)return}else for(var r in t)if(w.has(t,r)&&a.call(n,t[r],r,t)===e)return};w.map=w.collect=function(t,e,a){var n=[];return null==t?n:d&&t.map===d?t.map(e,a):(T(t,function(t,s,i){n[n.length]=e.call(a,t,s,i)}),t.length===+t.length&&(n.length=t.length),n)},w.reduce=w.foldl=w.inject=function(t,e,a,n){var s=arguments.length>2;if(null==t&&(t=[]),u&&t.reduce===u)return n&&(e=w.bind(e,n)),s?t.reduce(e,a):t.reduce(e);if(T(t,function(t,i,r){s?a=e.call(n,a,t,i,r):(a=t,s=!0)}),!s)throw new TypeError("Reduce of empty array with no initial value");return a},w.reduceRight=w.foldr=function(t,e,a,n){var s=arguments.length>2;if(null==t&&(t=[]),p&&t.reduceRight===p)return n&&(e=w.bind(e,n)),s?t.reduceRight(e,a):t.reduceRight(e);var i=w.toArray(t).reverse();return n&&!s&&(e=w.bind(e,n)),s?w.reduce(i,e,a,n):w.reduce(i,e)},w.find=w.detect=function(t,e,a){var n;return E(t,function(t,s,i){return e.call(a,t,s,i)?(n=t,!0):void 0}),n},w.filter=w.select=function(t,e,a){var n=[];return null==t?n:h&&t.filter===h?t.filter(e,a):(T(t,function(t,s,i){e.call(a,t,s,i)&&(n[n.length]=t)}),n)},w.reject=function(t,e,a){var n=[];return null==t?n:(T(t,function(t,s,i){e.call(a,t,s,i)||(n[n.length]=t)}),n)},w.every=w.all=function(t,a,n){var s=!0;return null==t?s:f&&t.every===f?t.every(a,n):(T(t,function(t,i,r){return(s=s&&a.call(n,t,i,r))?void 0:e}),!!s)};var E=w.some=w.any=function(t,a,n){a||(a=w.identity);var s=!1;return null==t?s:m&&t.some===m?t.some(a,n):(T(t,function(t,i,r){return s||(s=a.call(n,t,i,r))?e:void 0}),!!s)};w.include=w.contains=function(t,e){var a=!1;return null==t?a:_&&t.indexOf===_?-1!=t.indexOf(e):a=E(t,function(t){return t===e})},w.invoke=function(t,e){var a=i.call(arguments,2);return w.map(t,function(t){return(w.isFunction(e)?e||t:t[e]).apply(t,a)})},w.pluck=function(t,e){return w.map(t,function(t){return t[e]})},w.max=function(t,e,a){if(!e&&w.isArray(t)&&t[0]===+t[0])return Math.max.apply(Math,t);if(!e&&w.isEmpty(t))return-1/0;var n={computed:-1/0};return T(t,function(t,s,i){var r=e?e.call(a,t,s,i):t;r>=n.computed&&(n={value:t,computed:r})}),n.value},w.min=function(t,e,a){if(!e&&w.isArray(t)&&t[0]===+t[0])return Math.min.apply(Math,t);if(!e&&w.isEmpty(t))return 1/0;var n={computed:1/0};return T(t,function(t,s,i){var r=e?e.call(a,t,s,i):t;r<n.computed&&(n={value:t,computed:r})}),n.value},w.shuffle=function(t){var e,a=[];return T(t,function(t,n){e=Math.floor(Math.random()*(n+1)),a[n]=a[e],a[e]=t}),a},w.sortBy=function(t,e,a){var n=w.isFunction(e)?e:function(t){return t[e]};return w.pluck(w.map(t,function(t,e,s){return{value:t,criteria:n.call(a,t,e,s)}}).sort(function(t,e){var a=t.criteria,n=e.criteria;return void 0===a?1:void 0===n?-1:n>a?-1:a>n?1:0}),"value")},w.groupBy=function(t,e){var a={},n=w.isFunction(e)?e:function(t){return t[e]};return T(t,function(t,e){var s=n(t,e);(a[s]||(a[s]=[])).push(t)}),a},w.sortedIndex=function(t,e,a){a||(a=w.identity);for(var n=0,s=t.length;s>n;){var i=n+s>>1;a(t[i])<a(e)?n=i+1:s=i}return n},w.toArray=function(t){return t?w.isArray(t)?i.call(t):w.isArguments(t)?i.call(t):t.toArray&&w.isFunction(t.toArray)?t.toArray():w.values(t):[]},w.size=function(t){return w.isArray(t)?t.length:w.keys(t).length},w.first=w.head=w.take=function(t,e,a){return null==e||a?t[0]:i.call(t,0,e)},w.initial=function(t,e,a){return i.call(t,0,t.length-(null==e||a?1:e))},w.last=function(t,e,a){return null==e||a?t[t.length-1]:i.call(t,Math.max(t.length-e,0))},w.rest=w.tail=function(t,e,a){return i.call(t,null==e||a?1:e)},w.compact=function(t){return w.filter(t,function(t){return!!t})},w.flatten=function(t,e){return w.reduce(t,function(t,a){return w.isArray(a)?t.concat(e?a:w.flatten(a)):(t[t.length]=a,t)},[])},w.without=function(t){return w.difference(t,i.call(arguments,1))},w.uniq=w.unique=function(t,e,a){var n=a?w.map(t,a):t,s=[];return t.length<3&&(e=!0),w.reduce(n,function(a,n,i){return(e?w.last(a)===n&&a.length:w.include(a,n))||(a.push(n),s.push(t[i])),a},[]),s},w.union=function(){return w.uniq(w.flatten(arguments,!0))},w.intersection=w.intersect=function(t){var e=i.call(arguments,1);return w.filter(w.uniq(t),function(t){return w.every(e,function(e){return w.indexOf(e,t)>=0})})},w.difference=function(t){var e=w.flatten(i.call(arguments,1),!0);return w.filter(t,function(t){return!w.include(e,t)})},w.zip=function(){for(var t=i.call(arguments),e=w.max(w.pluck(t,"length")),a=new Array(e),n=0;e>n;n++)a[n]=w.pluck(t,""+n);return a},w.indexOf=function(t,e,a){if(null==t)return-1;var n,s;if(a)return n=w.sortedIndex(t,e),t[n]===e?n:-1;if(_&&t.indexOf===_)return t.indexOf(e);for(n=0,s=t.length;s>n;n++)if(n in t&&t[n]===e)return n;return-1},w.lastIndexOf=function(t,e){if(null==t)return-1;if(b&&t.lastIndexOf===b)return t.lastIndexOf(e);for(var a=t.length;a--;)if(a in t&&t[a]===e)return a;return-1},w.range=function(t,e,a){arguments.length<=1&&(e=t||0,t=0),a=arguments[2]||1;for(var n=Math.max(Math.ceil((e-t)/a),0),s=0,i=new Array(n);n>s;)i[s++]=t,t+=a;return i};var S=function(){};w.bind=function(t,e){var a,n;if(t.bind===y&&y)return y.apply(t,i.call(arguments,1));if(!w.isFunction(t))throw new TypeError;return n=i.call(arguments,2),a=function(){if(!(this instanceof a))return t.apply(e,n.concat(i.call(arguments)));S.prototype=t.prototype;var s=new S,r=t.apply(s,n.concat(i.call(arguments)));return Object(r)===r?r:s}},w.bindAll=function(t){var e=i.call(arguments,1);return 0==e.length&&(e=w.functions(t)),T(e,function(e){t[e]=w.bind(t[e],t)}),t},w.memoize=function(t,e){var a={};return e||(e=w.identity),function(){var n=e.apply(this,arguments);return w.has(a,n)?a[n]:a[n]=t.apply(this,arguments)}},w.delay=function(t,e){var a=i.call(arguments,2);return setTimeout(function(){return t.apply(null,a)},e)},w.defer=function(t){return w.delay.apply(w,[t,1].concat(i.call(arguments,1)))},w.throttle=function(t,e){var a,n,s,i,r,o,l=w.debounce(function(){r=i=!1},e);return function(){a=this,n=arguments;var c=function(){s=null,r&&t.apply(a,n),l()};return s||(s=setTimeout(c,e)),i?r=!0:o=t.apply(a,n),l(),i=!0,o}},w.debounce=function(t,e,a){var n;return function(){var s=this,i=arguments,r=function(){n=null,a||t.apply(s,i)};a&&!n&&t.apply(s,i),clearTimeout(n),n=setTimeout(r,e)}},w.once=function(t){var e,a=!1;return function(){return a?e:(a=!0,e=t.apply(this,arguments))}},w.wrap=function(t,e){return function(){var a=[t].concat(i.call(arguments,0));return e.apply(this,a)}},w.compose=function(){var t=arguments;return function(){for(var e=arguments,a=t.length-1;a>=0;a--)e=[t[a].apply(this,e)];return e[0]}},w.after=function(t,e){return 0>=t?e():function(){return--t<1?e.apply(this,arguments):void 0}},w.keys=g||function(t){if(t!==Object(t))throw new TypeError("Invalid object");var e=[];for(var a in t)w.has(t,a)&&(e[e.length]=a);return e},w.values=function(t){return w.map(t,w.identity)},w.functions=w.methods=function(t){var e=[];for(var a in t)w.isFunction(t[a])&&e.push(a);return e.sort()},w.extend=function(t){return T(i.call(arguments,1),function(e){for(var a in e)t[a]=e[a]}),t},w.pick=function(t){var e={};return T(w.flatten(i.call(arguments,1)),function(a){a in t&&(e[a]=t[a])}),e},w.defaults=function(t){return T(i.call(arguments,1),function(e){for(var a in e)null==t[a]&&(t[a]=e[a])}),t},w.clone=function(t){return w.isObject(t)?w.isArray(t)?t.slice():w.extend({},t):t},w.tap=function(t,e){return e(t),t},w.isEqual=function(e,a){return t(e,a,[])},w.isEmpty=function(t){if(null==t)return!0;if(w.isArray(t)||w.isString(t))return 0===t.length;for(var e in t)if(w.has(t,e))return!1;return!0},w.isElement=function(t){return!(!t||1!=t.nodeType)},w.isArray=v||function(t){return"[object Array]"==o.call(t)},w.isObject=function(t){return t===Object(t)},w.isArguments=function(t){return"[object Arguments]"==o.call(t)},w.isArguments(arguments)||(w.isArguments=function(t){return!(!t||!w.has(t,"callee"))}),w.isFunction=function(t){return"[object Function]"==o.call(t)},w.isString=function(t){return"[object String]"==o.call(t)},w.isNumber=function(t){return"[object Number]"==o.call(t)},w.isFinite=function(t){return w.isNumber(t)&&isFinite(t)},w.isNaN=function(t){return t!==t},w.isBoolean=function(t){return t===!0||t===!1||"[object Boolean]"==o.call(t)},w.isDate=function(t){return"[object Date]"==o.call(t)},w.isRegExp=function(t){return"[object RegExp]"==o.call(t)},w.isNull=function(t){return null===t},w.isUndefined=function(t){return void 0===t},w.has=function(t,e){return l.call(t,e)},w.noConflict=function(){return root._=previousUnderscore,this},w.identity=function(t){return t},w.times=function(t,e,a){for(var n=0;t>n;n++)e.call(a,n)},w.escape=function(t){return(""+t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")},w.result=function(t,e){if(null==t)return null;var a=t[e];return w.isFunction(a)?a.call(t):a},w.mixin=function(t){T(w.functions(t),function(e){O(e,w[e]=t[e])})};var I=0;w.uniqueId=function(t){var e=I++;return t?t+e:e},w.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var x=/.^/,A={"\\":"\\","'":"'",r:"\r",n:"\n",t:"	",u2028:"\u2028",u2029:"\u2029"};for(var M in A)A[A[M]]=M;var k=/\\|'|\r|\n|\t|\u2028|\u2029/g,D=/\\(\\|'|r|n|t|u2028|u2029)/g,C=function(t){return t.replace(D,function(t,e){return A[e]})};w.template=function(t,e,a){a=w.defaults(a||{},w.templateSettings);var n="__p+='"+t.replace(k,function(t){return"\\"+A[t]}).replace(a.escape||x,function(t,e){return"'+\n_.escape("+C(e)+")+\n'"}).replace(a.interpolate||x,function(t,e){return"'+\n("+C(e)+")+\n'"}).replace(a.evaluate||x,function(t,e){return"';\n"+C(e)+"\n;__p+='"})+"';\n";a.variable||(n="with(obj||{}){\n"+n+"}\n"),n="var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};\n"+n+"return __p;\n";var s=new Function(a.variable||"obj","_",n);if(e)return s(e,w);var i=function(t){return s.call(this,t,w)};return i.source="function("+(a.variable||"obj")+"){\n"+n+"}",i},w.chain=function(t){return w(t).chain()};var P=function(t){this._wrapped=t};w.prototype=P.prototype;var $=function(t,e){return e?w(t).chain():t},O=function(t,e){P.prototype[t]=function(){var t=i.call(arguments);return r.call(t,this._wrapped),$(e.apply(w,t),this._chain)}};return w.mixin(w),T(["pop","push","reverse","shift","sort","splice","unshift"],function(t){var e=a[t];P.prototype[t]=function(){var a=this._wrapped;e.apply(a,arguments);var n=a.length;return"shift"!=t&&"splice"!=t||0!==n||delete a[0],$(a,this._chain)}}),T(["concat","join","slice"],function(t){var e=a[t];P.prototype[t]=function(){return $(e.apply(this._wrapped,arguments),this._chain)}}),P.prototype.chain=function(){return this._chain=!0,this},P.prototype.value=function(){return this._wrapped},w}),define("hbs/i18nprecompile",["hbs/handlebars","hbs/underscore"],function(t,e){function a(n,s,i){return i=i||{},s=s||{},n&&"program"===n.type&&n.statements&&(e(n.statements).forEach(function(e,r){var o="<!-- i18n error -->";if("mustache"===e.type&&e.id&&"$"===e.id.original){if(e.params.length&&e.params[0].string){var l=e.params[0].string;o=s[l]||(i.originalKeyFallback?l:o)}n.statements[r]=new t.AST.ContentNode(o)}else e.program&&(e.program=a(e.program,s,i))}),n.inverse&&a(n.inverse,s,i)),n}return function(e,n,s){var i,r;return s=s||{},"data"in s||(s.data=!0),s.compat&&(s.useDepths=!0),i=t.parse(e),n!==!1&&(i=a(i,n,s)),r=(new t.Compiler).compile(i,s),(new t.JavaScriptCompiler).compile(r,s)}}),function(window){var JSON=window.JSON||{};!function(){"use strict";function f(t){return 10>t?"0"+t:t}function quote(t){return escapable.lastIndex=0,escapable.test(t)?'"'+t.replace(escapable,function(t){var e=meta[t];return"string"==typeof e?e:"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+t+'"'}function str(t,e){var a,n,s,i,r,o=gap,l=e[t];switch(l&&"object"==typeof l&&"function"==typeof l.toJSON&&(l=l.toJSON(t)),"function"==typeof rep&&(l=rep.call(e,t,l)),typeof l){case"string":return quote(l);case"number":return isFinite(l)?String(l):"null";case"boolean":case"null":return String(l);case"object":if(!l)return"null";if(gap+=indent,r=[],"[object Array]"===Object.prototype.toString.apply(l)){for(i=l.length,a=0;i>a;a+=1)r[a]=str(a,l)||"null";return s=0===r.length?"[]":gap?"[\n"+gap+r.join(",\n"+gap)+"\n"+o+"]":"["+r.join(",")+"]",gap=o,s}if(rep&&"object"==typeof rep)for(i=rep.length,a=0;i>a;a+=1)"string"==typeof rep[a]&&(n=rep[a],s=str(n,l),s&&r.push(quote(n)+(gap?": ":":")+s));else for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(s=str(n,l),s&&r.push(quote(n)+(gap?": ":":")+s));return s=0===r.length?"{}":gap?"{\n"+gap+r.join(",\n"+gap)+"\n"+o+"}":"{"+r.join(",")+"}",gap=o,s}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","	":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;"function"!=typeof JSON.stringify&&(JSON.stringify=function(t,e,a){var n;if(gap="",indent="","number"==typeof a)for(n=0;a>n;n+=1)indent+=" ";else"string"==typeof a&&(indent=a);if(rep=e,e&&"function"!=typeof e&&("object"!=typeof e||"number"!=typeof e.length))throw new Error("JSON.stringify");return str("",{"":t})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){function walk(t,e){var a,n,s=t[e];if(s&&"object"==typeof s)for(a in s)Object.prototype.hasOwnProperty.call(s,a)&&(n=walk(s,a),void 0!==n?s[a]=n:delete s[a]);return reviver.call(t,e,s)}var j;if(text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(t){return"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}(),define("hbs/json2",[],function(){return JSON})}.call(this,this),define("hbs",["hbs/handlebars","hbs/underscore","hbs/i18nprecompile","hbs/json2"],function(t,e,a,n){var s,i,r=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],o=function(){throw new Error("Environment unsupported.")},l=[],c="w+",d="hbs",u="@hbs",p="/styles/",h="/demo-build/styles/",f="templates/helpers/",m="templates/i18n/",_="screen.build.css",b="onHbsRead";t.registerHelper("$",function(){}),"undefined"!=typeof window&&window.navigator&&window.document&&!window.navigator.userAgent.match(/Node.js/)?(i=function(){var t,e,a;if("undefined"!=typeof XMLHttpRequest)return arguments[0]===!0?new XDomainRequest:new XMLHttpRequest;for(e=0;3>e;e++){a=r[e];try{t=new ActiveXObject(a)}catch(n){}if(t){r=[a];break}}if(!t)throw new Error("getXhr(): XMLHttpRequest not available");return t},getIEVersion=function(){var t=-1;if("Microsoft Internet Explorer"==navigator.appName){var e=navigator.userAgent,a=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=a.exec(e)&&(t=parseFloat(RegExp.$1))}return t},o=function(t,e){var a=!1;if(0!=t.indexOf("http"))a=!1;else{var n="https"===t.substr(0,5)?8:7,s="https"===window.location.href.substr(0,5)?8:7,r=t.substr(n).split("/").shift(),o=getIEVersion();a=r!=window.location.href.substr(s).split("/").shift()&&o>=7}if(a){var l=i(!0);l.open("GET",t),l.onload=function(){e(l.responseText,t)},l.onprogress=function(){},l.ontimeout=function(){},l.onerror=function(){},setTimeout(function(){l.send()},0)}else{var c=i();c.open("GET",t,!0),c.onreadystatechange=function(){4===c.readyState&&e(c.responseText,t)},c.send(null)}}):"undefined"!=typeof process&&process.versions&&process.versions.node?(s=require.nodeRequire("fs"),o=function(t,e){var a=s.readFileSync(t,"utf8")||"";a=a.replace(/^\uFEFF/,""),e(a,t)}):"undefined"!=typeof java&&"undefined"!=typeof java.io&&(o=function(t,e){for(var a,n=new java.io.FileInputStream(t),s=new java.io.InputStreamReader(n,"UTF-8"),i=new java.io.BufferedReader(s),r="";null!==(a=i.readLine());)r+=new String(a)+"\n";i.close(),e(r,t)});var v,g={},y=function(t,e){g[t]?e(g[t]):o(t,function(t,a){g[a]=t,e.call(this,t)})},w=[],T={},E=[];return{get:function(){return t},write:function(t,e,a){if(e+u in l){var n=l[e+u];a.asModule(t+"!"+e,n)}},version:"2.0.0",load:function(s,i,r,g){function S(t,a){return e(t).forEach(function(t){t&&t.type&&"partial"===t.type&&a.push(t.partialName.name),t&&t.program&&t.program.statements&&S(t.program.statements,a),t&&t.inverse&&t.inverse.statements&&S(t.inverse.statements,a)}),a}function I(t){var a=[];return t&&t.statements&&(a=S(t.statements,[])),e.unique(a)}function x(t){var e,a,s;if(t&&t.statements&&(e=t.statements[0],e&&"comment"===e.type))try{return a=e.comment.replace(new RegExp("^[\\s]+|[\\s]+$","g"),""),s=n.parse(a),a}catch(i){return n.stringify({description:a})}return"{}"}function A(t){if(!t)return[];var e,a=[t[0]],n=t[0];for(e=1;e<t.length;++e)t.hasOwnProperty(e)&&(n+="."+t[e],a.push(n));return a}function M(a,n,s,i){s=s?s+".":"";var r="";return e(a).forEach(function(a){var o,l,c;if(a&&a.type&&"mustache"===a.type){if(!a.params||!a.params.length){o=A(a.id.parts);for(l in o)o[l]&&(r=o[l]||r,n.push(s+o[l]));n.push(s+a.id.string)}var d=["this",".","..","./..","../..","../../.."];a.params&&"undefined"==typeof t.helpers[a.id.string]&&(e(a.params).forEach(function(l){(e(d).contains(l.original)||l instanceof t.AST.StringNode||l instanceof t.AST.NumberNode||l instanceof t.AST.BooleanNode||l instanceof t.AST.DataNode||l instanceof t.AST.SexprNode)&&(i.push(a.id.string),"undefined"!=typeof a.params&&e(a.params).forEach(function(t){"sexpr"===t.type&&t.isHelper===!0&&i.push(t.id.string)}),null!=a.hash&&"undefined"!=typeof a.hash&&"undefined"!=typeof a.hash.pairs&&e(a.hash.pairs).forEach(function(t){var e=(t[0],t[1]);"sexpr"===e.type&&e.isHelper===!0&&i.push(e.id.string)})),o=A(l.parts);for(var c in o)o[c]&&(r=o[c]||r,i.push(a.id.string),n.push(s+o[c]))}),null!=a.hash&&"undefined"!=typeof a.hash&&"undefined"!=typeof a.hash.pairs&&e(a.hash.pairs).forEach(function(e){var n=e[1];(n instanceof t.AST.StringNode||n instanceof t.AST.NumberNode||n instanceof t.AST.BooleanNode||n instanceof t.AST.IdNode)&&i.push(a.id.string)}))}a&&a.mustache&&M([a.mustache],n,s+r,i),a&&a.program&&a.program.statements&&(c=M([a.mustache],[],"",i)[0]||"",a.inverse&&a.inverse.statements&&M(a.inverse.statements,n,s+r+(c?s+r?"."+c:c:""),i),M(a.program.statements,n,s+r+(c?s+r?"."+c:c:""),i))
+}),n}function k(t){var a=[],n=[];t&&t.statements&&(a=M(t.statements,[],void 0,n));var s=["helperMissing","blockHelperMissing","each","if","unless","with","log","lookup"];return{vars:e(a).chain().unique().map(function(t){return""===t?".":t.length&&"."===t[t.length-1]?t.substr(0,t.length-1)+"[]":t}).value(),helpers:e(n).chain().unique().map(function(t){return e(s).contains(t)?void 0:t}).compact().value()}}function D(t){for(var e=t.split("/"),a=0;a<e.length;a++)".."===e[a]?(delete e[a-1],delete e[a]):"."===e[a]&&delete e[a];return e.join("/").replace(/\/\/+/g,"/")}function C(d){o(L,function(o,u){var m,g,y,S,A,M=v.isBuild&&v[b]?v[b]:function(t,e,a){return a},C=t.parse(M(s,u,o)),L=I(C),N=x(C),U=k(C),F=U.vars,q=U.helpers||[],z="",V="",G="",B=[],H=s.substr(0,s.lastIndexOf("/")+1);if(require.config.hbs=require.config.hbs||{},require.config.hbs._partials=require.config.hbs._partials||{},"{}"!==N)try{y=n.parse(N)}catch(K){console.log("couldn't parse meta for %s",u)}for(var j in L)if(L.hasOwnProperty(j)&&"string"==typeof L[j]){var u,Y=L[j];u=D(Y.match(/^(\.|\/)+/)?H+Y:R+Y),require.config.hbs._partials[u]=require.config.hbs._partials[u]||[],require.config.hbs._partials[u].references=require.config.hbs._partials[u].references||[],require.config.hbs._partials[u].references.push(Y),require.config.hbs._loadedDeps=require.config.hbs._loadedDeps||{},B[j]="hbs!"+u}if(m=B.join("', '"),q=q.concat(y&&y.helpers?y.helpers:[]),g=O?"":function(){var t,e=[],a=v.hbs&&v.hbs.helperPathCallback?v.hbs.helperPathCallback:function(t){return(v.hbs&&v.hbs.helperDirectory?v.hbs.helperDirectory:f)+t};for(t=0;t<q.length;t++)e[t]="'"+a(q[t],u)+"'";return e}().join(","),g&&(g=","+g),y)try{y.styles&&(w=e.union(w,y.styles),require.isBrowser&&!v.isBuild?(S=document.head||document.getElementsByTagName("head")[0],e(y.styles).forEach(function(t){T[t]||(A=document.createElement("link"),A.href=v.baseUrl+p+t+".css",A.media="all",A.rel="stylesheet",A.type="text/css",S.appendChild(A),T[t]=A)})):v.isBuild&&!function(){var t=require.nodeRequire("fs"),a=e(y.styles).map(function(t){return T[t]?"":(T[t]=!0,"@import url("+t+".css);\n")}).join("\n");t.open(__dirname+h+_,c,"0666",function(e,n){t.writeSync(n,a,null,encoding="utf8"),t.close(n)}),c="a"}())}catch(K){console.log("error injecting styles")}v.isBuild||v.serverRender||(z="<!-- START - "+s+" -->",V="<!-- END - "+s+" -->",G="t.meta = "+N+";\nt.helpers = "+n.stringify(q)+";\nt.deps = "+n.stringify(B)+";\nt.vars = "+n.stringify(F)+";\n");var W=$?!1:e.extend(d,v.localeMapping),X=v.hbs||{},Q=e.extend(X.compileOptions||{},{originalKeyFallback:X.originalKeyFallback}),Z=a(o,W,Q),J="'hbs!"+s+"',";m&&(m=", '"+m+"'");var te=[];require.config.hbs._partials[s]&&(te=require.config.hbs._partials[s].references),o="/* START_TEMPLATE */\ndefine("+J+"['hbs','hbs/handlebars'"+m+g+"], function( hbs, Handlebars ){ \nvar t = Handlebars.template("+Z+");\nHandlebars.registerPartial('"+s+"', t);\n";for(var j=0;j<te.length;j++)o+="Handlebars.registerPartial('"+te[j]+"', t);\n";o+=G+"return t;\n});\n/* END_TEMPLATE */\n",v.isBuild&&(l[P]=o),v.isBuild||(o+="\r\n//# sourceURL="+u),v.isBuild?(r.fromText(s,o),i([s],function(t){r(t)})):require(B,function(){r.fromText(o),i([s],function(t){r(t)})}),v.removeCombined&&u&&E.push(u)})}v=v||g;var P=s+u;v.hbs=v.hbs||{};var $=!(1==v.hbs.i18n),O=0==v.hbs.helpers,R="";v.hbs.partialsUrl&&(R=v.hbs.partialsUrl,R.match(/\/$/)||(R+="/")),v.hbs.fetchText&&(o=v.hbs.fetchText);var L,N=v.hbs&&v.hbs.templateExtension===!1;if(L=i.toUrl(N?s:s+"."+(v.hbs&&v.hbs.templateExtension?v.hbs.templateExtension:d)),$)C(!1);else{var U=(v.hbs&&v.hbs.i18nDirectory?v.hbs.i18nDirectory:m)+(v.locale||"en_us")+".json";try{y(i.toUrl(U),function(t){C(n.parse(t))})}catch(F){if(v.hbs)throw F;console.warn("hbs: Error reading "+U+", disabling i18n. Ignore this if you're using jam, otherwise check your i18n configuration.\n"),v.hbs={i18n:!1,helpers:!0},C(!1)}}},onLayerEnd:function(){v.removeCombined&&s&&E.forEach(function(t){s.existsSync(t)&&s.unlinkSync(t)})}}}),define("hbs!sunstone/tab",["hbs","hbs/handlebars"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l='  <div class="row header-row">\n    <div class="large-12 columns">\n      <h3 class="subheader header-title only-right-list" style="border-bottom: 1px solid #efefef; padding-bottom: 10px;">\n        <span class="header-resource" style="border-bottom: 2px solid #0098c3; padding: 0px 50px 10px 0px;">';return i=null!=(i=e.listHeader||(null!=t?t.listHeader:t))?i:o,s=typeof i===r?i.call(t,{name:"listHeader",hash:{},data:n}):i,null!=s&&(l+=s),l+='</span>\n      </h3>\n      <h3 class="subheader header-title only-right-info" style="border-bottom: 1px solid #efefef; padding-bottom: 10px;" hidden>\n        <span class="header-resource" style="border-bottom: 2px solid #0098c3; padding: 0px 50px 10px 0px;">',i=null!=(i=e.infoHeader||(null!=t?t.infoHeader:t))?i:o,s=typeof i===r?i.call(t,{name:"infoHeader",hash:{},data:n}):i,null!=s&&(l+=s),l+'</span>\n        &emsp;\n        <span class="resource-id"></span>\n        &emsp;\n        <span class="resource-info-header"></span>\n      </h3>\n      <h3 class="subheader header-title only-right-form" style="border-bottom: 1px solid #efefef; padding-bottom: 10px;" hidden>\n        <span class="right-form-title" style="border-bottom: 2px solid #0098c3; padding: 0px 50px 10px 0px;"></span>\n      </h3>\n    </div>\n  </div>\n'},3:function(t,e,a,n){var s,i='  <div class="row actions_row">\n    <div class="small-12 large-12 columns">\n      <div class="action_blocks"></div>\n      <div class="small-3 large-3 columns only-right-list" style="margin-top: 2px">\n';return s=e["if"].call(t,null!=(s=null!=t?t.dataTable:t)?s.searchInputHTML:s,{name:"if",hash:{},fn:this.program(4,n),inverse:this.noop,data:n}),null!=s&&(i+=s),i+"      </div>\n    </div>\n  </div>\n"},4:function(t){var e,a=this.lambda,n="          ";return e=a(null!=(e=null!=t?t.dataTable:t)?e.searchInputHTML:e,t),null!=e&&(n+=e),n+"\n"},6:function(t){var e,a=this.lambda,n='    <div class="row">\n      <div class="large-12 columns">';return e=a(null!=(e=null!=t?t.dataTable:t)?e.dataTableHTML:e,t),null!=e&&(n+=e),n+"</div>\n    </div>\n"},8:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l="    ";return i=null!=(i=e.content||(null!=t?t.content:t))?i:o,s=typeof i===r?i.call(t,{name:"content",hash:{},data:n}):i,null!=s&&(l+=s),l+"\n"},10:function(t,e,a,n){var s,i='    <div class="row header-info">\n      <div class="large-12 columns text-center totals-info">\n        <h3 class="subheader">\n';return s=e["if"].call(t,null!=t?t.subheader:t,{name:"if",hash:{},fn:this.program(11,n),inverse:this.noop,data:n}),null!=s&&(i+=s),i+"        </h3>\n      </div>\n    </div>\n"},11:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l="            ";return i=null!=(i=e.subheader||(null!=t?t.subheader:t))?i:o,s=typeof i===r?i.call(t,{name:"subheader",hash:{},data:n}):i,null!=s&&(l+=s),l+"\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.tabName||(null!=t?t.tabName:t))?i:o,typeof i===r?i.call(t,{name:"tabName",hash:{},data:n}):i))+'" class="tab" style="display:none;">\n';return s=e["if"].call(t,null!=t?t.listHeader:t,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+="\n",s=e["if"].call(t,null!=t?t.buttons:t,{name:"if",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='  <div class="right-list">\n',s=e["if"].call(t,null!=(s=null!=t?t.dataTable:t)?s.dataTableHTML:s,{name:"if",hash:{},fn:this.program(6,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+="\n",s=e["if"].call(t,null!=t?t.content:t,{name:"if",hash:{},fn:this.program(8,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+="\n",s=e["if"].call(t,null!=t?t.subheader:t,{name:"if",hash:{},fn:this.program(10,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+'  </div>\n\n  <div class="right-info" hidden></div>\n\n  <div class="large-12 small-12 right-form" hidden>\n    <div class="loadingForm">\n      <br>\n      <br>\n      <span class="fa-stack fa-5x" style="color: #dfdfdf"> <i class="fa fa-cloud fa-stack-2x"/><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"/>\n      </span>\n      <br>\n      <br>\n    </div>\n    <div class="contentForm">\n    </div>\n  </div>\n</div>'},useData:!0});return e.registerPartial("sunstone/tab",a),a}),define("templates/helpers/tr",["require","hbs/handlebars","utils/locale"],function(t){var e=t("hbs/handlebars"),a=t("utils/locale"),n=function(t){return a.tr(t)};return e.registerHelper("tr",n),n}),define("hbs!sunstone/buttons",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'    <span id="'+o((s=null!=(s=e.customId||(null!=t?t.customId:t))?s:r,typeof s===i?s.call(t,{name:"customId",hash:{},data:n}):s))+'back_button" class="only-right-info only-right-form">\n      <a class="button small radius" href="back"> <i class="fa fa-arrow-left"></i>\n        &emsp;&emsp; <i class="fa fa-list"></i>\n      </a>\n    </span>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div class="text-center">\n  <span class="left">\n\n    <span id="'+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+'refresh_buttons" class="only-right-info only-right-list"></span>\n';return s=e.unless.call(t,null!=t?t.customContext:t,{name:"unless",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+'    <span id="'+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+'create_buttons" class="only-right-list"></span>\n  </span>\n\n  <span class="right" style="margin-left: 20px">\n    <a href=\'#\' data-dropdown=\''+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"user_buttons' class='only-right-info only-right-list top_button small  secondary button dropdown radius'>\n      <i class='fa fa-user'/></a>\n    <ul id='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"user_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <a href='#' data-dropdown='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmsdelete_buttons' class='only-right-info only-right-list top_button small  button alert dropdown radius'>\n      <i class='fa fa-trash-o'/></a>\n    <ul id='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmsdelete_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <span id='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"delete_buttons' class='only-right-info only-right-list'></span>\n  </span>\n\n  <span class=\"right\">\n    <span id=\""+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmsplay_buttons\"></span>\n\n    <a href='#' data-dropdown='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmspause_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\n      <i class='fa fa-pause'/>\n    </a>\n    <ul id='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmspause_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <a href='#' data-dropdown='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmsstop_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\n      <i class='fa fa-stop'/>\n    </a>\n    <ul id='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmsstop_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <a href='#' data-dropdown='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmsrepeat_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\n      <i class='fa fa-repeat'/>\n    </a>\n    <ul id='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmsrepeat_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <a href='#' data-dropdown='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmsplanification_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\n      <i class='fa fa-th-list'/>\n    </a>\n    <ul id='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"vmsplanification_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <span id=\""+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"main_buttons\" class=\"only-right-info only-right-list\"></span>\n\n    <a href='#' data-dropdown='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"more_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\n      <i class='fa fa-ellipsis-v'/>\n    </a>\n    <ul id='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"more_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n  </span>\n\n  <span id='"+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+"form_buttons' class='only-right-form' style='display: none'>\n    <span id=\""+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+'reset_button" class="left" style="margin-left: 10px;">\n      <a class="button small secondary radius reset_button" href="submit">'+l((e.tr||t&&t.tr||o).call(t,"Reset",{name:"tr",hash:{},data:n}))+'</a>\n    </span>\n    <span id="'+l((i=null!=(i=e.customId||(null!=t?t.customId:t))?i:o,typeof i===r?i.call(t,{name:"customId",hash:{},data:n}):i))+'submit_button" class="left" style="margin-left: 10px;">\n      <a class="button small success radius submit_button" href="submit">'+l((e.tr||t&&t.tr||o).call(t,"Create",{name:"tr",hash:{},data:n}))+'</a>\n    </span>\n    <dl class="tabs right wizard_tabs" data-tab style="margin-left: 10px;">\n      <dd id="wizard_mode" class="active">\n        <a style="padding: 0.3rem 1rem;" href="#wizardForms">'+l((e.tr||t&&t.tr||o).call(t,"Wizard",{name:"tr",hash:{},data:n}))+'</a>\n      </dd>\n      <dd id="advanced_mode">\n        <a style="padding: 0.3rem 1rem;" id="advanced_mode_a" href="#advancedForms">'+l((e.tr||t&&t.tr||o).call(t,"Advanced",{name:"tr",hash:{},data:n}))+'</a>\n      </dd>\n    </dl>\n  </span>\n</div>\n"'},useData:!0});return e.registerPartial("sunstone/buttons",a),a}),define("hbs!sunstone/panels",["hbs","hbs/handlebars"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c="    <dd ";return s=e["if"].call(t,null!=t?t.active:t,{name:"if",hash:{},fn:this.program(2,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='>\n      <a href="#'+l((i=null!=(i=e.panelName||(null!=t?t.panelName:t))?i:o,typeof i===r?i.call(t,{name:"panelName",hash:{},data:n}):i))+'">\n',s=e["if"].call(t,null!=t?t.icon:t,{name:"if",hash:{},fn:this.program(4,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+"        "+l((i=null!=(i=e.title||(null!=t?t.title:t))?i:o,typeof i===r?i.call(t,{name:"title",hash:{},data:n}):i))+"\n      </a>\n    </dd>\n"},2:function(){return'class="active"'},4:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'          <i class="fa '+o((s=null!=(s=e.icon||(null!=t?t.icon:t))?s:r,typeof s===i?s.call(t,{name:"icon",hash:{},data:n}):s))+'"></i>\n          <br>\n'},6:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='    <div id="'+l((i=null!=(i=e.panelName||(null!=t?t.panelName:t))?i:o,typeof i===r?i.call(t,{name:"panelName",hash:{},data:n}):i))+'" class="content ';return s=e["if"].call(t,null!=t?t.active:t,{name:"if",hash:{},fn:this.program(7,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='">\n      ',i=null!=(i=e.html||(null!=t?t.html:t))?i:o,s=typeof i===r?i.call(t,{name:"html",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n    </div>\n"},7:function(){return"active"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.containerId||(null!=t?t.containerId:t))?i:o,typeof i===r?i.call(t,{name:"containerId",hash:{},data:n}):i))+'" class="bordered-tabs">\n  <dl class="tabs right-info-tabs text-center" data-tab>\n';return s=e.each.call(t,null!=t?t.panels:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+="  </dl>\n  <div class='tabs-content'>\n",s=e.each.call(t,null!=t?t.panels:t,{name:"each",hash:{},fn:this.program(6,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+"  </div>\n</div>"},useData:!0});return e.registerPartial("sunstone/panels",a),a}),define("sunstone",["require","jquery","foundation.reveal","foundation.tab","foundation.dropdown","sunstone-config","utils/locale","utils/notifier","utils/dialogs/confirm/dialogId","utils/dialogs/confirm-with-select/dialogId","hbs!sunstone/tab","hbs!./sunstone/buttons","hbs!./sunstone/panels"],function(t){function e(t,e,n,i){var o=$("#"+t);s(t),r(t),setTimeout(function(){var s=h.tabs[t],r=s.formPanelInstances[e],l=$("#"+t+" div[form-panel-id="+e+"]");if(!r){l=$('<div class="tabs-content tabs-contentForm" form-panel-id="'+e+'">          <div class="content active" id="wizardForms"></div>          <div class="content" id="advancedForms"></div>        </div>').appendTo($(".contentForm",o));var c=s.formPanels[e];if(!c)return console.log("Form Panel not defined"),!1;r=new c,s.formPanelInstances[e]=r,r.insert(l)}r.setAction(l,n),s.activeFormPanel=r,r.htmlAdvanced?$(".wizard_tabs",o).show():$(".wizard_tabs",o).hide(),r.resetButton()?$(".reset_button",o).show():$(".reset_button",o).hide(),r.onShow(l),i&&i(r,l),a(t)},13)}function a(t){var e=$("#"+t);$(".loadingForm",e).hide(),$(".tabs-contentForm",e).hide();var a=h.tabs[t].activeFormPanel;a&&($(".right-form-title",e).text(a.title()),$(".submit_button",e).text(a.buttonText()),$("div[form-panel-id="+a.formPanelId+"]",e).show())}function n(t){var e=$("#"+t);$("a[href=back]",e).trigger("click")}function s(t){var e=$("#"+t);$(".right-list",e).hide(),$(".right-info",e).hide(),$(".right-form",e).show(),$(".only-right-list",e).hide(),$(".only-right-info",e).hide(),$(".only-right-form",e).show(),$(".right-form-title",e).text(l.tr("Loading...")),$(".submit_button",e).text(l.tr("Loading...")),$(".tabs-contentForm",e).hide(),$(".loadingForm",e).show()}function i(t){var e=$("#"+t);$(".submit_button",e).attr("disabled","disabled").on("click.disable",function(){return!1})}function r(t){var e=$("#"+t);$(".submit_button",e).removeAttr("disabled").off("click.disable")}t("jquery"),t("foundation.reveal"),t("foundation.tab"),t("foundation.dropdown");var o=t("sunstone-config"),l=t("utils/locale"),c=t("utils/notifier"),d=1e4,u=t("utils/dialogs/confirm/dialogId"),p=t("utils/dialogs/confirm-with-select/dialogId"),h={actions:{},dialogs:{},dialogInstances:{},tabs:{}},f=function(t){var e=t.tabId;if(o.isTabEnabled(e)){h.tabs[e]=t;var a=t.actions;a&&m(a);var n=t.panels;n&&b(e,n);var s=t.dialogs;s&&_(s);var i=t.formPanels;i&&v(e,i)}},m=function(t){return $.each(t,function(t,e){h.actions[t]=e}),!1},_=function(t){return $.each(t,function(t,e){h.dialogs[e.DIALOG_ID]=e}),!1},b=function(t,e){var a={};return $.each(e,function(t,e){a[e.PANEL_ID]=e}),h.tabs[t].panels=a,!1},v=function(t,e){var a={};return $.each(e,function(t,e){a[e.FORM_PANEL_ID]=e}),h.tabs[t].formPanels=a,h.tabs[t].formPanelInstances={},!1},g=function(){for(tabName in h.tabs)w(tabName),T(tabName),y(tabName);S()},y=function(t){h.tabs[t].dataTable&&h.tabs[t].dataTable.initialize()},w=function(e){var a=h.tabs[e],n=a.condition,s=a.tabClass?a.tabClass:"topTab",i=a.parentTab?a.parentTab:"";if(!n||n()){if(a.no_content===!0)s+=" tab_with_no_content";else{a.tabName=e;var r=t("hbs!sunstone/tab");$("div.right-content").append(r(a))}var o='<li id="li_'+e+'" class="'+s+" "+i+'"><a href="#">'+a.title+"</a></li>";if($("div#menu ul#navigation").append(o),i.length){var l=$("div#menu ul#navigation #li_"+i);l.length&&($("div#menu li#li_"+e).hide(),$("div#menu li#li_"+i+" span").css("display","inline-block"))}if(a.forms&&$.each(a.forms,function(t,a){z.addFormPanel(e,t,a)}),a.setup){var c=$("div#"+e,$("div.right-content"));a.setup(c)}}},T=function(e,a,n,s){var i,r,l=n?n:h.tabs[e].buttons,c="";s?(r=s.attr("id"),i=s):(r=e,i=$("div#"+e,$("div.right-content")));var d=$("div.action_blocks",i);if(d.length){var u=t("hbs!./sunstone/buttons"),p=$(u({customId:r,customContext:s}));for(buttonName in l)if(c="",button=l[buttonName],0!=o.isTabActionEnabled(e,buttonName,a)){var f=button.type+"_button",m=[f];switch(button.type){case"select":break;case"image":m.push("action_button");break;case"create_dialog":m.push("action_button"),m.push("top_button");break;default:m.push("top_button")}button.alwaysActive&&m.push("alwaysActive"),button.custom_classes&&m.push(button.custom_classes);var _,b;switch(button.layout){case"create":_=$("#"+r+"create_buttons",p),icon=button.icon?button.icon:'<i class="fa fa-plus"/>',b=button.text?icon+" "+button.text:icon,m.push("success","button","small","radius"),c='<button class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</button>";break;case"refresh":_=$("#"+r+"refresh_buttons",p),b='<span class="fa-stack"><i class="fa fa-refresh fa-stack-lg" style="font-size: 1.5em"></i></span>',m.push("white_button","refresh","secondary","button","small","radius"),c='<a class="'+m.join(" ")+'" href="'+buttonName+'" style="padding-left: 5px">'+b+"</a>";break;case"top":_=$("#"+r+"refresh_buttons",p),b='<span class="fa-stack"><i class="fa fa-refresh fa-stack-2x" style="color: #dfdfdf"></i><i class="fa fa-play fa-stack-1x"></i></span>',m.push("white_button","toggle_top_button","only-right-list","secondary","button","small","radius"),c='<a class="'+m.join(" ")+'" style="padding-left:0px; margin-right: 20px">'+b+"</a>";break;case"main":_=$("#"+r+"main_buttons",p),b=button.text,m.push("secondary","button","small","radius"),c='<button class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</button>";break;case"vmsplay_buttons":_=$("#"+r+"vmsplay_buttons",p),b=button.text,m.push("secondary","button","small","radius"),c='<button class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</button>";break;case"vmspause_buttons":_=$("#"+r+"vmspause_buttons",p),b=button.text,c='<li><a class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</a></li>";break;case"vmsstop_buttons":_=$("#"+r+"vmsstop_buttons",p),b=button.text,c='<li><a class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</a></li>";break;case"vmsrepeat_buttons":_=$("#"+r+"vmsrepeat_buttons",p),b=button.text,c='<li><a class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</a></li>";break;case"vmsdelete_buttons":_=$("#"+r+"vmsdelete_buttons",p),b=button.text,c='<li><a class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</a></li>";break;case"vmsplanification_buttons":_=$("#"+r+"vmsplanification_buttons",p),b=button.text,c='<li><a class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</a></li>";break;case"more_select":_=$("#"+r+"more_buttons",p),b=button.text,c='<li><a class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</a></li>";break;case"user_select":_=$("#"+r+"user_buttons",p),b=button.text,c='<li><a class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</a></li>";break;case"del":_=$("#"+r+"delete_buttons",p),b='<i class=" fa fa-trash-o"/> ',m.push("alert","button","small","radius"),c='<button class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</button>";break;default:_=$("#"+r+"main_buttons",p),b=button.text,m.push("secondary","button","small","radius"),c='<button class="'+m.join(" ")+'" href="'+buttonName+'">'+b+"</button>"}_.append(c)}d.append(p),0==$("#"+r+"more_buttons li",d).length&&$("a[data-dropdown="+r+"more_buttons]",d).remove(),0==$("#"+r+"user_buttons li",d).length&&$("a[data-dropdown="+r+"user_buttons]",d).remove(),0==$("#"+r+"vmsplanification_buttons li",d).length&&$("a[data-dropdown="+r+"vmsplanification_buttons]",d).remove(),0==$("#"+r+"vmsdelete_buttons li",d).length&&$("a[data-dropdown="+r+"vmsdelete_buttons]",d).remove(),0==$("#"+r+"vmsstop_buttons li",d).length&&$("a[data-dropdown="+r+"vmsstop_buttons]",d).remove(),0==$("#"+r+"vmspause_buttons li",d).length&&$("a[data-dropdown="+r+"vmspause_buttons]",d).remove(),0==$("#"+r+"vmsrepeat_buttons li",d).length&&$("a[data-dropdown="+r+"vmsrepeat_buttons]",d).remove(),0==$("#"+r+"user_buttons li",d).length&&$("a[data-dropdown="+r+"user_buttons]",d).remove(),$(".top_button, .list_button",d).attr("disabled",!1),$(".top_button, .list_button",d).attr("disabled",!0),$(".create_dialog_button",d).attr("disabled",!1),$(".alwaysActive",d).attr("disabled",!1),$("#"+r+"reset_button",d).on("click",function(){return P(e),!1}),$("#"+r+"submit_button",d).on("click",function(){return C(e),!1}),$(document).foundation()}},E=function(){$(document).on("click",".action_button",function(){var t=0,e=$(this).val();$.isEmptyObject(e)&&(e=$(this).attr("href"));var a=h.actions[e];if(!a)return c.notifyError("Action "+e+" not defined."),!1;switch(a.type){case"multiple":var n=($(this).parents(".tab"),a.elements());t=D(e,n);break;default:t=D(e)}return t||$(this).hasClass("refresh")||q(u).hide(),!1}),$(document).on("click",".confirm_button",function(){var t=q(u);return $("#"+u).data("buttonAction",$(this).attr("href")),$("#"+u).data("buttonTab",$(this).parents(".tab").attr("id")),t.show(),!1}),$(document).on("click",".confirm_with_select_button",function(){var t=q(p);return $("#"+p).data("buttonAction",$(this).attr("href")),$("#"+p).data("buttonTab",$(this).parents(".tab").attr("id")),t.show(),!1}),$(document).foundation("reflow","dropdown"),$(document).on("click","a[href='back']",function(t){$(".navigation-active-li a",$("#navigation")).click(),t.preventDefault()})},S=function(){var t=$(".left-content ul li.topTab"),e=$(".left-content ul li.subTab");e.on("click",function(){if($(this).hasClass("topTab"))return!1;var t=$(this).attr("id").substring(3);return A(t),!1}),t.on("click",function(){var t=$(this).attr("id").substring(3);if($(this).hasClass("tab_with_no_content")){var e=$("div#menu li."+t);return e.fadeToggle("fast"),!1}return A(t),!1}),E()},I=function(t){var e=$("#"+t);$(".tab").hide(),e.show(),$(".right-info",e).hide(),$(".right-form",e).hide(),$(".right-list",e).show(),$(".only-right-info",e).hide(),$(".only-right-form",e).hide(),$(".only-right-list",e).show()},x=function(t){var e=$("#"+t);$(".tab").hide(),e.show(),$(".right-list",e).hide(),$(".right-form",e).hide(),$(".right-info",e).show(),$(".only-right-list",e).hide(),$(".only-right-form",e).hide(),$(".only-right-info",e).show()},A=function(t){if(!h.tabs[t])return!1;0==t.indexOf("#")&&(t=t.substring(1)),$("#navigation li").removeClass("navigation-active-li"),$("#navigation li#li_"+t).addClass("navigation-active-li");$("#"+t);I(t);var e=h.tabs[t].dataTable;e&&e.recountCheckboxes();var a=h.tabs[t].resource;a&&z.runAction(a+".refresh")},M=function(t,e,a){A(t);var n=$("#"+t);$(".resource-id",n).html(a),$(".resource-info-header",n).text("");var s='<div style="margin-top: 20px; text-align: center; width: 100%"><img src="images/pbar.gif" alt="loading..." /></div>';$(".right-info",n).html(s),x(t),z.runAction(e,a),$(".top_button, .list_button",n).attr("disabled",!1)},k=function(e,a,n,s){var s=s||$(".right-info",$("#"+e)),i=e+"-panels",r=$("dd.active a",$("#"+i));if(r)var l=r.attr("href");var c=h.tabs[e].panels,d=!1,u=[],p=[];$.each(c,function(t,s){if(o.isTabPanelEnabled(n||e,t)){l?l=="#"+t&&(d=!0):(l="#"+t,d=!0);try{var i=new s(a,n);p.push(i),u.push({panelName:t,icon:i.icon,title:i.title,html:i.html(),active:d})}catch(r){console.log(r)}d=!1}});var f=t("hbs!./sunstone/panels"),m=f({containerId:i,panels:u});s.html(m),$.each(p,function(t,e){e.setup(s),e.onShow&&(s.off("click",'[href="#'+e.panelId+'"]'),s.on("click",'[href="#'+e.panelId+'"]',function(){e.onShow(s)}))}),s.foundation("reflow","tab"),$("[href="+l+"]",s).trigger("click")},D=function(t,e,a){var n=h.actions;if(!n[t])return c.notifyError("Action "+t+" not defined"),1;var s=n[t],i=s.notify,r=s.condition;if(r&&!r())return i&&c.notifyError("This action cannot be run"),1;var o=s.call,l=s.callback,d=s.error;switch(s.type){case"create":case"register":o({data:e,success:l,error:d});break;case"single":o(a?{data:{id:e,extra_param:a},success:l,error:d}:{data:{id:e},success:l,error:d});break;case"list":o({success:l,error:d,options:e});break;case"monitor_global":o({timeout:!0,success:l,error:d,data:{monitor:e}});break;case"monitor":case"monitor_single":o({timeout:!0,success:l,error:d,data:{id:e,monitor:a}});break;case"multiple":$.each(e,function(){o(a?{data:{id:this,extra_param:a},success:l,error:d}:{data:{id:this},success:l,error:d})});break;default:e&&a?o(e,a):e?o(e):o()}return i&&c.notifySubmit(t,e,a),0},C=function(t){var e=$("#"+t);s(t),setTimeout(function(){var a=h.tabs[t].activeFormPanel;$("#wizardForms.active",e).length>0?$("#"+a.formPanelId+"Wizard").submit():$("#advancedForms.active",e).length>0&&$("#"+a.formPanelId+"Advanced").submit()},13)},P=function(t,e){s(t),r(t),setTimeout(function(){var n;if(n=e?h.tabs[t].formPanelInstances[e]:h.tabs[t].activeFormPanel){var s=$("#"+t+" div[form-panel-id="+n.formPanelId+"]");e=n.formPanelId,n.reset(s),n.onShow(s)}a(t)},13)},O=function(t,e){var a=null,n=h.tabs[t].buttons;return a=n[e],!a&&n.action_list&&(a=n.action_list.actions[e]),a},R=function(t){return $(".right-info",t).is(":visible")},L=function(t){return $(".right-list",t).is(":visible")},N=function(t){return $(".resource-id",t).text()},U=function(t){return h.actions[t]},F=function(t){return h.tabs[t]?h.tabs[t].dataTable:void 0},q=function(t){var e=h.dialogInstances[t];if(void 0==e){var a=h.dialogs[t],e=new a;e.insert(),h.dialogInstances[t]=e}return e},z={addMainTab:f,addDialogs:_,insertTabs:g,insertPanels:k,showTab:A,showElement:M,showFormPanel:e,resetFormPanel:P,hideFormPanel:n,hideFormPanelLoading:a,disableFormPanelSubmit:i,enableFormPanelSubmit:r,rightInfoVisible:R,rightListVisible:L,rightInfoResourceId:N,runAction:D,getAction:U,getButton:O,getDataTable:F,getDialog:q,insertButtonsInTab:T,TOP_INTERVAL:d};return z}),define("opennebula/helper",["require"],function(){var t={action:function(t,e){return obj={action:{perform:t}},e&&(obj.action.params=e),obj},request:function(t,e,a){var n={request:{resource:t,method:e}};return a&&("array"!=typeof a&&(a=[a]),n.request.data=a),n},pool:function(t,e){var a,n=t+"_POOL",s=t;if("undefined"==typeof n)return Error("Incorrect Pool");var r=[];if(a=e[n]?e[n][s]:null,null==a)return r;if(a.length){for(i=0;i<a.length;i++)r[i]={},r[i][s]=a[i];return r}return r[0]={},r[0][s]=a,r},pool_hash_processing:function(t,e,a){var n;if("undefined"==typeof t)return Error("Incorrect Pool");var s={};if(n=a[t]?a[t][e]:null,null==n)return s;
+if(n.length){for(i=0;i<n.length;i++){var r={};r[e]=n[i],s[r[e].ID]=r}return s}var r={};return r[e]=n,s[r[e].ID]=r,s},pool_name_processing:function(t,e,a){var n;if("undefined"==typeof t)return Error("Incorrect Pool");var s={};if(n=a[t]?a[t][e]:null,null==n)return s;if(n.length){for(i=0;i<n.length;i++){var r=n[i];s[r.ID]=r.NAME}return s}var r=n;return s[r.ID]=r.NAME,s}};return t}),define("opennebula/error",["require"],function(){var t=function(t){var e={};if(t.responseText)try{e=JSON.parse(t.responseText)}catch(a){e.error={message:"It appears there was a server exception. Please check server's log."}}else e.error={};return e.error.http_status=t.status,e};return t}),define("opennebula/action",["require","./helper","./error"],function(t){var e=t("./helper"),a=t("./error"),n={},s={},i={},r={},o=6e4,l=function(t){n[t]=null},c=function(t,n,s,i,r){var o,c,d=t.success,u=t.error,p=t.data.id;i?(o=e.action(s,i),c=e.request(n,s,[p,i])):(o=e.action(s),c=e.request(n,s,p));var h=r?r:n.toLowerCase(),f=t.cache_name?t.cache_name:n;$.ajax({url:h+"/"+p+"/action",type:"POST",contentType:"application/json; charset=utf-8",data:JSON.stringify(o),success:function(){return l(f),d?d(c):null},error:function(t){return u?u(c,a(t)):null}})},d={create:function(t,n,s){var i=t.success,r=t.error,o=t.data,c=e.request(n,"create",o),d=s?s:n.toLowerCase(),u=t.cache_name?t.cache_name:n;$.ajax({url:d,type:"POST",dataType:"json",data:JSON.stringify(o),contentType:"application/json; charset=utf-8",success:function(t){return l(u),i?i(c,t):null},error:function(t){return r?r(c,a(t)):null}})},del:function(t,n,s){var i=t.success,r=t.error,o=t.data.id,c=e.request(n,"delete",o),d=s?s:n.toLowerCase(),u=t.cache_name?t.cache_name:n;$.ajax({url:d+"/"+o,type:"DELETE",success:function(){return l(u),i?i(c):null},error:function(t){return r?r(c,a(t)):null}})},list:function(t,c,d,u){var p=t.success,h=t.error,f=t.timeout||!1,m=e.request(c,"list"),_=d?d:c.toLowerCase(),b=t.cache_name?t.cache_name:c,v=t.options,g=!1;return v&&(g=v.force),g&&l(b),!g&&n[b]&&n[b].timestamp+o>(new Date).getTime()?p?p(m,n[b].data):null:(i[b]||(i[b]=[]),i[b].push({success:p,error:h}),void(s[b]||(s[b]=!0,$.ajax({url:_,type:"GET",data:{timeout:f},dataType:"json",success:function(t){var a;a=u?u(t):e.pool(c,t),r[b]=e.pool_name_processing(c+"_POOL",c,t),n[b]={timestamp:(new Date).getTime(),data:a},s[b]=!1;for(var o=0;o<i[b].length;o++){var l=i[b][o].success;l&&l(m,a,t)}i[b]=[]},error:function(t){s[b]=!1;for(var e=0;e<i[b].length;e++){var n=i[b][e].error;n&&n(m,a(t))}i[b]=[]}}))))},list_in_zone:function(t,n,s){var i=t.success,r=t.error,o=t.timeout||!1,l=e.request(n,"list"),c=s?s:n.toLowerCase();$.ajax({url:c,type:"GET",data:{timeout:o,zone_id:t.data.zone_id},dataType:"json",success:function(t){var a=e.pool(n,t);return i?i(l,a):null},error:function(t){return r?r(l,a(t)):null}})},show:function(t,n,s,i){var r=t.success,o=t.error,l=t.data.id,c=s?e.request(n,s,l):e.request(n,"show",l),d=i?i:n.toLowerCase(),u=d+"/"+l;u=s?u+"/"+s:u,$.ajax({url:u,type:"GET",dataType:"json",success:function(t){return r?r(c,t):null},error:function(t){return o?o(c,a(t)):null}})},chown:function(t,e,a){var n=t.data.extra_param,s={owner_id:n,group_id:"-1"};c(t,e,"chown",s,a)},chgrp:function(t,e,a){var n=t.data.extra_param,s={owner_id:"-1",group_id:n};c(t,e,"chown",s,a)},simple_action:c,monitor:function(t,n,s,i){var r=t.success,o=t.error,l=t.data,c="monitor",d=e.request(n,c,l),u=i?i:n.toLowerCase();u=s?u+"/monitor":u+"/"+t.data.id+"/monitor",$.ajax({url:u,type:"GET",data:l.monitor,dataType:"json",success:function(t){return r?r(d,t):null},error:function(t){return o?o(d,a(t)):null}})},accounting:function(t,n,s){var i=t.success,r=t.error,o=t.data,l="accounting",c=e.request(n,l,o),d=s?s:n.toLowerCase()+"/accounting";$.ajax({url:d,type:"GET",data:o,dataType:"json",success:function(t){return i?i(c,t):null},error:function(t){return r?r(c,a(t)):null}})},showback:function(t,n,s){var i=t.success,r=t.error,o=t.data,l="showback",c=e.request(n,l,o),d=s?s:n.toLowerCase()+"/showback";$.ajax({url:d,type:"GET",data:o,dataType:"json",success:function(t){return i?i(c,t):null},error:function(t){return r?r(c,a(t)):null}})},getName:function(t,e){if(void 0!=r[e]){var a=r[e][t];if(void 0!=a)return a}return""+t},clear_cache:l};return d}),define("opennebula/auth",["require","./helper","./error"],function(t){var e=t("./helper"),a=t("./error"),n="AUTH",s={login:function(t){var s=t.success,i=t.error,r=t.data.username,o=t.data.password,l=t.remember,c=e.request(n,"login");$.ajax({url:"login",type:"POST",data:{remember:l},beforeSend:function(t){var e=r+":"+o,a="Basic ";"function"==typeof btoa?a+=btoa(unescape(encodeURIComponent(e))):(e=CryptoJS.enc.Utf8.parse(e),a+=CryptoJS.enc.Base64.stringify(e)),t.setRequestHeader("Authorization",a)},success:function(t){return s?s(c,t):null},error:function(t){return i?i(c,a(t)):null}})},logout:function(t){var s=t.success,i=t.error,r=e.request(n,"logout");$.ajax({url:"logout",type:"POST",success:function(t){return s?s(r,t):null},error:function(t){return i?i(r,a(t)):null}})}};return s}),define("opennebula/acl",["require","./action"],function(t){var e=t("./action"),a="ACL",n={resource:a,create:function(t){e.create(t,a)},del:function(t){e.del(t,a)},list:function(t){e.list(t,a)}};return n}),define("opennebula/cluster",["require","./action"],function(t){var e=t("./action"),a="CLUSTER",n={resource:a,create:function(t){e.create(t,a)},del:function(t){e.del(t,a)},list:function(t){e.list(t,a)},list_in_zone:function(t){e.list_in_zone(t,a)},show:function(t){e.show(t,a)},addhost:function(t){var n={host_id:t.data.extra_param};e.simple_action(t,a,"addhost",n)},delhost:function(t){var n={host_id:t.data.extra_param};e.simple_action(t,a,"delhost",n)},adddatastore:function(t){var n={ds_id:t.data.extra_param};e.simple_action(t,a,"adddatastore",n)},deldatastore:function(t){var n={ds_id:t.data.extra_param};e.simple_action(t,a,"deldatastore",n)},addvnet:function(t){var n={vnet_id:t.data.extra_param};e.simple_action(t,a,"addvnet",n)},delvnet:function(t){var n={vnet_id:t.data.extra_param};e.simple_action(t,a,"delvnet",n)},fetch_template:function(t){e.show(t,a,"template")},update:function(t){var n={template_raw:t.data.extra_param};e.simple_action(t,a,"update",n)},rename:function(t){var n=t.data.extra_param;e.simple_action(t,a,"rename",n)},getName:function(t){return e.getName(t,a)}};return n}),define("opennebula/datastore",["require","./action"],function(t){var e=t("./action"),a="DATASTORE",n=["ON","OFF"],s={resource:a,stateStr:function(t){return n[t]},create:function(t){e.create(t,a)},del:function(t){e.del(t,a)},list:function(t){e.list(t,a)},list_in_zone:function(t){e.list_in_zone(t,a)},show:function(t){e.show(t,a)},chown:function(t){e.chown(t,a)},chgrp:function(t){e.chgrp(t,a)},chmod:function(t){var n=t.data.extra_param;e.simple_action(t,a,"chmod",n)},update:function(t){var n={template_raw:t.data.extra_param};e.simple_action(t,a,"update",n)},fetch_template:function(t){e.show(t,a,"template")},rename:function(t){var n=t.data.extra_param;e.simple_action(t,a,"rename",n)},enable:function(t){e.simple_action(t,a,"enable")},disable:function(t){e.simple_action(t,a,"disable")},getName:function(t){return e.getName(t,a)}};return s}),define("utils/quotas/quota-limits",["require"],function(){var t="-1",e="-2";return{QUOTA_LIMIT_DEFAULT:t,QUOTA_LIMIT_UNLIMITED:e}}),define("utils/quotas/quota-defaults",["require","./quota-limits"],function(t){function e(t){o=t}function a(t){l=t}function n(){return o}function s(){return l}function i(t){return"User"==t?n():s()}function r(t){$.isEmptyObject(t.VM_QUOTA)&&(t.VM_QUOTA={VM:{VMS:d,MEMORY:d,CPU:d,VOLATILE_SIZE:d}});var e=[];$.isArray(t.DATASTORE_QUOTA.DATASTORE)?e=t.DATASTORE_QUOTA.DATASTORE:t.DATASTORE_QUOTA.DATASTORE&&(e=[t.DATASTORE_QUOTA.DATASTORE]),delete t.DATASTORE_QUOTA,t.DATASTORE_QUOTA={};for(var a=0;a<e.length;a++)t.DATASTORE_QUOTA[e[a].ID]=e[a];var n=[];$.isArray(t.IMAGE_QUOTA.IMAGE)?n=t.IMAGE_QUOTA.IMAGE:t.IMAGE_QUOTA.IMAGE&&(n=[t.IMAGE_QUOTA.IMAGE]),delete t.IMAGE_QUOTA,t.IMAGE_QUOTA={};for(var a=0;a<n.length;a++)t.IMAGE_QUOTA[n[a].ID]=n[a];var s=[];$.isArray(t.NETWORK_QUOTA.NETWORK)?s=t.NETWORK_QUOTA.NETWORK:t.NETWORK_QUOTA.NETWORK&&(s=[t.NETWORK_QUOTA.NETWORK]),delete t.NETWORK_QUOTA,t.NETWORK_QUOTA={};for(var a=0;a<s.length;a++)t.NETWORK_QUOTA[s[a].ID]=s[a];return t}var o={VM_QUOTA:{VM:{CPU:d,MEMORY:d,VMS:d,VOLATILE_SIZE:d}},DATASTORE_QUOTA:{},IMAGE_QUOTA:{},NETWORK_QUOTA:{}},l={VM_QUOTA:{VM:{CPU:d,MEMORY:d,VMS:d,VOLATILE_SIZE:d}},DATASTORE_QUOTA:{},IMAGE_QUOTA:{},NETWORK_QUOTA:{}},c=t("./quota-limits"),d=(c.QUOTA_LIMIT_DEFAULT,c.QUOTA_LIMIT_UNLIMITED);return{setDefaultUserQuotas:e,getDefaultUserQuotas:n,setDefaultGroupQuotas:a,getDefaultGroupQuotas:s,getDefaultQuotas:i,default_quotas:r}}),define("opennebula/group",["require","utils/quotas/quota-defaults","./action","./helper","./error"],function(t){var e=t("utils/quotas/quota-defaults"),a=t("./action"),n=t("./helper"),s=(t("./error"),"GROUP"),i={resource:s,create:function(t){a.create(t,s)},del:function(t){a.del(t,s)},list:function(t){a.list(t,s,null,function(t){var a=n.pool(s,t);e.setDefaultGroupQuotas(e.default_quotas(t.GROUP_POOL.DEFAULT_GROUP_QUOTAS));var i=n.pool_hash_processing("GROUP_POOL","QUOTAS",t);return $.each(a,function(){var t=i[this[s].ID];void 0!=t&&(this[s].VM_QUOTA=t.QUOTAS.VM_QUOTA)}),a})},update:function(t){var e={template_raw:t.data.extra_param};a.simple_action(t,s,"update",e)},set_quota:function(t){var e={quotas:t.data.extra_param};a.simple_action(t,s,"set_quota",e)},show:function(t){var n=t.success;t.success=function(t,a){return e.setDefaultGroupQuotas(e.default_quotas(a.GROUP.DEFAULT_GROUP_QUOTAS)),n?n(t,a):null},a.show(t,s)},accounting:function(t){a.monitor(t,s,!1)},add_admin:function(t){var e=t.data.extra_param;a.simple_action(t,s,"add_admin",e)},del_admin:function(t){var e=t.data.extra_param;a.simple_action(t,s,"del_admin",e)},getName:function(t){return a.getName(t,s)}};return i}),define("opennebula/host",["require","./action"],function(t){var e=t("./action"),a="HOST",n=["INIT","MONITORING_MONITORED","MONITORED","ERROR","DISABLED","MONITORING_ERROR","MONITORING_INIT","MONITORING_DISABLED"],s=["INIT","UPDATE","ON","ERROR","OFF","RETRY","INIT","OFF"],i={resource:a,stateStr:function(t){return n[t]},simpleStateStr:function(t){return s[t]},create:function(t){e.create(t,a)},del:function(t){e.del(t,a)},list:function(t){e.list(t,a)},list_in_zone:function(t){e.list_in_zone(t,a)},show:function(t){e.show(t,a)},update:function(t){var n={template_raw:t.data.extra_param};e.simple_action(t,a,"update",n)},fetch_template:function(t){e.show(t,a,"template")},enable:function(t){e.simple_action(t,a,"enable")},disable:function(t){e.simple_action(t,a,"disable")},monitor:function(t){e.monitor(t,a,!1)},pool_monitor:function(t){e.monitor(t,a,!0)},rename:function(t){var n=t.data.extra_param;e.simple_action(t,a,"rename",n)},getName:function(t){return e.getName(t,a)}};return i}),define("opennebula/image",["require","./action"],function(t){var e=t("./action"),a="IMAGE",n=["INIT","READY","USED","DISABLED","LOCKED","ERROR","CLONE","DELETE","USED_PERS"],s=["OS","CDROM","DATABLOCK","KERNEL","RAMDISK","CONTEXT"],i={resource:a,stateStr:function(t){return n[t]},typeStr:function(t){return s[t]},create:function(t){e.create(t,a)},del:function(t){e.del(t,a)},list:function(t){e.list(t,a)},show:function(t){e.show(t,a)},chown:function(t){e.chown(t,a)},chgrp:function(t){e.chgrp(t,a)},chmod:function(t){var n=t.data.extra_param;e.simple_action(t,a,"chmod",n)},update:function(t){var n={template_raw:t.data.extra_param};e.simple_action(t,a,"update",n)},fetch_template:function(t){e.show(t,a,"template")},enable:function(t){e.simple_action(t,a,"enable")},disable:function(t){e.simple_action(t,a,"disable")},persistent:function(t){e.simple_action(t,a,"persistent")},nonpersistent:function(t){e.simple_action(t,a,"nonpersistent")},chtype:function(t){var n={type:t.data.extra_param};e.simple_action(t,a,"chtype",n)},clone:function(t){var n=t.data.extra_param?t.data.extra_param:{};e.simple_action(t,a,"clone",n)},rename:function(t){var n=t.data.extra_param;e.simple_action(t,a,"rename",n)},getName:function(t){return e.getName(t,a)}};return i}),define("opennebula/marketplace",["require","./action","./error","./helper","utils/notifier","utils/locale"],function(t){var e=t("./action"),a=t("./error"),n=t("./helper"),s=t("utils/notifier"),i=t("utils/locale"),r="MARKETPLACE",o={resource:r,show:function(t){t.error=function(){return s.notifyError(i.tr("Cannot connect to OpenNebula Marketplace"))},e.show(t,r)},list:function(t){var e=t.success,s=t.error,i=t.timeout||!1,r=n.request("MARKETPLACE","list");$.ajax({url:"marketplace",type:"GET",data:{timeout:i},dataType:"json",success:function(t){return $(".marketplace_error_message").hide(),e?e(r,t):null},error:function(t){return $(".marketplace_error_message").show(),s?s(r,a(t)):null}})}};return o}),define("opennebula/network",["require","./action"],function(t){var e=t("./action"),a="VNET",n={resource:a,create:function(t){e.create(t,a)},del:function(t){e.del(t,a)},list:function(t){e.list(t,a)},list_in_zone:function(t){e.list_in_zone(t,a)},show:function(t){e.show(t,a)},chown:function(t){e.chown(t,a)},chgrp:function(t){e.chgrp(t,a)},chmod:function(t){var n=t.data.extra_param;e.simple_action(t,a,"chmod",n)},publish:function(t){e.simple_action(t,a,"publish")},unpublish:function(t){e.simple_action(t,a,"unpublish")},hold:function(t){var n=t.data.extra_param;e.simple_action(t,a,"hold",n)},release:function(t){var n=t.data.extra_param;e.simple_action(t,a,"release",n)},add_ar:function(t){var n={ar_template:t.data.extra_param};e.simple_action(t,a,"add_ar",n)},rm_ar:function(t){var n=t.data.extra_param;e.simple_action(t,a,"rm_ar",n)},update_ar:function(t){var n={ar_template:t.data.extra_param};e.simple_action(t,a,"update_ar",n)},reserve:function(t){var n=t.data.extra_param;e.simple_action(t,a,"reserve",n)},update:function(t){var n={template_raw:t.data.extra_param};e.simple_action(t,a,"update",n)},fetch_template:function(t){e.show(t,a,"template")},rename:function(t){var n=t.data.extra_param;e.simple_action(t,a,"rename",n)},getName:function(t){return e.getName(t,a)}};return n}),define("tabs/oneflow-services-tab/tabId",["require"],function(){return"oneflow-services"}),define("tabs/oneflow-services-tab/panels/roles/panelId",["require"],function(){return"service_roles_tab"}),define("opennebula/role",["require","./action","./error","./helper","utils/locale","tabs/oneflow-services-tab/tabId","tabs/oneflow-services-tab/panels/roles/panelId"],function(t){function e(){var t=$("#"+l+" #"+c),e={period:$("#batch_action_period",t).val(),number:$("#batch_action_number",t).val()};return e}var a=t("./action"),n=t("./error"),s=t("./helper"),i=t("utils/locale"),r="DOCUMENT",o="service",l=t("tabs/oneflow-services-tab/tabId"),c=t("tabs/oneflow-services-tab/panels/roles/panelId"),d={resource:r,state:function(t){t=t?t:0;var e=[i.tr("PENDING"),i.tr("DEPLOYING"),i.tr("RUNNING"),i.tr("UNDEPLOYING"),i.tr("WARNING"),i.tr("DONE"),i.tr("FAILED_UNDEPLOYING"),i.tr("FAILED_DEPLOYING"),i.tr("SCALING"),i.tr("FAILED_SCALING"),i.tr("COOLDOWN")][t];return e?e:t},hold:function(t){a.simple_action(t,r,"hold",e(),o)},release:function(t){a.simple_action(t,r,"release",e(),o)},suspend:function(t){a.simple_action(t,r,"suspend",e(),o)},resume:function(t){a.simple_action(t,r,"resume",e(),o)},stop:function(t){a.simple_action(t,r,"stop",e(),o)},boot:function(t){a.simple_action(t,r,"boot",e(),o)},delete_recreate:function(t){a.simple_action(t,r,"delete-recreate",e(),o)},reboot:function(t){a.simple_action(t,r,"reboot",e(),o)},reboot_hard:function(t){a.simple_action(t,r,"reboot-hard",e(),o)},poweroff:function(t){a.simple_action(t,r,"poweroff",e(),o)},poweroff_hard:function(t){a.simple_action(t,r,"poweroff-hard",e(),o)},undeploy:function(t){a.simple_action(t,r,"undeploy",e(),o)},undeploy_hard:function(t){a.simple_action(t,r,"undeploy-hard",e(),o)},snapshot_create:function(t){a.simple_action(t,r,"snapshot-create",e(),o)},shutdown:function(t){a.simple_action(t,r,"shutdown",e(),o)},cancel:function(t){a.simple_action(t,r,"shutdown-hard",e(),o)},del:function(t){a.simple_action(t,r,"delete",e(),o)},recover:function(t){a.simple_action(t,r,"recover",null,o)},update:function(t){var e=s.request(r,"update",t.data.id);$.ajax({url:o+"/"+t.data.id,type:"PUT",dataType:"json",contentType:"application/json; charset=utf-8",data:JSON.stringify(t.data.extra_param),success:function(a){return t.success?t.success(e,a):null},error:function(a){return t.error?t.error(e,n(a)):null}})}};return d}),define("opennebula/securitygroup",["require","./action"],function(t){var e=t("./action"),a="SECURITY_GROUP",n={resource:"SECURITY_GROUP",create:function(t){e.create(t,a)},del:function(t){e.del(t,a)},list:function(t){e.list(t,a)},show:function(t){e.show(t,a)},chown:function(t){e.chown(t,a)},chgrp:function(t){e.chgrp(t,a)},chmod:function(t){var n=t.data.extra_param;e.simple_action(t,a,"chmod",n)},update:function(t){var n={template_raw:t.data.extra_param};e.simple_action(t,a,"update",n)},fetch_template:function(t){e.show(t,a,"template")},clone:function(t){var n=t.data.extra_param?t.data.extra_param:"",s={name:n};e.simple_action(t,a,"clone",s)},rename:function(t){var n=t.data.extra_param;e.simple_action(t,a,"rename",n)},getName:function(t){return e.getName(t,a)}};return n}),define("opennebula/service",["require","./action","utils/locale"],function(t){var e=t("./action"),a=t("utils/locale"),n="DOCUMENT",s="service",i="SERVICE",r={resource:n,del:function(t){t.cache_name=i,e.del(t,n,s)},list:function(t){t.cache_name=i,e.list(t,n,s)},show:function(t){t.cache_name=i,e.show(t,n,!1,s)},chown:function(t){t.cache_name=i,e.chown(t,n,s)},chgrp:function(t){t.cache_name=i,e.chgrp(t,n,s)},chmod:function(t){t.cache_name=i;var a=t.data.extra_param;e.simple_action(t,n,"chmod",a,s)},shutdown:function(t){t.cache_name=i,e.simple_action(t,n,"shutdown",null,s)},recover:function(t){t.cache_name=i,e.simple_action(t,n,"recover",null,s)},state:function(t){var e=[a.tr("PENDING"),a.tr("DEPLOYING"),a.tr("RUNNING"),a.tr("UNDEPLOYING"),a.tr("WARNING"),a.tr("DONE"),a.tr("FAILED_UNDEPLOYING"),a.tr("FAILED_DEPLOYING"),a.tr("SCALING"),a.tr("FAILED_SCALING"),a.tr("COOLDOWN")][t];return e?e:t},getName:function(t){return e.getName(t,i)}};return r}),define("opennebula/servicetemplate",["require","./action"],function(t){var e=t("./action"),a="DOCUMENT",n="service_template",s="SERVICE_TEMPLATE",i={resource:a,create:function(t){t.cache_name=s,e.create(t,a,n)},instantiate:function(t){t.cache_name=s;var i=t.data.extra_param;e.simple_action(t,a,"instantiate",i,n)},update:function(t){t.cache_name=s;var i={template_json:t.data.extra_param};e.simple_action(t,a,"update",i,n)},del:function(t){t.cache_name=s,e.del(t,a,n)},list:function(t){t.cache_name=s,e.list(t,a,n)},show:function(t){t.cache_name=s,e.show(t,a,!1,n)},chown:function(t){t.cache_name=s,e.chown(t,a,n)},chgrp:function(t){t.cache_name=s,e.chgrp(t,a,n)},chmod:function(t){t.cache_name=s;var i=t.data.extra_param;e.simple_action(t,a,"chmod",i,n)},getName:function(t){return e.getName(t,s)}};return i}),define("opennebula/support",["require","./action"],function(t){var e=t("./action"),a="REQUEST",n="support/request",s="REQUEST",i={resource:a,create:function(t){e.create(t,a,n)},update:function(t){e.simple_action(t,a,"update",t.data.extra_param,n)},list:function(t){t.cache_name=s,e.clear_cache(t.cache_name),e.list(t,a,n)},show:function(t){e.show(t,a,!1,n)}};return i}),define("opennebula/template",["require","./action"],function(t){var e=t("./action"),a="VMTEMPLATE",n={resource:a,create:function(t){e.create(t,a)},del:function(t){e.del(t,a)},list:function(t){e.list(t,a)},show:function(t){e.show(t,a)},chown:function(t){e.chown(t,a)},chgrp:function(t){e.chgrp(t,a)},chmod:function(t){var n=t.data.extra_param;e.simple_action(t,a,"chmod",n)},update:function(t){var n=t.data.extra_param;e.simple_action(t,a,"update",n)},fetch_template:function(t){e.show(t,a,"template")},publish:function(t){e.simple_action(t,a,"publish")},unpublish:function(t){e.simple_action(t,a,"unpublish")},instantiate:function(t){var n=t.data.extra_param?t.data.extra_param:{};e.simple_action(t,a,"instantiate",n)},clone:function(t){var n=t.data.extra_param?t.data.extra_param:"",s={name:n};e.simple_action(t,a,"clone",s)},rename:function(t){var n=t.data.extra_param;e.simple_action(t,a,"rename",n)},getName:function(t){return e.getName(t,a)}};return n}),define("opennebula/user",["require","utils/quotas/quota-defaults","./action","./helper","./error"],function(t){var e=t("utils/quotas/quota-defaults"),a=t("./action"),n=t("./helper"),s=(t("./error"),"USER"),i={resource:s,create:function(t){a.create(t,s)},del:function(t){a.del(t,s)},list:function(t){a.list(t,s,null,function(t){var a=n.pool(s,t);e.setDefaultUserQuotas(e.default_quotas(t.USER_POOL.DEFAULT_USER_QUOTAS));var i=n.pool_hash_processing("USER_POOL","QUOTAS",t);return $.each(a,function(){var t=i[this[s].ID];void 0!=t&&(this[s].VM_QUOTA=t.QUOTAS.VM_QUOTA)}),a})},show:function(t){var n=t.success;t.success=function(t,a){return e.setDefaultUserQuotas(e.default_quotas(a.USER.DEFAULT_USER_QUOTAS)),n?n(t,a):null},a.show(t,s)},passwd:function(t){var e={password:t.data.extra_param};a.simple_action(t,s,"passwd",e)},chgrp:function(t){var e={group_id:t.data.extra_param};a.simple_action(t,s,"chgrp",e)},chauth:function(t){var e={auth_driver:t.data.extra_param};a.simple_action(t,s,"chauth",e)},update:function(t){var e={template_raw:t.data.extra_param};a.simple_action(t,s,"update",e)},fetch_template:function(t){a.show(t,s,"template")},accounting:function(t){a.monitor(t,s,!1)},set_quota:function(t){var e={quotas:t.data.extra_param};a.simple_action(t,s,"set_quota",e)},addgroup:function(t){var e={group_id:t.data.extra_param};a.simple_action(t,s,"addgroup",e)},delgroup:function(t){var e={group_id:t.data.extra_param};a.simple_action(t,s,"delgroup",e)},getName:function(t){return a.getName(t,s)}};return i}),define("opennebula/vdc",["require","./action"],function(t){var e=t("./action"),a="VDC",n={resource:a,create:function(t){e.create(t,a)},del:function(t){e.del(t,a)},list:function(t){e.list(t,a)},show:function(t){e.show(t,a)},update:function(t){var n={template_raw:t.data.extra_param};e.simple_action(t,a,"update",n)},fetch_template:function(t){e.show(t,a,"template")},rename:function(t){var n=t.data.extra_param;e.simple_action(t,a,"rename",n)},add_group:function(t){var n=t.data.extra_param;e.simple_action(t,a,"add_group",n)},del_group:function(t){var n=t.data.extra_param;e.simple_action(t,a,"del_group",n)},add_cluster:function(t){var n=t.data.extra_param;e.simple_action(t,a,"add_cluster",n)},del_cluster:function(t){var n=t.data.extra_param;e.simple_action(t,a,"del_cluster",n)},add_host:function(t){var n=t.data.extra_param;e.simple_action(t,a,"add_host",n)},del_host:function(t){var n=t.data.extra_param;e.simple_action(t,a,"del_host",n)},add_datastore:function(t){var n=t.data.extra_param;e.simple_action(t,a,"add_datastore",n)},del_datastore:function(t){var n=t.data.extra_param;e.simple_action(t,a,"del_datastore",n)},add_vnet:function(t){var n=t.data.extra_param;e.simple_action(t,a,"add_vnet",n)},del_vnet:function(t){var n=t.data.extra_param;e.simple_action(t,a,"del_vnet",n)},getName:function(t){return e.getName(t,a)}};return n}),define("opennebula/vm",["require","./action","./helper","./error"],function(t){function e(t){if(t.HISTORY_RECORDS&&t.HISTORY_RECORDS.HISTORY){var e=t.HISTORY_RECORDS.HISTORY;return e.constructor==Array?e[e.length-1]:e}return null}function a(t){var a=e(t);return a?-1==$.inArray(a.VMMMAD,["vcenter","ec2","az","sl"]):!1}function n(t){var a=e(t);return a?-1==$.inArray(a.VMMMAD,["ec2","az","sl"]):!1}function s(t){var e,a=t.TEMPLATE,n={};return $.each(b,function(t,s){e=a[s],e&&(n[s]=e)}),n}function i(t){var e,a=t.TEMPLATE,n={};return $.each(v,function(t,s){e=a[s],e&&(n[s]=e)}),n}function r(t,e){var e=e||"<br>",a=t.TEMPLATE.NIC,n=[];void 0!=a&&($.isArray(a)||(a=[a]),$.each(a,function(t,e){e.IP&&n.push(e.IP),e.IP6_GLOBAL&&n.push(e.IP6_GLOBAL),e.IP6_ULA&&n.push(e.IP6_ULA)}));var s,i=t.TEMPLATE;return $.each(b,function(t,e){s=i[e],s&&-1==$.inArray(s,n)&&n.push(s)}),n.length>0?n.join(e):"--"}function o(t){var e=t.TEMPLATE.GRAPHICS,a=parseInt(t.LCM_STATE);return e&&e.TYPE&&"vnc"==e.TYPE.toLowerCase()&&-1!=$.inArray(a,_)}function l(t){var e=t.TEMPLATE.GRAPHICS,a=parseInt(t.LCM_STATE);return e&&e.TYPE&&"spice"==e.TYPE.toLowerCase()&&-1!=$.inArray(a,_)}var c=t("./action"),d=t("./helper"),u=t("./error"),p="VM",h=["INIT","PENDING","HOLD","ACTIVE","STOPPED","SUSPENDED","DONE","FAILED","POWEROFF","UNDEPLOYED"],f=["LCM_INIT","PROLOG","BOOT","RUNNING","MIGRATE","SAVE_STOP","SAVE_SUSPEND","SAVE_MIGRATE","PROLOG_MIGRATE","PROLOG_RESUME","EPILOG_STOP","EPILOG","SHUTDOWN","CANCEL","FAILURE","CLEANUP_RESUBMIT","UNKNOWN","HOTPLUG","SHUTDOWN_POWEROFF","BOOT_UNKNOWN","BOOT_POWEROFF","BOOT_SUSPENDED","BOOT_STOPPED","CLEANUP_DELETE","HOTPLUG_SNAPSHOT","HOTPLUG_NIC","HOTPLUG_SAVEAS","HOTPLUG_SAVEAS_POWEROFF","HOTPLUG_SAVEAS_SUSPENDED","SHUTDOWN_UNDEPLOY","EPILOG_UNDEPLOY","PROLOG_UNDEPLOY","BOOT_UNDEPLOY","HOTPLUG_PROLOG_POWEROFF","HOTPLUG_EPILOG_POWEROFF","BOOT_MIGRATE","BOOT_FAILURE","BOOT_MIGRATE_FAILURE","PROLOG_MIGRATE_FAILURE","PROLOG_FAILURE","EPILOG_FAILURE","EPILOG_STOP_FAILURE","EPILOG_UNDEPLOY_FAILURE","PROLOG_MIGRATE_POWEROFF","PROLOG_MIGRATE_POWEROFF_FAILURE","PROLOG_MIGRATE_SUSPEND","PROLOG_MIGRATE_SUSPEND_FAILURE","BOOT_UNDEPLOY_FAILURE","BOOT_STOPPED_FAILURE","PROLOG_RESUME_FAILURE","PROLOG_UNDEPLOY_FAILURE"],m=["LCM_INIT","PROLOG","BOOT","RUNNING","MIGRATE","SAVE","SAVE","SAVE","MIGRATE","PROLOG","EPILOG","EPILOG","SHUTDOWN","SHUTDOWN","FAILURE","CLEANUP","UNKNOWN","HOTPLUG","SHUTDOWN","BOOT","BOOT","BOOT","BOOT","CLEANUP","SNAPSHOT","HOTPLUG","HOTPLUG","HOTPLUG","HOTPLUG","SHUTDOWN","EPILOG","PROLOG","BOOT","HOTPLUG","HOTPLUG","BOOT","FAILURE","FAILURE","FAILURE","FAILURE","FAILURE","FAILURE","FAILURE","MIGRATE","FAILURE","MIGRATE","FAILURE","FAILURE","FAILURE","FAILURE","FAILURE"],_=[3,4,12,13,16,17,18,24,25,26,27,28,29],b=["GUEST_IP","AWS_IP_ADDRESS","AZ_IPADDRESS","SL_PRIMARYIPADDRESS"],v=["GUEST_IP","AWS_IP_ADDRESS","AWS_DNS_NAME","AWS_PRIVATE_IP_ADDRESS","AWS_PRIVATE_DNS_NAME","AWS_SECURITY_GROUPS","AZ_IPADDRESS","SL_PRIMARYIPADDRESS"],g=["NONE","ERROR","USER"],y=["none","migrate","live-migrate","shutdown","shutdown-hard","undeploy","undeploy-hard","hold","release","stop","suspend","resume","boot","delete","delete-recreate","reboot","reboot-hard","resched","unresched","poweroff","poweroff-hard","disk-attach","disk-detach","nic-attach","nic-detach"],w={resource:p,state:{INIT:0,PENDING:1,HOLD:2,ACTIVE:3,STOPPED:4,SUSPENDED:5,DONE:6,FAILED:7,POWEROFF:8,UNDEPLOYED:9},lcm_state:{LCM_INIT:0,PROLOG:1,BOOT:2,RUNNING:3,MIGRATE:4,SAVE_STOP:5,SAVE_SUSPEND:6,SAVE_MIGRATE:7,PROLOG_MIGRATE:8,PROLOG_RESUME:9,EPILOG_STOP:10,EPILOG:11,SHUTDOWN:12,CANCEL:13,FAILURE:14,CLEANUP_RESUBMIT:15,UNKNOWN:16,HOTPLUG:17,SHUTDOWN_POWEROFF:18,BOOT_UNKNOWN:19,BOOT_POWEROFF:20,BOOT_SUSPENDED:21,BOOT_STOPPED:22,CLEANUP_DELETE:23,HOTPLUG_SNAPSHOT:24,HOTPLUG_NIC:25,HOTPLUG_SAVEAS:26,HOTPLUG_SAVEAS_POWEROFF:27,HOTPLUG_SAVEAS_SUSPENDED:28,SHUTDOWN_UNDEPLOY:29,EPILOG_UNDEPLOY:30,PROLOG_UNDEPLOY:31,BOOT_UNDEPLOY:32,HOTPLUG_PROLOG_POWEROFF:33,HOTPLUG_EPILOG_POWEROFF:34,BOOT_MIGRATE:35,BOOT_FAILURE:36,BOOT_MIGRATE_FAILURE:37,PROLOG_MIGRATE_FAILURE:38,PROLOG_FAILURE:39,EPILOG_FAILURE:40,EPILOG_STOP_FAILURE:41,EPILOG_UNDEPLOY_FAILURE:42,PROLOG_MIGRATE_POWEROFF:43,PROLOG_MIGRATE_POWEROFF_FAILURE:44,PROLOG_MIGRATE_SUSPEND:45,PROLOG_MIGRATE_SUSPEND_FAILURE:46,BOOT_UNDEPLOY_FAILURE:47,BOOT_STOPPED_FAILURE:48,PROLOG_RESUME_FAILURE:49,PROLOG_UNDEPLOY_FAILURE:50},create:function(t){c.create(t,p)},del:function(t){c.del(t,p)},list:function(t){c.list(t,p)},show:function(t){c.show(t,p)},chown:function(t){c.chown(t,p)},chgrp:function(t){c.chgrp(t,p)},chmod:function(t){var e=t.data.extra_param;c.simple_action(t,p,"chmod",e)},shutdown:function(t){c.simple_action(t,p,"shutdown")},hold:function(t){c.simple_action(t,p,"hold")},release:function(t){c.simple_action(t,p,"release")},stop:function(t){c.simple_action(t,p,"stop")},cancel:function(t){c.simple_action(t,p,"cancel")},suspend:function(t){c.simple_action(t,p,"suspend")},resume:function(t){c.simple_action(t,p,"resume")},resubmit:function(t){c.simple_action(t,p,"resubmit")},poweroff:function(t){var e={hard:!1};c.simple_action(t,p,"poweroff",e)},poweroff_hard:function(t){var e={hard:!0};c.simple_action(t,p,"poweroff",e)},undeploy:function(t){var e={hard:!1};c.simple_action(t,p,"undeploy",e)},undeploy_hard:function(t){var e={hard:!0};c.simple_action(t,p,"undeploy",e)},reboot:function(t){c.simple_action(t,p,"reboot")},reset:function(t){c.simple_action(t,p,"reset")},log:function(t){c.show(t,p,"log")},deploy:function(t){var e=t.data.extra_param;c.simple_action(t,p,"deploy",e)},livemigrate:function(t){var e=t.data.extra_param;c.simple_action(t,p,"livemigrate",e)},migrate:function(t){var e=t.data.extra_param;c.simple_action(t,p,"migrate",e)},saveas:function(t){var e=t.data.extra_param;c.simple_action(t,p,"saveas",e)},disk_snapshot_cancel:function(t){var e={disk_id:t.data.extra_param};c.simple_action(t,p,"disk_snapshot_cancel",e)},snapshot_create:function(t){var e=t.data.extra_param;c.simple_action(t,p,"snapshot_create",e)},snapshot_revert:function(t){var e=t.data.extra_param;c.simple_action(t,p,"snapshot_revert",e)},snapshot_delete:function(t){var e=t.data.extra_param;c.simple_action(t,p,"snapshot_delete",e)},vnc:function(t,e){var a=t.success,n=t.error,s=t.data.id,i=p,r=e,o=(d.action(r),d.request(i,r,s));$.ajax({url:"vm/"+s+"/startvnc",type:"POST",dataType:"json",success:function(t){return a?a(o,t):null},error:function(t){return n?n(o,u(t)):null}})},update:function(t){var e={template_raw:t.data.extra_param};c.simple_action(t,p,"update",e)},monitor:function(t){c.monitor(t,p,!1)},pool_monitor:function(t){c.monitor(t,p,!0)},resize:function(t){var e=t.data.extra_param;c.simple_action(t,p,"resize",e)},attachdisk:function(t){var e={disk_template:t.data.extra_param};c.simple_action(t,p,"attachdisk",e)},detachdisk:function(t){var e={disk_id:t.data.extra_param};c.simple_action(t,p,"detachdisk",e)},attachnic:function(t){var e={nic_template:t.data.extra_param};c.simple_action(t,p,"attachnic",e)},detachnic:function(t){var e={nic_id:t.data.extra_param};c.simple_action(t,p,"detachnic",e)},rename:function(t){var e=t.data.extra_param;c.simple_action(t,p,"rename",e)},resched:function(t){c.simple_action(t,p,"resched")},unresched:function(t){c.simple_action(t,p,"unresched")},recover:function(t){var e={result:t.data.extra_param};c.simple_action(t,p,"recover",e)},accounting:function(t){c.accounting(t,p)},showback:function(t){c.showback(t,p)},save_as_template:function(t){var e=t.data.extra_param;c.simple_action(t,p,"save_as_template",e)},stateStr:function(t){return h[t]},lcmStateStr:function(t){return f[t]},shortLcmStateStr:function(t){return m[t]},hostnameStr:function(t){var a=h[t.STATE],n="--";if("ACTIVE"==a||"SUSPENDED"==a||"POWEROFF"==a){var s=e(t);s&&(n=s.HOSTNAME)}return n},migrateActionStr:function(t){return y[t]},migrateReasonStr:function(t){return g[t]},ipsStr:r,retrieveExternalIPs:s,retrieveExternalNetworkAttrs:i,isNICGraphsSupported:a,isNICAttachSupported:n,isVNCSupported:o,isSPICESupported:l,getName:function(t){return c.getName(t,p)}};return w}),define("opennebula/zone",["require","./action"],function(t){var e=t("./action"),a="ZONE",n={resource:a,create:function(t){e.create(t,a)},del:function(t){e.del(t,a)},list:function(t){e.list(t,a)},show:function(t){e.show(t,a)},update:function(t){var n={template_raw:t.data.extra_param};e.simple_action(t,a,"update",n)},fetch_template:function(t){e.show(t,a,"template")},rename:function(t){var n=t.data.extra_param;e.simple_action(t,a,"rename",n)},getName:function(t){return e.getName(t,a)}};return n}),define("opennebula",["require","jquery","./opennebula/helper","./opennebula/action","./opennebula/auth","./opennebula/error","./opennebula/acl","./opennebula/cluster","./opennebula/datastore","./opennebula/group","./opennebula/host","./opennebula/image","./opennebula/marketplace","./opennebula/network","./opennebula/role","./opennebula/securitygroup","./opennebula/service","./opennebula/servicetemplate","./opennebula/support","./opennebula/template","./opennebula/user","./opennebula/vdc","./opennebula/vm","./opennebula/zone"],function(t){t("jquery");
+var e=t("./opennebula/helper"),a=t("./opennebula/action"),n=t("./opennebula/auth"),s=t("./opennebula/error"),i=t("./opennebula/acl"),r=t("./opennebula/cluster"),o=t("./opennebula/datastore"),l=t("./opennebula/group"),c=t("./opennebula/host"),d=t("./opennebula/image"),u=t("./opennebula/marketplace"),p=t("./opennebula/network"),h=t("./opennebula/role"),f=t("./opennebula/securitygroup"),m=t("./opennebula/service"),_=t("./opennebula/servicetemplate"),b=t("./opennebula/support"),v=t("./opennebula/template"),g=t("./opennebula/user"),y=t("./opennebula/vdc"),w=t("./opennebula/vm"),T=t("./opennebula/zone");"undefined"!=typeof csrftoken&&$.ajaxPrefilter(function(t,e){var a=e.data;"string"==typeof a?(a=JSON.parse(a),a.csrftoken=csrftoken,t.data=JSON.stringify(a)):(a=a||{},a.csrftoken=csrftoken,t.data=$.param(a))}),$.ajaxSetup({converters:{"text json":function(t){return jQuery.parseJSON(jQuery("<div/>").text(t).html())}}});var E={Helper:e,Action:a,Auth:n,Error:s,Acl:i,Cluster:r,Datastore:o,Group:l,Host:c,Image:d,File:d,Marketplace:u,Network:p,Role:h,SecurityGroup:f,Service:m,ServiceTemplate:_,Support:b,Template:v,User:g,Vdc:y,VM:w,Zone:T};return E}),function(t){"use strict";Foundation.libs.accordion={name:"accordion",version:"5.5.1",settings:{content_class:"content",active_class:"active",multi_expand:!1,toggleable:!0,callback:function(){}},init:function(t,e,a){this.bindings(e,a)},events:function(){var e=this,a=this.S;a(this.scope).off(".fndtn.accordion").on("click.fndtn.accordion","["+this.attr_name()+"] > .accordion-navigation > a",function(n){var s=a(this).closest("["+e.attr_name()+"]"),i=e.attr_name()+"="+s.attr(e.attr_name()),r=s.data(e.attr_name(!0)+"-init")||e.settings,o=a("#"+this.href.split("#")[1]),l=t("> .accordion-navigation",s),c=l.children("."+r.content_class),d=c.filter("."+r.active_class);return n.preventDefault(),s.attr(e.attr_name())&&(c=c.add("["+i+"] dd > ."+r.content_class),l=l.add("["+i+"] .accordion-navigation")),r.toggleable&&o.is(d)?(o.parent(".accordion-navigation").toggleClass(r.active_class,!1),o.toggleClass(r.active_class,!1),r.callback(o),o.triggerHandler("toggled",[s]),void s.triggerHandler("toggled",[o])):(r.multi_expand||(c.removeClass(r.active_class),l.removeClass(r.active_class)),o.addClass(r.active_class).parent().addClass(r.active_class),r.callback(o),o.triggerHandler("toggled",[s]),void s.triggerHandler("toggled",[o]))})},off:function(){},reflow:function(){}}}(jQuery,window,window.document),define("foundation.accordion",["foundation.core"],function(){}),function(t,e,a){var n=function(n){function s(t){var e,a,i={};n.each(t,function(n){(e=n.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(e[1]+" ")&&(a=n.replace(e[0],e[2].toLowerCase()),i[a]=n,"o"===e[1]&&s(t[n]))}),t._hungarianMap=i}function i(t,e,r){t._hungarianMap||s(t);var o;n.each(e,function(s){o=t._hungarianMap[s],o===a||!r&&e[o]!==a||("o"===o.charAt(0)?(e[o]||(e[o]={}),n.extend(!0,e[o],e[s]),i(t[o],e[o],r)):e[o]=e[s])})}function r(t){var e=Ke.defaults.oLanguage,a=t.sZeroRecords;!t.sEmptyTable&&a&&"No data available in table"===e.sEmptyTable&&Re(t,t,"sZeroRecords","sEmptyTable"),!t.sLoadingRecords&&a&&"Loading..."===e.sLoadingRecords&&Re(t,t,"sZeroRecords","sLoadingRecords"),t.sInfoThousands&&(t.sThousands=t.sInfoThousands),(t=t.sDecimal)&&Be(t)}function o(t){if(fa(t,"ordering","bSort"),fa(t,"orderMulti","bSortMulti"),fa(t,"orderClasses","bSortClasses"),fa(t,"orderCellsTop","bSortCellsTop"),fa(t,"order","aaSorting"),fa(t,"orderFixed","aaSortingFixed"),fa(t,"paging","bPaginate"),fa(t,"pagingType","sPaginationType"),fa(t,"pageLength","iDisplayLength"),fa(t,"searching","bFilter"),t=t.aoSearchCols)for(var e=0,a=t.length;a>e;e++)t[e]&&i(Ke.models.oSearch,t[e])}function l(t){fa(t,"orderable","bSortable"),fa(t,"orderData","aDataSort"),fa(t,"orderSequence","asSorting"),fa(t,"orderDataType","sortDataType")}function c(t){var t=t.oBrowser,e=n("<div/>").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(n("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(n('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),a=e.find(".test");t.bScrollOversize=100===a[0].offsetWidth,t.bScrollbarLeft=1!==a.offset().left,e.remove()}function d(t,e,n,s,i,r){var o,l=!1;for(n!==a&&(o=n,l=!0);s!==i;)t.hasOwnProperty(s)&&(o=l?e(o,t[s],s,t):t[s],l=!0,s+=r);return o}function u(t,a){var s=Ke.defaults.column,i=t.aoColumns.length,s=n.extend({},Ke.models.oColumn,s,{nTh:a?a:e.createElement("th"),sTitle:s.sTitle?s.sTitle:a?a.innerHTML:"",aDataSort:s.aDataSort?s.aDataSort:[i],mData:s.mData?s.mData:i,idx:i});t.aoColumns.push(s),s=t.aoPreSearchCols,s[i]=n.extend({},Ke.models.oSearch,s[i]),p(t,i,null)}function p(t,e,s){var e=t.aoColumns[e],r=t.oClasses,o=n(e.nTh);if(!e.sWidthOrig){e.sWidthOrig=o.attr("width")||null;var c=(o.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);c&&(e.sWidthOrig=c[1])}s!==a&&null!==s&&(l(s),i(Ke.defaults.column,s),s.mDataProp!==a&&!s.mData&&(s.mData=s.mDataProp),s.sType&&(e._sManualType=s.sType),s.className&&!s.sClass&&(s.sClass=s.className),n.extend(e,s),Re(e,s,"sWidth","sWidthOrig"),"number"==typeof s.iDataSort&&(e.aDataSort=[s.iDataSort]),Re(e,s,"aDataSort"));var d=e.mData,u=I(d),p=e.mRender?I(e.mRender):null,s=function(t){return"string"==typeof t&&-1!==t.indexOf("@")};e._bAttrSrc=n.isPlainObject(d)&&(s(d.sort)||s(d.type)||s(d.filter)),e.fnGetData=function(t,e,n){var s=u(t,e,a,n);return p&&e?p(s,e,t,n):s},e.fnSetData=function(t,e,a){return x(d)(t,e,a)},"number"!=typeof d&&(t._rowReadObject=!0),t.oFeatures.bSort||(e.bSortable=!1,o.addClass(r.sSortableNone)),t=-1!==n.inArray("asc",e.asSorting),s=-1!==n.inArray("desc",e.asSorting),e.bSortable&&(t||s)?t&&!s?(e.sSortingClass=r.sSortableAsc,e.sSortingClassJUI=r.sSortJUIAscAllowed):!t&&s?(e.sSortingClass=r.sSortableDesc,e.sSortingClassJUI=r.sSortJUIDescAllowed):(e.sSortingClass=r.sSortable,e.sSortingClassJUI=r.sSortJUI):(e.sSortingClass=r.sSortableNone,e.sSortingClassJUI="")}function h(t){if(!1!==t.oFeatures.bAutoWidth){var e=t.aoColumns;_e(t);for(var a=0,n=e.length;n>a;a++)e[a].nTh.style.width=e[a].sWidth}e=t.oScroll,(""!==e.sY||""!==e.sX)&&fe(t),Fe(t,null,"column-sizing",[t])}function f(t,e){var a=b(t,"bVisible");return"number"==typeof a[e]?a[e]:null}function m(t,e){var a=b(t,"bVisible"),a=n.inArray(e,a);return-1!==a?a:null}function _(t){return b(t,"bVisible").length}function b(t,e){var a=[];return n.map(t.aoColumns,function(t,n){t[e]&&a.push(n)}),a}function v(t){var e,n,s,i,r,o,l,c,d,u=t.aoColumns,p=t.aoData,h=Ke.ext.type.detect;for(e=0,n=u.length;n>e;e++)if(l=u[e],d=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){for(s=0,i=h.length;i>s;s++){for(r=0,o=p.length;o>r&&(d[r]===a&&(d[r]=T(t,r,e,"type")),c=h[s](d[r],t),c||s===h.length-1)&&"html"!==c;r++);if(c){l.sType=c;break}}l.sType||(l.sType="string")}}function g(t,e,s,i){var r,o,l,c,d,p,h=t.aoColumns;if(e)for(r=e.length-1;r>=0;r--){p=e[r];var f=p.targets!==a?p.targets:p.aTargets;for(n.isArray(f)||(f=[f]),o=0,l=f.length;l>o;o++)if("number"==typeof f[o]&&0<=f[o]){for(;h.length<=f[o];)u(t);i(f[o],p)}else if("number"==typeof f[o]&&0>f[o])i(h.length+f[o],p);else if("string"==typeof f[o])for(c=0,d=h.length;d>c;c++)("_all"==f[o]||n(h[c].nTh).hasClass(f[o]))&&i(c,p)}if(s)for(r=0,t=s.length;t>r;r++)i(r,s[r])}function y(t,e,a,s){var i=t.aoData.length,r=n.extend(!0,{},Ke.models.oRow,{src:a?"dom":"data"});r._aData=e,t.aoData.push(r);for(var e=t.aoColumns,r=0,o=e.length;o>r;r++)a&&E(t,i,r,T(t,i,r)),e[r].sType=null;return t.aiDisplayMaster.push(i),(a||!t.oFeatures.bDeferRender)&&P(t,i,a,s),i}function w(t,e){var a;return e instanceof n||(e=n(e)),e.map(function(e,n){return a=C(t,n),y(t,a.data,n,a.cells)})}function T(t,e,n,s){var i=t.iDraw,r=t.aoColumns[n],o=t.aoData[e]._aData,l=r.sDefaultContent,n=r.fnGetData(o,s,{settings:t,row:e,col:n});if(n===a)return t.iDrawError!=i&&null===l&&(Oe(t,0,"Requested unknown parameter "+("function"==typeof r.mData?"{function}":"'"+r.mData+"'")+" for row "+e,4),t.iDrawError=i),l;if(n!==o&&null!==n||null===l){if("function"==typeof n)return n.call(o)}else n=l;return null===n&&"display"==s?"":n}function E(t,e,a,n){t.aoColumns[a].fnSetData(t.aoData[e]._aData,n,{settings:t,row:e,col:a})}function S(t){return n.map(t.match(/(\\.|[^\.])+/g),function(t){return t.replace(/\\./g,".")})}function I(t){if(n.isPlainObject(t)){var e={};return n.each(t,function(t,a){a&&(e[t]=I(a))}),function(t,n,s,i){var r=e[n]||e._;return r!==a?r(t,n,s,i):t}}if(null===t)return function(t){return t};if("function"==typeof t)return function(e,a,n,s){return t(e,a,n,s)};if("string"==typeof t&&(-1!==t.indexOf(".")||-1!==t.indexOf("[")||-1!==t.indexOf("("))){var s=function(t,e,n){var i,r;if(""!==n){r=S(n);for(var o=0,l=r.length;l>o;o++){if(n=r[o].match(ma),i=r[o].match(_a),n){for(r[o]=r[o].replace(ma,""),""!==r[o]&&(t=t[r[o]]),i=[],r.splice(0,o+1),r=r.join("."),o=0,l=t.length;l>o;o++)i.push(s(t[o],e,r));t=n[0].substring(1,n[0].length-1),t=""===t?i:i.join(t);break}if(i)r[o]=r[o].replace(_a,""),t=t[r[o]]();else{if(null===t||t[r[o]]===a)return a;t=t[r[o]]}}}return t};return function(e,a){return s(e,a,t)}}return function(e){return e[t]}}function x(t){if(n.isPlainObject(t))return x(t._);if(null===t)return function(){};if("function"==typeof t)return function(e,a,n){t(e,"set",a,n)};if("string"==typeof t&&(-1!==t.indexOf(".")||-1!==t.indexOf("[")||-1!==t.indexOf("("))){var e=function(t,n,s){var i,s=S(s);i=s[s.length-1];for(var r,o,l=0,c=s.length-1;c>l;l++){if(r=s[l].match(ma),o=s[l].match(_a),r){for(s[l]=s[l].replace(ma,""),t[s[l]]=[],i=s.slice(),i.splice(0,l+1),r=i.join("."),o=0,c=n.length;c>o;o++)i={},e(i,n[o],r),t[s[l]].push(i);return}o&&(s[l]=s[l].replace(_a,""),t=t[s[l]](n)),(null===t[s[l]]||t[s[l]]===a)&&(t[s[l]]={}),t=t[s[l]]}i.match(_a)?t[i.replace(_a,"")](n):t[i.replace(ma,"")]=n};return function(a,n){return e(a,n,t)}}return function(e,a){e[t]=a}}function A(t){return ca(t.aoData,"_aData")}function M(t){t.aoData.length=0,t.aiDisplayMaster.length=0,t.aiDisplay.length=0}function k(t,e,n){for(var s=-1,i=0,r=t.length;r>i;i++)t[i]==e?s=i:t[i]>e&&t[i]--;-1!=s&&n===a&&t.splice(s,1)}function D(t,e,n,s){var i,r=t.aoData[e],o=function(a,n){for(;a.childNodes.length;)a.removeChild(a.firstChild);a.innerHTML=T(t,e,n,"display")};if("dom"!==n&&(n&&"auto"!==n||"dom"!==r.src)){var l=r.anCells;if(l)if(s!==a)o(l[s],s);else for(n=0,i=l.length;i>n;n++)o(l[n],n)}else r._aData=C(t,r,s,s===a?a:r._aData).data;if(r._aSortData=null,r._aFilterData=null,o=t.aoColumns,s!==a)o[s].sType=null;else{for(n=0,i=o.length;i>n;n++)o[n].sType=null;$(r)}}function C(t,e,s,i){var r,o,l=[],c=e.firstChild,d=0,u=t.aoColumns,p=t._rowReadObject,i=i||p?{}:[],h=function(t,e){if("string"==typeof t){var a=t.indexOf("@");-1!==a&&(a=t.substring(a+1),x(t)(i,e.getAttribute(a)))}},t=function(t){(s===a||s===d)&&(r=u[d],o=n.trim(t.innerHTML),r&&r._bAttrSrc?(x(r.mData._)(i,o),h(r.mData.sort,t),h(r.mData.type,t),h(r.mData.filter,t)):p?(r._setter||(r._setter=x(r.mData)),r._setter(i,o)):i[d]=o),d++};if(c)for(;c;)e=c.nodeName.toUpperCase(),("TD"==e||"TH"==e)&&(t(c),l.push(c)),c=c.nextSibling;else for(l=e.anCells,c=0,e=l.length;e>c;c++)t(l[c]);return{data:i,cells:l}}function P(t,a,n,s){var i,r,o,l,c,d=t.aoData[a],u=d._aData,p=[];if(null===d.nTr){for(i=n||e.createElement("tr"),d.nTr=i,d.anCells=p,i._DT_RowIndex=a,$(d),l=0,c=t.aoColumns.length;c>l;l++)o=t.aoColumns[l],r=n?s[l]:e.createElement(o.sCellType),p.push(r),(!n||o.mRender||o.mData!==l)&&(r.innerHTML=T(t,a,l,"display")),o.sClass&&(r.className+=" "+o.sClass),o.bVisible&&!n?i.appendChild(r):!o.bVisible&&n&&r.parentNode.removeChild(r),o.fnCreatedCell&&o.fnCreatedCell.call(t.oInstance,r,T(t,a,l),u,a,l);Fe(t,"aoRowCreatedCallback",null,[i,u,a])}d.nTr.setAttribute("role","row")}function $(t){var e=t.nTr,a=t._aData;if(e){if(a.DT_RowId&&(e.id=a.DT_RowId),a.DT_RowClass){var s=a.DT_RowClass.split(" ");t.__rowc=t.__rowc?ha(t.__rowc.concat(s)):s,n(e).removeClass(t.__rowc.join(" ")).addClass(a.DT_RowClass)}a.DT_RowData&&n(e).data(a.DT_RowData)}}function O(t){var e,a,s,i,r,o=t.nTHead,l=t.nTFoot,c=0===n("th, td",o).length,d=t.oClasses,u=t.aoColumns;for(c&&(i=n("<tr/>").appendTo(o)),e=0,a=u.length;a>e;e++)r=u[e],s=n(r.nTh).addClass(r.sClass),c&&s.appendTo(i),t.oFeatures.bSort&&(s.addClass(r.sSortingClass),!1!==r.bSortable&&(s.attr("tabindex",t.iTabIndex).attr("aria-controls",t.sTableId),Me(t,r.nTh,e))),r.sTitle!=s.html()&&s.html(r.sTitle),ze(t,"header")(t,s,r,d);if(c&&F(t.aoHeader,o),n(o).find(">tr").attr("role","row"),n(o).find(">tr>th, >tr>td").addClass(d.sHeaderTH),n(l).find(">tr>th, >tr>td").addClass(d.sFooterTH),null!==l)for(t=t.aoFooter[0],e=0,a=t.length;a>e;e++)r=u[e],r.nTf=t[e].cell,r.sClass&&n(r.nTf).addClass(r.sClass)}function R(t,e,s){var i,r,o,l,c=[],d=[],u=t.aoColumns.length;if(e){for(s===a&&(s=!1),i=0,r=e.length;r>i;i++){for(c[i]=e[i].slice(),c[i].nTr=e[i].nTr,o=u-1;o>=0;o--)!t.aoColumns[o].bVisible&&!s&&c[i].splice(o,1);d.push([])}for(i=0,r=c.length;r>i;i++){if(t=c[i].nTr)for(;o=t.firstChild;)t.removeChild(o);for(o=0,e=c[i].length;e>o;o++)if(l=u=1,d[i][o]===a){for(t.appendChild(c[i][o].cell),d[i][o]=1;c[i+u]!==a&&c[i][o].cell==c[i+u][o].cell;)d[i+u][o]=1,u++;for(;c[i][o+l]!==a&&c[i][o].cell==c[i][o+l].cell;){for(s=0;u>s;s++)d[i+s][o+l]=1;l++}n(c[i][o].cell).attr("rowspan",u).attr("colspan",l)}}}}function L(t){var e=Fe(t,"aoPreDrawCallback","preDraw",[t]);if(-1!==n.inArray(!1,e))pe(t,!1);else{var e=[],s=0,i=t.asStripeClasses,r=i.length,o=t.oLanguage,l=t.iInitDisplayStart,c="ssp"==Ve(t),d=t.aiDisplay;t.bDrawing=!0,l!==a&&-1!==l&&(t._iDisplayStart=c?l:l>=t.fnRecordsDisplay()?0:l,t.iInitDisplayStart=-1);var l=t._iDisplayStart,u=t.fnDisplayEnd();if(t.bDeferLoading)t.bDeferLoading=!1,t.iDraw++,pe(t,!1);else if(c){if(!t.bDestroying&&!V(t))return}else t.iDraw++;if(0!==d.length)for(o=c?t.aoData.length:u,c=c?0:l;o>c;c++){var p=d[c],h=t.aoData[p];if(null===h.nTr&&P(t,p),p=h.nTr,0!==r){var f=i[s%r];h._sRowStripe!=f&&(n(p).removeClass(h._sRowStripe).addClass(f),h._sRowStripe=f)}Fe(t,"aoRowCallback",null,[p,h._aData,s,c]),e.push(p),s++}else s=o.sZeroRecords,1==t.iDraw&&"ajax"==Ve(t)?s=o.sLoadingRecords:o.sEmptyTable&&0===t.fnRecordsTotal()&&(s=o.sEmptyTable),e[0]=n("<tr/>",{"class":r?i[0]:""}).append(n("<td />",{valign:"top",colSpan:_(t),"class":t.oClasses.sRowEmpty}).html(s))[0];Fe(t,"aoHeaderCallback","header",[n(t.nTHead).children("tr")[0],A(t),l,u,d]),Fe(t,"aoFooterCallback","footer",[n(t.nTFoot).children("tr")[0],A(t),l,u,d]),i=n(t.nTBody),i.children().detach(),i.append(n(e)),Fe(t,"aoDrawCallback","draw",[t]),t.bSorted=!1,t.bFiltered=!1,t.bDrawing=!1}}function N(t,e){var a=t.oFeatures,n=a.bFilter;a.bSort&&Ie(t),n?j(t,t.oPreviousSearch):t.aiDisplay=t.aiDisplayMaster.slice(),!0!==e&&(t._iDisplayStart=0),t._drawHold=e,L(t),t._drawHold=!1}function U(t){var e=t.oClasses,a=n(t.nTable),a=n("<div/>").insertBefore(a),s=t.oFeatures,i=n("<div/>",{id:t.sTableId+"_wrapper","class":e.sWrapper+(t.nTFoot?"":" "+e.sNoFooter)});t.nHolding=a[0],t.nTableWrapper=i[0],t.nTableReinsertBefore=t.nTable.nextSibling;for(var r,o,l,c,d,u,p=t.sDom.split(""),h=0;h<p.length;h++){if(r=null,o=p[h],"<"==o){if(l=n("<div/>")[0],c=p[h+1],"'"==c||'"'==c){for(d="",u=2;p[h+u]!=c;)d+=p[h+u],u++;"H"==d?d=e.sJUIHeader:"F"==d&&(d=e.sJUIFooter),-1!=d.indexOf(".")?(c=d.split("."),l.id=c[0].substr(1,c[0].length-1),l.className=c[1]):"#"==d.charAt(0)?l.id=d.substr(1,d.length-1):l.className=d,h+=u}i.append(l),i=n(l)}else if(">"==o)i=i.parent();else if("l"==o&&s.bPaginate&&s.bLengthChange)r=le(t);else if("f"==o&&s.bFilter)r=K(t);else if("r"==o&&s.bProcessing)r=ue(t);else if("t"==o)r=he(t);else if("i"==o&&s.bInfo)r=ae(t);else if("p"==o&&s.bPaginate)r=ce(t);else if(0!==Ke.ext.feature.length)for(l=Ke.ext.feature,u=0,c=l.length;c>u;u++)if(o==l[u].cFeature){r=l[u].fnInit(t);break}r&&(l=t.aanFeatures,l[o]||(l[o]=[]),l[o].push(r),i.append(r))}a.replaceWith(i)}function F(t,e){var a,s,i,r,o,l,c,d,u,p,h=n(e).children("tr");for(t.splice(0,t.length),i=0,l=h.length;l>i;i++)t.push([]);for(i=0,l=h.length;l>i;i++)for(a=h[i],s=a.firstChild;s;){if("TD"==s.nodeName.toUpperCase()||"TH"==s.nodeName.toUpperCase()){for(d=1*s.getAttribute("colspan"),u=1*s.getAttribute("rowspan"),d=d&&0!==d&&1!==d?d:1,u=u&&0!==u&&1!==u?u:1,r=0,o=t[i];o[r];)r++;for(c=r,p=1===d?!0:!1,o=0;d>o;o++)for(r=0;u>r;r++)t[i+r][c+o]={cell:s,unique:p},t[i+r].nTr=a}s=s.nextSibling}}function q(t,e,a){var n=[];a||(a=t.aoHeader,e&&(a=[],F(a,e)));for(var e=0,s=a.length;s>e;e++)for(var i=0,r=a[e].length;r>i;i++)!a[e][i].unique||n[i]&&t.bSortCellsTop||(n[i]=a[e][i].cell);return n}function z(t,e,a){if(Fe(t,"aoServerParams","serverParams",[e]),e&&n.isArray(e)){var s={},i=/(.*?)\[\]$/;n.each(e,function(t,e){var a=e.name.match(i);a?(a=a[0],s[a]||(s[a]=[]),s[a].push(e.value)):s[e.name]=e.value}),e=s}var r,o=t.ajax,l=t.oInstance;if(n.isPlainObject(o)&&o.data){r=o.data;var c=n.isFunction(r)?r(e):r,e=n.isFunction(r)&&c?c:n.extend(!0,e,c);delete o.data}c={data:e,success:function(e){var n=e.error||e.sError;n&&t.oApi._fnLog(t,0,n),t.json=e,Fe(t,null,"xhr",[t,e]),a(e)},dataType:"json",cache:!1,type:t.sServerMethod,error:function(e,a){var n=t.oApi._fnLog;"parsererror"==a?n(t,0,"Invalid JSON response",1):4===e.readyState&&n(t,0,"Ajax error",7),pe(t,!1)}},t.oAjaxData=e,Fe(t,null,"preXhr",[t,e]),t.fnServerData?t.fnServerData.call(l,t.sAjaxSource,n.map(e,function(t,e){return{name:e,value:t}}),a,t):t.sAjaxSource||"string"==typeof o?t.jqXHR=n.ajax(n.extend(c,{url:o||t.sAjaxSource})):n.isFunction(o)?t.jqXHR=o.call(l,e,a,t):(t.jqXHR=n.ajax(n.extend(c,o)),o.data=r)}function V(t){return t.bAjaxDataGet?(t.iDraw++,pe(t,!0),z(t,G(t),function(e){B(t,e)}),!1):!0}function G(t){var e,a,s,i,r=t.aoColumns,o=r.length,l=t.oFeatures,c=t.oPreviousSearch,d=t.aoPreSearchCols,u=[],p=Se(t);e=t._iDisplayStart,a=!1!==l.bPaginate?t._iDisplayLength:-1;var h=function(t,e){u.push({name:t,value:e})};h("sEcho",t.iDraw),h("iColumns",o),h("sColumns",ca(r,"sName").join(",")),h("iDisplayStart",e),h("iDisplayLength",a);var f={draw:t.iDraw,columns:[],order:[],start:e,length:a,search:{value:c.sSearch,regex:c.bRegex}};for(e=0;o>e;e++)s=r[e],i=d[e],a="function"==typeof s.mData?"function":s.mData,f.columns.push({data:a,name:s.sName,searchable:s.bSearchable,orderable:s.bSortable,search:{value:i.sSearch,regex:i.bRegex}}),h("mDataProp_"+e,a),l.bFilter&&(h("sSearch_"+e,i.sSearch),h("bRegex_"+e,i.bRegex),h("bSearchable_"+e,s.bSearchable)),l.bSort&&h("bSortable_"+e,s.bSortable);return l.bFilter&&(h("sSearch",c.sSearch),h("bRegex",c.bRegex)),l.bSort&&(n.each(p,function(t,e){f.order.push({column:e.col,dir:e.dir}),h("iSortCol_"+t,e.col),h("sSortDir_"+t,e.dir)}),h("iSortingCols",p.length)),r=Ke.ext.legacy.ajax,null===r?t.sAjaxSource?u:f:r?u:f}function B(t,e){var n=e.sEcho!==a?e.sEcho:e.draw,s=e.iTotalRecords!==a?e.iTotalRecords:e.recordsTotal,i=e.iTotalDisplayRecords!==a?e.iTotalDisplayRecords:e.recordsFiltered;if(n){if(1*n<t.iDraw)return;t.iDraw=1*n}for(M(t),t._iRecordsTotal=parseInt(s,10),t._iRecordsDisplay=parseInt(i,10),n=H(t,e),s=0,i=n.length;i>s;s++)y(t,n[s]);t.aiDisplay=t.aiDisplayMaster.slice(),t.bAjaxDataGet=!1,L(t),t._bInitComplete||re(t,e),t.bAjaxDataGet=!0,pe(t,!1)}function H(t,e){var s=n.isPlainObject(t.ajax)&&t.ajax.dataSrc!==a?t.ajax.dataSrc:t.sAjaxDataProp;return"data"===s?e.aaData||e[s]:""!==s?I(s)(e):e}function K(t){var a=t.oClasses,s=t.sTableId,i=t.oLanguage,r=t.oPreviousSearch,o=t.aanFeatures,l='<input type="search" class="'+a.sFilterInput+'"/>',c=i.sSearch,c=c.match(/_INPUT_/)?c.replace("_INPUT_",l):c+l,a=n("<div/>",{id:o.f?null:s+"_filter","class":a.sFilter}).append(n("<label/>").append(c)),o=function(){var e=this.value?this.value:"";e!=r.sSearch&&(j(t,{sSearch:e,bRegex:r.bRegex,bSmart:r.bSmart,bCaseInsensitive:r.bCaseInsensitive}),t._iDisplayStart=0,L(t))},l=null!==t.searchDelay?t.searchDelay:"ssp"===Ve(t)?400:0,d=n("input",a).val(r.sSearch).attr("placeholder",i.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",l?be(o,l):o).bind("keypress.DT",function(t){return 13==t.keyCode?!1:void 0}).attr("aria-controls",s);return n(t.nTable).on("search.dt.DT",function(a,n){if(t===n)try{d[0]!==e.activeElement&&d.val(r.sSearch)}catch(s){}}),a[0]}function j(t,e,n){var s=t.oPreviousSearch,i=t.aoPreSearchCols,r=function(t){s.sSearch=t.sSearch,s.bRegex=t.bRegex,s.bSmart=t.bSmart,s.bCaseInsensitive=t.bCaseInsensitive};if(v(t),"ssp"!=Ve(t)){for(X(t,e.sSearch,n,e.bEscapeRegex!==a?!e.bEscapeRegex:e.bRegex,e.bSmart,e.bCaseInsensitive),r(e),e=0;e<i.length;e++)W(t,i[e].sSearch,e,i[e].bEscapeRegex!==a?!i[e].bEscapeRegex:i[e].bRegex,i[e].bSmart,i[e].bCaseInsensitive);Y(t)}else r(e);t.bFiltered=!0,Fe(t,null,"search",[t])}function Y(t){for(var e,a,n=Ke.ext.search,s=t.aiDisplay,i=0,r=n.length;r>i;i++){for(var o=[],l=0,c=s.length;c>l;l++)a=s[l],e=t.aoData[a],n[i](t,e._aFilterData,a,e._aData,l)&&o.push(a);s.length=0,s.push.apply(s,o)}}function W(t,e,a,n,s,i){if(""!==e)for(var r=t.aiDisplay,n=Q(e,n,s,i),s=r.length-1;s>=0;s--)e=t.aoData[r[s]]._aFilterData[a],n.test(e)||r.splice(s,1)}function X(t,e,a,n,s,i){var r,n=Q(e,n,s,i),s=t.oPreviousSearch.sSearch,i=t.aiDisplayMaster;if(0!==Ke.ext.search.length&&(a=!0),r=J(t),0>=e.length)t.aiDisplay=i.slice();else for((r||a||s.length>e.length||0!==e.indexOf(s)||t.bSorted)&&(t.aiDisplay=i.slice()),e=t.aiDisplay,a=e.length-1;a>=0;a--)n.test(t.aoData[e[a]]._sFilterRow)||e.splice(a,1)}function Q(t,e,a,s){return t=e?t:Z(t),a&&(t="^(?=.*?"+n.map(t.match(/"[^"]+"|[^ ]+/g)||"",function(t){if('"'===t.charAt(0))var e=t.match(/^"(.*)"$/),t=e?e[1]:t;return t.replace('"',"")}).join(")(?=.*?")+").*$"),RegExp(t,s?"i":"")}function Z(t){return t.replace(aa,"\\$1")}function J(t){var e,a,n,s,i,r,o,l,c=t.aoColumns,d=Ke.ext.type.search;for(e=!1,a=0,s=t.aoData.length;s>a;a++)if(l=t.aoData[a],!l._aFilterData){for(r=[],n=0,i=c.length;i>n;n++)e=c[n],e.bSearchable?(o=T(t,a,n,"filter"),d[e.sType]&&(o=d[e.sType](o)),null===o&&(o=""),"string"!=typeof o&&o.toString&&(o=o.toString())):o="",o.indexOf&&-1!==o.indexOf("&")&&(ba.innerHTML=o,o=va?ba.textContent:ba.innerText),o.replace&&(o=o.replace(/[\r\n]/g,"")),r.push(o);l._aFilterData=r,l._sFilterRow=r.join("  "),e=!0}return e}function te(t){return{search:t.sSearch,smart:t.bSmart,regex:t.bRegex,caseInsensitive:t.bCaseInsensitive}}function ee(t){return{sSearch:t.search,bSmart:t.smart,bRegex:t.regex,bCaseInsensitive:t.caseInsensitive}}function ae(t){var e=t.sTableId,a=t.aanFeatures.i,s=n("<div/>",{"class":t.oClasses.sInfo,id:a?null:e+"_info"});return a||(t.aoDrawCallback.push({fn:ne,sName:"information"}),s.attr("role","status").attr("aria-live","polite"),n(t.nTable).attr("aria-describedby",e+"_info")),s[0]}function ne(t){var e=t.aanFeatures.i;if(0!==e.length){var a=t.oLanguage,s=t._iDisplayStart+1,i=t.fnDisplayEnd(),r=t.fnRecordsTotal(),o=t.fnRecordsDisplay(),l=o?a.sInfo:a.sInfoEmpty;o!==r&&(l+=" "+a.sInfoFiltered),l+=a.sInfoPostFix,l=se(t,l),a=a.fnInfoCallback,null!==a&&(l=a.call(t.oInstance,t,s,i,r,o,l)),n(e).html(l)}}function se(t,e){var a=t.fnFormatNumber,n=t._iDisplayStart+1,s=t._iDisplayLength,i=t.fnRecordsDisplay(),r=-1===s;return e.replace(/_START_/g,a.call(t,n)).replace(/_END_/g,a.call(t,t.fnDisplayEnd())).replace(/_MAX_/g,a.call(t,t.fnRecordsTotal())).replace(/_TOTAL_/g,a.call(t,i)).replace(/_PAGE_/g,a.call(t,r?1:Math.ceil(n/s))).replace(/_PAGES_/g,a.call(t,r?1:Math.ceil(i/s)))}function ie(t){var e,a,n,s=t.iInitDisplayStart,i=t.aoColumns;if(a=t.oFeatures,t.bInitialised){for(U(t),O(t),R(t,t.aoHeader),R(t,t.aoFooter),pe(t,!0),a.bAutoWidth&&_e(t),e=0,a=i.length;a>e;e++)n=i[e],n.sWidth&&(n.nTh.style.width=Te(n.sWidth));N(t),i=Ve(t),"ssp"!=i&&("ajax"==i?z(t,[],function(a){var n=H(t,a);for(e=0;e<n.length;e++)y(t,n[e]);t.iInitDisplayStart=s,N(t),pe(t,!1),re(t,a)},t):(pe(t,!1),re(t)))}else setTimeout(function(){ie(t)},200)}function re(t,e){t._bInitComplete=!0,e&&h(t),Fe(t,"aoInitComplete","init",[t,e])}function oe(t,e){var a=parseInt(e,10);t._iDisplayLength=a,qe(t),Fe(t,null,"length",[t,a])}function le(t){for(var e=t.oClasses,a=t.sTableId,s=t.aLengthMenu,i=n.isArray(s[0]),r=i?s[0]:s,s=i?s[1]:s,i=n("<select/>",{name:a+"_length","aria-controls":a,"class":e.sLengthSelect}),o=0,l=r.length;l>o;o++)i[0][o]=new Option(s[o],r[o]);var c=n("<div><label/></div>").addClass(e.sLength);return t.aanFeatures.l||(c[0].id=a+"_length"),c.children().append(t.oLanguage.sLengthMenu.replace("_MENU_",i[0].outerHTML)),n("select",c).val(t._iDisplayLength).bind("change.DT",function(){oe(t,n(this).val()),L(t)}),n(t.nTable).bind("length.dt.DT",function(e,a,s){t===a&&n("select",c).val(s)}),c[0]}function ce(t){var e=t.sPaginationType,a=Ke.ext.pager[e],s="function"==typeof a,i=function(t){L(t)},e=n("<div/>").addClass(t.oClasses.sPaging+e)[0],r=t.aanFeatures;return s||a.fnInit(t,e,i),r.p||(e.id=t.sTableId+"_paginate",t.aoDrawCallback.push({fn:function(t){if(s){var e,n=t._iDisplayStart,o=t._iDisplayLength,l=t.fnRecordsDisplay(),c=-1===o,n=c?0:Math.ceil(n/o),o=c?1:Math.ceil(l/o),l=a(n,o),c=0;for(e=r.p.length;e>c;c++)ze(t,"pageButton")(t,r.p[c],c,l,n,o)}else a.fnUpdate(t,i)},sName:"pagination"})),e}function de(t,e,a){var n=t._iDisplayStart,s=t._iDisplayLength,i=t.fnRecordsDisplay();return 0===i||-1===s?n=0:"number"==typeof e?(n=e*s,n>i&&(n=0)):"first"==e?n=0:"previous"==e?(n=s>=0?n-s:0,0>n&&(n=0)):"next"==e?i>n+s&&(n+=s):"last"==e?n=Math.floor((i-1)/s)*s:Oe(t,0,"Unknown paging action: "+e,5),e=t._iDisplayStart!==n,t._iDisplayStart=n,e&&(Fe(t,null,"page",[t]),a&&L(t)),e}function ue(t){return n("<div/>",{id:t.aanFeatures.r?null:t.sTableId+"_processing","class":t.oClasses.sProcessing}).html(t.oLanguage.sProcessing).insertBefore(t.nTable)[0]}function pe(t,e){t.oFeatures.bProcessing&&n(t.aanFeatures.r).css("display",e?"block":"none"),Fe(t,null,"processing",[t,e])}function he(t){var e=n(t.nTable);e.attr("role","grid");var a=t.oScroll;if(""===a.sX&&""===a.sY)return t.nTable;var s=a.sX,i=a.sY,r=t.oClasses,o=e.children("caption"),l=o.length?o[0]._captionSide:null,c=n(e[0].cloneNode(!1)),d=n(e[0].cloneNode(!1)),u=e.children("tfoot");a.sX&&"100%"===e.attr("width")&&e.removeAttr("width"),u.length||(u=null),a=n("<div/>",{"class":r.sScrollWrapper}).append(n("<div/>",{"class":r.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:s?s?Te(s):null:"100%"}).append(n("<div/>",{"class":r.sScrollHeadInner}).css({"box-sizing":"content-box",width:a.sXInner||"100%"}).append(c.removeAttr("id").css("margin-left",0).append("top"===l?o:null).append(e.children("thead"))))).append(n("<div/>",{"class":r.sScrollBody}).css({overflow:"auto",height:i?Te(i):null,width:s?Te(s):null}).append(e)),u&&a.append(n("<div/>",{"class":r.sScrollFoot}).css({overflow:"hidden",border:0,width:s?s?Te(s):null:"100%"}).append(n("<div/>",{"class":r.sScrollFootInner}).append(d.removeAttr("id").css("margin-left",0).append("bottom"===l?o:null).append(e.children("tfoot")))));var e=a.children(),p=e[0],r=e[1],h=u?e[2]:null;return s&&n(r).scroll(function(){var t=this.scrollLeft;p.scrollLeft=t,u&&(h.scrollLeft=t)}),t.nScrollHead=p,t.nScrollBody=r,t.nScrollFoot=h,t.aoDrawCallback.push({fn:fe,sName:"scrolling"}),a[0]}function fe(t){var e,a,s,i,r,o,l=t.oScroll,c=l.sX,d=l.sXInner,u=l.sY,p=l.iBarWidth,h=n(t.nScrollHead),m=h[0].style,_=h.children("div"),b=_[0].style,v=_.children("table"),_=t.nScrollBody,g=n(_),y=_.style,w=n(t.nScrollFoot).children("div"),T=w.children("table"),E=n(t.nTHead),S=n(t.nTable),I=S[0],x=I.style,A=t.nTFoot?n(t.nTFoot):null,M=t.oBrowser,k=M.bScrollOversize,D=[],C=[],P=[],$=function(t){t=t.style,t.paddingTop="0",t.paddingBottom="0",t.borderTopWidth="0",t.borderBottomWidth="0",t.height=0};S.children("thead, tfoot").remove(),r=E.clone().prependTo(S),e=E.find("tr"),s=r.find("tr"),r.find("th, td").removeAttr("tabindex"),A&&(i=A.clone().prependTo(S),a=A.find("tr"),i=i.find("tr")),c||(y.width="100%",h[0].style.width="100%"),n.each(q(t,r),function(e,a){o=f(t,e),a.style.width=t.aoColumns[o].sWidth}),A&&me(function(t){t.style.width=""},i),l.bCollapse&&""!==u&&(y.height=g[0].offsetHeight+E[0].offsetHeight+"px"),h=S.outerWidth(),""===c?(x.width="100%",k&&(S.find("tbody").height()>_.offsetHeight||"scroll"==g.css("overflow-y"))&&(x.width=Te(S.outerWidth()-p))):""!==d?x.width=Te(d):h==g.width()&&g.height()<S.height()?(x.width=Te(h-p),S.outerWidth()>h-p&&(x.width=Te(h))):x.width=Te(h),h=S.outerWidth(),me($,s),me(function(t){P.push(t.innerHTML),D.push(Te(n(t).css("width")))},s),me(function(t,e){t.style.width=D[e]},e),n(s).height(0),A&&(me($,i),me(function(t){C.push(Te(n(t).css("width")))},i),me(function(t,e){t.style.width=C[e]},a),n(i).height(0)),me(function(t,e){t.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+P[e]+"</div>",t.style.width=D[e]},s),A&&me(function(t,e){t.innerHTML="",t.style.width=C[e]},i),S.outerWidth()<h?(a=_.scrollHeight>_.offsetHeight||"scroll"==g.css("overflow-y")?h+p:h,k&&(_.scrollHeight>_.offsetHeight||"scroll"==g.css("overflow-y"))&&(x.width=Te(a-p)),(""===c||""!==d)&&Oe(t,1,"Possible column misalignment",6)):a="100%",y.width=Te(a),m.width=Te(a),A&&(t.nScrollFoot.style.width=Te(a)),!u&&k&&(y.height=Te(I.offsetHeight+p)),u&&l.bCollapse&&(y.height=Te(u),l=c&&I.offsetWidth>_.offsetWidth?p:0,I.offsetHeight<_.offsetHeight&&(y.height=Te(I.offsetHeight+l))),l=S.outerWidth(),v[0].style.width=Te(l),b.width=Te(l),v=S.height()>_.clientHeight||"scroll"==g.css("overflow-y"),M="padding"+(M.bScrollbarLeft?"Left":"Right"),b[M]=v?p+"px":"0px",A&&(T[0].style.width=Te(l),w[0].style.width=Te(l),w[0].style[M]=v?p+"px":"0px"),g.scroll(),!t.bSorted&&!t.bFiltered||t._drawHold||(_.scrollTop=0)}function me(t,e,a){for(var n,s,i=0,r=0,o=e.length;o>r;){for(n=e[r].firstChild,s=a?a[r].firstChild:null;n;)1===n.nodeType&&(a?t(n,s,i):t(n,i),i++),n=n.nextSibling,s=a?s.nextSibling:null;r++}}function _e(e){var a,s,i=e.nTable,r=e.aoColumns,o=e.oScroll,l=o.sY,c=o.sX,d=o.sXInner,u=r.length,o=b(e,"bVisible"),p=n("th",e.nTHead),f=i.getAttribute("width"),m=i.parentNode,v=!1;for(a=0;a<o.length;a++)s=r[o[a]],null!==s.sWidth&&(s.sWidth=ve(s.sWidthOrig,m),v=!0);if(v||c||l||u!=_(e)||u!=p.length){u=n(i).clone().empty().css("visibility","hidden").removeAttr("id").append(n(e.nTHead).clone(!1)).append(n(e.nTFoot).clone(!1)).append(n("<tbody><tr/></tbody>")),u.find("tfoot th, tfoot td").css("width","");var g=u.find("tbody tr"),p=q(e,u.find("thead")[0]);for(a=0;a<o.length;a++)s=r[o[a]],p[a].style.width=null!==s.sWidthOrig&&""!==s.sWidthOrig?Te(s.sWidthOrig):"";if(e.aoData.length)for(a=0;a<o.length;a++)v=o[a],s=r[v],n(ye(e,v)).clone(!1).append(s.sContentPadding).appendTo(g);if(u.appendTo(m),c&&d?u.width(d):c?(u.css("width","auto"),u.width()<m.offsetWidth&&u.width(m.offsetWidth)):l?u.width(m.offsetWidth):f&&u.width(f),ge(e,u[0]),c){for(a=d=0;a<o.length;a++)s=r[o[a]],l=n(p[a]).outerWidth(),d+=null===s.sWidthOrig?l:parseInt(s.sWidth,10)+l-n(p[a]).width();u.width(Te(d)),i.style.width=Te(d)}for(a=0;a<o.length;a++)s=r[o[a]],(l=n(p[a]).width())&&(s.sWidth=Te(l));i.style.width=Te(u.css("width")),u.remove()}else for(a=0;u>a;a++)r[a].sWidth=Te(p.eq(a).width());f&&(i.style.width=Te(f)),!f&&!c||e._reszEvt||(n(t).bind("resize.DT-"+e.sInstance,be(function(){h(e)})),e._reszEvt=!0)}function be(t,e){var n,s,i=e!==a?e:200;return function(){var e=this,r=+new Date,o=arguments;n&&n+i>r?(clearTimeout(s),s=setTimeout(function(){n=a,t.apply(e,o)},i)):n?(n=r,t.apply(e,o)):n=r}}function ve(t,a){if(!t)return 0;var s=n("<div/>").css("width",Te(t)).appendTo(a||e.body),i=s[0].offsetWidth;return s.remove(),i}function ge(t,e){var a=t.oScroll;(a.sX||a.sY)&&(a=a.sX?0:a.iBarWidth,e.style.width=Te(n(e).outerWidth()-a))}function ye(t,e){var a=we(t,e);if(0>a)return null;var s=t.aoData[a];return s.nTr?s.anCells[e]:n("<td/>").html(T(t,a,e,"display"))[0]}function we(t,e){for(var a,n=-1,s=-1,i=0,r=t.aoData.length;r>i;i++)a=T(t,i,e,"display")+"",a=a.replace(ga,""),a.length>n&&(n=a.length,s=i);return s}function Te(t){return null===t?"0px":"number"==typeof t?0>t?"0px":t+"px":t.match(/\d$/)?t+"px":t}function Ee(){if(!Ke.__scrollbarWidth){var t=n("<p/>").css({width:"100%",height:200,padding:0})[0],e=n("<div/>").css({position:"absolute",top:0,left:0,width:200,height:150,padding:0,overflow:"hidden",visibility:"hidden"}).append(t).appendTo("body"),a=t.offsetWidth;
+e.css("overflow","scroll"),t=t.offsetWidth,a===t&&(t=e[0].clientWidth),e.remove(),Ke.__scrollbarWidth=a-t}return Ke.__scrollbarWidth}function Se(t){var e,s,i,r,o,l,c=[],d=t.aoColumns;e=t.aaSortingFixed,s=n.isPlainObject(e);var u=[];for(i=function(t){t.length&&!n.isArray(t[0])?u.push(t):u.push.apply(u,t)},n.isArray(e)&&i(e),s&&e.pre&&i(e.pre),i(t.aaSorting),s&&e.post&&i(e.post),t=0;t<u.length;t++)for(l=u[t][0],i=d[l].aDataSort,e=0,s=i.length;s>e;e++)r=i[e],o=d[r].sType||"string",u[t]._idx===a&&(u[t]._idx=n.inArray(u[t][1],d[r].asSorting)),c.push({src:l,col:r,dir:u[t][1],index:u[t]._idx,type:o,formatter:Ke.ext.type.order[o+"-pre"]});return c}function Ie(t){var e,a,n,s,i=[],r=Ke.ext.type.order,o=t.aoData,l=0,c=t.aiDisplayMaster;for(v(t),s=Se(t),e=0,a=s.length;a>e;e++)n=s[e],n.formatter&&l++,De(t,n.col);if("ssp"!=Ve(t)&&0!==s.length){for(e=0,a=c.length;a>e;e++)i[c[e]]=e;c.sort(l===s.length?function(t,e){var a,n,r,l,c=s.length,d=o[t]._aSortData,u=o[e]._aSortData;for(r=0;c>r;r++)if(l=s[r],a=d[l.col],n=u[l.col],a=n>a?-1:a>n?1:0,0!==a)return"asc"===l.dir?a:-a;return a=i[t],n=i[e],n>a?-1:a>n?1:0}:function(t,e){var a,n,l,c,d=s.length,u=o[t]._aSortData,p=o[e]._aSortData;for(l=0;d>l;l++)if(c=s[l],a=u[c.col],n=p[c.col],c=r[c.type+"-"+c.dir]||r["string-"+c.dir],a=c(a,n),0!==a)return a;return a=i[t],n=i[e],n>a?-1:a>n?1:0})}t.bSorted=!0}function xe(t){for(var e,a,n=t.aoColumns,s=Se(t),t=t.oLanguage.oAria,i=0,r=n.length;r>i;i++){a=n[i];var o=a.asSorting;e=a.sTitle.replace(/<.*?>/g,"");var l=a.nTh;l.removeAttribute("aria-sort"),a.bSortable&&(0<s.length&&s[0].col==i?(l.setAttribute("aria-sort","asc"==s[0].dir?"ascending":"descending"),a=o[s[0].index+1]||o[0]):a=o[0],e+="asc"===a?t.sSortAscending:t.sSortDescending),l.setAttribute("aria-label",e)}}function Ae(t,e,s,i){var r=t.aaSorting,o=t.aoColumns[e].asSorting,l=function(t,e){var s=t._idx;return s===a&&(s=n.inArray(t[1],o)),s+1<o.length?s+1:e?null:0};"number"==typeof r[0]&&(r=t.aaSorting=[r]),s&&t.oFeatures.bSortMulti?(s=n.inArray(e,ca(r,"0")),-1!==s?(e=l(r[s],!0),null===e?r.splice(s,1):(r[s][1]=o[e],r[s]._idx=e)):(r.push([e,o[0],0]),r[r.length-1]._idx=0)):r.length&&r[0][0]==e?(e=l(r[0]),r.length=1,r[0][1]=o[e],r[0]._idx=e):(r.length=0,r.push([e,o[0]]),r[0]._idx=0),N(t),"function"==typeof i&&i(t)}function Me(t,e,a,n){var s=t.aoColumns[a];Ne(e,{},function(e){!1!==s.bSortable&&(t.oFeatures.bProcessing?(pe(t,!0),setTimeout(function(){Ae(t,a,e.shiftKey,n),"ssp"!==Ve(t)&&pe(t,!1)},0)):Ae(t,a,e.shiftKey,n))})}function ke(t){var e,a,s=t.aLastSort,i=t.oClasses.sSortColumn,r=Se(t),o=t.oFeatures;if(o.bSort&&o.bSortClasses){for(o=0,e=s.length;e>o;o++)a=s[o].src,n(ca(t.aoData,"anCells",a)).removeClass(i+(2>o?o+1:3));for(o=0,e=r.length;e>o;o++)a=r[o].src,n(ca(t.aoData,"anCells",a)).addClass(i+(2>o?o+1:3))}t.aLastSort=r}function De(t,e){var a,n=t.aoColumns[e],s=Ke.ext.order[n.sSortDataType];s&&(a=s.call(t.oInstance,t,e,m(t,e)));for(var i,r=Ke.ext.type.order[n.sType+"-pre"],o=0,l=t.aoData.length;l>o;o++)n=t.aoData[o],n._aSortData||(n._aSortData=[]),(!n._aSortData[e]||s)&&(i=s?a[o]:T(t,o,e,"sort"),n._aSortData[e]=r?r(i):i)}function Ce(t){if(t.oFeatures.bStateSave&&!t.bDestroying){var e={time:+new Date,start:t._iDisplayStart,length:t._iDisplayLength,order:n.extend(!0,[],t.aaSorting),search:te(t.oPreviousSearch),columns:n.map(t.aoColumns,function(e,a){return{visible:e.bVisible,search:te(t.aoPreSearchCols[a])}})};Fe(t,"aoStateSaveParams","stateSaveParams",[t,e]),t.oSavedState=e,t.fnStateSaveCallback.call(t.oInstance,t,e)}}function Pe(t){var e,a,s=t.aoColumns;if(t.oFeatures.bStateSave){var i=t.fnStateLoadCallback.call(t.oInstance,t);if(i&&i.time&&(e=Fe(t,"aoStateLoadParams","stateLoadParams",[t,i]),-1===n.inArray(!1,e)&&(e=t.iStateDuration,!(e>0&&i.time<+new Date-1e3*e)&&s.length===i.columns.length))){for(t.oLoadedState=n.extend(!0,{},i),t._iDisplayStart=i.start,t.iInitDisplayStart=i.start,t._iDisplayLength=i.length,t.aaSorting=[],n.each(i.order,function(e,a){t.aaSorting.push(a[0]>=s.length?[0,a[1]]:a)}),n.extend(t.oPreviousSearch,ee(i.search)),e=0,a=i.columns.length;a>e;e++){var r=i.columns[e];s[e].bVisible=r.visible,n.extend(t.aoPreSearchCols[e],ee(r.search))}Fe(t,"aoStateLoaded","stateLoaded",[t,i])}}}function $e(t){var e=Ke.settings,t=n.inArray(t,ca(e,"nTable"));return-1!==t?e[t]:null}function Oe(e,a,n,s){if(n="DataTables warning: "+(null!==e?"table id="+e.sTableId+" - ":"")+n,s&&(n+=". For more information about this error, please see http://datatables.net/tn/"+s),a)t.console&&console.log&&console.log(n);else{if(e=Ke.ext,"alert"!=(e.sErrMode||e.errMode))throw Error(n);alert(n)}}function Re(t,e,s,i){n.isArray(s)?n.each(s,function(a,s){n.isArray(s)?Re(t,e,s[0],s[1]):Re(t,e,s)}):(i===a&&(i=s),e[s]!==a&&(t[i]=e[s]))}function Le(t,e,a){var s,i;for(i in e)e.hasOwnProperty(i)&&(s=e[i],n.isPlainObject(s)?(n.isPlainObject(t[i])||(t[i]={}),n.extend(!0,t[i],s)):t[i]=a&&"data"!==i&&"aaData"!==i&&n.isArray(s)?s.slice():s);return t}function Ne(t,e,a){n(t).bind("click.DT",e,function(e){t.blur(),a(e)}).bind("keypress.DT",e,function(t){13===t.which&&(t.preventDefault(),a(t))}).bind("selectstart.DT",function(){return!1})}function Ue(t,e,a,n){a&&t[e].push({fn:a,sName:n})}function Fe(t,e,a,s){var i=[];return e&&(i=n.map(t[e].slice().reverse(),function(e){return e.fn.apply(t.oInstance,s)})),null!==a&&n(t.nTable).trigger(a+".dt",s),i}function qe(t){var e=t._iDisplayStart,a=t.fnDisplayEnd(),n=t._iDisplayLength;e>=a&&(e=a-n),e-=e%n,(-1===n||0>e)&&(e=0),t._iDisplayStart=e}function ze(t,e){var a=t.renderer,s=Ke.ext.renderer[e];return n.isPlainObject(a)&&a[e]?s[a[e]]||s._:"string"==typeof a?s[a]||s._:s._}function Ve(t){return t.oFeatures.bServerSide?"ssp":t.ajax||t.sAjaxSource?"ajax":"dom"}function Ge(t,e){var a=[],a=La.numbers_length,n=Math.floor(a/2);return a>=e?a=ua(0,e):n>=t?(a=ua(0,a-2),a.push("ellipsis"),a.push(e-1)):(t>=e-1-n?a=ua(e-(a-2),e):(a=ua(t-1,t+2),a.push("ellipsis"),a.push(e-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0)),a.DT_el="span",a}function Be(t){n.each({num:function(e){return Na(e,t)},"num-fmt":function(e){return Na(e,t,na)},"html-num":function(e){return Na(e,t,Je)},"html-num-fmt":function(e){return Na(e,t,Je,na)}},function(e,a){je.type.order[e+t+"-pre"]=a,e.match(/^html\-/)&&(je.type.search[e+t]=je.type.search.html)})}function He(t){return function(){var e=[$e(this[Ke.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return Ke.ext.internal[t].apply(this,e)}}var Ke,je,Ye,We,Xe,Qe={},Ze=/[\r\n]/g,Je=/<.*?>/g,ta=/^[\w\+\-]/,ea=/[\w\+\-]$/,aa=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),na=/[',$\u00a3\u20ac\u00a5%\u2009\u202F]/g,sa=function(t){return t&&!0!==t&&"-"!==t?!1:!0},ia=function(t){var e=parseInt(t,10);return!isNaN(e)&&isFinite(t)?e:null},ra=function(t,e){return Qe[e]||(Qe[e]=RegExp(Z(e),"g")),"string"==typeof t&&"."!==e?t.replace(/\./g,"").replace(Qe[e],"."):t},oa=function(t,e,a){var n="string"==typeof t;return e&&n&&(t=ra(t,e)),a&&n&&(t=t.replace(na,"")),sa(t)||!isNaN(parseFloat(t))&&isFinite(t)},la=function(t,e,a){return sa(t)?!0:(sa(t)||"string"==typeof t)&&oa(t.replace(Je,""),e,a)?!0:null},ca=function(t,e,n){var s=[],i=0,r=t.length;if(n!==a)for(;r>i;i++)t[i]&&t[i][e]&&s.push(t[i][e][n]);else for(;r>i;i++)t[i]&&s.push(t[i][e]);return s},da=function(t,e,n,s){var i=[],r=0,o=e.length;if(s!==a)for(;o>r;r++)t[e[r]][n]&&i.push(t[e[r]][n][s]);else for(;o>r;r++)i.push(t[e[r]][n]);return i},ua=function(t,e){var n,s=[];e===a?(e=0,n=t):(n=e,e=t);for(var i=e;n>i;i++)s.push(i);return s},pa=function(t){for(var e=[],a=0,n=t.length;n>a;a++)t[a]&&e.push(t[a]);return e},ha=function(t){var e,a,n,s=[],i=t.length,r=0;a=0;t:for(;i>a;a++){for(e=t[a],n=0;r>n;n++)if(s[n]===e)continue t;s.push(e),r++}return s},fa=function(t,e,n){t[e]!==a&&(t[n]=t[e])},ma=/\[.*?\]$/,_a=/\(\)$/,ba=n("<div>")[0],va=ba.textContent!==a,ga=/<.*?>/g;Ke=function(t){this.$=function(t,e){return this.api(!0).$(t,e)},this._=function(t,e){return this.api(!0).rows(t,e).data()},this.api=function(t){return new Ye(t?$e(this[je.iApiIndex]):this)},this.fnAddData=function(t,e){var s=this.api(!0),i=n.isArray(t)&&(n.isArray(t[0])||n.isPlainObject(t[0]))?s.rows.add(t):s.row.add(t);return(e===a||e)&&s.draw(),i.flatten().toArray()},this.fnAdjustColumnSizing=function(t){var e=this.api(!0).columns.adjust(),n=e.settings()[0],s=n.oScroll;t===a||t?e.draw(!1):(""!==s.sX||""!==s.sY)&&fe(n)},this.fnClearTable=function(t){var e=this.api(!0).clear();(t===a||t)&&e.draw()},this.fnClose=function(t){this.api(!0).row(t).child.hide()},this.fnDeleteRow=function(t,e,n){var s=this.api(!0),t=s.rows(t),i=t.settings()[0],r=i.aoData[t[0][0]];return t.remove(),e&&e.call(this,i,r),(n===a||n)&&s.draw(),r},this.fnDestroy=function(t){this.api(!0).destroy(t)},this.fnDraw=function(t){this.api(!0).draw(!t)},this.fnFilter=function(t,e,n,s,i,r){i=this.api(!0),null===e||e===a?i.search(t,n,s,r):i.column(e).search(t,n,s,r),i.draw()},this.fnGetData=function(t,e){var n=this.api(!0);if(t!==a){var s=t.nodeName?t.nodeName.toLowerCase():"";return e!==a||"td"==s||"th"==s?n.cell(t,e).data():n.row(t).data()||null}return n.data().toArray()},this.fnGetNodes=function(t){var e=this.api(!0);return t!==a?e.row(t).node():e.rows().nodes().flatten().toArray()},this.fnGetPosition=function(t){var e=this.api(!0),a=t.nodeName.toUpperCase();return"TR"==a?e.row(t).index():"TD"==a||"TH"==a?(t=e.cell(t).index(),[t.row,t.columnVisible,t.column]):null},this.fnIsOpen=function(t){return this.api(!0).row(t).child.isShown()},this.fnOpen=function(t,e,a){return this.api(!0).row(t).child(e,a).show().child()[0]},this.fnPageChange=function(t,e){var n=this.api(!0).page(t);(e===a||e)&&n.draw(!1)},this.fnSetColumnVis=function(t,e,n){t=this.api(!0).column(t).visible(e),(n===a||n)&&t.columns.adjust().draw()},this.fnSettings=function(){return $e(this[je.iApiIndex])},this.fnSort=function(t){this.api(!0).order(t).draw()},this.fnSortListener=function(t,e,a){this.api(!0).order.listener(t,e,a)},this.fnUpdate=function(t,e,n,s,i){var r=this.api(!0);return n===a||null===n?r.row(e).data(t):r.cell(e,n).data(t),(i===a||i)&&r.columns.adjust(),(s===a||s)&&r.draw(),0},this.fnVersionCheck=je.fnVersionCheck;var e=this,s=t===a,d=this.length;s&&(t={}),this.oApi=this.internal=je.internal;for(var h in Ke.ext.internal)h&&(this[h]=He(h));return this.each(function(){var h,f={},f=d>1?Le(f,t,!0):t,m=0,_=this.getAttribute("id"),b=!1,v=Ke.defaults;if("table"!=this.nodeName.toLowerCase())Oe(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{o(v),l(v.column),i(v,v,!0),i(v.column,v.column,!0),i(v,f);var T=Ke.settings,m=0;for(h=T.length;h>m;m++){if(T[m].nTable==this){if(h=f.bRetrieve!==a?f.bRetrieve:v.bRetrieve,s||h)return T[m].oInstance;if(f.bDestroy!==a?f.bDestroy:v.bDestroy){T[m].oInstance.fnDestroy();break}return void Oe(T[m],0,"Cannot reinitialise DataTable",3)}if(T[m].sTableId==this.id){T.splice(m,1);break}}(null===_||""===_)&&(this.id=_="DataTables_Table_"+Ke.ext._unique++);var E=n.extend(!0,{},Ke.models.oSettings,{nTable:this,oApi:e.internal,oInit:f,sDestroyWidth:n(this)[0].style.width,sInstance:_,sTableId:_});T.push(E),E.oInstance=1===e.length?e:n(this).dataTable(),o(f),f.oLanguage&&r(f.oLanguage),f.aLengthMenu&&!f.iDisplayLength&&(f.iDisplayLength=n.isArray(f.aLengthMenu[0])?f.aLengthMenu[0][0]:f.aLengthMenu[0]),f=Le(n.extend(!0,{},v),f),Re(E.oFeatures,f,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" ")),Re(E,f,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]),Re(E.oScroll,f,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]),Re(E.oLanguage,f,"fnInfoCallback"),Ue(E,"aoDrawCallback",f.fnDrawCallback,"user"),Ue(E,"aoServerParams",f.fnServerParams,"user"),Ue(E,"aoStateSaveParams",f.fnStateSaveParams,"user"),Ue(E,"aoStateLoadParams",f.fnStateLoadParams,"user"),Ue(E,"aoStateLoaded",f.fnStateLoaded,"user"),Ue(E,"aoRowCallback",f.fnRowCallback,"user"),Ue(E,"aoRowCreatedCallback",f.fnCreatedRow,"user"),Ue(E,"aoHeaderCallback",f.fnHeaderCallback,"user"),Ue(E,"aoFooterCallback",f.fnFooterCallback,"user"),Ue(E,"aoInitComplete",f.fnInitComplete,"user"),Ue(E,"aoPreDrawCallback",f.fnPreDrawCallback,"user"),_=E.oClasses,f.bJQueryUI?(n.extend(_,Ke.ext.oJUIClasses,f.oClasses),f.sDom===v.sDom&&"lfrtip"===v.sDom&&(E.sDom='<"H"lfr>t<"F"ip>'),E.renderer?n.isPlainObject(E.renderer)&&!E.renderer.header&&(E.renderer.header="jqueryui"):E.renderer="jqueryui"):n.extend(_,Ke.ext.classes,f.oClasses),n(this).addClass(_.sTable),(""!==E.oScroll.sX||""!==E.oScroll.sY)&&(E.oScroll.iBarWidth=Ee()),!0===E.oScroll.sX&&(E.oScroll.sX="100%"),E.iInitDisplayStart===a&&(E.iInitDisplayStart=f.iDisplayStart,E._iDisplayStart=f.iDisplayStart),null!==f.iDeferLoading&&(E.bDeferLoading=!0,m=n.isArray(f.iDeferLoading),E._iRecordsDisplay=m?f.iDeferLoading[0]:f.iDeferLoading,E._iRecordsTotal=m?f.iDeferLoading[1]:f.iDeferLoading);var S=E.oLanguage;n.extend(!0,S,f.oLanguage),""!==S.sUrl&&(n.ajax({dataType:"json",url:S.sUrl,success:function(t){r(t),i(v.oLanguage,t),n.extend(!0,S,t),ie(E)},error:function(){ie(E)}}),b=!0),null===f.asStripeClasses&&(E.asStripeClasses=[_.sStripeOdd,_.sStripeEven]);var m=E.asStripeClasses,I=n("tbody tr:eq(0)",this);-1!==n.inArray(!0,n.map(m,function(t){return I.hasClass(t)}))&&(n("tbody tr",this).removeClass(m.join(" ")),E.asDestroyStripes=m.slice());var x,T=[],m=this.getElementsByTagName("thead");if(0!==m.length&&(F(E.aoHeader,m[0]),T=q(E)),null===f.aoColumns)for(x=[],m=0,h=T.length;h>m;m++)x.push(null);else x=f.aoColumns;for(m=0,h=x.length;h>m;m++)u(E,T?T[m]:null);if(g(E,f.aoColumnDefs,x,function(t,e){p(E,t,e)}),I.length){var A=function(t,e){return t.getAttribute("data-"+e)?e:null};n.each(C(E,I[0]).cells,function(t,e){var n=E.aoColumns[t];if(n.mData===t){var s=A(e,"sort")||A(e,"order"),i=A(e,"filter")||A(e,"search");(null!==s||null!==i)&&(n.mData={_:t+".display",sort:null!==s?t+".@data-"+s:a,type:null!==s?t+".@data-"+s:a,filter:null!==i?t+".@data-"+i:a},p(E,t))}})}var M=E.oFeatures;if(f.bStateSave&&(M.bStateSave=!0,Pe(E,f),Ue(E,"aoDrawCallback",Ce,"state_save")),f.aaSorting===a)for(T=E.aaSorting,m=0,h=T.length;h>m;m++)T[m][1]=E.aoColumns[m].asSorting[0];if(ke(E),M.bSort&&Ue(E,"aoDrawCallback",function(){if(E.bSorted){var t=Se(E),e={};n.each(t,function(t,a){e[a.src]=a.dir}),Fe(E,null,"order",[E,t,e]),xe(E)}}),Ue(E,"aoDrawCallback",function(){(E.bSorted||"ssp"===Ve(E)||M.bDeferRender)&&ke(E)},"sc"),c(E),m=n(this).children("caption").each(function(){this._captionSide=n(this).css("caption-side")}),h=n(this).children("thead"),0===h.length&&(h=n("<thead/>").appendTo(this)),E.nTHead=h[0],h=n(this).children("tbody"),0===h.length&&(h=n("<tbody/>").appendTo(this)),E.nTBody=h[0],h=n(this).children("tfoot"),0===h.length&&0<m.length&&(""!==E.oScroll.sX||""!==E.oScroll.sY)&&(h=n("<tfoot/>").appendTo(this)),0===h.length||0===h.children().length?n(this).addClass(_.sNoFooter):0<h.length&&(E.nTFoot=h[0],F(E.aoFooter,E.nTFoot)),f.aaData)for(m=0;m<f.aaData.length;m++)y(E,f.aaData[m]);else(E.bDeferLoading||"dom"==Ve(E))&&w(E,n(E.nTBody).children("tr"));E.aiDisplay=E.aiDisplayMaster.slice(),E.bInitialised=!0,!1===b&&ie(E)}}),e=null,this};var ya=[],wa=Array.prototype,Ta=function(t){var e,a,s=Ke.settings,i=n.map(s,function(t){return t.nTable});return t?t.nTable&&t.oApi?[t]:t.nodeName&&"table"===t.nodeName.toLowerCase()?(e=n.inArray(t,i),-1!==e?[s[e]]:null):t&&"function"==typeof t.settings?t.settings().toArray():("string"==typeof t?a=n(t):t instanceof n&&(a=t),a?a.map(function(){return e=n.inArray(this,i),-1!==e?s[e]:null}).toArray():void 0):[]};Ye=function(t,e){if(!this instanceof Ye)throw"DT API must be constructed as a new object";var a=[],s=function(t){(t=Ta(t))&&a.push.apply(a,t)};if(n.isArray(t))for(var i=0,r=t.length;r>i;i++)s(t[i]);else s(t);this.context=ha(a),e&&this.push.apply(this,e.toArray?e.toArray():e),this.selector={rows:null,cols:null,opts:null},Ye.extend(this,this,ya)},Ke.Api=Ye,Ye.prototype={concat:wa.concat,context:[],each:function(t){for(var e=0,a=this.length;a>e;e++)t.call(this,this[e],e,this);return this},eq:function(t){var e=this.context;return e.length>t?new Ye(e[t],this[t]):null},filter:function(t){var e=[];if(wa.filter)e=wa.filter.call(this,t,this);else for(var a=0,n=this.length;n>a;a++)t.call(this,this[a],a,this)&&e.push(this[a]);return new Ye(this.context,e)},flatten:function(){var t=[];return new Ye(this.context,t.concat.apply(t,this.toArray()))},join:wa.join,indexOf:wa.indexOf||function(t,e){for(var a=e||0,n=this.length;n>a;a++)if(this[a]===t)return a;return-1},iterator:function(t,e,n,s){var i,r,o,l,c,d,u,p=[],h=this.context,f=this.selector;for("string"==typeof t&&(s=n,n=e,e=t,t=!1),r=0,o=h.length;o>r;r++){var m=new Ye(h[r]);if("table"===e)i=n.call(m,h[r],r),i!==a&&p.push(i);else if("columns"===e||"rows"===e)i=n.call(m,h[r],this[r],r),i!==a&&p.push(i);else if("column"===e||"column-rows"===e||"row"===e||"cell"===e)for(u=this[r],"column-rows"===e&&(d=Aa(h[r],f.opts)),l=0,c=u.length;c>l;l++)i=u[l],i="cell"===e?n.call(m,h[r],i.row,i.column,r,l):n.call(m,h[r],i,r,l,d),i!==a&&p.push(i)}return p.length||s?(t=new Ye(h,t?p.concat.apply([],p):p),e=t.selector,e.rows=f.rows,e.cols=f.cols,e.opts=f.opts,t):this},lastIndexOf:wa.lastIndexOf||function(){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(t){var e=[];if(wa.map)e=wa.map.call(this,t,this);else for(var a=0,n=this.length;n>a;a++)e.push(t.call(this,this[a],a));return new Ye(this.context,e)},pluck:function(t){return this.map(function(e){return e[t]})},pop:wa.pop,push:wa.push,reduce:wa.reduce||function(t,e){return d(this,t,e,0,this.length,1)},reduceRight:wa.reduceRight||function(t,e){return d(this,t,e,this.length-1,-1,-1)},reverse:wa.reverse,selector:null,shift:wa.shift,sort:wa.sort,splice:wa.splice,toArray:function(){return wa.slice.call(this)},to$:function(){return n(this)},toJQuery:function(){return n(this)},unique:function(){return new Ye(this.context,ha(this))},unshift:wa.unshift},Ye.extend=function(t,e,a){if(e&&(e instanceof Ye||e.__dt_wrapper)){var s,i,r,o=function(t,e,a){return function(){var n=e.apply(t,arguments);return Ye.extend(n,n,a.methodExt),n}};for(s=0,i=a.length;i>s;s++)r=a[s],e[r.name]="function"==typeof r.val?o(t,r.val,r):n.isPlainObject(r.val)?{}:r.val,e[r.name].__dt_wrapper=!0,Ye.extend(t,e[r.name],r.propExt)}},Ye.register=We=function(t,e){if(n.isArray(t))for(var a=0,s=t.length;s>a;a++)Ye.register(t[a],e);else for(var i,r,o=t.split("."),l=ya,a=0,s=o.length;s>a;a++){i=(r=-1!==o[a].indexOf("()"))?o[a].replace("()",""):o[a];var c;t:{c=0;for(var d=l.length;d>c;c++)if(l[c].name===i){c=l[c];break t}c=null}c||(c={name:i,val:{},methodExt:[],propExt:[]},l.push(c)),a===s-1?c.val=e:l=r?c.methodExt:c.propExt}},Ye.registerPlural=Xe=function(t,e,s){Ye.register(t,s),Ye.register(e,function(){var t=s.apply(this,arguments);return t===this?this:t instanceof Ye?t.length?n.isArray(t[0])?new Ye(t.context,t[0]):t[0]:a:t})},We("tables()",function(t){var e;if(t){e=Ye;var a=this.context;if("number"==typeof t)t=[a[t]];else var s=n.map(a,function(t){return t.nTable}),t=n(s).filter(t).map(function(){var t=n.inArray(this,s);return a[t]}).toArray();e=new e(t)}else e=this;return e}),We("table()",function(t){var t=this.tables(t),e=t.context;return e.length?new Ye(e[0]):t}),Xe("tables().nodes()","table().node()",function(){return this.iterator("table",function(t){return t.nTable},1)}),Xe("tables().body()","table().body()",function(){return this.iterator("table",function(t){return t.nTBody},1)}),Xe("tables().header()","table().header()",function(){return this.iterator("table",function(t){return t.nTHead},1)}),Xe("tables().footer()","table().footer()",function(){return this.iterator("table",function(t){return t.nTFoot},1)}),Xe("tables().containers()","table().container()",function(){return this.iterator("table",function(t){return t.nTableWrapper},1)}),We("draw()",function(t){return this.iterator("table",function(e){N(e,!1===t)})}),We("page()",function(t){return t===a?this.page.info().page:this.iterator("table",function(e){de(e,t)})}),We("page.info()",function(){if(0===this.context.length)return a;var t=this.context[0],e=t._iDisplayStart,n=t._iDisplayLength,s=t.fnRecordsDisplay(),i=-1===n;return{page:i?0:Math.floor(e/n),pages:i?1:Math.ceil(s/n),start:e,end:t.fnDisplayEnd(),length:n,recordsTotal:t.fnRecordsTotal(),recordsDisplay:s}}),We("page.len()",function(t){return t===a?0!==this.context.length?this.context[0]._iDisplayLength:a:this.iterator("table",function(e){oe(e,t)})});var Ea=function(t,e,a){if("ssp"==Ve(t)?N(t,e):(pe(t,!0),z(t,[],function(a){M(t);for(var a=H(t,a),n=0,s=a.length;s>n;n++)y(t,a[n]);N(t,e),pe(t,!1)})),a){var n=new Ye(t);n.one("draw",function(){a(n.ajax.json())})}};We("ajax.json()",function(){var t=this.context;return 0<t.length?t[0].json:void 0}),We("ajax.params()",function(){var t=this.context;return 0<t.length?t[0].oAjaxData:void 0}),We("ajax.reload()",function(t,e){return this.iterator("table",function(a){Ea(a,!1===e,t)})}),We("ajax.url()",function(t){var e=this.context;return t===a?0===e.length?a:(e=e[0],e.ajax?n.isPlainObject(e.ajax)?e.ajax.url:e.ajax:e.sAjaxSource):this.iterator("table",function(e){n.isPlainObject(e.ajax)?e.ajax.url=t:e.ajax=t})}),We("ajax.url().load()",function(t,e){return this.iterator("table",function(a){Ea(a,!1===e,t)})});var Sa=function(t,e){var s,i,r,o,l,c,d=[];for(s=typeof t,t&&"string"!==s&&"function"!==s&&t.length!==a||(t=[t]),r=0,o=t.length;o>r;r++)for(i=t[r]&&t[r].split?t[r].split(","):[t[r]],l=0,c=i.length;c>l;l++)(s=e("string"==typeof i[l]?n.trim(i[l]):i[l]))&&s.length&&d.push.apply(d,s);return d},Ia=function(t){return t||(t={}),t.filter&&!t.search&&(t.search=t.filter),{search:t.search||"none",order:t.order||"current",page:t.page||"all"}},xa=function(t){for(var e=0,a=t.length;a>e;e++)if(0<t[e].length)return t[0]=t[e],t.length=1,t.context=[t.context[e]],t;return t.length=0,t},Aa=function(t,e){var a,s,i,r=[],o=t.aiDisplay;a=t.aiDisplayMaster;var l=e.search;if(s=e.order,i=e.page,"ssp"==Ve(t))return"removed"===l?[]:ua(0,a.length);if("current"==i)for(a=t._iDisplayStart,s=t.fnDisplayEnd();s>a;a++)r.push(o[a]);else if("current"==s||"applied"==s)r="none"==l?a.slice():"applied"==l?o.slice():n.map(a,function(t){return-1===n.inArray(t,o)?t:null});else if("index"==s||"original"==s)for(a=0,s=t.aoData.length;s>a;a++)"none"==l?r.push(a):(i=n.inArray(a,o),(-1===i&&"removed"==l||i>=0&&"applied"==l)&&r.push(a));return r};We("rows()",function(t,e){t===a?t="":n.isPlainObject(t)&&(e=t,t="");var e=Ia(e),s=this.iterator("table",function(a){var s=e;return Sa(t,function(t){var e=ia(t);if(null!==e&&!s)return[e];var i=Aa(a,s);return null!==e&&-1!==n.inArray(e,i)?[e]:t?"function"==typeof t?n.map(i,function(e){var n=a.aoData[e];return t(e,n._aData,n.nTr)?e:null}):(e=pa(da(a.aoData,i,"nTr")),t.nodeName&&-1!==n.inArray(t,e)?[t._DT_RowIndex]:n(e).filter(t).map(function(){return this._DT_RowIndex}).toArray()):i})},1);return s.selector.rows=t,s.selector.opts=e,s}),We("rows().nodes()",function(){return this.iterator("row",function(t,e){return t.aoData[e].nTr||a},1)}),We("rows().data()",function(){return this.iterator(!0,"rows",function(t,e){return da(t.aoData,e,"_aData")},1)}),Xe("rows().cache()","row().cache()",function(t){return this.iterator("row",function(e,a){var n=e.aoData[a];return"search"===t?n._aFilterData:n._aSortData},1)}),Xe("rows().invalidate()","row().invalidate()",function(t){return this.iterator("row",function(e,a){D(e,a,t)})}),Xe("rows().indexes()","row().index()",function(){return this.iterator("row",function(t,e){return e},1)}),Xe("rows().remove()","row().remove()",function(){var t=this;return this.iterator("row",function(e,a,s){var i=e.aoData;i.splice(a,1);for(var r=0,o=i.length;o>r;r++)null!==i[r].nTr&&(i[r].nTr._DT_RowIndex=r);n.inArray(a,e.aiDisplay),k(e.aiDisplayMaster,a),k(e.aiDisplay,a),k(t[s],a,!1),qe(e)})}),We("rows.add()",function(t){var e=this.iterator("table",function(e){var a,n,s,i=[];for(n=0,s=t.length;s>n;n++)a=t[n],i.push(a.nodeName&&"TR"===a.nodeName.toUpperCase()?w(e,a)[0]:y(e,a));return i},1),a=this.rows(-1);return a.pop(),a.push.apply(a,e.toArray()),a}),We("row()",function(t,e){return xa(this.rows(t,e))}),We("row().data()",function(t){var e=this.context;return t===a?e.length&&this.length?e[0].aoData[this[0]]._aData:a:(e[0].aoData[this[0]]._aData=t,D(e[0],this[0],"data"),this)}),We("row().node()",function(){var t=this.context;return t.length&&this.length?t[0].aoData[this[0]].nTr||null:null}),We("row.add()",function(t){t instanceof n&&t.length&&(t=t[0]);var e=this.iterator("table",function(e){return t.nodeName&&"TR"===t.nodeName.toUpperCase()?w(e,t)[0]:y(e,t)});return this.row(e[0])});var Ma=function(t,e){var n=t.context;n.length&&(n=n[0].aoData[e!==a?e:t[0]],n._details&&(n._details.remove(),n._detailsShow=a,n._details=a))},ka=function(t,e){var a=t.context;if(a.length&&t.length){var n=a[0].aoData[t[0]];if(n._details){(n._detailsShow=e)?n._details.insertAfter(n.nTr):n._details.detach();var s=a[0],i=new Ye(s),r=s.aoData;i.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details"),0<ca(r,"_details").length&&(i.on("draw.dt.DT_details",function(t,e){s===e&&i.rows({page:"current"}).eq(0).each(function(t){t=r[t],t._detailsShow&&t._details.insertAfter(t.nTr)})}),i.on("column-visibility.dt.DT_details",function(t,e){if(s===e)for(var a,n=_(e),i=0,o=r.length;o>i;i++)a=r[i],a._details&&a._details.children("td[colspan]").attr("colspan",n)}),i.on("destroy.dt.DT_details",function(t,e){if(s===e)for(var a=0,n=r.length;n>a;a++)r[a]._details&&Ma(i,a)}))}}};We("row().child()",function(t,e){var s=this.context;if(t===a)return s.length&&this.length?s[0].aoData[this[0]]._details:a;if(!0===t)this.child.show();else if(!1===t)Ma(this);else if(s.length&&this.length){var i=s[0],s=s[0].aoData[this[0]],r=[],o=function(t,e){if(t.nodeName&&"tr"===t.nodeName.toLowerCase())r.push(t);else{var a=n("<tr><td/></tr>").addClass(e);n("td",a).addClass(e).html(t)[0].colSpan=_(i),r.push(a[0])}};if(n.isArray(t)||t instanceof n)for(var l=0,c=t.length;c>l;l++)o(t[l],e);else o(t,e);s._details&&s._details.remove(),s._details=n(r),s._detailsShow&&s._details.insertAfter(s.nTr)}return this}),We(["row().child.show()","row().child().show()"],function(){return ka(this,!0),this}),We(["row().child.hide()","row().child().hide()"],function(){return ka(this,!1),this}),We(["row().child.remove()","row().child().remove()"],function(){return Ma(this),this}),We("row().child.isShown()",function(){var t=this.context;return t.length&&this.length?t[0].aoData[this[0]]._detailsShow||!1:!1});var Da=/^(.+):(name|visIdx|visible)$/,Ca=function(t,e,a,n,s){for(var a=[],n=0,i=s.length;i>n;n++)a.push(T(t,s[n],e));return a};We("columns()",function(t,e){t===a?t="":n.isPlainObject(t)&&(e=t,t="");var e=Ia(e),s=this.iterator("table",function(a){var s=t,i=e,r=a.aoColumns,o=ca(r,"sName"),l=ca(r,"nTh");return Sa(s,function(t){var e=ia(t);if(""===t)return ua(r.length);if(null!==e)return[e>=0?e:r.length+e];if("function"==typeof t){var s=Aa(a,i);return n.map(r,function(e,n){return t(n,Ca(a,n,0,0,s),l[n])?n:null})}var c="string"==typeof t?t.match(Da):"";if(!c)return n(l).filter(t).map(function(){return n.inArray(this,l)}).toArray();switch(c[2]){case"visIdx":case"visible":if(e=parseInt(c[1],10),0>e){var d=n.map(r,function(t,e){return t.bVisible?e:null});return[d[d.length+e]]}return[f(a,e)];case"name":return n.map(o,function(t,e){return t===c[1]?e:null})}})},1);return s.selector.cols=t,s.selector.opts=e,s}),Xe("columns().header()","column().header()",function(){return this.iterator("column",function(t,e){return t.aoColumns[e].nTh},1)}),Xe("columns().footer()","column().footer()",function(){return this.iterator("column",function(t,e){return t.aoColumns[e].nTf},1)}),Xe("columns().data()","column().data()",function(){return this.iterator("column-rows",Ca,1)}),Xe("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(t,e){return t.aoColumns[e].mData},1)}),Xe("columns().cache()","column().cache()",function(t){return this.iterator("column-rows",function(e,a,n,s,i){return da(e.aoData,i,"search"===t?"_aFilterData":"_aSortData",a)},1)}),Xe("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(t,e,a,n,s){return da(t.aoData,s,"anCells",e)},1)}),Xe("columns().visible()","column().visible()",function(t,e){return this.iterator("column",function(s,i){if(t===a)return s.aoColumns[i].bVisible;var r,o,l,c=s.aoColumns,d=c[i],u=s.aoData;if(t!==a&&d.bVisible!==t){if(t){var p=n.inArray(!0,ca(c,"bVisible"),i+1);for(r=0,o=u.length;o>r;r++)l=u[r].nTr,c=u[r].anCells,l&&l.insertBefore(c[i],c[p]||null)}else n(ca(s.aoData,"anCells",i)).detach();d.bVisible=t,R(s,s.aoHeader),R(s,s.aoFooter),(e===a||e)&&(h(s),(s.oScroll.sX||s.oScroll.sY)&&fe(s)),Fe(s,null,"column-visibility",[s,i,t]),Ce(s)}})}),Xe("columns().indexes()","column().index()",function(t){return this.iterator("column",function(e,a){return"visible"===t?m(e,a):a},1)}),We("columns.adjust()",function(){return this.iterator("table",function(t){h(t)},1)}),We("column.index()",function(t,e){if(0!==this.context.length){var a=this.context[0];if("fromVisible"===t||"toData"===t)return f(a,e);if("fromData"===t||"toVisible"===t)return m(a,e)}}),We("column()",function(t,e){return xa(this.columns(t,e))}),We("cells()",function(t,e,s){if(n.isPlainObject(t)&&(typeof t.row!==a?(s=e,e=null):(s=t,t=null)),n.isPlainObject(e)&&(s=e,e=null),null===e||e===a)return this.iterator("table",function(e){var i,r,o,l,c,d,u,p=t,h=Ia(s),f=e.aoData,m=Aa(e,h),h=pa(da(f,m,"anCells")),_=n([].concat.apply([],h)),b=e.aoColumns.length;return Sa(p,function(t){var s="function"==typeof t;if(null===t||t===a||s){for(r=[],o=0,l=m.length;l>o;o++)for(i=m[o],c=0;b>c;c++)d={row:i,column:c},s?(u=e.aoData[i],t(d,T(e,i,c),u.anCells[c])&&r.push(d)):r.push(d);return r}return n.isPlainObject(t)?[t]:_.filter(t).map(function(t,e){return i=e.parentNode._DT_RowIndex,{row:i,column:n.inArray(e,f[i].anCells)}}).toArray()})});var i,r,o,l,c,d=this.columns(e,s),u=this.rows(t,s),p=this.iterator("table",function(t,e){for(i=[],r=0,o=u[e].length;o>r;r++)for(l=0,c=d[e].length;c>l;l++)i.push({row:u[e][r],column:d[e][l]});return i},1);return n.extend(p.selector,{cols:e,rows:t,opts:s}),p}),Xe("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(t,e,n){return(t=t.aoData[e].anCells)?t[n]:a},1)}),We("cells().data()",function(){return this.iterator("cell",function(t,e,a){return T(t,e,a)},1)}),Xe("cells().cache()","cell().cache()",function(t){return t="search"===t?"_aFilterData":"_aSortData",this.iterator("cell",function(e,a,n){return e.aoData[a][t][n]},1)}),Xe("cells().render()","cell().render()",function(t){return this.iterator("cell",function(e,a,n){return T(e,a,n,t)},1)}),Xe("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(t,e,a){return{row:e,column:a,columnVisible:m(t,a)}},1)}),Xe("cells().invalidate()","cell().invalidate()",function(t){return this.iterator("cell",function(e,a,n){D(e,a,t,n)})}),We("cell()",function(t,e,a){return xa(this.cells(t,e,a))}),We("cell().data()",function(t){var e=this.context,n=this[0];return t===a?e.length&&n.length?T(e[0],n[0].row,n[0].column):a:(E(e[0],n[0].row,n[0].column,t),D(e[0],n[0].row,"data",n[0].column),this)}),We("order()",function(t,e){var s=this.context;return t===a?0!==s.length?s[0].aaSorting:a:("number"==typeof t?t=[[t,e]]:n.isArray(t[0])||(t=Array.prototype.slice.call(arguments)),this.iterator("table",function(e){e.aaSorting=t.slice()}))}),We("order.listener()",function(t,e,a){return this.iterator("table",function(n){Me(n,t,e,a)})}),We(["columns().order()","column().order()"],function(t){var e=this;
+return this.iterator("table",function(a,s){var i=[];n.each(e[s],function(e,a){i.push([a,t])}),a.aaSorting=i})}),We("search()",function(t,e,s,i){var r=this.context;return t===a?0!==r.length?r[0].oPreviousSearch.sSearch:a:this.iterator("table",function(a){a.oFeatures.bFilter&&j(a,n.extend({},a.oPreviousSearch,{sSearch:t+"",bRegex:null===e?!1:e,bSmart:null===s?!0:s,bCaseInsensitive:null===i?!0:i}),1)})}),Xe("columns().search()","column().search()",function(t,e,s,i){return this.iterator("column",function(r,o){var l=r.aoPreSearchCols;return t===a?l[o].sSearch:void(r.oFeatures.bFilter&&(n.extend(l[o],{sSearch:t+"",bRegex:null===e?!1:e,bSmart:null===s?!0:s,bCaseInsensitive:null===i?!0:i}),j(r,r.oPreviousSearch,1)))})}),We("state()",function(){return this.context.length?this.context[0].oSavedState:null}),We("state.clear()",function(){return this.iterator("table",function(t){t.fnStateSaveCallback.call(t.oInstance,t,{})})}),We("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null}),We("state.save()",function(){return this.iterator("table",function(t){Ce(t)})}),Ke.versionCheck=Ke.fnVersionCheck=function(t){for(var e,a,n=Ke.version.split("."),t=t.split("."),s=0,i=t.length;i>s;s++)if(e=parseInt(n[s],10)||0,a=parseInt(t[s],10)||0,e!==a)return e>a;return!0},Ke.isDataTable=Ke.fnIsDataTable=function(t){var e=n(t).get(0),a=!1;return n.each(Ke.settings,function(t,n){(n.nTable===e||n.nScrollHead===e||n.nScrollFoot===e)&&(a=!0)}),a},Ke.tables=Ke.fnTables=function(t){return n.map(Ke.settings,function(e){return!t||t&&n(e.nTable).is(":visible")?e.nTable:void 0})},Ke.util={throttle:be,escapeRegex:Z},Ke.camelToHungarian=i,We("$()",function(t,e){var a=this.rows(e).nodes(),a=n(a);return n([].concat(a.filter(t).toArray(),a.find(t).toArray()))}),n.each(["on","one","off"],function(t,e){We(e+"()",function(){var t=Array.prototype.slice.call(arguments);t[0].match(/\.dt\b/)||(t[0]+=".dt");var a=n(this.tables().nodes());return a[e].apply(a,t),this})}),We("clear()",function(){return this.iterator("table",function(t){M(t)})}),We("settings()",function(){return new Ye(this.context,this.context)}),We("data()",function(){return this.iterator("table",function(t){return ca(t.aoData,"_aData")}).flatten()}),We("destroy()",function(e){return e=e||!1,this.iterator("table",function(a){var s,i=a.nTableWrapper.parentNode,r=a.oClasses,o=a.nTable,l=a.nTBody,c=a.nTHead,d=a.nTFoot,u=n(o),l=n(l),p=n(a.nTableWrapper),h=n.map(a.aoData,function(t){return t.nTr});a.bDestroying=!0,Fe(a,"aoDestroyCallback","destroy",[a]),e||new Ye(a).columns().visible(!0),p.unbind(".DT").find(":not(tbody *)").unbind(".DT"),n(t).unbind(".DT-"+a.sInstance),o!=c.parentNode&&(u.children("thead").detach(),u.append(c)),d&&o!=d.parentNode&&(u.children("tfoot").detach(),u.append(d)),u.detach(),p.detach(),a.aaSorting=[],a.aaSortingFixed=[],ke(a),n(h).removeClass(a.asStripeClasses.join(" ")),n("th, td",c).removeClass(r.sSortable+" "+r.sSortableAsc+" "+r.sSortableDesc+" "+r.sSortableNone),a.bJUI&&(n("th span."+r.sSortIcon+", td span."+r.sSortIcon,c).detach(),n("th, td",c).each(function(){var t=n("div."+r.sSortJUIWrapper,this);n(this).append(t.contents()),t.detach()})),!e&&i&&i.insertBefore(o,a.nTableReinsertBefore),l.children().detach(),l.append(h),u.css("width",a.sDestroyWidth).removeClass(r.sTable),(s=a.asDestroyStripes.length)&&l.children().each(function(t){n(this).addClass(a.asDestroyStripes[t%s])}),i=n.inArray(a,Ke.settings),-1!==i&&Ke.settings.splice(i,1)})}),Ke.version="1.10.4",Ke.settings=[],Ke.models={},Ke.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0},Ke.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null},Ke.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null},Ke.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(t){return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(t){try{return JSON.parse((-1===t.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+t.sInstance+"_"+location.pathname))}catch(e){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(t,e){try{(-1===t.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+t.sInstance+"_"+location.pathname,JSON.stringify(e))}catch(a){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:n.extend({},Ke.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null},s(Ke.defaults),Ke.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null},s(Ke.defaults.column),Ke.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:a,oAjaxData:a,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==Ve(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==Ve(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var t=this._iDisplayLength,e=this._iDisplayStart,a=e+t,n=this.aiDisplay.length,s=this.oFeatures,i=s.bPaginate;return s.bServerSide?!1===i||-1===t?e+n:Math.min(e+t,this._iRecordsDisplay):!i||a>n||-1===t?n:a},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}},Ke.ext=je={classes:{},errMode:"alert",feature:[],search:[],internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:Ke.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:Ke.version},n.extend(je,{afnFiltering:je.search,aTypes:je.type.detect,ofnSearch:je.type.search,oSort:je.type.order,afnSortData:je.order,aoFeatures:je.feature,oApi:je.internal,oStdClasses:je.classes,oPagination:je.pager}),n.extend(Ke.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Pa="",Pa="",$a=Pa+"ui-state-default",Oa=Pa+"css_right ui-icon ui-icon-",Ra=Pa+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";n.extend(Ke.ext.oJUIClasses,Ke.ext.classes,{sPageButton:"fg-button ui-button "+$a,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:$a+" sorting_asc",sSortDesc:$a+" sorting_desc",sSortable:$a+" sorting",sSortableAsc:$a+" sorting_asc_disabled",sSortableDesc:$a+" sorting_desc_disabled",sSortableNone:$a+" sorting_disabled",sSortJUIAsc:Oa+"triangle-1-n",sSortJUIDesc:Oa+"triangle-1-s",sSortJUI:Oa+"carat-2-n-s",sSortJUIAscAllowed:Oa+"carat-1-n",sSortJUIDescAllowed:Oa+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+$a,sScrollFoot:"dataTables_scrollFoot "+$a,sHeaderTH:$a,sFooterTH:$a,sJUIHeader:Ra+" ui-corner-tl ui-corner-tr",sJUIFooter:Ra+" ui-corner-bl ui-corner-br"});var La=Ke.ext.pager;n.extend(La,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(t,e){return["previous",Ge(t,e),"next"]},full_numbers:function(t,e){return["first","previous",Ge(t,e),"next","last"]},_numbers:Ge,numbers_length:7}),n.extend(!0,Ke.ext.renderer,{pageButton:{_:function(t,a,s,i,r,o){var l,c,d=t.oClasses,u=t.oLanguage.oPaginate,p=0,h=function(e,a){var i,f,m,_,b=function(e){de(t,e.data.action,!0)};for(i=0,f=a.length;f>i;i++)if(_=a[i],n.isArray(_))m=n("<"+(_.DT_el||"div")+"/>").appendTo(e),h(m,_);else{switch(c=l="",_){case"ellipsis":e.append("<span>&hellip;</span>");break;case"first":l=u.sFirst,c=_+(r>0?"":" "+d.sPageButtonDisabled);break;case"previous":l=u.sPrevious,c=_+(r>0?"":" "+d.sPageButtonDisabled);break;case"next":l=u.sNext,c=_+(o-1>r?"":" "+d.sPageButtonDisabled);break;case"last":l=u.sLast,c=_+(o-1>r?"":" "+d.sPageButtonDisabled);break;default:l=_+1,c=r===_?d.sPageButtonActive:""}l&&(m=n("<a>",{"class":d.sPageButton+" "+c,"aria-controls":t.sTableId,"data-dt-idx":p,tabindex:t.iTabIndex,id:0===s&&"string"==typeof _?t.sTableId+"_"+_:null}).html(l).appendTo(e),Ne(m,{action:_},b),p++)}};try{var f=n(e.activeElement).data("dt-idx");h(n(a).empty(),i),null!==f&&n(a).find("[data-dt-idx="+f+"]").focus()}catch(m){}}}}),n.extend(Ke.ext.type.detect,[function(t,e){var a=e.oLanguage.sDecimal;return oa(t,a)?"num"+a:null},function(t){if(!(!t||t instanceof Date||ta.test(t)&&ea.test(t)))return null;var e=Date.parse(t);return null!==e&&!isNaN(e)||sa(t)?"date":null},function(t,e){var a=e.oLanguage.sDecimal;return oa(t,a,!0)?"num-fmt"+a:null},function(t,e){var a=e.oLanguage.sDecimal;return la(t,a)?"html-num"+a:null},function(t,e){var a=e.oLanguage.sDecimal;return la(t,a,!0)?"html-num-fmt"+a:null},function(t){return sa(t)||"string"==typeof t&&-1!==t.indexOf("<")?"html":null}]),n.extend(Ke.ext.type.search,{html:function(t){return sa(t)?t:"string"==typeof t?t.replace(Ze," ").replace(Je,""):""},string:function(t){return sa(t)?t:"string"==typeof t?t.replace(Ze," "):t}});var Na=function(t,e,a,n){return 0===t||t&&"-"!==t?(e&&(t=ra(t,e)),t.replace&&(a&&(t=t.replace(a,"")),n&&(t=t.replace(n,""))),1*t):-1/0};return n.extend(je.type.order,{"date-pre":function(t){return Date.parse(t)||0},"html-pre":function(t){return sa(t)?"":t.replace?t.replace(/<.*?>/g,"").toLowerCase():t+""},"string-pre":function(t){return sa(t)?"":"string"==typeof t?t.toLowerCase():t.toString?t.toString():""},"string-asc":function(t,e){return e>t?-1:t>e?1:0},"string-desc":function(t,e){return e>t?1:t>e?-1:0}}),Be(""),n.extend(!0,Ke.ext.renderer,{header:{_:function(t,e,a,s){n(t.nTable).on("order.dt.DT",function(n,i,r,o){t===i&&(n=a.idx,e.removeClass(a.sSortingClass+" "+s.sSortAsc+" "+s.sSortDesc).addClass("asc"==o[n]?s.sSortAsc:"desc"==o[n]?s.sSortDesc:a.sSortingClass))})},jqueryui:function(t,e,a,s){n("<div/>").addClass(s.sSortJUIWrapper).append(e.contents()).append(n("<span/>").addClass(s.sSortIcon+" "+a.sSortingClassJUI)).appendTo(e),n(t.nTable).on("order.dt.DT",function(n,i,r,o){t===i&&(n=a.idx,e.removeClass(s.sSortAsc+" "+s.sSortDesc).addClass("asc"==o[n]?s.sSortAsc:"desc"==o[n]?s.sSortDesc:a.sSortingClass),e.find("span."+s.sSortIcon).removeClass(s.sSortJUIAsc+" "+s.sSortJUIDesc+" "+s.sSortJUI+" "+s.sSortJUIAscAllowed+" "+s.sSortJUIDescAllowed).addClass("asc"==o[n]?s.sSortJUIAsc:"desc"==o[n]?s.sSortJUIDesc:a.sSortingClassJUI))})}}}),Ke.render={number:function(t,e,a,n){return{display:function(s){var i=0>s?"-":"",s=Math.abs(parseFloat(s)),r=parseInt(s,10),s=a?e+(s-r).toFixed(a).substring(2):"";return i+(n||"")+r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,t)+s}}}},n.extend(Ke.ext.internal,{_fnExternApiFunc:He,_fnBuildAjax:z,_fnAjaxUpdate:V,_fnAjaxParameters:G,_fnAjaxUpdateDraw:B,_fnAjaxDataSrc:H,_fnAddColumn:u,_fnColumnOptions:p,_fnAdjustColumnSizing:h,_fnVisibleToColumnIndex:f,_fnColumnIndexToVisible:m,_fnVisbleColumns:_,_fnGetColumns:b,_fnColumnTypes:v,_fnApplyColumnDefs:g,_fnHungarianMap:s,_fnCamelToHungarian:i,_fnLanguageCompat:r,_fnBrowserDetect:c,_fnAddData:y,_fnAddTr:w,_fnNodeToDataIndex:function(t,e){return e._DT_RowIndex!==a?e._DT_RowIndex:null},_fnNodeToColumnIndex:function(t,e,a){return n.inArray(a,t.aoData[e].anCells)},_fnGetCellData:T,_fnSetCellData:E,_fnSplitObjNotation:S,_fnGetObjectDataFn:I,_fnSetObjectDataFn:x,_fnGetDataMaster:A,_fnClearTable:M,_fnDeleteIndex:k,_fnInvalidate:D,_fnGetRowElements:C,_fnCreateTr:P,_fnBuildHead:O,_fnDrawHead:R,_fnDraw:L,_fnReDraw:N,_fnAddOptionsHtml:U,_fnDetectHeader:F,_fnGetUniqueThs:q,_fnFeatureHtmlFilter:K,_fnFilterComplete:j,_fnFilterCustom:Y,_fnFilterColumn:W,_fnFilter:X,_fnFilterCreateSearch:Q,_fnEscapeRegex:Z,_fnFilterData:J,_fnFeatureHtmlInfo:ae,_fnUpdateInfo:ne,_fnInfoMacros:se,_fnInitialise:ie,_fnInitComplete:re,_fnLengthChange:oe,_fnFeatureHtmlLength:le,_fnFeatureHtmlPaginate:ce,_fnPageChange:de,_fnFeatureHtmlProcessing:ue,_fnProcessingDisplay:pe,_fnFeatureHtmlTable:he,_fnScrollDraw:fe,_fnApplyToChildren:me,_fnCalculateColumnWidths:_e,_fnThrottle:be,_fnConvertToWidth:ve,_fnScrollingWidthAdjust:ge,_fnGetWidestNode:ye,_fnGetMaxLenString:we,_fnStringToCss:Te,_fnScrollBarWidth:Ee,_fnSortFlatten:Se,_fnSort:Ie,_fnSortAria:xe,_fnSortListener:Ae,_fnSortAttachListener:Me,_fnSortingClasses:ke,_fnSortData:De,_fnSaveState:Ce,_fnLoadState:Pe,_fnSettingsFromNode:$e,_fnLog:Oe,_fnMap:Re,_fnBindAction:Ne,_fnCallbackReg:Ue,_fnCallbackFire:Fe,_fnLengthOverflow:qe,_fnRenderer:ze,_fnDataSource:Ve,_fnRowAttributes:$,_fnCalculateEnd:function(){}}),n.fn.dataTable=Ke,n.fn.dataTableSettings=Ke.settings,n.fn.dataTableExt=Ke.ext,n.fn.DataTable=function(t){return n(this).dataTable(t).api()},n.each(Ke,function(t,e){n.fn.DataTable[t]=e}),n.fn.dataTable};"function"==typeof define&&define.amd?define("datatables",["jquery"],n):"object"==typeof exports?n(require("jquery")):jQuery&&!jQuery.fn.dataTable&&n(jQuery)}(window,document),function(){var t=function(t,e){t.extend(e.ext.classes,{sWrapper:"dataTables_wrapper dt-foundation"}),t.extend(!0,e.defaults,{dom:"<'row'<'small-6 columns'l><'small-6 columns'f>r>t<'row'<'small-6 columns'i><'small-6 columns'p>>",renderer:"foundation"}),e.ext.renderer.pageButton.foundation=function(a,n,s,i,r,o){var l,c,d=new e.Api(a),u=a.oClasses,p=a.oLanguage.oPaginate,h=function(e,n){var i,f,m,_,b=function(t){t.preventDefault(),"ellipsis"!==t.data.action&&d.page(t.data.action).draw(!1)};for(i=0,f=n.length;f>i;i++)if(_=n[i],t.isArray(_))h(e,_);else{switch(c=l="",_){case"ellipsis":l="&hellip;",c="unavailable";break;case"first":l=p.sFirst,c=_+(r>0?"":" unavailable");break;case"previous":l=p.sPrevious,c=_+(r>0?"":" unavailable");break;case"next":l=p.sNext,c=_+(o-1>r?"":" unavailable");break;case"last":l=p.sLast,c=_+(o-1>r?"":" unavailable");break;default:l=_+1,c=r===_?"current":""}l&&(m=t("<li>",{"class":u.sPageButton+" "+c,"aria-controls":a.sTableId,tabindex:a.iTabIndex,id:0===s&&"string"==typeof _?a.sTableId+"_"+_:null}).append(t("<a>",{href:"#"}).html(l)).appendTo(e),a.oApi._fnBindAction(m,{action:_},b))}};h(t(n).empty().html('<ul class="pagination"/>').children("ul"),i)},e.TableTools&&(t.extend(!0,e.TableTools.classes,{container:"DTTT button-group",buttons:{normal:"button",disabled:"disabled"},collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},select:{row:"active"}}),t.extend(!0,e.TableTools.DEFAULTS.oTags,{collection:{container:"ul",button:"li",liner:"a"}}))};"function"==typeof define&&define.amd?define("foundation-datatables",["jquery","datatables"],t):"object"==typeof exports?t(require("jquery"),require("datatables")):jQuery&&t(jQuery,jQuery.fn.dataTable)}(window,document),define("utils/resource-select",["require","utils/notifier","utils/locale","opennebula/cluster","opennebula/user","opennebula/group"],function(t){var e=t("utils/notifier"),a=t("utils/locale");t("opennebula/cluster"),t("opennebula/user"),t("opennebula/group");var n=function(n,s,i,r,o,l,c,d,u,p){var h=t("opennebula/"+i.toLowerCase());$(n,s).html('<i class="fa fa-spinner fa-spin"></i>'),h.list({timeout:!0,success:function(t,e){var f='<select class="resource_list_select">';o&&(f+='<option class="empty_value" value="">'+a.tr("Please select")+"</option>"),"Cluster"==i&&(l||(l=""),l+='<option value="-1">Default (none)</option>'),l&&(f+=l),c||(c=[]);var m=h.resource;$.each(e,function(){for(var t=this[m].ID,e=this[m].NAME,a=!0,n=0;n<c.length;n++)if(this[m][c[n]]==d[n]){a=!1;break}a&&(f+='<option elem_id="'+t+'" value="'+t+'">',p||(f+=t+": "),f+=e+"</option>")}),f+="</select>",$(n,s).html(f),r&&($(n+" .resource_list_select",s).val(r),u&&$(n+" .resource_list_select",s).change())},error:e.onError})};return{insert:n}}),define("utils/progress-bar",["require"],function(){var t=function(t,e,a,n){return percentage=0,e>0?(percentage=Math.floor(t/e*100),percentage>100&&(percentage=100)):0==e&&t>0&&(percentage=100),a=a||t+" / "+(e>=0?e:"-"),n?{percentage:percentage,str:a}:(html='<span class="progress-text right" style="font-size: 12px">'+a+'</span><br><div class="progress radius" style="height: 10px; margin-bottom:0px"><span class="meter" style="width: '+percentage+'%"></div>',html)};return{html:t}}),define("utils/humanize",["require","utils/locale"],function(t){function e(t,e,a){"undefined"==typeof t&&(t=0);for(var n=["","K","M","G","T"],s=e?0:1;t>=1024&&4>s;)t/=1024,s++;t=Math.round(10*t)/10,t-Math.round(t)==0&&(t=Math.round(t)),void 0==a&&(a="B");var i=t+n[s]+a;return i}function a(t){return e(t,!0)}function n(t){return e(t)}function s(t){"undefined"==typeof t&&(t=0);for(var e=["MB","GB","TB"],a=0;t>=1024&&2>a;)t/=1024,a++;t=Math.round(10*t)/10,t-Math.round(t)==0&&(t=Math.round(t));var n=t+e[a];return n}function i(t){var e=Math.floor(t/86400);t-=86400*e;var a=Math.floor(t/3600)%24;t-=3600*a;var n=Math.floor(t/60)%60;t-=60*n;var s="";return e>0&&(s+=e+"d "),a>0&&(s+=a+"h "),s+=n+"m "}function r(t,e){for(var a=""+t;a.length<e;)a="0"+a;return a}function o(t){var e=new Date;e.setTime(1e3*t);var a=r(e.getSeconds(),2),n=r(e.getHours(),2),s=r(e.getMinutes(),2),i=r(e.getDate(),2),o=r(e.getMonth()+1,2),l=e.getFullYear();return n+":"+s+":"+a+" "+i+"/"+o+"/"+l}function l(t,e){var a=new Date;a.setTime(1e3*t);{var n=(r(a.getSeconds(),2),r(a.getHours(),2)),s=r(a.getMinutes(),2),i=r(a.getDate(),2),o=r(a.getMonth()+1,2);a.getFullYear()}return e?i+"/"+o:n+":"+s}function c(t,e,a,n,s){var i="";if(!t)return"Not defined";e||(e=10),a||(a="bold"),n||(n="1px solid #efefef"),s||(s=6);var r=null;if(t.constructor==Array)for(r=0;r<t.length;++r)i+=d(r,t[r],e,a,n,s);else for(r in t)i+=d(r,t[r],e,a,n,s);return i}function d(t,e,a,n,s,i){var r="";return"object"==typeof e?(r+='<tr>        <td class="key_td" style=            "padding-left:'+a+"px;             font-weight:"+n+";             border-bottom:"+s+";             padding-top:"+i+"px;             padding-bottom:"+i+'px;">'+t+'</td>        <td class="value_td" style=            "border-bottom:'+s+";             padding-top:"+i+"px;             padding-bottom:"+i+'px">        </td>      </tr>',r+=c(e,a+25,"normal","0",1)):r+='<tr>        <td class="key_td" style="            padding-left:'+a+"px;            font-weight:"+n+";            border-bottom:"+s+";            padding-top:"+i+"px;            padding-bottom:"+i+'px">'+t+'</td>        <td class="value_td" style="            border-bottom:'+s+";            padding-top:"+i+"px;            padding-bottom:"+i+'px">'+e+"</td>      </tr>",r}function u(t){function e(t){return 1e3>t?t+1900:t}var a,n,s=Math.round((new Date).getTime()/1e3)-t,i=new Date(1e3*t);return 60>s?s+"s ago":3600>s?(a=Math.floor(s/60),a+"m ago"):86400>s?(n=Math.floor(s/60/60),n+"h ago"):s>86400?i.getYear()!==(new Date).getYear()?i.getDay()+" "+p.months[i.getMonth()].substr(0,3)+" "+e(i.getYear()):i.getDay()+" "+p.months[i.getMonth()].substr(0,3):s}var p=t("utils/locale");return{size:e,sizeFromB:a,sizeFromKB:n,sizeFromMB:s,prettyDuration:i,prettyTime:o,prettyTimeAxis:l,prettyPrintJSON:c,prettyTimeAgo:u}}),define("utils/quotas/quota-widgets",["require","utils/progress-bar","utils/humanize","utils/locale","sunstone","utils/resource-select","./quota-limits","utils/quotas/quota-defaults"],function(t){function e(t){return $.isEmptyObject(t.VM_QUOTA)&&$.isEmptyObject(t.DATASTORE_QUOTA)&&$.isEmptyObject(t.IMAGE_QUOTA)&&$.isEmptyObject(t.NETWORK_QUOTA)}function a(t){$.isEmptyObject(t.VM_QUOTA)&&0!=t.ID&&(t.VM_QUOTA={VM:{VMS:z,VMS_USED:0,CPU:z,CPU_USED:0,MEMORY:z,MEMORY_USED:0,VOLATILE_SIZE:z,VOLATILE_SIZE_USED:0}})}function n(t,e){var a=$.isEmptyObject(t.VM_QUOTA),n="";n+=a?'<fieldset style="display: none" class="editable_quota">':"<fieldset>";var s;return s=a?y(0,z,e.VM_QUOTA.VM.VMS,{quota_name:"VM_VMS"}):y(t.VM_QUOTA.VM.VMS_USED,t.VM_QUOTA.VM.VMS,e.VM_QUOTA.VM.VMS,{quota_name:"VM_VMS"}),n+="<legend>"+L.tr("VMs")+"</legend>        <div>"+s+"</div>        <br>      </fieldset>"}function s(t,e){var a=$.isEmptyObject(t.VM_QUOTA),n="";n+=a?'<fieldset style="display: none" class="editable_quota">':"<fieldset>";var s;return s=a?y(0,z,e.VM_QUOTA.VM.CPU,{is_float:!0,quota_name:"VM_CPU"}):y(t.VM_QUOTA.VM.CPU_USED,t.VM_QUOTA.VM.CPU,e.VM_QUOTA.VM.CPU,{is_float:!0,quota_name:"VM_CPU"}),n+="<legend>"+L.tr("CPU")+"</legend>        <div>"+s+"</div>        <br>        </fieldset>"}function i(t,e){var a=$.isEmptyObject(t.VM_QUOTA),n="";n+=a?'<fieldset style="display: none" class="editable_quota">':"<fieldset>";var s;return s=a?y(0,z,e.VM_QUOTA.VM.MEMORY,{mb:!0,quota_name:"VM_MEMORY"}):y(t.VM_QUOTA.VM.MEMORY_USED,t.VM_QUOTA.VM.MEMORY,e.VM_QUOTA.VM.MEMORY,{mb:!0,quota_name:"VM_MEMORY"}),n+="<legend>"+L.tr("Memory")+"</legend>        <div>"+s+"</div>        <br>        </fieldset>"}function r(t,e){var a=$.isEmptyObject(t.VM_QUOTA),n="";n+=a?'<fieldset style="display: none" class="editable_quota">':"<fieldset>";var s;return s=a?y(0,z,e.VM_QUOTA.VM.VOLATILE_SIZE,{mb:!0,quota_name:"VM_VOLATILE_SIZE"}):y(t.VM_QUOTA.VM.VOLATILE_SIZE_USED,t.VM_QUOTA.VM.VOLATILE_SIZE,e.VM_QUOTA.VM.VOLATILE_SIZE,{mb:!0,quota_name:"VM_VOLATILE_SIZE"}),n+="<legend>"+L.tr("Volatile disks")+"</legend>        <div>"+s+"</div>        <br>        </fieldset>"}function o(t,e){var a=$.isEmptyObject(t.IMAGE_QUOTA),n="";n+=a?'<fieldset style="padding: 5px 15px; display: none" class="editable_quota">':'<fieldset style="padding: 5px 15px">',n+="<legend>"+L.tr("Image")+'</legend>          <table class="quota_table extended_table image_quota_table">          <thead>              <tr>                  <th style="width:16%">'+L.tr("ID")+'</th>                  <th style="width:84%">'+L.tr("Running VMs")+"</th>              </tr>          </thead>          <tbody>";var s=[];a||($.isArray(t.IMAGE_QUOTA.IMAGE)?s=t.IMAGE_QUOTA.IMAGE:t.IMAGE_QUOTA.IMAGE.ID&&(s=[t.IMAGE_QUOTA.IMAGE]));for(var i=0;i<s.length;i++){var r=e.IMAGE_QUOTA[s[i].ID];void 0==r&&(r={RVMS:V});var o=y(s[i].RVMS_USED,s[i].RVMS,r.RVMS,{quota_name:"IMAGE_RVMS"});n+='<tr class="image_quota_tr" quota_id="'+s[i].ID+'">          <td>'+s[i].ID+"</td>          <td>"+o+"</td>        </tr>"}return n+='</tbody>              <tfoot>                  <tr class="editable_quota" style="display: none">                      <td colspan="2">                          <a type="button"                             class="button small radius small-12"                             id="image_add_quota_btn"><i class="fa fa-plus"></i>                            '+L.tr("Add a new quota")+"                          </a>                      </td>                  </tr>              </tfoot>          </table>      </fieldset>"}function l(t,e){t.off("click","#image_add_quota_btn"),t.on("click","#image_add_quota_btn",function(){return $(".image_quota_table tbody",t).append('<tr class="image_quota_tr" quota_id="-1">          <td class="image_select" colspan="2"></td>          <td class="rvms_bar"></td>        </tr>'),U.insert("td.image_select",$(".image_quota_table tbody tr",t).last(),"Image",null,!0),$(".image_quota_table tbody tr",t).last().off("change",".resource_list_select"),$(".image_quota_table tbody tr",t).last().on("change",".resource_list_select",function(){$(this).parents("td").attr("colspan","1");var t=$(this).val(),a=$(this).parents("tr");a.attr("quota_id",t);var n=e.IMAGE_QUOTA[t];void 0==n&&(n={RVMS:V});var s=y(0,z,n.RVMS,{quota_name:"IMAGE_RVMS"});$("td.rvms_bar",a).html(s),$(".editable_quota",a).show(),$(".non_editable_quota",a).hide(),$.each($("input",a),function(){m(this)})}),!1})}function c(t,e){var a=$.isEmptyObject(t.DATASTORE_QUOTA),n="";n+=a?'<fieldset style="padding: 5px 15px; display: none" class="editable_quota">':'<fieldset style="padding: 5px 15px">',n+="<legend>"+L.tr("Datastore")+'</legend>        <table class="quota_table extended_table ds_quota_table">          <thead>              <tr>                <th style="width:16%">'+L.tr("ID")+'</th>                <th style="width:42%">'+L.tr("Images")+'</th>                <th style="width:42%">'+L.tr("Size")+"</th>              </tr>          </thead>          <tbody>";var s=[];a||($.isArray(t.DATASTORE_QUOTA.DATASTORE)?s=t.DATASTORE_QUOTA.DATASTORE:t.DATASTORE_QUOTA.DATASTORE.ID&&(s=[t.DATASTORE_QUOTA.DATASTORE]));for(var i=0;i<s.length;i++){var r=e.DATASTORE_QUOTA[s[i].ID];void 0==r&&(r={IMAGES:V,SIZE:V});var o=y(s[i].IMAGES_USED,s[i].IMAGES,r.IMAGES,{quota_name:"DS_IMAGES"}),l=y(s[i].SIZE_USED,s[i].SIZE,r.SIZE,{mb:!0,quota_name:"DS_SIZE"});n+='<tr class="ds_quota_tr" quota_id="'+s[i].ID+'">        <td>'+s[i].ID+"</td>        <td>"+o+"</td>        <td>"+l+"</td>      </tr>"}return n+='</tbody>            <tfoot>                <tr class="editable_quota" style="display: none">                    <td colspan="3">                        <a type="button"                           class="button small radius small-12"                           id="ds_add_quota_btn"><i class="fa fa-plus"></i>                          '+L.tr("Add a new quota")+'                        </a>                    </td>                </tr>            </tfoot>        </table>        <div class="">        </div>    </fieldset>'}function d(t,e){return t.off("click","#ds_add_quota_btn"),t.on("click","#ds_add_quota_btn",function(){return $(".ds_quota_table tbody",t).append('<tr class="ds_quota_tr" quota_id="-1">          <td class="ds_select" colspan="3"></td>          <td class="img_bar"></td>          <td class="size_bar"></td>        </tr>'),U.insert("td.ds_select",$(".ds_quota_table tbody tr",t).last(),"Datastore",null,!0),$(".ds_quota_table tbody tr",t).last().off("change",".resource_list_select"),$(".ds_quota_table tbody tr",t).last().on("change",".resource_list_select",function(){$(this).parents("td").attr("colspan","1");var t=$(this).val(),a=$(this).parents("tr");a.attr("quota_id",t);var n=e.DATASTORE_QUOTA[t];void 0==n&&(n={IMAGES:V,SIZE:V});var s=y(0,z,n.IMAGES,{quota_name:"DS_IMAGES"}),i=y(0,z,n.SIZE,{mb:!0,quota_name:"DS_SIZE"});$("td.img_bar",a).html(s),$("td.size_bar",a).html(i),$(".editable_quota",a).show(),$(".non_editable_quota",a).hide(),$.each($("input",a),function(){m(this)})}),!1}),!1}function u(t,e){var a=$.isEmptyObject(t.NETWORK_QUOTA),n="";n+=a?'<fieldset style="padding: 5px 15px; display: none" class="editable_quota">':'<fieldset style="padding: 5px 15px">',n+="<legend>"+L.tr("Network")+'</legend>        <table class="quota_table extended_table network_quota_table">            <thead>                <tr>                    <th style="width:16%">'+L.tr("ID")+'</th>                    <th style="width:84%">'+L.tr("Leases")+"</th>                </tr>            </thead>            <tbody>";var s=[];a||($.isArray(t.NETWORK_QUOTA.NETWORK)?s=t.NETWORK_QUOTA.NETWORK:t.NETWORK_QUOTA.NETWORK.ID&&(s=[t.NETWORK_QUOTA.NETWORK]));for(var i=0;i<s.length;i++){var r=e.NETWORK_QUOTA[s[i].ID];void 0==r&&(r={LEASES:V});var o=y(s[i].LEASES_USED,s[i].LEASES,r.LEASES,{quota_name:"NETWORK_LEASES"});n+='<tr class="network_quota_tr" quota_id="'+s[i].ID+'">          <td>'+s[i].ID+"</td>          <td>"+o+"</td>        </tr>"}return n+='</tbody>            <tfoot>              <tr class="editable_quota" style="display: none">                <td colspan="2">                  <a type="button"                     class="button small radius small-12"                     id="network_add_quota_btn"><i class="fa fa-plus"></i>                    '+L.tr("Add a new quota")+"                  </a>                </td>              </tr>            </tfoot>          </table>        </fieldset>"}function p(t,e){return t.off("click","#network_add_quota_btn"),t.on("click","#network_add_quota_btn",function(){return $(".network_quota_table tbody",t).append('<tr class="network_quota_tr" quota_id="-1">              <td class="network_select" colspan="2"></td>              <td class="leases_bar"></td>          </tr>'),U.insert("td.network_select",$(".network_quota_table tbody tr",t).last(),"Network",null,!0),$(".network_quota_table tbody tr",t).last().off("change",".resource_list_select"),$(".network_quota_table tbody tr",t).last().on("change",".resource_list_select",function(){$(this).parents("td").attr("colspan","1");
+var t=$(this).val(),a=$(this).parents("tr");a.attr("quota_id",t);var n=e.NETWORK_QUOTA[t];void 0==n&&(n={LEASES:V});var s=y(0,z,n.LEASES,{quota_name:"NETWORK_LEASES"});$("td.leases_bar",a).html(s),$(".editable_quota",a).show(),$(".non_editable_quota",a).hide(),$.each($("input",a),function(){m(this)})}),!1}),!1}function h(t,l,d){a(t);var p,h=n(t,l),f=s(t,l),m=i(t,l),_=r(t,l),b=o(t,l),v=u(t,l),g=c(t,l);return p='<div class="quotas">',d&&(p+='<div class="row">          <div class="large-12 columns">            <span class="right">              <button class="button secondary small radius" id="edit_quotas_button">                <span class="fa fa-pencil-square-o"></span> '+L.tr("Edit")+'              </button>              <button class="button alert small radius" id="cancel_quotas_button" style="display: none">                '+L.tr("Cancel")+'              </button>              <button class="button success small radius" id="submit_quotas_button" style="display: none">                '+L.tr("Apply")+"              </button>            </span>          </div>        </div>"),e(t)&&(p+='<div class="row non_editable_quota">          <div class="large-8 large-centered columns">            <div class="text-center">              <span class="fa-stack fa-5x" style="color: #dfdfdf">                <i class="fa fa-cloud fa-stack-2x"></i>                <i class="fa fa-align-left fa-stack-1x fa-inverse"></i>              </span>              <br>              <p style="font-size: 18px; color: #999">                '+L.tr("There are no quotas defined")+"              </p>            </div>          </div>        </div>"),p+='<div class="row">          <div class="large-6 columns">'+h+'</div>          <div class="large-6 columns">'+f+'</div>        </div>        <div class="row">          <div class="large-6 columns">'+m+'</div>          <div class="large-6 columns">'+_+'</div>        </div>        <br><br>        <div class="row">          <div class="large-6 columns">'+b+'</div>          <div class="large-6 columns right">'+v+'</div>        </div>        <br><br>        <div class="row">          <div class="large-12 columns">'+g+"</div>        </div>      </div>"}function f(t){switch(t.attr("quota_mode")){case"edit":return t.val();case"default":return z;case"unlimited":return V}}function m(t){switch($(t).val()){case z:$(t).parents(".quotabar_container").find(".quotabar_default_btn").click();break;case V:$(t).parents(".quotabar_container").find(".quotabar_unlimited_btn").click()}}function _(t){return $("#edit_quotas_button",t).hide(),$("#cancel_quotas_button",t).show(),$("#submit_quotas_button",t).show(),$.each($("div.quotabar_container input",t),function(){m(this)}),$(".editable_quota",t).show(),$(".non_editable_quota",t).hide(),!1}function b(t,e){e.off("click",".quotabar_edit_btn"),e.on("click",".quotabar_edit_btn",function(){var t=$(this).parents(".quotabar_container").find("input");return"edit"!=t.attr("quota_mode")&&(t.attr("quota_mode","edit"),t.attr("disabled",!1),t.val(t.attr("quota_limit")>=0?t.attr("quota_limit"):"0")),!1}),e.off("click",".quotabar_default_btn"),e.on("click",".quotabar_default_btn",function(){var t=$(this).parents(".quotabar_container").find("input"),e=t.attr("quota_default");return e==V&&(e="∞"),t.val(L.tr("Default")+" ("+e+")"),t.attr("quota_mode","default"),t.attr("disabled","disabled"),!1}),e.off("click",".quotabar_unlimited_btn"),e.on("click",".quotabar_unlimited_btn",function(){var t=$(this).parents(".quotabar_container").find("input");return t.val(L.tr("Unlimited")),t.attr("quota_mode","unlimited"),t.attr("disabled","disabled"),!1})}function v(t){var e={};return e.VM={CPU:f($("div[quota_name=VM_CPU] input",t)),MEMORY:f($("div[quota_name=VM_MEMORY] input",t)),VMS:f($("div[quota_name=VM_VMS] input",t)),VOLATILE_SIZE:f($("div[quota_name=VM_VOLATILE_SIZE] input",t))},$.each($("tr.image_quota_tr",t),function(){"-1"!=$(this).attr("quota_id")&&(void 0==e.IMAGE&&(e.IMAGE=[]),e.IMAGE.push({ID:$(this).attr("quota_id"),RVMS:f($("div[quota_name=IMAGE_RVMS] input",this))}))}),$.each($("tr.network_quota_tr",t),function(){"-1"!=$(this).attr("quota_id")&&(void 0==e.NETWORK&&(e.NETWORK=[]),e.NETWORK.push({ID:$(this).attr("quota_id"),LEASES:f($("div[quota_name=NETWORK_LEASES] input",this))}))}),$.each($("tr.ds_quota_tr",t),function(){"-1"!=$(this).attr("quota_id")&&(void 0==e.DATASTORE&&(e.DATASTORE=[]),e.DATASTORE.push({ID:$(this).attr("quota_id"),IMAGES:f($("div[quota_name=DS_IMAGES] input",this)),SIZE:f($("div[quota_name=DS_SIZE] input",this))}))}),e}function g(t,e,a,n){if(a){e.off("click","#edit_quotas_button"),e.on("click","#edit_quotas_button",function(){return _(e)}),e.off("click","#cancel_quotas_button"),e.on("click","#cancel_quotas_button",function(){return N.runAction(n+".show",t.ID),!1}),e.off("click","#submit_quotas_button"),e.on("click","#submit_quotas_button",function(){var a=v(e);return N.runAction(n+".set_quota",[t.ID],a),!1}),b(t,e);var s=q.getDefaultQuotas(n);l(e,s),p(e,s),d(e,s)}}function y(t,e,a,n){n||(n={}),n.quota_name||(n.quota_name="");var s;n.is_float?(t=parseFloat(t,10),s=k(e,a)):(t=parseInt(t,10),s=M(e,a)),percentage=0,s>0?(percentage=Math.floor(t/s*100),percentage>100&&(percentage=100)):0==s&&t>0&&(percentage=100);var i;return i=n.mb?R.size(1024*t)+" / "+(s>=0?R.size(1024*s):"-"):t+" / "+(s>=0?s:"-"),html='<div class="quotabar_container" quota_name="'+n.quota_name+'">        <div class="row collapse editable_quota" style="font-size: 12px; display: none">          <div class="small-2 columns">            <label style="font-size: 12px; margin: 0px" class="inline right">'+t+" /&nbsp;</label>          </div>",html+=n.mb?'<div class="small-4 columns">':'<div class="small-5 columns">',html+='<input type="text" style="font-size: 12px; margin: 0px" quota_mode="edit" quota_limit="'+e+'" quota_default="'+a+'" value="'+e+'"/>          </div>',n.mb&&(html+='<div class="small-1 columns">            <span style="font-size: 12px; height: 2.0625rem !important; line-height: 2.0625rem !important;" class="postfix">MB</span>          </div>'),html+='<div class="small-5 columns">            <ul class="button-group">              <li><a style="font-size: 1em; margin: 0px" class="button tiny secondary quotabar_edit_btn"><span class="fa fa-pencil"></span></a></li>              <li><a style="font-size: 1em; margin: 0px" class="button tiny secondary quotabar_default_btn"><span class="fa fa-file-o"></span></a></li>              <li><a style="font-size: 1em; margin: 0px" class="button tiny secondary quotabar_unlimited_btn"><strong>&infin;</strong></a></li>            </ul>          </div>        </div>        <div class="row collapse non_editable_quota">          <div class="large-12 columns">            <div class="progress-text right" style="font-size: 12px">              '+i+'            </div>            <br>            <div class="progress radius" style="height: 10px; margin-bottom:0px">              <span class="meter" style="width: '+percentage+'%" />            </div>          </div>        </div>      </div>',html}function w(t,e,a,n){var s=parseInt(t,10),i=M(e,a);return S(s,i,null,n)}function T(t,e,a,n){var s=parseInt(t,10),i=M(e,a);return info_str=R.size(1024*s)+" / "+(i>=0?R.size(1024*i):"-"),S(s,i,info_str,n)}function E(t,e,a,n){var s=parseFloat(t,10),i=k(e,a);return S(s,i,null,n)}function S(t,e,a,n){return percentage=0,e>0?(percentage=Math.floor(t/e*100),percentage>100&&(percentage=100)):0==e&&t>0&&(percentage=100),a=a||t+" / "+(e>=0?e:"-"),n?{percentage:percentage,str:a}:(html='<span class="progress-text right" style="font-size: 12px">'+a+'</span><br><div class="progress radius" style="height: 10px; margin-bottom:0px"><span class="meter" style="width: '+percentage+'%"></div>',html)}function I(t,e,a){var n=parseInt(t,10),s=M(e,a);return O.html(n,s,null)}function x(t,e,a){var n=parseInt(t,10),s=M(e,a);return info_str=R.size(1024*n)+" / "+(s>=0?R.size(1024*s):"-"),O.html(n,s,info_str)}function A(t,e,a){var n=parseFloat(t,10),s=k(e,a);return O.html(n,s,null)}function M(t,e){return i_limit=parseInt(t,10),i_default_limit=parseInt(e,10),t==z&&(i_limit=i_default_limit),isNaN(i_limit)&&(i_limit=0),i_limit}function k(t,e){return f_limit=parseFloat(t,10),f_default_limit=parseFloat(e,10),f_limit==parseFloat(z,10)&&(f_limit=f_default_limit),isNaN(f_limit)&&(f_limit=0),f_limit}function D(){return'<div class="row">        <div class="large-12 columns">          <dl class="tabs right-info-tabs text-center" data-tab>               <dd class="active"><a href="#vm_quota"><i class="fa fa-cloud"></i><br>'+L.tr("VM")+'</a></dd>               <dd><a href="#datastore_quota"><i class="fa fa-folder-open"></i><br>'+L.tr("Datastore")+'</a></dd>               <dd><a href="#image_quota"><i class="fa fa-upload"></i><br>'+L.tr("Image")+'</a></dd>               <dd><a href="#network_quota"><i class="fa fa-globe"></i><br>'+L.tr("VNet")+'</a></dd>          </dl>        </div>      </div>      <div class="row">        <div class="tabs-content">          <div id="vm_quota" class="content active">          </div>          <div id="datastore_quota" class="content">          </div>          <div id="image_quota" class="content">          </div>          <div id="network_quota" class="content">          </div>        </div>      </div>'}function C(t){$("form",t).submit(function(){var e=v(t),a=$("div.form_buttons button",this).val(),n=N.getAction(a).elements();return N.runAction(a,n,e),!1})}function P(t,e,a){var h=n(t,e),f=s(t,e),m=i(t,e),v=r(t,e),g=o(t,e),y=u(t,e),w=c(t,e);$("#vm_quota",a).html('<div class="large-6 columns">'+h+'</div>        <div class="large-6 columns">'+f+'</div>        <div class="large-6 columns">'+m+'</div>        <div class="large-6 columns">'+v+"</div>"),$("#datastore_quota",a).html('<div class="large-12 columns">'+w+"</div>"),$("#image_quota",a).html('<div class="large-12 columns">'+g+"</div>"),$("#network_quota",a).html('<div class="large-12 columns">'+y+"</div>"),b(t,a),l(a,e),p(a,e),d(a,e),_(a),a.foundation()}var O=t("utils/progress-bar"),R=t("utils/humanize"),L=t("utils/locale"),N=t("sunstone"),U=t("utils/resource-select"),F=t("./quota-limits"),q=t("utils/quotas/quota-defaults"),z=F.QUOTA_LIMIT_DEFAULT,V=F.QUOTA_LIMIT_UNLIMITED;return{initEmptyQuotas:a,quotaBar:I,quotaBarMB:x,quotaBarFloat:A,initQuotasPanel:h,setupQuotasPanel:g,dialogHTML:D,setupQuotasDialog:C,populateQuotasDialog:P,quotaFloatInfo:E,quotaMBInfo:T,quotaInfo:w}}),define("templates/helpers/advancedSection",["require","hbs/handlebars"],function(t){var e=t("hbs/handlebars"),a=0,n=function(t,n){a+=1;var s="advanced_section_"+a;return new e.SafeString('<div class="accordion_advanced"><a href="#'+s+'" class="accordion_advanced_toggle"><i class="fa fa-fw fa-chevron-down"/><i class="fa fa-fw fa-chevron-up"/>'+t+'</a><div id="'+s+'" class="content hidden">'+n.fn(this)+"</div></div>")};return e.registerHelper("advancedSection",n),n}),define("hbs!utils/accounting/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/advancedSection"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'    <div class="row acct_table">\n      <div class="large-12 columns graph_legend">\n        <h3 class="subheader"><small>'+i((e.tr||t&&t.tr||s).call(t,"CPU hours",{name:"tr",hash:{},data:n}))+'</small></h3>\n      </div>\n      <div class="large-12 columns" style="overflow:auto">\n        <table id="acct_cpu_datatable" class="datatable twelve">\n          <thead>\n            <tr>\n              <th>'+i((e.tr||t&&t.tr||s).call(t,"Date",{name:"tr",hash:{},data:n}))+'</th>\n            </tr>\n          </thead>\n          <tbody id="tbody_acct_cpu_datatable">\n          </tbody>\n        </table>\n      </div>\n    </div>\n    <div class="row acct_table">\n      <div class="large-12 columns graph_legend">\n        <h3 class="subheader"><small>'+i((e.tr||t&&t.tr||s).call(t,"Memory GB hours",{name:"tr",hash:{},data:n}))+'</small></h3>\n      </div>\n      <div class="large-12 columns" style="overflow:auto">\n        <table id="acct_mem_datatable" class="datatable twelve">\n          <thead>\n            <tr>\n              <th>'+i((e.tr||t&&t.tr||s).call(t,"Date",{name:"tr",hash:{},data:n}))+'</th>\n            </tr>\n          </thead>\n          <tbody id="tbody_acct_mem_datatable">\n          </tbody>\n        </table>\n      </div>\n    </div>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div class="row">\n  <div id="acct_start_time_container" class="left columns">\n    <label for="acct_start_time">'+r((e.tr||t&&t.tr||i).call(t,"Start time",{name:"tr",hash:{},data:n}))+'</label>\n    <input id="acct_start_time" type="date" placeholder="2013-06-30"/>\n  </div>\n  <div id="acct_end_time_container" class="left columns">\n    <label for="acct_end_time">'+r((e.tr||t&&t.tr||i).call(t,"End time",{name:"tr",hash:{},data:n}))+'</label>\n    <input id="acct_end_time" type="date" placeholder="2013-12-30"/>\n  </div>\n  <div id="acct_group_by_container" class="left columns">\n    <label for="acct_group_by">'+r((e.tr||t&&t.tr||i).call(t,"Group by",{name:"tr",hash:{},data:n}))+'</label>\n    <select id="acct_group_by" name="acct_group_by">\n      <option value="user">'+r((e.tr||t&&t.tr||i).call(t,"User",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="group">'+r((e.tr||t&&t.tr||i).call(t,"Group",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="vm">'+r((e.tr||t&&t.tr||i).call(t,"VM",{name:"tr",hash:{},data:n}))+'</option>\n    </select>\n  </div>\n  <div id="acct_owner_container" class="left columns">\n    <label for="acct_owner">'+r((e.tr||t&&t.tr||i).call(t,"Filter",{name:"tr",hash:{},data:n}))+'</label>\n    <div class="row">\n      <div class="large-5 columns">\n        <select id="acct_owner" name="acct_owner">\n          <option value="acct_owner_all">'+r((e.tr||t&&t.tr||i).call(t,"All",{name:"tr",hash:{},data:n}))+'</option>\n          <option value="acct_owner_group">'+r((e.tr||t&&t.tr||i).call(t,"Group",{name:"tr",hash:{},data:n}))+'</option>\n          <option value="acct_owner_user">'+r((e.tr||t&&t.tr||i).call(t,"User",{name:"tr",hash:{},data:n}))+'</option>\n        </select>\n      </div>\n      <div class="large-7 columns">\n        <div id="acct_owner_select"/>\n      </div>\n    </div>\n  </div>\n  <div id="acct_button_container" class="left columns" style="margin-top: 15px">\n    <button class="button radius success large-12" id="acct_submit" type="button">\n      '+r((e.tr||t&&t.tr||i).call(t,"Get Accounting",{name:"tr",hash:{},data:n}))+'\n    </button>\n  </div>\n</div>\n<br>\n<div id="acct_placeholder">\n  <div class="row">\n    <div class="large-8 large-centered columns">\n      <div class="text-center">\n        <span class="fa-stack fa-5x" style="color: #dfdfdf">\n          <i class="fa fa-cloud fa-stack-2x"></i>\n          <i class="fa fa-bar-chart-o fa-stack-1x fa-inverse"></i>\n        </span>\n        <div id="acct_no_data" class="hidden">\n          <br>\n          <p style="font-size: 18px; color: #999">\n            '+r((e.tr||t&&t.tr||i).call(t,"There are no accounting records",{name:"tr",hash:{},data:n}))+'\n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<div id="acct_content" class="hidden">\n  <div class="row">\n    <div class="large-12 columns graph_legend">\n      <h3 class="subheader"><small>'+r((e.tr||t&&t.tr||i).call(t,"CPU hours",{name:"tr",hash:{},data:n}))+'</small></h3>\n    </div>\n    <div class="large-12 columns">\n      <div class="large-12 columns centered graph" id="acct_cpu_graph" style="height: 200px;">\n      </div>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns graph_legend">\n      <h3 class="subheader"><small>'+r((e.tr||t&&t.tr||i).call(t,"Memory GB hours",{name:"tr",hash:{},data:n}))+'</small></h3>\n    </div>\n    <div class="large-12 columns">\n      <div class="large-12 columns centered graph" id="acct_mem_graph" style="height: 200px;">\n      </div>\n    </div>\n  </div>\n  <br>\n';return s=(e.advancedSection||t&&t.advancedSection||i).call(t,(e.tr||t&&t.tr||i).call(t,"Accounting Tables",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+"</div>"},useData:!0});return e.registerPartial("utils/accounting/html",a),a}),function(t){t.color={},t.color.make=function(e,a,n,s){var i={};return i.r=e||0,i.g=a||0,i.b=n||0,i.a=null!=s?s:1,i.add=function(t,e){for(var a=0;a<t.length;++a)i[t.charAt(a)]+=e;return i.normalize()},i.scale=function(t,e){for(var a=0;a<t.length;++a)i[t.charAt(a)]*=e;return i.normalize()},i.toString=function(){return i.a>=1?"rgb("+[i.r,i.g,i.b].join(",")+")":"rgba("+[i.r,i.g,i.b,i.a].join(",")+")"},i.normalize=function(){function t(t,e,a){return t>e?t:e>a?a:e}return i.r=t(0,parseInt(i.r),255),i.g=t(0,parseInt(i.g),255),i.b=t(0,parseInt(i.b),255),i.a=t(0,i.a,1),i},i.clone=function(){return t.color.make(i.r,i.b,i.g,i.a)},i.normalize()},t.color.extract=function(e,a){var n;do{if(n=e.css(a).toLowerCase(),""!=n&&"transparent"!=n)break;e=e.parent()}while(e.length&&!t.nodeName(e.get(0),"body"));return"rgba(0, 0, 0, 0)"==n&&(n="transparent"),t.color.parse(n)},t.color.parse=function(a){var n,s=t.color.make;if(n=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))return s(parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3],10));if(n=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(a))return s(parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3],10),parseFloat(n[4]));if(n=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(a))return s(2.55*parseFloat(n[1]),2.55*parseFloat(n[2]),2.55*parseFloat(n[3]));if(n=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(a))return s(2.55*parseFloat(n[1]),2.55*parseFloat(n[2]),2.55*parseFloat(n[3]),parseFloat(n[4]));if(n=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))return s(parseInt(n[1],16),parseInt(n[2],16),parseInt(n[3],16));if(n=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(a))return s(parseInt(n[1]+n[1],16),parseInt(n[2]+n[2],16),parseInt(n[3]+n[3],16));var i=t.trim(a).toLowerCase();return"transparent"==i?s(255,255,255,0):(n=e[i]||[0,0,0],s(n[0],n[1],n[2]))};var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}}(jQuery),function(t){function e(e,a){var n=a.children("."+e)[0];if(null==n&&(n=document.createElement("canvas"),n.className=e,t(n).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(a),!n.getContext)){if(!window.G_vmlCanvasManager)throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.");n=window.G_vmlCanvasManager.initElement(n)}this.element=n;var s=this.context=n.getContext("2d"),i=window.devicePixelRatio||1,r=s.webkitBackingStorePixelRatio||s.mozBackingStorePixelRatio||s.msBackingStorePixelRatio||s.oBackingStorePixelRatio||s.backingStorePixelRatio||1;this.pixelRatio=i/r,this.resize(a.width(),a.height()),this.textContainer=null,this.text={},this._textCache={}}function a(a,s,i,r){function o(t,e){e=[_e].concat(e);for(var a=0;a<t.length;++a)t[a].apply(this,e)}function l(){for(var a={Canvas:e},n=0;n<r.length;++n){var s=r[n];s.init(_e,a),s.options&&t.extend(!0,se,s.options)}}function c(e){t.extend(!0,se,e),e&&e.colors&&(se.colors=e.colors),null==se.xaxis.color&&(se.xaxis.color=t.color.parse(se.grid.color).scale("a",.22).toString()),null==se.yaxis.color&&(se.yaxis.color=t.color.parse(se.grid.color).scale("a",.22).toString()),null==se.xaxis.tickColor&&(se.xaxis.tickColor=se.grid.tickColor||se.xaxis.color),null==se.yaxis.tickColor&&(se.yaxis.tickColor=se.grid.tickColor||se.yaxis.color),null==se.grid.borderColor&&(se.grid.borderColor=se.grid.color),null==se.grid.tickColor&&(se.grid.tickColor=t.color.parse(se.grid.color).scale("a",.22).toString());var n,s,i,r=a.css("font-size"),l=r?+r.replace("px",""):13,c={style:a.css("font-style"),size:Math.round(.8*l),variant:a.css("font-variant"),weight:a.css("font-weight"),family:a.css("font-family")};for(i=se.xaxes.length||1,n=0;i>n;++n)s=se.xaxes[n],s&&!s.tickColor&&(s.tickColor=s.color),s=t.extend(!0,{},se.xaxis,s),se.xaxes[n]=s,s.font&&(s.font=t.extend({},c,s.font),s.font.color||(s.font.color=s.color),s.font.lineHeight||(s.font.lineHeight=Math.round(1.15*s.font.size)));for(i=se.yaxes.length||1,n=0;i>n;++n)s=se.yaxes[n],s&&!s.tickColor&&(s.tickColor=s.color),s=t.extend(!0,{},se.yaxis,s),se.yaxes[n]=s,s.font&&(s.font=t.extend({},c,s.font),s.font.color||(s.font.color=s.color),s.font.lineHeight||(s.font.lineHeight=Math.round(1.15*s.font.size)));for(se.xaxis.noTicks&&null==se.xaxis.ticks&&(se.xaxis.ticks=se.xaxis.noTicks),se.yaxis.noTicks&&null==se.yaxis.ticks&&(se.yaxis.ticks=se.yaxis.noTicks),se.x2axis&&(se.xaxes[1]=t.extend(!0,{},se.xaxis,se.x2axis),se.xaxes[1].position="top",null==se.x2axis.min&&(se.xaxes[1].min=null),null==se.x2axis.max&&(se.xaxes[1].max=null)),se.y2axis&&(se.yaxes[1]=t.extend(!0,{},se.yaxis,se.y2axis),se.yaxes[1].position="right",null==se.y2axis.min&&(se.yaxes[1].min=null),null==se.y2axis.max&&(se.yaxes[1].max=null)),se.grid.coloredAreas&&(se.grid.markings=se.grid.coloredAreas),se.grid.coloredAreasColor&&(se.grid.markingsColor=se.grid.coloredAreasColor),se.lines&&t.extend(!0,se.series.lines,se.lines),se.points&&t.extend(!0,se.series.points,se.points),se.bars&&t.extend(!0,se.series.bars,se.bars),null!=se.shadowSize&&(se.series.shadowSize=se.shadowSize),null!=se.highlightColor&&(se.series.highlightColor=se.highlightColor),n=0;n<se.xaxes.length;++n)_(de,n+1).options=se.xaxes[n];for(n=0;n<se.yaxes.length;++n)_(ue,n+1).options=se.yaxes[n];for(var d in me)se.hooks[d]&&se.hooks[d].length&&(me[d]=me[d].concat(se.hooks[d]));o(me.processOptions,[se])}function d(t){ne=u(t),b(),v()}function u(e){for(var a=[],n=0;n<e.length;++n){var s=t.extend(!0,{},se.series);null!=e[n].data?(s.data=e[n].data,delete e[n].data,t.extend(!0,s,e[n]),e[n].data=s.data):s.data=e[n],a.push(s)}return a}function p(t,e){var a=t[e+"axis"];return"object"==typeof a&&(a=a.n),"number"!=typeof a&&(a=1),a}function h(){return t.grep(de.concat(ue),function(t){return t})}function f(t){var e,a,n={};for(e=0;e<de.length;++e)a=de[e],a&&a.used&&(n["x"+a.n]=a.c2p(t.left));for(e=0;e<ue.length;++e)a=ue[e],a&&a.used&&(n["y"+a.n]=a.c2p(t.top));return void 0!==n.x1&&(n.x=n.x1),void 0!==n.y1&&(n.y=n.y1),n}function m(t){var e,a,n,s={};for(e=0;e<de.length;++e)if(a=de[e],a&&a.used&&(n="x"+a.n,null==t[n]&&1==a.n&&(n="x"),null!=t[n])){s.left=a.p2c(t[n]);break}for(e=0;e<ue.length;++e)if(a=ue[e],a&&a.used&&(n="y"+a.n,null==t[n]&&1==a.n&&(n="y"),null!=t[n])){s.top=a.p2c(t[n]);break}return s}function _(e,a){return e[a-1]||(e[a-1]={n:a,direction:e==de?"x":"y",options:t.extend(!0,{},e==de?se.xaxis:se.yaxis)}),e[a-1]}function b(){var e,a=ne.length,n=-1;for(e=0;e<ne.length;++e){var s=ne[e].color;null!=s&&(a--,"number"==typeof s&&s>n&&(n=s))}n>=a&&(a=n+1);var i,r=[],o=se.colors,l=o.length,c=0;for(e=0;a>e;e++)i=t.color.parse(o[e%l]||"#666"),e%l==0&&e&&(c=c>=0?.5>c?-c-.2:0:-c),r[e]=i.scale("rgb",1+c);var d,u=0;for(e=0;e<ne.length;++e){if(d=ne[e],null==d.color?(d.color=r[u].toString(),++u):"number"==typeof d.color&&(d.color=r[d.color].toString()),null==d.lines.show){var h,f=!0;for(h in d)if(d[h]&&d[h].show){f=!1;break}f&&(d.lines.show=!0)}null==d.lines.zero&&(d.lines.zero=!!d.lines.fill),d.xaxis=_(de,p(d,"x")),d.yaxis=_(ue,p(d,"y"))}}function v(){function e(t,e,a){e<t.datamin&&e!=-v&&(t.datamin=e),a>t.datamax&&a!=v&&(t.datamax=a)}var a,n,s,i,r,l,c,d,u,p,f,m,_=Number.POSITIVE_INFINITY,b=Number.NEGATIVE_INFINITY,v=Number.MAX_VALUE;for(t.each(h(),function(t,e){e.datamin=_,e.datamax=b,e.used=!1}),a=0;a<ne.length;++a)r=ne[a],r.datapoints={points:[]},o(me.processRawData,[r,r.data,r.datapoints]);for(a=0;a<ne.length;++a){if(r=ne[a],f=r.data,m=r.datapoints.format,!m){if(m=[],m.push({x:!0,number:!0,required:!0}),m.push({y:!0,number:!0,required:!0}),r.bars.show||r.lines.show&&r.lines.fill){var g=!!(r.bars.show&&r.bars.zero||r.lines.show&&r.lines.zero);m.push({y:!0,number:!0,required:!1,defaultValue:0,autoscale:g}),r.bars.horizontal&&(delete m[m.length-1].y,m[m.length-1].x=!0)}r.datapoints.format=m}if(null==r.datapoints.pointsize){r.datapoints.pointsize=m.length,c=r.datapoints.pointsize,l=r.datapoints.points;var y=r.lines.show&&r.lines.steps;for(r.xaxis.used=r.yaxis.used=!0,n=s=0;n<f.length;++n,s+=c){p=f[n];var w=null==p;if(!w)for(i=0;c>i;++i)d=p[i],u=m[i],u&&(u.number&&null!=d&&(d=+d,isNaN(d)?d=null:1/0==d?d=v:d==-1/0&&(d=-v)),null==d&&(u.required&&(w=!0),null!=u.defaultValue&&(d=u.defaultValue))),l[s+i]=d;if(w)for(i=0;c>i;++i)d=l[s+i],null!=d&&(u=m[i],u.autoscale!==!1&&(u.x&&e(r.xaxis,d,d),u.y&&e(r.yaxis,d,d))),l[s+i]=null;else if(y&&s>0&&null!=l[s-c]&&l[s-c]!=l[s]&&l[s-c+1]!=l[s+1]){for(i=0;c>i;++i)l[s+c+i]=l[s+i];l[s+1]=l[s-c+1],s+=c}}}}for(a=0;a<ne.length;++a)r=ne[a],o(me.processDatapoints,[r,r.datapoints]);for(a=0;a<ne.length;++a){r=ne[a],l=r.datapoints.points,c=r.datapoints.pointsize,m=r.datapoints.format;var T=_,E=_,S=b,I=b;for(n=0;n<l.length;n+=c)if(null!=l[n])for(i=0;c>i;++i)d=l[n+i],u=m[i],u&&u.autoscale!==!1&&d!=v&&d!=-v&&(u.x&&(T>d&&(T=d),d>S&&(S=d)),u.y&&(E>d&&(E=d),d>I&&(I=d)));if(r.bars.show){var x;switch(r.bars.align){case"left":x=0;break;case"right":x=-r.bars.barWidth;break;default:x=-r.bars.barWidth/2}r.bars.horizontal?(E+=x,I+=x+r.bars.barWidth):(T+=x,S+=x+r.bars.barWidth)}e(r.xaxis,T,S),e(r.yaxis,E,I)}t.each(h(),function(t,e){e.datamin==_&&(e.datamin=null),e.datamax==b&&(e.datamax=null)})}function g(){a.css("padding",0).children().filter(function(){return!t(this).hasClass("flot-overlay")&&!t(this).hasClass("flot-base")}).remove(),"static"==a.css("position")&&a.css("position","relative"),ie=new e("flot-base",a),re=new e("flot-overlay",a),le=ie.context,ce=re.context,oe=t(re.element).unbind();var n=a.data("plot");n&&(n.shutdown(),re.clear()),a.data("plot",_e)}function y(){se.grid.hoverable&&(oe.mousemove(H),oe.bind("mouseleave",K)),se.grid.clickable&&oe.click(j),o(me.bindEvents,[oe])}function w(){ve&&clearTimeout(ve),oe.unbind("mousemove",H),oe.unbind("mouseleave",K),oe.unbind("click",j),o(me.shutdown,[oe])}function T(t){function e(t){return t}var a,n,s=t.options.transform||e,i=t.options.inverseTransform;"x"==t.direction?(a=t.scale=he/Math.abs(s(t.max)-s(t.min)),n=Math.min(s(t.max),s(t.min))):(a=t.scale=fe/Math.abs(s(t.max)-s(t.min)),a=-a,n=Math.max(s(t.max),s(t.min))),t.p2c=s==e?function(t){return(t-n)*a}:function(t){return(s(t)-n)*a},t.c2p=i?function(t){return i(n+t/a)}:function(t){return n+t/a}}function E(t){for(var e=t.options,a=t.ticks||[],n=e.labelWidth||0,s=e.labelHeight||0,i=n||("x"==t.direction?Math.floor(ie.width/(a.length||1)):null),r=t.direction+"Axis "+t.direction+t.n+"Axis",o="flot-"+t.direction+"-axis flot-"+t.direction+t.n+"-axis "+r,l=e.font||"flot-tick-label tickLabel",c=0;c<a.length;++c){var d=a[c];if(d.label){var u=ie.getTextInfo(o,d.label,l,null,i);n=Math.max(n,u.width),s=Math.max(s,u.height)}}t.labelWidth=e.labelWidth||n,t.labelHeight=e.labelHeight||s}function S(e){var a=e.labelWidth,n=e.labelHeight,s=e.options.position,i="x"===e.direction,r=e.options.tickLength,o=se.grid.axisMargin,l=se.grid.labelMargin,c=!0,d=!0,u=!0,p=!1;t.each(i?de:ue,function(t,a){a&&(a.show||a.reserveSpace)&&(a===e?p=!0:a.options.position===s&&(p?d=!1:c=!1),p||(u=!1))}),d&&(o=0),null==r&&(r=u?"full":5),isNaN(+r)||(l+=+r),i?(n+=l,"bottom"==s?(pe.bottom+=n+o,e.box={top:ie.height-pe.bottom,height:n}):(e.box={top:pe.top+o,height:n},pe.top+=n+o)):(a+=l,"left"==s?(e.box={left:pe.left+o,width:a},pe.left+=a+o):(pe.right+=a+o,e.box={left:ie.width-pe.right,width:a})),e.position=s,e.tickLength=r,e.box.padding=l,e.innermost=c}function I(t){"x"==t.direction?(t.box.left=pe.left-t.labelWidth/2,t.box.width=ie.width-pe.left-pe.right+t.labelWidth):(t.box.top=pe.top-t.labelHeight/2,t.box.height=ie.height-pe.bottom-pe.top+t.labelHeight)}function x(){var e,a=se.grid.minBorderMargin;if(null==a)for(a=0,e=0;e<ne.length;++e)a=Math.max(a,2*(ne[e].points.radius+ne[e].points.lineWidth/2));var n={left:a,right:a,top:a,bottom:a};t.each(h(),function(t,e){e.reserveSpace&&e.ticks&&e.ticks.length&&("x"===e.direction?(n.left=Math.max(n.left,e.labelWidth/2),n.right=Math.max(n.right,e.labelWidth/2)):(n.bottom=Math.max(n.bottom,e.labelHeight/2),n.top=Math.max(n.top,e.labelHeight/2)))}),pe.left=Math.ceil(Math.max(n.left,pe.left)),pe.right=Math.ceil(Math.max(n.right,pe.right)),pe.top=Math.ceil(Math.max(n.top,pe.top)),pe.bottom=Math.ceil(Math.max(n.bottom,pe.bottom))}function A(){var e,a=h(),n=se.grid.show;for(var s in pe){var i=se.grid.margin||0;pe[s]="number"==typeof i?i:i[s]||0}o(me.processOffset,[pe]);for(var s in pe)pe[s]+="object"==typeof se.grid.borderWidth?n?se.grid.borderWidth[s]:0:n?se.grid.borderWidth:0;if(t.each(a,function(t,e){var a=e.options;e.show=null==a.show?e.used:a.show,e.reserveSpace=null==a.reserveSpace?e.show:a.reserveSpace,M(e)}),n){var r=t.grep(a,function(t){return t.show||t.reserveSpace});for(t.each(r,function(t,e){k(e),D(e),C(e,e.ticks),E(e)}),e=r.length-1;e>=0;--e)S(r[e]);x(),t.each(r,function(t,e){I(e)})}he=ie.width-pe.left-pe.right,fe=ie.height-pe.bottom-pe.top,t.each(a,function(t,e){T(e)}),n&&L(),G()}function M(t){var e=t.options,a=+(null!=e.min?e.min:t.datamin),n=+(null!=e.max?e.max:t.datamax),s=n-a;if(0==s){var i=0==n?1:.01;null==e.min&&(a-=i),(null==e.max||null!=e.min)&&(n+=i)}else{var r=e.autoscaleMargin;null!=r&&(null==e.min&&(a-=s*r,0>a&&null!=t.datamin&&t.datamin>=0&&(a=0)),null==e.max&&(n+=s*r,n>0&&null!=t.datamax&&t.datamax<=0&&(n=0)))}t.min=a,t.max=n}function k(e){var a,s=e.options;a="number"==typeof s.ticks&&s.ticks>0?s.ticks:.3*Math.sqrt("x"==e.direction?ie.width:ie.height);var i=(e.max-e.min)/a,r=-Math.floor(Math.log(i)/Math.LN10),o=s.tickDecimals;null!=o&&r>o&&(r=o);var l,c=Math.pow(10,-r),d=i/c;if(1.5>d?l=1:3>d?(l=2,d>2.25&&(null==o||o>=r+1)&&(l=2.5,++r)):l=7.5>d?5:10,l*=c,null!=s.minTickSize&&l<s.minTickSize&&(l=s.minTickSize),e.delta=i,e.tickDecimals=Math.max(0,null!=o?o:r),e.tickSize=s.tickSize||l,"time"==s.mode&&!e.tickGenerator)throw new Error("Time mode requires the flot.time plugin.");if(e.tickGenerator||(e.tickGenerator=function(t){var e,a=[],s=n(t.min,t.tickSize),i=0,r=Number.NaN;do e=r,r=s+i*t.tickSize,a.push(r),++i;while(r<t.max&&r!=e);return a},e.tickFormatter=function(t,e){var a=e.tickDecimals?Math.pow(10,e.tickDecimals):1,n=""+Math.round(t*a)/a;if(null!=e.tickDecimals){var s=n.indexOf("."),i=-1==s?0:n.length-s-1;if(i<e.tickDecimals)return(i?n:n+".")+(""+a).substr(1,e.tickDecimals-i)}return n}),t.isFunction(s.tickFormatter)&&(e.tickFormatter=function(t,e){return""+s.tickFormatter(t,e)}),null!=s.alignTicksWithAxis){var u=("x"==e.direction?de:ue)[s.alignTicksWithAxis-1];if(u&&u.used&&u!=e){var p=e.tickGenerator(e);if(p.length>0&&(null==s.min&&(e.min=Math.min(e.min,p[0])),null==s.max&&p.length>1&&(e.max=Math.max(e.max,p[p.length-1]))),e.tickGenerator=function(t){var e,a,n=[];for(a=0;a<u.ticks.length;++a)e=(u.ticks[a].v-u.min)/(u.max-u.min),e=t.min+e*(t.max-t.min),n.push(e);
+return n},!e.mode&&null==s.tickDecimals){var h=Math.max(0,-Math.floor(Math.log(e.delta)/Math.LN10)+1),f=e.tickGenerator(e);f.length>1&&/\..*0$/.test((f[1]-f[0]).toFixed(h))||(e.tickDecimals=h)}}}}function D(e){var a=e.options.ticks,n=[];null==a||"number"==typeof a&&a>0?n=e.tickGenerator(e):a&&(n=t.isFunction(a)?a(e):a);var s,i;for(e.ticks=[],s=0;s<n.length;++s){var r=null,o=n[s];"object"==typeof o?(i=+o[0],o.length>1&&(r=o[1])):i=+o,null==r&&(r=e.tickFormatter(i,e)),isNaN(i)||e.ticks.push({v:i,label:r})}}function C(t,e){t.options.autoscaleMargin&&e.length>0&&(null==t.options.min&&(t.min=Math.min(t.min,e[0].v)),null==t.options.max&&e.length>1&&(t.max=Math.max(t.max,e[e.length-1].v)))}function P(){ie.clear(),o(me.drawBackground,[le]);var t=se.grid;t.show&&t.backgroundColor&&O(),t.show&&!t.aboveData&&R();for(var e=0;e<ne.length;++e)o(me.drawSeries,[le,ne[e]]),N(ne[e]);o(me.draw,[le]),t.show&&t.aboveData&&R(),ie.render(),W()}function $(t,e){for(var a,n,s,i,r=h(),o=0;o<r.length;++o)if(a=r[o],a.direction==e&&(i=e+a.n+"axis",t[i]||1!=a.n||(i=e+"axis"),t[i])){n=t[i].from,s=t[i].to;break}if(t[i]||(a="x"==e?de[0]:ue[0],n=t[e+"1"],s=t[e+"2"]),null!=n&&null!=s&&n>s){var l=n;n=s,s=l}return{from:n,to:s,axis:a}}function O(){le.save(),le.translate(pe.left,pe.top),le.fillStyle=ae(se.grid.backgroundColor,fe,0,"rgba(255, 255, 255, 0)"),le.fillRect(0,0,he,fe),le.restore()}function R(){var e,a,n,s;le.save(),le.translate(pe.left,pe.top);var i=se.grid.markings;if(i)for(t.isFunction(i)&&(a=_e.getAxes(),a.xmin=a.xaxis.min,a.xmax=a.xaxis.max,a.ymin=a.yaxis.min,a.ymax=a.yaxis.max,i=i(a)),e=0;e<i.length;++e){var r=i[e],o=$(r,"x"),l=$(r,"y");if(null==o.from&&(o.from=o.axis.min),null==o.to&&(o.to=o.axis.max),null==l.from&&(l.from=l.axis.min),null==l.to&&(l.to=l.axis.max),!(o.to<o.axis.min||o.from>o.axis.max||l.to<l.axis.min||l.from>l.axis.max)){o.from=Math.max(o.from,o.axis.min),o.to=Math.min(o.to,o.axis.max),l.from=Math.max(l.from,l.axis.min),l.to=Math.min(l.to,l.axis.max);var c=o.from===o.to,d=l.from===l.to;if(!c||!d)if(o.from=Math.floor(o.axis.p2c(o.from)),o.to=Math.floor(o.axis.p2c(o.to)),l.from=Math.floor(l.axis.p2c(l.from)),l.to=Math.floor(l.axis.p2c(l.to)),c||d){var u=r.lineWidth||se.grid.markingsLineWidth,p=u%2?.5:0;le.beginPath(),le.strokeStyle=r.color||se.grid.markingsColor,le.lineWidth=u,c?(le.moveTo(o.to+p,l.from),le.lineTo(o.to+p,l.to)):(le.moveTo(o.from,l.to+p),le.lineTo(o.to,l.to+p)),le.stroke()}else le.fillStyle=r.color||se.grid.markingsColor,le.fillRect(o.from,l.to,o.to-o.from,l.from-l.to)}}a=h(),n=se.grid.borderWidth;for(var f=0;f<a.length;++f){var m,_,b,v,g=a[f],y=g.box,w=g.tickLength;if(g.show&&0!=g.ticks.length){for(le.lineWidth=1,"x"==g.direction?(m=0,_="full"==w?"top"==g.position?0:fe:y.top-pe.top+("top"==g.position?y.height:0)):(_=0,m="full"==w?"left"==g.position?0:he:y.left-pe.left+("left"==g.position?y.width:0)),g.innermost||(le.strokeStyle=g.options.color,le.beginPath(),b=v=0,"x"==g.direction?b=he+1:v=fe+1,1==le.lineWidth&&("x"==g.direction?_=Math.floor(_)+.5:m=Math.floor(m)+.5),le.moveTo(m,_),le.lineTo(m+b,_+v),le.stroke()),le.strokeStyle=g.options.tickColor,le.beginPath(),e=0;e<g.ticks.length;++e){var T=g.ticks[e].v;b=v=0,isNaN(T)||T<g.min||T>g.max||"full"==w&&("object"==typeof n&&n[g.position]>0||n>0)&&(T==g.min||T==g.max)||("x"==g.direction?(m=g.p2c(T),v="full"==w?-fe:w,"top"==g.position&&(v=-v)):(_=g.p2c(T),b="full"==w?-he:w,"left"==g.position&&(b=-b)),1==le.lineWidth&&("x"==g.direction?m=Math.floor(m)+.5:_=Math.floor(_)+.5),le.moveTo(m,_),le.lineTo(m+b,_+v))}le.stroke()}}n&&(s=se.grid.borderColor,"object"==typeof n||"object"==typeof s?("object"!=typeof n&&(n={top:n,right:n,bottom:n,left:n}),"object"!=typeof s&&(s={top:s,right:s,bottom:s,left:s}),n.top>0&&(le.strokeStyle=s.top,le.lineWidth=n.top,le.beginPath(),le.moveTo(0-n.left,0-n.top/2),le.lineTo(he,0-n.top/2),le.stroke()),n.right>0&&(le.strokeStyle=s.right,le.lineWidth=n.right,le.beginPath(),le.moveTo(he+n.right/2,0-n.top),le.lineTo(he+n.right/2,fe),le.stroke()),n.bottom>0&&(le.strokeStyle=s.bottom,le.lineWidth=n.bottom,le.beginPath(),le.moveTo(he+n.right,fe+n.bottom/2),le.lineTo(0,fe+n.bottom/2),le.stroke()),n.left>0&&(le.strokeStyle=s.left,le.lineWidth=n.left,le.beginPath(),le.moveTo(0-n.left/2,fe+n.bottom),le.lineTo(0-n.left/2,0),le.stroke())):(le.lineWidth=n,le.strokeStyle=se.grid.borderColor,le.strokeRect(-n/2,-n/2,he+n,fe+n))),le.restore()}function L(){t.each(h(),function(t,e){var a,n,s,i,r,o=e.box,l=e.direction+"Axis "+e.direction+e.n+"Axis",c="flot-"+e.direction+"-axis flot-"+e.direction+e.n+"-axis "+l,d=e.options.font||"flot-tick-label tickLabel";if(ie.removeText(c),e.show&&0!=e.ticks.length)for(var u=0;u<e.ticks.length;++u)a=e.ticks[u],!a.label||a.v<e.min||a.v>e.max||("x"==e.direction?(i="center",n=pe.left+e.p2c(a.v),"bottom"==e.position?s=o.top+o.padding:(s=o.top+o.height-o.padding,r="bottom")):(r="middle",s=pe.top+e.p2c(a.v),"left"==e.position?(n=o.left+o.width-o.padding,i="right"):n=o.left+o.padding),ie.addText(c,n,s,a.label,d,null,null,i,r))})}function N(t){t.lines.show&&U(t),t.bars.show&&z(t),t.points.show&&F(t)}function U(t){function e(t,e,a,n,s){var i=t.points,r=t.pointsize,o=null,l=null;le.beginPath();for(var c=r;c<i.length;c+=r){var d=i[c-r],u=i[c-r+1],p=i[c],h=i[c+1];if(null!=d&&null!=p){if(h>=u&&u<s.min){if(h<s.min)continue;d=(s.min-u)/(h-u)*(p-d)+d,u=s.min}else if(u>=h&&h<s.min){if(u<s.min)continue;p=(s.min-u)/(h-u)*(p-d)+d,h=s.min}if(u>=h&&u>s.max){if(h>s.max)continue;d=(s.max-u)/(h-u)*(p-d)+d,u=s.max}else if(h>=u&&h>s.max){if(u>s.max)continue;p=(s.max-u)/(h-u)*(p-d)+d,h=s.max}if(p>=d&&d<n.min){if(p<n.min)continue;u=(n.min-d)/(p-d)*(h-u)+u,d=n.min}else if(d>=p&&p<n.min){if(d<n.min)continue;h=(n.min-d)/(p-d)*(h-u)+u,p=n.min}if(d>=p&&d>n.max){if(p>n.max)continue;u=(n.max-d)/(p-d)*(h-u)+u,d=n.max}else if(p>=d&&p>n.max){if(d>n.max)continue;h=(n.max-d)/(p-d)*(h-u)+u,p=n.max}(d!=o||u!=l)&&le.moveTo(n.p2c(d)+e,s.p2c(u)+a),o=p,l=h,le.lineTo(n.p2c(p)+e,s.p2c(h)+a)}}le.stroke()}function a(t,e,a){for(var n=t.points,s=t.pointsize,i=Math.min(Math.max(0,a.min),a.max),r=0,o=!1,l=1,c=0,d=0;;){if(s>0&&r>n.length+s)break;r+=s;var u=n[r-s],p=n[r-s+l],h=n[r],f=n[r+l];if(o){if(s>0&&null!=u&&null==h){d=r,s=-s,l=2;continue}if(0>s&&r==c+s){le.fill(),o=!1,s=-s,l=1,r=c=d+s;continue}}if(null!=u&&null!=h){if(h>=u&&u<e.min){if(h<e.min)continue;p=(e.min-u)/(h-u)*(f-p)+p,u=e.min}else if(u>=h&&h<e.min){if(u<e.min)continue;f=(e.min-u)/(h-u)*(f-p)+p,h=e.min}if(u>=h&&u>e.max){if(h>e.max)continue;p=(e.max-u)/(h-u)*(f-p)+p,u=e.max}else if(h>=u&&h>e.max){if(u>e.max)continue;f=(e.max-u)/(h-u)*(f-p)+p,h=e.max}if(o||(le.beginPath(),le.moveTo(e.p2c(u),a.p2c(i)),o=!0),p>=a.max&&f>=a.max)le.lineTo(e.p2c(u),a.p2c(a.max)),le.lineTo(e.p2c(h),a.p2c(a.max));else if(p<=a.min&&f<=a.min)le.lineTo(e.p2c(u),a.p2c(a.min)),le.lineTo(e.p2c(h),a.p2c(a.min));else{var m=u,_=h;f>=p&&p<a.min&&f>=a.min?(u=(a.min-p)/(f-p)*(h-u)+u,p=a.min):p>=f&&f<a.min&&p>=a.min&&(h=(a.min-p)/(f-p)*(h-u)+u,f=a.min),p>=f&&p>a.max&&f<=a.max?(u=(a.max-p)/(f-p)*(h-u)+u,p=a.max):f>=p&&f>a.max&&p<=a.max&&(h=(a.max-p)/(f-p)*(h-u)+u,f=a.max),u!=m&&le.lineTo(e.p2c(m),a.p2c(p)),le.lineTo(e.p2c(u),a.p2c(p)),le.lineTo(e.p2c(h),a.p2c(f)),h!=_&&(le.lineTo(e.p2c(h),a.p2c(f)),le.lineTo(e.p2c(_),a.p2c(f)))}}}}le.save(),le.translate(pe.left,pe.top),le.lineJoin="round";var n=t.lines.lineWidth,s=t.shadowSize;if(n>0&&s>0){le.lineWidth=s,le.strokeStyle="rgba(0,0,0,0.1)";var i=Math.PI/18;e(t.datapoints,Math.sin(i)*(n/2+s/2),Math.cos(i)*(n/2+s/2),t.xaxis,t.yaxis),le.lineWidth=s/2,e(t.datapoints,Math.sin(i)*(n/2+s/4),Math.cos(i)*(n/2+s/4),t.xaxis,t.yaxis)}le.lineWidth=n,le.strokeStyle=t.color;var r=V(t.lines,t.color,0,fe);r&&(le.fillStyle=r,a(t.datapoints,t.xaxis,t.yaxis)),n>0&&e(t.datapoints,0,0,t.xaxis,t.yaxis),le.restore()}function F(t){function e(t,e,a,n,s,i,r,o){for(var l=t.points,c=t.pointsize,d=0;d<l.length;d+=c){var u=l[d],p=l[d+1];null==u||u<i.min||u>i.max||p<r.min||p>r.max||(le.beginPath(),u=i.p2c(u),p=r.p2c(p)+n,"circle"==o?le.arc(u,p,e,0,s?Math.PI:2*Math.PI,!1):o(le,u,p,e,s),le.closePath(),a&&(le.fillStyle=a,le.fill()),le.stroke())}}le.save(),le.translate(pe.left,pe.top);var a=t.points.lineWidth,n=t.shadowSize,s=t.points.radius,i=t.points.symbol;if(0==a&&(a=1e-4),a>0&&n>0){var r=n/2;le.lineWidth=r,le.strokeStyle="rgba(0,0,0,0.1)",e(t.datapoints,s,null,r+r/2,!0,t.xaxis,t.yaxis,i),le.strokeStyle="rgba(0,0,0,0.2)",e(t.datapoints,s,null,r/2,!0,t.xaxis,t.yaxis,i)}le.lineWidth=a,le.strokeStyle=t.color,e(t.datapoints,s,V(t.points,t.color),0,!1,t.xaxis,t.yaxis,i),le.restore()}function q(t,e,a,n,s,i,r,o,l,c,d){var u,p,h,f,m,_,b,v,g;c?(v=_=b=!0,m=!1,u=a,p=t,f=e+n,h=e+s,u>p&&(g=p,p=u,u=g,m=!0,_=!1)):(m=_=b=!0,v=!1,u=t+n,p=t+s,h=a,f=e,h>f&&(g=f,f=h,h=g,v=!0,b=!1)),p<r.min||u>r.max||f<o.min||h>o.max||(u<r.min&&(u=r.min,m=!1),p>r.max&&(p=r.max,_=!1),h<o.min&&(h=o.min,v=!1),f>o.max&&(f=o.max,b=!1),u=r.p2c(u),h=o.p2c(h),p=r.p2c(p),f=o.p2c(f),i&&(l.fillStyle=i(h,f),l.fillRect(u,f,p-u,h-f)),d>0&&(m||_||b||v)&&(l.beginPath(),l.moveTo(u,h),m?l.lineTo(u,f):l.moveTo(u,f),b?l.lineTo(p,f):l.moveTo(p,f),_?l.lineTo(p,h):l.moveTo(p,h),v?l.lineTo(u,h):l.moveTo(u,h),l.stroke()))}function z(t){function e(e,a,n,s,i,r){for(var o=e.points,l=e.pointsize,c=0;c<o.length;c+=l)null!=o[c]&&q(o[c],o[c+1],o[c+2],a,n,s,i,r,le,t.bars.horizontal,t.bars.lineWidth)}le.save(),le.translate(pe.left,pe.top),le.lineWidth=t.bars.lineWidth,le.strokeStyle=t.color;var a;switch(t.bars.align){case"left":a=0;break;case"right":a=-t.bars.barWidth;break;default:a=-t.bars.barWidth/2}var n=t.bars.fill?function(e,a){return V(t.bars,t.color,e,a)}:null;e(t.datapoints,a,a+t.bars.barWidth,n,t.xaxis,t.yaxis),le.restore()}function V(e,a,n,s){var i=e.fill;if(!i)return null;if(e.fillColor)return ae(e.fillColor,n,s,a);var r=t.color.parse(a);return r.a="number"==typeof i?i:.4,r.normalize(),r.toString()}function G(){if(null!=se.legend.container?t(se.legend.container).html(""):a.find(".legend").remove(),se.legend.show){for(var e,n,s=[],i=[],r=!1,o=se.legend.labelFormatter,l=0;l<ne.length;++l)e=ne[l],e.label&&(n=o?o(e.label,e):e.label,n&&i.push({label:n,color:e.color}));if(se.legend.sorted)if(t.isFunction(se.legend.sorted))i.sort(se.legend.sorted);else if("reverse"==se.legend.sorted)i.reverse();else{var c="descending"!=se.legend.sorted;i.sort(function(t,e){return t.label==e.label?0:t.label<e.label!=c?1:-1})}for(var l=0;l<i.length;++l){var d=i[l];l%se.legend.noColumns==0&&(r&&s.push("</tr>"),s.push("<tr>"),r=!0),s.push('<td class="legendColorBox"><div style="border:1px solid '+se.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+d.color+';overflow:hidden"></div></div></td><td class="legendLabel">'+d.label+"</td>")}if(r&&s.push("</tr>"),0!=s.length){var u='<table style="font-size:smaller;color:'+se.grid.color+'">'+s.join("")+"</table>";if(null!=se.legend.container)t(se.legend.container).html(u);else{var p="",h=se.legend.position,f=se.legend.margin;null==f[0]&&(f=[f,f]),"n"==h.charAt(0)?p+="top:"+(f[1]+pe.top)+"px;":"s"==h.charAt(0)&&(p+="bottom:"+(f[1]+pe.bottom)+"px;"),"e"==h.charAt(1)?p+="right:"+(f[0]+pe.right)+"px;":"w"==h.charAt(1)&&(p+="left:"+(f[0]+pe.left)+"px;");var m=t('<div class="legend">'+u.replace('style="','style="position:absolute;'+p+";")+"</div>").appendTo(a);if(0!=se.legend.backgroundOpacity){var _=se.legend.backgroundColor;null==_&&(_=se.grid.backgroundColor,_=_&&"string"==typeof _?t.color.parse(_):t.color.extract(m,"background-color"),_.a=1,_=_.toString());var b=m.children();t('<div style="position:absolute;width:'+b.width()+"px;height:"+b.height()+"px;"+p+"background-color:"+_+';"> </div>').prependTo(m).css("opacity",se.legend.backgroundOpacity)}}}}}function B(t,e,a){var n,s,i,r=se.grid.mouseActiveRadius,o=r*r+1,l=null;for(n=ne.length-1;n>=0;--n)if(a(ne[n])){var c=ne[n],d=c.xaxis,u=c.yaxis,p=c.datapoints.points,h=d.c2p(t),f=u.c2p(e),m=r/d.scale,_=r/u.scale;if(i=c.datapoints.pointsize,d.options.inverseTransform&&(m=Number.MAX_VALUE),u.options.inverseTransform&&(_=Number.MAX_VALUE),c.lines.show||c.points.show)for(s=0;s<p.length;s+=i){var b=p[s],v=p[s+1];if(null!=b&&!(b-h>m||-m>b-h||v-f>_||-_>v-f)){var g=Math.abs(d.p2c(b)-t),y=Math.abs(u.p2c(v)-e),w=g*g+y*y;o>w&&(o=w,l=[n,s/i])}}if(c.bars.show&&!l){var T,E;switch(c.bars.align){case"left":T=0;break;case"right":T=-c.bars.barWidth;break;default:T=-c.bars.barWidth/2}for(E=T+c.bars.barWidth,s=0;s<p.length;s+=i){var b=p[s],v=p[s+1],S=p[s+2];null!=b&&(ne[n].bars.horizontal?h<=Math.max(S,b)&&h>=Math.min(S,b)&&f>=v+T&&v+E>=f:h>=b+T&&b+E>=h&&f>=Math.min(S,v)&&f<=Math.max(S,v))&&(l=[n,s/i])}}}return l?(n=l[0],s=l[1],i=ne[n].datapoints.pointsize,{datapoint:ne[n].datapoints.points.slice(s*i,(s+1)*i),dataIndex:s,series:ne[n],seriesIndex:n}):null}function H(t){se.grid.hoverable&&Y("plothover",t,function(t){return 0!=t.hoverable})}function K(t){se.grid.hoverable&&Y("plothover",t,function(){return!1})}function j(t){Y("plotclick",t,function(t){return 0!=t.clickable})}function Y(t,e,n){var s=oe.offset(),i=e.pageX-s.left-pe.left,r=e.pageY-s.top-pe.top,o=f({left:i,top:r});o.pageX=e.pageX,o.pageY=e.pageY;var l=B(i,r,n);if(l&&(l.pageX=parseInt(l.series.xaxis.p2c(l.datapoint[0])+s.left+pe.left,10),l.pageY=parseInt(l.series.yaxis.p2c(l.datapoint[1])+s.top+pe.top,10)),se.grid.autoHighlight){for(var c=0;c<be.length;++c){var d=be[c];d.auto!=t||l&&d.series==l.series&&d.point[0]==l.datapoint[0]&&d.point[1]==l.datapoint[1]||Z(d.series,d.point)}l&&Q(l.series,l.datapoint,t)}a.trigger(t,[o,l])}function W(){var t=se.interaction.redrawOverlayInterval;return-1==t?void X():void(ve||(ve=setTimeout(X,t)))}function X(){ve=null,ce.save(),re.clear(),ce.translate(pe.left,pe.top);var t,e;for(t=0;t<be.length;++t)e=be[t],e.series.bars.show?ee(e.series,e.point):te(e.series,e.point);ce.restore(),o(me.drawOverlay,[ce])}function Q(t,e,a){if("number"==typeof t&&(t=ne[t]),"number"==typeof e){var n=t.datapoints.pointsize;e=t.datapoints.points.slice(n*e,n*(e+1))}var s=J(t,e);-1==s?(be.push({series:t,point:e,auto:a}),W()):a||(be[s].auto=!1)}function Z(t,e){if(null==t&&null==e)return be=[],void W();if("number"==typeof t&&(t=ne[t]),"number"==typeof e){var a=t.datapoints.pointsize;e=t.datapoints.points.slice(a*e,a*(e+1))}var n=J(t,e);-1!=n&&(be.splice(n,1),W())}function J(t,e){for(var a=0;a<be.length;++a){var n=be[a];if(n.series==t&&n.point[0]==e[0]&&n.point[1]==e[1])return a}return-1}function te(e,a){var n=a[0],s=a[1],i=e.xaxis,r=e.yaxis,o="string"==typeof e.highlightColor?e.highlightColor:t.color.parse(e.color).scale("a",.5).toString();if(!(n<i.min||n>i.max||s<r.min||s>r.max)){var l=e.points.radius+e.points.lineWidth/2;ce.lineWidth=l,ce.strokeStyle=o;var c=1.5*l;n=i.p2c(n),s=r.p2c(s),ce.beginPath(),"circle"==e.points.symbol?ce.arc(n,s,c,0,2*Math.PI,!1):e.points.symbol(ce,n,s,c,!1),ce.closePath(),ce.stroke()}}function ee(e,a){var n,s="string"==typeof e.highlightColor?e.highlightColor:t.color.parse(e.color).scale("a",.5).toString(),i=s;switch(e.bars.align){case"left":n=0;break;case"right":n=-e.bars.barWidth;break;default:n=-e.bars.barWidth/2}ce.lineWidth=e.bars.lineWidth,ce.strokeStyle=s,q(a[0],a[1],a[2]||0,n,n+e.bars.barWidth,function(){return i},e.xaxis,e.yaxis,ce,e.bars.horizontal,e.bars.lineWidth)}function ae(e,a,n,s){if("string"==typeof e)return e;for(var i=le.createLinearGradient(0,n,0,a),r=0,o=e.colors.length;o>r;++r){var l=e.colors[r];if("string"!=typeof l){var c=t.color.parse(s);null!=l.brightness&&(c=c.scale("rgb",l.brightness)),null!=l.opacity&&(c.a*=l.opacity),l=c.toString()}i.addColorStop(r/(o-1),l)}return i}var ne=[],se={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:!0,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:.85,sorted:null},xaxis:{show:null,position:"bottom",mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null},yaxis:{autoscaleMargin:.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:!1,radius:3,lineWidth:2,fill:!0,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:!1,fillColor:null,steps:!1},bars:{show:!1,lineWidth:2,barWidth:1,fill:!0,fillColor:null,align:"left",horizontal:!1,zero:!0},shadowSize:3,highlightColor:null},grid:{show:!0,aboveData:!1,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,margin:0,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:!1,hoverable:!1,autoHighlight:!0,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1e3/60},hooks:{}},ie=null,re=null,oe=null,le=null,ce=null,de=[],ue=[],pe={left:0,right:0,top:0,bottom:0},he=0,fe=0,me={processOptions:[],processRawData:[],processDatapoints:[],processOffset:[],drawBackground:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},_e=this;_e.setData=d,_e.setupGrid=A,_e.draw=P,_e.getPlaceholder=function(){return a},_e.getCanvas=function(){return ie.element},_e.getPlotOffset=function(){return pe},_e.width=function(){return he},_e.height=function(){return fe},_e.offset=function(){var t=oe.offset();return t.left+=pe.left,t.top+=pe.top,t},_e.getData=function(){return ne},_e.getAxes=function(){var e={};return t.each(de.concat(ue),function(t,a){a&&(e[a.direction+(1!=a.n?a.n:"")+"axis"]=a)}),e},_e.getXAxes=function(){return de},_e.getYAxes=function(){return ue},_e.c2p=f,_e.p2c=m,_e.getOptions=function(){return se},_e.highlight=Q,_e.unhighlight=Z,_e.triggerRedrawOverlay=W,_e.pointOffset=function(t){return{left:parseInt(de[p(t,"x")-1].p2c(+t.x)+pe.left,10),top:parseInt(ue[p(t,"y")-1].p2c(+t.y)+pe.top,10)}},_e.shutdown=w,_e.destroy=function(){w(),a.removeData("plot").empty(),ne=[],se=null,ie=null,re=null,oe=null,le=null,ce=null,de=[],ue=[],me=null,be=[],_e=null},_e.resize=function(){var t=a.width(),e=a.height();ie.resize(t,e),re.resize(t,e)},_e.hooks=me,l(_e),c(i),g(),d(s),A(),P(),y();var be=[],ve=null}function n(t,e){return e*Math.floor(t/e)}var s=Object.prototype.hasOwnProperty;t.fn.detach||(t.fn.detach=function(){return this.each(function(){this.parentNode&&this.parentNode.removeChild(this)})}),e.prototype.resize=function(t,e){if(0>=t||0>=e)throw new Error("Invalid dimensions for plot, width = "+t+", height = "+e);var a=this.element,n=this.context,s=this.pixelRatio;this.width!=t&&(a.width=t*s,a.style.width=t+"px",this.width=t),this.height!=e&&(a.height=e*s,a.style.height=e+"px",this.height=e),n.restore(),n.save(),n.scale(s,s)},e.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)},e.prototype.render=function(){var t=this._textCache;for(var e in t)if(s.call(t,e)){var a=this.getTextLayer(e),n=t[e];a.hide();for(var i in n)if(s.call(n,i)){var r=n[i];for(var o in r)if(s.call(r,o)){for(var l,c=r[o].positions,d=0;l=c[d];d++)l.active?l.rendered||(a.append(l.element),l.rendered=!0):(c.splice(d--,1),l.rendered&&l.element.detach());0==c.length&&delete r[o]}}a.show()}},e.prototype.getTextLayer=function(e){var a=this.text[e];return null==a&&(null==this.textContainer&&(this.textContainer=t("<div class='flot-text'></div>").css({position:"absolute",top:0,left:0,bottom:0,right:0,"font-size":"smaller",color:"#545454"}).insertAfter(this.element)),a=this.text[e]=t("<div></div>").addClass(e).css({position:"absolute",top:0,left:0,bottom:0,right:0}).appendTo(this.textContainer)),a},e.prototype.getTextInfo=function(e,a,n,s,i){var r,o,l,c;if(a=""+a,r="object"==typeof n?n.style+" "+n.variant+" "+n.weight+" "+n.size+"px/"+n.lineHeight+"px "+n.family:n,o=this._textCache[e],null==o&&(o=this._textCache[e]={}),l=o[r],null==l&&(l=o[r]={}),c=l[a],null==c){var d=t("<div></div>").html(a).css({position:"absolute","max-width":i,top:-9999}).appendTo(this.getTextLayer(e));"object"==typeof n?d.css({font:r,color:n.color}):"string"==typeof n&&d.addClass(n),c=l[a]={width:d.outerWidth(!0),height:d.outerHeight(!0),element:d,positions:[]},d.detach()}return c},e.prototype.addText=function(t,e,a,n,s,i,r,o,l){var c=this.getTextInfo(t,n,s,i,r),d=c.positions;"center"==o?e-=c.width/2:"right"==o&&(e-=c.width),"middle"==l?a-=c.height/2:"bottom"==l&&(a-=c.height);for(var u,p=0;u=d[p];p++)if(u.x==e&&u.y==a)return void(u.active=!0);u={active:!0,rendered:!1,element:d.length?c.element.clone():c.element,x:e,y:a},d.push(u),u.element.css({top:Math.round(a),left:Math.round(e),"text-align":o})},e.prototype.removeText=function(t,e,a,n,i,r){if(null==n){var o=this._textCache[t];if(null!=o)for(var l in o)if(s.call(o,l)){var c=o[l];for(var d in c)if(s.call(c,d))for(var u,p=c[d].positions,h=0;u=p[h];h++)u.active=!1}}else for(var u,p=this.getTextInfo(t,n,i,r).positions,h=0;u=p[h];h++)u.x==e&&u.y==a&&(u.active=!1)},t.plot=function(e,n,s){var i=new a(t(e),n,s,t.plot.plugins);return i},t.plot.version="0.8.3",t.plot.plugins=[],t.fn.plot=function(e,a){return this.each(function(){t.plot(this,e,a)})}}(jQuery),define("flot",["jquery"],function(){}),function(t){function e(t){function e(t,e){for(var a=null,n=0;n<e.length&&t!=e[n];++n)e[n].stack==t.stack&&(a=e[n]);return a}function a(t,a,n){if(null!=a.stack&&a.stack!==!1){var s=e(a,t.getData());if(s){for(var i,r,o,l,c,d,u,p,h=n.pointsize,f=n.points,m=s.datapoints.pointsize,_=s.datapoints.points,b=[],v=a.lines.show,g=a.bars.horizontal,y=h>2&&(g?n.format[2].x:n.format[2].y),w=v&&a.lines.steps,T=!0,E=g?1:0,S=g?0:1,I=0,x=0;;){if(I>=f.length)break;if(u=b.length,null==f[I]){for(p=0;h>p;++p)b.push(f[I+p]);I+=h}else if(x>=_.length){if(!v)for(p=0;h>p;++p)b.push(f[I+p]);I+=h}else if(null==_[x]){for(p=0;h>p;++p)b.push(null);T=!0,x+=m}else{if(i=f[I+E],r=f[I+S],l=_[x+E],c=_[x+S],d=0,i==l){for(p=0;h>p;++p)b.push(f[I+p]);b[u+S]+=c,d=c,I+=h,x+=m}else if(i>l){if(v&&I>0&&null!=f[I-h]){for(o=r+(f[I-h+S]-r)*(l-i)/(f[I-h+E]-i),b.push(l),b.push(o+c),p=2;h>p;++p)b.push(f[I+p]);d=c}x+=m}else{if(T&&v){I+=h;continue}for(p=0;h>p;++p)b.push(f[I+p]);v&&x>0&&null!=_[x-m]&&(d=c+(_[x-m+S]-c)*(i-l)/(_[x-m+E]-l)),b[u+S]+=d,I+=h}T=!1,u!=b.length&&y&&(b[u+2]+=d)}if(w&&u!=b.length&&u>0&&null!=b[u]&&b[u]!=b[u-h]&&b[u+1]!=b[u-h+1]){for(p=0;h>p;++p)b[u+h+p]=b[u+p];b[u+1]=b[u-h+1]}}n.points=b}}}t.hooks.processDatapoints.push(a)}var a={series:{stack:null}};t.plot.plugins.push({init:e,options:a,name:"stack",version:"1.2"})}(jQuery),define("flot.stack",["flot"],function(){}),function(t,e,a){"$:nomunge";function n(a){o===!0&&(o=a||1);for(var l=i.length-1;l>=0;l--){var p=t(i[l]);if(p[0]==e||p.is(":visible")){var h=p.width(),f=p.height(),m=p.data(d);!m||h===m.w&&f===m.h||(p.trigger(c,[m.w=h,m.h=f]),o=a||!0)}else m=p.data(d),m.w=0,m.h=0}null!==s&&(o&&(null==a||1e3>a-o)?s=e.requestAnimationFrame(n):(s=setTimeout(n,r[u]),o=!1))}var s,i=[],r=t.resize=t.extend(t.resize,{}),o=!1,l="setTimeout",c="resize",d=c+"-special-event",u="pendingDelay",p="activeDelay",h="throttleWindow";r[u]=200,r[p]=20,r[h]=!0,t.event.special[c]={setup:function(){if(!r[h]&&this[l])return!1;var e=t(this);i.push(this),e.data(d,{w:e.width(),h:e.height()}),1===i.length&&(s=a,n())},teardown:function(){if(!r[h]&&this[l])return!1;for(var e=t(this),a=i.length-1;a>=0;a--)if(i[a]==this){i.splice(a,1);break}e.removeData(d),i.length||(o?cancelAnimationFrame(s):clearTimeout(s),s=null)},add:function(e){function n(e,n,i){var r=t(this),o=r.data(d)||{};o.w=n!==a?n:r.width(),o.h=i!==a?i:r.height(),s.apply(this,arguments)}if(!r[h]&&this[l])return!1;var s;return t.isFunction(e)?(s=e,n):(s=e.handler,void(e.handler=n))}},e.requestAnimationFrame||(e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t){return e.setTimeout(function(){t((new Date).getTime())},r[p])}}()),e.cancelAnimationFrame||(e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}())}(jQuery,this),function(t){function e(t){function e(){var e=t.getPlaceholder();0!=e.width()&&0!=e.height()&&(t.resize(),t.setupGrid(),t.draw())}function a(t){t.getPlaceholder().resize(e)}function n(t){t.getPlaceholder().unbind("resize",e)}t.hooks.bindEvents.push(a),t.hooks.shutdown.push(n)}var a={};t.plot.plugins.push({init:e,options:a,name:"resize",version:"1.0"})}(jQuery),define("flot.resize",["flot"],function(){}),!function(t){var e={tooltip:!1,tooltipOpts:{id:"flotTip",content:"%s | X: %x | Y: %y",xDateFormat:null,yDateFormat:null,monthNames:null,dayNames:null,shifts:{x:10,y:20},defaultTheme:!0,lines:{track:!1,threshold:.05},onHover:function(){},$compat:!1}},a=function(t){this.tipPosition={x:0,y:0},this.init(t)};a.prototype.init=function(e){function a(t){var a={};a.x=t.pageX,a.y=t.pageY,e.setTooltipPosition(a)}function n(a,n,i){var r=function(t,e,a,n){return Math.sqrt((a-t)*(a-t)+(n-e)*(n-e))},o=function(t,e,a,n,s,i,o){if(!o||(o=function(t,e,a,n,s,i){if("undefined"!=typeof a)return{x:a,y:e};if("undefined"!=typeof n)return{x:t,y:n};var r,o=-1/((i-n)/(s-a));return{x:r=(s*(t*o-e+n)+a*(t*-o+e-i))/(o*(s-a)+n-i),y:o*r-o*t+e}}(t,e,a,n,s,i),o.x>=Math.min(a,s)&&o.x<=Math.max(a,s)&&o.y>=Math.min(n,i)&&o.y<=Math.max(n,i))){var l=n-i,c=s-a,d=a*i-n*s;return Math.abs(l*t+c*e+d)/Math.sqrt(l*l+c*c)}var u=r(t,e,a,n),p=r(t,e,s,i);return u>p?p:u};if(i)e.showTooltip(i,n);else if(s.plotOptions.series.lines.show&&s.tooltipOptions.lines.track===!0){var l={distance:-1};t.each(e.getData(),function(t,a){for(var i=0,c=-1,d=1;d<a.data.length;d++)a.data[d-1][0]<=n.x&&a.data[d][0]>=n.x&&(i=d-1,c=d);if(-1===c)return void e.hideTooltip();var u={x:a.data[i][0],y:a.data[i][1]},p={x:a.data[c][0],y:a.data[c][1]},h=o(n.x,n.y,u.x,u.y,p.x,p.y,!1);if(h<s.tooltipOptions.lines.threshold){var f=r(u.x,u.y,n.x,n.y)<r(n.x,n.y,p.x,p.y)?i:c,m=(a.datapoints.pointsize,[n.x,u.y+(p.y-u.y)*((n.x-u.x)/(p.x-u.x))]),_={datapoint:m,dataIndex:f,series:a,seriesIndex:t};(-1===l.distance||h<l.distance)&&(l={distance:h,item:_})}}),-1!==l.distance?e.showTooltip(l.item,n):e.hideTooltip()}else e.hideTooltip()}var s=this,i=t.plot.plugins.length;if(this.plotPlugins=[],i)for(var r=0;i>r;r++)this.plotPlugins.push(t.plot.plugins[r].name);e.hooks.bindEvents.push(function(e,i){s.plotOptions=e.getOptions(),s.plotOptions.tooltip!==!1&&"undefined"!=typeof s.plotOptions.tooltip&&(s.tooltipOptions=s.plotOptions.tooltipOpts,s.tooltipOptions.$compat?(s.wfunc="width",s.hfunc="height"):(s.wfunc="innerWidth",s.hfunc="innerHeight"),s.getDomElement(),t(e.getPlaceholder()).bind("plothover",n),t(i).bind("mousemove",a))}),e.hooks.shutdown.push(function(e,s){t(e.getPlaceholder()).unbind("plothover",n),t(s).unbind("mousemove",a)}),e.setTooltipPosition=function(e){var a=s.getDomElement(),n=a.outerWidth()+s.tooltipOptions.shifts.x,i=a.outerHeight()+s.tooltipOptions.shifts.y;e.x-t(window).scrollLeft()>t(window)[s.wfunc]()-n&&(e.x-=n),e.y-t(window).scrollTop()>t(window)[s.hfunc]()-i&&(e.y-=i),s.tipPosition.x=e.x,s.tipPosition.y=e.y},e.showTooltip=function(t,a){var n=s.getDomElement(),i=s.stringFormat(s.tooltipOptions.content,t);n.html(i),e.setTooltipPosition({x:a.pageX,y:a.pageY}),n.css({left:s.tipPosition.x+s.tooltipOptions.shifts.x,top:s.tipPosition.y+s.tooltipOptions.shifts.y}).show(),"function"==typeof s.tooltipOptions.onHover&&s.tooltipOptions.onHover(t,n)},e.hideTooltip=function(){s.getDomElement().hide().html("")}},a.prototype.getDomElement=function(){var e=t("#"+this.tooltipOptions.id);return 0===e.length&&(e=t("<div />").attr("id",this.tooltipOptions.id),e.appendTo("body").hide().css({position:"absolute"}),this.tooltipOptions.defaultTheme&&e.css({background:"#fff","z-index":"1040",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})),e},a.prototype.stringFormat=function(t,e){var a,n,s,i,r=/%p\.{0,1}(\d{0,})/,o=/%s/,l=/%lx/,c=/%ly/,d=/%x\.{0,1}(\d{0,})/,u=/%y\.{0,1}(\d{0,})/,p="%x",h="%y",f="%ct";if("undefined"!=typeof e.series.threshold?(a=e.datapoint[0],n=e.datapoint[1],s=e.datapoint[2]):"undefined"!=typeof e.series.lines&&e.series.lines.steps?(a=e.series.datapoints.points[2*e.dataIndex],n=e.series.datapoints.points[2*e.dataIndex+1],s=""):(a=e.series.data[e.dataIndex][0],n=e.series.data[e.dataIndex][1],s=e.series.data[e.dataIndex][2]),null===e.series.label&&e.series.originSeries&&(e.series.label=e.series.originSeries.label),"function"==typeof t&&(t=t(e.series.label,a,n,e)),"undefined"!=typeof e.series.percent?i=e.series.percent:"undefined"!=typeof e.series.percents&&(i=e.series.percents[e.dataIndex]),"number"==typeof i&&(t=this.adjustValPrecision(r,t,i)),t="undefined"!=typeof e.series.label?t.replace(o,e.series.label):t.replace(o,""),t=this.hasAxisLabel("xaxis",e)?t.replace(l,e.series.xaxis.options.axisLabel):t.replace(l,""),t=this.hasAxisLabel("yaxis",e)?t.replace(c,e.series.yaxis.options.axisLabel):t.replace(c,""),this.isTimeMode("xaxis",e)&&this.isXDateFormat(e)&&(t=t.replace(d,this.timestampToDate(a,this.tooltipOptions.xDateFormat,e.series.xaxis.options))),this.isTimeMode("yaxis",e)&&this.isYDateFormat(e)&&(t=t.replace(u,this.timestampToDate(n,this.tooltipOptions.yDateFormat,e.series.yaxis.options))),"number"==typeof a&&(t=this.adjustValPrecision(d,t,a)),"number"==typeof n&&(t=this.adjustValPrecision(u,t,n)),"undefined"!=typeof e.series.xaxis.ticks){var m;m=this.hasRotatedXAxisTicks(e)?"rotatedTicks":"ticks";var _=e.dataIndex+e.seriesIndex;if(e.series.xaxis[m].length>_&&!this.isTimeMode("xaxis",e)){var b=this.isCategoriesMode("xaxis",e)?e.series.xaxis[m][_].label:e.series.xaxis[m][_].v;b===a&&(t=t.replace(d,e.series.xaxis[m][_].label))}}if("undefined"!=typeof e.series.yaxis.ticks)for(var v in e.series.yaxis.ticks)if(e.series.yaxis.ticks.hasOwnProperty(v)){var g=this.isCategoriesMode("yaxis",e)?e.series.yaxis.ticks[v].label:e.series.yaxis.ticks[v].v;g===n&&(t=t.replace(u,e.series.yaxis.ticks[v].label))}return"undefined"!=typeof e.series.xaxis.tickFormatter&&(t=t.replace(p,e.series.xaxis.tickFormatter(a,e.series.xaxis).replace(/\$/g,"$$"))),"undefined"!=typeof e.series.yaxis.tickFormatter&&(t=t.replace(h,e.series.yaxis.tickFormatter(n,e.series.yaxis).replace(/\$/g,"$$"))),s&&(t=t.replace(f,s)),t},a.prototype.isTimeMode=function(t,e){return"undefined"!=typeof e.series[t].options.mode&&"time"===e.series[t].options.mode},a.prototype.isXDateFormat=function(){return"undefined"!=typeof this.tooltipOptions.xDateFormat&&null!==this.tooltipOptions.xDateFormat},a.prototype.isYDateFormat=function(){return"undefined"!=typeof this.tooltipOptions.yDateFormat&&null!==this.tooltipOptions.yDateFormat},a.prototype.isCategoriesMode=function(t,e){return"undefined"!=typeof e.series[t].options.mode&&"categories"===e.series[t].options.mode},a.prototype.timestampToDate=function(e,a,n){var s=t.plot.dateGenerator(e,n);return t.plot.formatDate(s,a,this.tooltipOptions.monthNames,this.tooltipOptions.dayNames)},a.prototype.adjustValPrecision=function(t,e,a){var n,s=e.match(t);return null!==s&&""!==RegExp.$1&&(n=RegExp.$1,a=a.toFixed(n),e=e.replace(t,a)),e},a.prototype.hasAxisLabel=function(e,a){return-1!==t.inArray(this.plotPlugins,"axisLabels")&&"undefined"!=typeof a.series[e].options.axisLabel&&a.series[e].options.axisLabel.length>0},a.prototype.hasRotatedXAxisTicks=function(e){return-1!==t.inArray(this.plotPlugins,"tickRotor")&&"undefined"!=typeof e.series.xaxis.rotatedTicks};var n=function(t){new a(t)};t.plot.plugins.push({init:n,options:e,name:"tooltip",version:"0.8.4"})}(jQuery),define("flot.tooltip",["flot"],function(){}),function(t){function e(t,e){return e*Math.floor(t/e)}function a(t,e,a,n){if("function"==typeof t.strftime)return t.strftime(e);var s=function(t,e){return t=""+t,e=""+(null==e?"0":e),1==t.length?e+t:t},i=[],r=!1,o=t.getHours(),l=12>o;null==a&&(a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),null==n&&(n=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]);var c;c=o>12?o-12:0==o?12:o;for(var d=0;d<e.length;++d){var u=e.charAt(d);if(r){switch(u){case"a":u=""+n[t.getDay()];
+break;case"b":u=""+a[t.getMonth()];break;case"d":u=s(t.getDate());break;case"e":u=s(t.getDate()," ");break;case"h":case"H":u=s(o);break;case"I":u=s(c);break;case"l":u=s(c," ");break;case"m":u=s(t.getMonth()+1);break;case"M":u=s(t.getMinutes());break;case"q":u=""+(Math.floor(t.getMonth()/3)+1);break;case"S":u=s(t.getSeconds());break;case"y":u=s(t.getFullYear()%100);break;case"Y":u=""+t.getFullYear();break;case"p":u=l?"am":"pm";break;case"P":u=l?"AM":"PM";break;case"w":u=""+t.getDay()}i.push(u),r=!1}else"%"==u?r=!0:i.push(u)}return i.join("")}function n(t){function e(t,e,a,n){t[e]=function(){return a[n].apply(a,arguments)}}var a={date:t};void 0!=t.strftime&&e(a,"strftime",t,"strftime"),e(a,"getTime",t,"getTime"),e(a,"setTime",t,"setTime");for(var n=["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds"],s=0;s<n.length;s++)e(a,"get"+n[s],t,"getUTC"+n[s]),e(a,"set"+n[s],t,"setUTC"+n[s]);return a}function s(t,e){if("browser"==e.timezone)return new Date(t);if(e.timezone&&"utc"!=e.timezone){if("undefined"!=typeof timezoneJS&&"undefined"!=typeof timezoneJS.Date){var a=new timezoneJS.Date;return a.setTimezone(e.timezone),a.setTime(t),a}return n(new Date(t))}return n(new Date(t))}function i(n){n.hooks.processOptions.push(function(n){t.each(n.getAxes(),function(t,n){var i=n.options;"time"==i.mode&&(n.tickGenerator=function(t){var a=[],n=s(t.min,i),r=0,l=i.tickSize&&"quarter"===i.tickSize[1]||i.minTickSize&&"quarter"===i.minTickSize[1]?d:c;null!=i.minTickSize&&(r="number"==typeof i.tickSize?i.tickSize:i.minTickSize[0]*o[i.minTickSize[1]]);for(var u=0;u<l.length-1&&!(t.delta<(l[u][0]*o[l[u][1]]+l[u+1][0]*o[l[u+1][1]])/2&&l[u][0]*o[l[u][1]]>=r);++u);var p=l[u][0],h=l[u][1];if("year"==h){if(null!=i.minTickSize&&"year"==i.minTickSize[1])p=Math.floor(i.minTickSize[0]);else{var f=Math.pow(10,Math.floor(Math.log(t.delta/o.year)/Math.LN10)),m=t.delta/o.year/f;p=1.5>m?1:3>m?2:7.5>m?5:10,p*=f}1>p&&(p=1)}t.tickSize=i.tickSize||[p,h];var _=t.tickSize[0];h=t.tickSize[1];var b=_*o[h];"second"==h?n.setSeconds(e(n.getSeconds(),_)):"minute"==h?n.setMinutes(e(n.getMinutes(),_)):"hour"==h?n.setHours(e(n.getHours(),_)):"month"==h?n.setMonth(e(n.getMonth(),_)):"quarter"==h?n.setMonth(3*e(n.getMonth()/3,_)):"year"==h&&n.setFullYear(e(n.getFullYear(),_)),n.setMilliseconds(0),b>=o.minute&&n.setSeconds(0),b>=o.hour&&n.setMinutes(0),b>=o.day&&n.setHours(0),b>=4*o.day&&n.setDate(1),b>=2*o.month&&n.setMonth(e(n.getMonth(),3)),b>=2*o.quarter&&n.setMonth(e(n.getMonth(),6)),b>=o.year&&n.setMonth(0);var v,g=0,y=Number.NaN;do if(v=y,y=n.getTime(),a.push(y),"month"==h||"quarter"==h)if(1>_){n.setDate(1);var w=n.getTime();n.setMonth(n.getMonth()+("quarter"==h?3:1));var T=n.getTime();n.setTime(y+g*o.hour+(T-w)*_),g=n.getHours(),n.setHours(0)}else n.setMonth(n.getMonth()+_*("quarter"==h?3:1));else"year"==h?n.setFullYear(n.getFullYear()+_):n.setTime(y+b);while(y<t.max&&y!=v);return a},n.tickFormatter=function(t,e){var n=s(t,e.options);if(null!=i.timeformat)return a(n,i.timeformat,i.monthNames,i.dayNames);var r,l=e.options.tickSize&&"quarter"==e.options.tickSize[1]||e.options.minTickSize&&"quarter"==e.options.minTickSize[1],c=e.tickSize[0]*o[e.tickSize[1]],d=e.max-e.min,u=i.twelveHourClock?" %p":"",p=i.twelveHourClock?"%I":"%H";r=c<o.minute?p+":%M:%S"+u:c<o.day?d<2*o.day?p+":%M"+u:"%b %d "+p+":%M"+u:c<o.month?"%b %d":l&&c<o.quarter||!l&&c<o.year?d<o.year?"%b":"%b %Y":l&&c<o.year?d<o.year?"Q%q":"Q%q %Y":"%Y";var h=a(n,r,i.monthNames,i.dayNames);return h})})})}var r={xaxis:{timezone:null,timeformat:null,twelveHourClock:!1,monthNames:null}},o={second:1e3,minute:6e4,hour:36e5,day:864e5,month:2592e6,quarter:7776e6,year:525949.2*60*1e3},l=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[.25,"month"],[.5,"month"],[1,"month"],[2,"month"]],c=l.concat([[3,"month"],[6,"month"],[1,"year"]]),d=l.concat([[1,"quarter"],[2,"quarter"],[1,"year"]]);t.plot.plugins.push({init:i,options:r,name:"time",version:"1.0"}),t.plot.formatDate=a,t.plot.dateGenerator=s}(jQuery),define("flot.time",["flot"],function(){}),define("utils/accounting",["require","hbs!./accounting/html","utils/locale","opennebula/vm","utils/notifier","utils/resource-select","flot","flot.stack","flot.resize","flot.tooltip","flot.time"],function(t){function e(){var t=i({});return t}function a(t,e){function a(t){var e=$.map(t.split(/[^0-9]/),function(t){return parseInt(t,10)});return Date.UTC(e[0],e[1]-1||0,e[2]||1,e[3]||0,e[4]||0,e[5]||0,e[6]||0)}void 0==e&&(e={});var s=3;void 0==e.fixed_user&&void 0==e.fixed_group&&(s+=1),void 0==e.fixed_group_by&&(s+=1),s>4&&(s=4);var i=parseInt(12/s);$("#acct_start_time_container",t).addClass("large-"+i),$("#acct_end_time_container",t).addClass("large-"+i),$("#acct_group_by_container",t).addClass("large-"+i),$("#acct_owner_container",t).addClass("large-"+i),$("#acct_button_container",t).addClass("large-"+i);var d=new Date;d.setDate(1),d.setMonth(d.getMonth()-1),$("#acct_start_time",t).val(d.getFullYear()+"-"+("0"+(d.getMonth()+1)).slice(-2)+"-"+("0"+d.getDate()).slice(-2)),d=new Date,$("#acct_end_time",t).val(d.getFullYear()+"-"+("0"+(d.getMonth()+1)).slice(-2)+"-"+("0"+d.getDate()).slice(-2)),void 0!=e.fixed_user||void 0!=e.fixed_group?$("#acct_owner_container",t).hide():$("select#acct_owner",t).change(function(){var e=$(this).val();switch(e){case"acct_owner_all":$("#acct_owner_select",t).hide();break;case"acct_owner_group":$("#acct_owner_select",t).show(),c.insert("#acct_owner_select",t,"Group");break;case"acct_owner_user":$("#acct_owner_select",t).show(),c.insert("#acct_owner_select",t,"User",-1,!1,'<option value="-1">'+r.tr("<< me >>")+"</option>")}}),void 0!=e.init_group_by?$("#acct_group_by",t).val(e.init_group_by):void 0!=e.fixed_group_by&&($("#acct_group_by",t).val(e.fixed_group_by),$("#acct_group_by_container",t).hide()),$("#acct_submit",t).on("click",function(){var s=-1,i=-1,c=$("#acct_start_time",t).val();if(""==c)return l.notifyError(r.tr("Time range start is mandatory")),!1;if(s=a(c),isNaN(s))return l.notifyError(r.tr("Time range start is not a valid date. It must be YYYY/MM/DD")),!1;s/=1e3;var c=$("#acct_end_time",t).val();if(""!=c){if(i=new Date(c+" UTC"),isNaN(i))return l.notifyError(r.tr("Time range end is not a valid date. It must be YYYY/MM/DD")),!1;i.setDate(i.getDate()+1),i=i.getTime()/1e3}var d={start_time:s,end_time:i};if(void 0!=e.fixed_user)d.userfilter=e.fixed_user;else if(void 0!=e.fixed_group)d.group=e.fixed_group;else{var u=$("#acct_owner_select .resource_list_select",t).val();switch($("select#acct_owner",t).val()){case"acct_owner_all":break;case"acct_owner_group":""!=u&&(d.group=u);break;case"acct_owner_user":""!=u&&(d.userfilter=u)}}return o.accounting({success:function(e,a){n(t,e,a,!1)},error:l.onError,data:d}),!1})}function n(t,e,a,n){var i=e.request.data[0],o=new Date(1e3*i.start_time);o.setUTCHours(0,0,0,0);var l,c=new Date;void 0!=i.end_time&&-1!=i.end_time?(l=new Date(1e3*i.end_time),l>c&&(l=c)):l=c;for(var d=[],u=o;l>u;)d.push(u.getTime()),u.setUTCDate(u.getUTCDate()+1);u>c&&(u=c),d.push(u.getTime());var p,h,f,i={colors:["#0098C3","#0A00C2","#AB00C2","#C20037","#C26B00","#78C200","#00C22A","#00B8C2"],xaxis:{mode:"time",timeformat:"%y/%m/%d",color:"#efefef",font:{color:"#999",size:10},ticks:4,minTickSize:[1,"day"]},yaxis:{min:0,color:"#efefef",font:{color:"#999",size:10}},series:{bars:{show:!0,lineWidth:0,fill:!0,barWidth:6912e4,align:"center"},stack:!0},legend:{show:!1},grid:{borderWidth:1,borderColor:"#efefef",hoverable:!0},tooltip:!0,tooltipOpts:{content:"%x | %s | %y"}};switch($("#acct_group_by",t).val()){case"user":p=function(t){return t.VM.UID},h=function(t){return t.VM.UNAME},f=r.tr("User");break;case"group":p=function(t){return t.VM.GID},h=function(t){return t.VM.GNAME},f=r.tr("Group");break;case"vm":p=function(t){return t.OID},h=function(t){return t.VM.NAME},f=r.tr("VM")}var m={};if($("#acct_no_data",t).hide(),void 0==a.HISTORY_RECORDS)return $("#acct_placeholder",t).show(),$("#acct_content",t).hide(),$("#acct_no_data",t).show(),!1;$.each(a.HISTORY_RECORDS.HISTORY,function(t,e){var a=p(e);if(void 0==m[a]){m[a]={},m[a].data_points={},m[a].data_points[d[0]]={},m[a].data_points[d[d.length-2]]={},m[a].data_points[d[0]].CPU_HOURS=0,m[a].data_points[d[d.length-2]].CPU_HOURS=0,m[a].data_points[d[0]].MEM_HOURS=0,m[a].data_points[d[d.length-2]].MEM_HOURS=0;var n=h(e);m[a].name=n,m[a].label=f+" "+a+" "+n}for(var s=m[a].data_points,i=0;i<d.length-1;i++){var r=d[i],o=d[i+1];if(void 0==s[r]&&(s[r]={},s[r].CPU_HOURS=0,s[r].MEM_HOURS=0),(1e3*e.ETIME>r||0==e.ETIME)&&0!=e.STIME&&1e3*e.STIME<=o){var l=r;0!=e.STIME&&(l=Math.max(r,1e3*e.STIME));var c=o;0!=e.ETIME&&(c=Math.min(o,1e3*e.ETIME));var u=(c-l)/1e3/60/60,_=parseFloat(e.VM.TEMPLATE.CPU)*u;isNaN(_)||(s[r].CPU_HOURS+=_);var _=parseInt(e.VM.TEMPLATE.MEMORY)/1024*u;isNaN(_)||(s[r].MEM_HOURS+=_)}}});var _=[],b=[];$.each(m,function(t,e){var a=[],n=[];$.each(e.data_points,function(t,e){a.push([parseInt(t),e.CPU_HOURS]),n.push([parseInt(t),e.MEM_HOURS])}),_.push({label:e.label,name:e.name,id:t,data:a}),b.push({label:e.label,name:e.name,id:t,data:n})});var v=$.plot($("#acct_cpu_graph",t),_,i),g=$.plot($("#acct_mem_graph",t),b,i);if(n)$(".acct_table",t).hide();else{$("#acct_cpu_datatable",t).dataTable().fnClearTable(),$("#acct_cpu_datatable",t).dataTable().fnDestroy(),$("#acct_cpu_datatable thead",t).remove(),$("#acct_cpu_datatable",t).width("100%"),$("#acct_mem_datatable",t).dataTable().fnClearTable(),$("#acct_mem_datatable",t).dataTable().fnDestroy(),$("#acct_mem_datatable thead",t).remove(),$("#acct_mem_datatable",t).width("100%"),cpu_plot_data=v.getData(),mem_plot_data=g.getData();var y="<thead>          <tr>            <th>"+r.tr("Date UTC")+"</th>            <th>"+r.tr("Total")+"</th>";$.each(cpu_plot_data,function(t,e){y+='<th style="border-bottom: '+e.color+' 4px solid !important; border-left: 10px solid white; border-right: 5px solid white; white-space: nowrap">'+f+" "+e.id+"<br/>"+e.name+"</th>"}),y+="</tr></thead>",$("#acct_cpu_datatable",t).append(y),y="<thead>          <tr>            <th>"+r.tr("Date UTC")+"</th>            <th>"+r.tr("Total")+"</th>",$.each(mem_plot_data,function(t,e){y+='<th style="border-bottom: '+e.color+' 4px solid !important; border-left: 10px solid white; border-right: 5px solid white; white-space: nowrap">'+f+" "+e.id+"<br/>"+e.name+"</th>"}),y+="</tr></thead>",$("#acct_mem_datatable",t).append(y);for(var w=[],T=[],E=0;E<d.length-1;E++){var S=d[E],I=[],x=[],A=s(S);I.push(A),x.push(A),I.push(0),x.push(0);var M=0,k=0;$.each(m,function(t,e){var a=e.data_points[S];if(void 0!=a){var n=(100*a.CPU_HOURS).toFixed()/100,s=(100*a.MEM_HOURS).toFixed()/100;M+=n,k+=s,I.push(n),x.push(s)}else I.push(0),x.push(0)}),I[1]=(100*M).toFixed()/100,x[1]=(100*k).toFixed()/100,w.push(I),T.push(x)}var D=$("#acct_cpu_datatable",t).dataTable({bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["_all"]}]}),C=$("#acct_mem_datatable",t).dataTable({bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["_all"]}]});w.length>0&&D.fnAddData(w),T.length>0&&C.fnAddData(T)}$("#acct_placeholder",t).hide(),$("#acct_content",t).show()}function s(t){var e=new Date(t);return e.getUTCFullYear()+"/"+(e.getUTCMonth()+1)+"/"+e.getUTCDate()}var i=t("hbs!./accounting/html"),r=t("utils/locale"),o=t("opennebula/vm"),l=t("utils/notifier"),c=t("utils/resource-select");return t("flot"),t("flot.stack"),t("flot.resize"),t("flot.tooltip"),t("flot.time"),{html:e,setup:a,fillAccounting:n}}),define("hbs!utils/showback/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row">\n  <div id="showback_user_container" class="left medium-4 columns">\n    <label for="showback_user_select">'+i((e.tr||t&&t.tr||s).call(t,"Filter by user",{name:"tr",hash:{},data:n}))+'</label>\n    <div id="showback_user_select"/>\n  </div>\n  <div id="showback_group_container" class="left medium-4 columns">\n    <label for="showback_group_select">'+i((e.tr||t&&t.tr||s).call(t,"Filter by group",{name:"tr",hash:{},data:n}))+'</label>\n    <div id="showback_group_select"/>\n  </div>\n  <div id="showback_button_container" class="right medium-3 columns">\n    <button class="button radius success right large-12" id="showback_submit" type="button">\n      '+i((e.tr||t&&t.tr||s).call(t,"Get Showback",{name:"tr",hash:{},data:n}))+'\n    </button>\n  </div>\n</div>\n<div id="showback_placeholder">\n  <div class="row">\n    <div class="large-8 large-centered columns">\n      <div class="text-center">\n        <span class="fa-stack fa-5x" style="color: #dfdfdf">\n          <i class="fa fa-cloud fa-stack-2x"></i>\n          <i class="fa fa-money fa-stack-1x fa-inverse"></i>\n        </span>\n        <div id="showback_no_data" class="hidden">\n          <br>\n          <p style="font-size: 18px; color: #999">\n            '+i((e.tr||t&&t.tr||s).call(t,"There are no showback records",{name:"tr",hash:{},data:n}))+'\n          </p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div id="showback_content" class="hidden">\n    <div class="row showback_table">\n      <div class="large-12 columns graph_legend">\n        <h3 class="subheader">'+i((e.tr||t&&t.tr||s).call(t,"Showback",{name:"tr",hash:{},data:n}))+'</h3>\n      </div>\n      <div class="large-6 columns" style="overflow:auto">\n        <table id="showback_datatable" class="datatable twelve">\n          <thead>\n            <tr>\n              <th>dateint</th>\n              <th>'+i((e.tr||t&&t.tr||s).call(t,"Year",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+i((e.tr||t&&t.tr||s).call(t,"Month",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+i((e.tr||t&&t.tr||s).call(t,"Date",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+i((e.tr||t&&t.tr||s).call(t,"Cost",{name:"tr",hash:{},data:n}))+'</th>\n            </tr>\n          </thead>\n          <tbody id="tbody_showback_datatable">\n          </tbody>\n        </table>\n        <span class="label secondary radius showback_select_a_row">\n          '+i((e.tr||t&&t.tr||s).call(t,"Select a row to get detailed information of the month",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </div>\n      <div class="large-6 columns">\n        <div class="large-12 columns centered graph" id="showback_graph" style="height: 200px;">\n        </div>\n      </div>\n    </div>\n    <div class="row showback_vms_table hidden">\n      <div class="large-12 columns graph_legend">\n        <h3 class="subheader" id="showback_vms_title">'+i((e.tr||t&&t.tr||s).call(t,"VMs",{name:"tr",hash:{},data:n}))+'</h3>\n      </div>\n      <div class="large-12 columns" style="overflow:auto">\n        <table id="showback_vms_datatable" class="datatable twelve">\n          <thead>\n            <tr>\n              <th>'+i((e.tr||t&&t.tr||s).call(t,"ID",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+i((e.tr||t&&t.tr||s).call(t,"Name",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+i((e.tr||t&&t.tr||s).call(t,"Owner",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+i((e.tr||t&&t.tr||s).call(t,"Hours",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+i((e.tr||t&&t.tr||s).call(t,"Cost",{name:"tr",hash:{},data:n}))+'</th>\n            </tr>\n          </thead>\n          <tbody id="tbody_showback_datatable">\n          </tbody>\n        </table>\n      </div>\n    </div>\n  </div>'},useData:!0});return e.registerPartial("utils/showback/html",a),a}),define("utils/showback",["require","hbs!./showback/html","utils/locale","opennebula/vm","utils/notifier","utils/resource-select","flot","flot.stack","flot.resize","flot.tooltip","flot.time"],function(t){function e(){var t=s({});return t}function a(t,e){void 0==e&&(e={}),void 0!=e.fixed_user?$("#showback_user_container",t).hide():l.insert("#showback_user_select",t,"User",-1,!1,'<option value="-1">'+i.tr("<< me >>")+"</option>"),void 0!=e.fixed_group?$("#showback_group_container",t).hide():l.insert("#showback_group_select",t,"Group","",!0),showback_dataTable=$("#showback_datatable",t).dataTable({bSortClasses:!1,bDeferRender:!0,iDisplayLength:6,sDom:"t<'row collapse'<'small-12 columns'p>>",aoColumnDefs:[{bVisible:!1,aTargets:[0,1,2]}]}),showback_dataTable.fnSort([[0,"desc"]]),showback_vms_dataTable=$("#showback_vms_datatable",t).dataTable({bSortClasses:!1,bDeferRender:!0}),showback_dataTable.on("click","tbody tr",function(){var e=showback_dataTable.fnGetData(this),a=e[1],n=e[2];showback_vms_dataTable.fnClearTable(),showback_vms_dataTable.fnAddData(showback_dataTable.data("vms_per_date")[a][n].VMS),$("#showback_vms_title",t).text(i.months[n-1]+" "+a+" "+i.tr("VMs")),$(".showback_vms_table",t).show(),$(".showback_select_a_row",t).hide()}),$("#showback_submit",t).on("click",function(){var a,s,i={};return a=void 0!=e.fixed_user?e.fixed_user:$("#showback_user_select .resource_list_select",t).val(),s=void 0!=e.fixed_group?e.fixed_group:$("#showback_group_select .resource_list_select",t).val(),""!=a&&(i.userfilter=a),""!=s&&(i.group=s),r.showback({success:function(e,a){n(t,e,a)},error:o.onError,data:i}),!1})}function n(t,e,a){if($("#showback_no_data",t).hide(),void 0==a.SHOWBACK_RECORDS)return $("#showback_placeholder",t).show(),$("#showback_content",t).hide(),$("#showback_no_data",t).show(),!1;var n={};$.each(a.SHOWBACK_RECORDS.SHOWBACK,function(t,e){void 0==n[e.YEAR]&&(n[e.YEAR]={}),void 0==n[e.YEAR][e.MONTH]&&(n[e.YEAR][e.MONTH]={VMS:[],TOTAL:0}),n[e.YEAR][e.MONTH].VMS.push([e.VMID,e.VMNAME,e.UNAME,e.HOURS,e.TOTAL_COST]),n[e.YEAR][e.MONTH].TOTAL+=parseFloat(e.TOTAL_COST)});var s=[],r=[];$.each(n,function(t,e){$.each(e,function(e,a){s.push([new Date(t,e-1).getTime(),t,e,i.months[e-1]+" "+t,a.TOTAL.toFixed(2)]),r.push([new Date(t,e-1),a.TOTAL.toFixed(2)])})}),showback_dataTable.fnClearTable(),s.length>0&&(showback_dataTable.data("vms_per_date",n),showback_dataTable.fnAddData(s));var o=[];o.push({label:i.tr("Showback"),data:r});{var l={colors:["#2ba6cb","#707D85","#AC5A62"],legend:{show:!1},xaxis:{mode:"time",color:"#efefef",size:8,minTickSize:[1,"month"]},yaxis:{show:!1},series:{bars:{show:!0,lineWidth:0,barWidth:1728e6,fill:!0,align:"left"}},grid:{borderWidth:1,borderColor:"#efefef",hoverable:!0}};$.plot($("#showback_graph",t),o,l)}$("#showback_placeholder",t).hide(),$("#showback_content",t).show()}var s=t("hbs!./showback/html"),i=t("utils/locale"),r=t("opennebula/vm"),o=t("utils/notifier"),l=t("utils/resource-select");return t("flot"),t("flot.stack"),t("flot.resize"),t("flot.tooltip"),t("flot.time"),{html:e,setup:a}}),define("utils/graphs",["require","flot","flot.stack","flot.resize","flot.time","utils/humanize"],function(t){function e(t,e){series=[];var s=e.monitor_resources.split(",");e.labels&&(labels=e.labels.split(","));for(var i=0;i<s.length;i++){var r=s[i],o=t.monitoring[r];o&&(1==e.derivative&&a(o),series.push({stack:r,label:labels?labels[i]:r[i].split("/").pop(),data:o}))}var l=e.humanize_figures?n.size:function(t){return t},c={colors:["#2ba6cb","#707D85","#AC5A62"],legend:{show:void 0!=e.div_legend,noColumns:s.length,container:e.div_legend},xaxis:{tickFormatter:function(t){return n.prettyTimeAxis(t,e.show_date)},color:"#efefef",font:{color:"#999",size:10}},yaxis:{tickFormatter:function(t){return l(t,e.convert_from_bytes,e.y_sufix)},min:0,color:"#efefef",font:{color:"#999",size:10}},series:{lines:{lineWidth:1}},grid:{borderWidth:1,borderColor:"#efefef"}};series.length>0&&$.plot(e.div_graph,series,c)}function a(t){for(var e=0;e<t.length-1;e++){var a=t[e],n=t[e+1],s=(n[1]-a[1])/(n[0]-a[0]);t[e]=[a[0],s]}t.pop()}t("flot"),t("flot.stack"),t("flot.resize"),t("flot.time");var n=t("utils/humanize");return{plot:e}}),function(t,e){"use strict";Foundation.libs.slider={name:"slider",version:"5.5.1",settings:{start:0,end:100,step:1,precision:null,initial:null,display_selector:"",vertical:!1,trigger_input_change:!1,on_change:function(){}},cache:{},init:function(t,e,a){Foundation.inherit(this,"throttle"),this.bindings(e,a),this.reflow()},events:function(){var a=this;t(this.scope).off(".slider").on("mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider","["+a.attr_name()+"]:not(.disabled, [disabled]) .range-slider-handle",function(e){a.cache.active||(e.preventDefault(),a.set_active_slider(t(e.target)))}).on("mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider",function(n){if(a.cache.active)if(n.preventDefault(),t.data(a.cache.active[0],"settings").vertical){var s=0;n.pageY||(s=e.scrollY),a.calculate_position(a.cache.active,a.get_cursor_position(n,"y")+s)}else a.calculate_position(a.cache.active,a.get_cursor_position(n,"x"))}).on("mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider",function(){a.remove_active_slider()}).on("change.fndtn.slider",function(){a.settings.on_change()}),a.S(e).on("resize.fndtn.slider",a.throttle(function(){a.reflow()},300))},get_cursor_position:function(t,e){var a,n="page"+e.toUpperCase(),s="client"+e.toUpperCase();return"undefined"!=typeof t[n]?a=t[n]:"undefined"!=typeof t.originalEvent[s]?a=t.originalEvent[s]:t.originalEvent.touches&&t.originalEvent.touches[0]&&"undefined"!=typeof t.originalEvent.touches[0][s]?a=t.originalEvent.touches[0][s]:t.currentPoint&&"undefined"!=typeof t.currentPoint[e]&&(a=t.currentPoint[e]),a},set_active_slider:function(t){this.cache.active=t},remove_active_slider:function(){this.cache.active=null},calculate_position:function(e,a){var n=this,s=t.data(e[0],"settings"),i=(t.data(e[0],"handle_l"),t.data(e[0],"handle_o"),t.data(e[0],"bar_l")),r=t.data(e[0],"bar_o");requestAnimationFrame(function(){var t;t=Foundation.rtl&&!s.vertical?n.limit_to((r+i-a)/i,0,1):n.limit_to((a-r)/i,0,1),t=s.vertical?1-t:t;var o=n.normalized_value(t,s.start,s.end,s.step,s.precision);n.set_ui(e,o)})},set_ui:function(e,a){var n=t.data(e[0],"settings"),s=t.data(e[0],"handle_l"),i=t.data(e[0],"bar_l"),r=this.normalized_percentage(a,n.start,n.end),o=r*(i-s)-1,l=100*r,c=e.parent(),d=e.parent().children("input[type=hidden]");Foundation.rtl&&!n.vertical&&(o=-o),o=n.vertical?-o+i-s+1:o,this.set_translate(e,o,n.vertical),n.vertical?e.siblings(".range-slider-active-segment").css("height",l+"%"):e.siblings(".range-slider-active-segment").css("width",l+"%"),c.attr(this.attr_name(),a).trigger("change").trigger("change.fndtn.slider"),d.val(a),n.trigger_input_change&&d.trigger("change"),e[0].hasAttribute("aria-valuemin")||e.attr({"aria-valuemin":n.start,"aria-valuemax":n.end}),e.attr("aria-valuenow",a),""!=n.display_selector&&t(n.display_selector).each(function(){this.hasOwnProperty("value")?t(this).val(a):t(this).text(a)})},normalized_percentage:function(t,e,a){return Math.min(1,(t-e)/(a-e))},normalized_value:function(t,e,a,n,s){var i=a-e,r=t*i,o=(r-r%n)/n,l=r%n,c=l>=.5*n?n:0;return(o*n+c+e).toFixed(s)},set_translate:function(e,a,n){n?t(e).css("-webkit-transform","translateY("+a+"px)").css("-moz-transform","translateY("+a+"px)").css("-ms-transform","translateY("+a+"px)").css("-o-transform","translateY("+a+"px)").css("transform","translateY("+a+"px)"):t(e).css("-webkit-transform","translateX("+a+"px)").css("-moz-transform","translateX("+a+"px)").css("-ms-transform","translateX("+a+"px)").css("-o-transform","translateX("+a+"px)").css("transform","translateX("+a+"px)")},limit_to:function(t,e,a){return Math.min(Math.max(t,e),a)},initialize_settings:function(e){var a,n=t.extend({},this.settings,this.data_options(t(e).parent()));null===n.precision&&(a=(""+n.step).match(/\.([\d]*)/),n.precision=a&&a[1]?a[1].length:0),n.vertical?(t.data(e,"bar_o",t(e).parent().offset().top),t.data(e,"bar_l",t(e).parent().outerHeight()),t.data(e,"handle_o",t(e).offset().top),t.data(e,"handle_l",t(e).outerHeight())):(t.data(e,"bar_o",t(e).parent().offset().left),t.data(e,"bar_l",t(e).parent().outerWidth()),t.data(e,"handle_o",t(e).offset().left),t.data(e,"handle_l",t(e).outerWidth())),t.data(e,"bar",t(e).parent()),t.data(e,"settings",n)},set_initial_position:function(e){var a=t.data(e.children(".range-slider-handle")[0],"settings"),n="number"!=typeof a.initial||isNaN(a.initial)?Math.floor(.5*(a.end-a.start)/a.step)*a.step+a.start:a.initial,s=e.children(".range-slider-handle");this.set_ui(s,n)},set_value:function(e){var a=this;t("["+a.attr_name()+"]",this.scope).each(function(){t(this).attr(a.attr_name(),e)}),t(this.scope).attr(a.attr_name())&&t(this.scope).attr(a.attr_name(),e),a.reflow()},reflow:function(){var e=this;e.S("["+this.attr_name()+"]").each(function(){var a=t(this).children(".range-slider-handle")[0],n=t(this).attr(e.attr_name());e.initialize_settings(a),n?e.set_ui(t(a),parseFloat(n)):e.set_initial_position(t(this))})}}}(jQuery,window,window.document),define("foundation.slider",["foundation.core"],function(){}),define("tabs/provision-tab/users/quota-widget",["require","foundation.slider","utils/quotas/quota-limits"],function(t){function e(t){t.foundation("reflow","slider"),$("select.provision_quota_select",t).on("change",function(){var t=$(this).closest(".row");switch($(this).val()){case"edit":$("div.provision_quota_edit",t).show(),$("div.provision_quota_default",t).hide(),$("div.provision_quota_unlimited",t).hide(),$("input",t).change();break;case"default":$("div.provision_quota_edit",t).hide(),$("div.provision_quota_default",t).show(),$("div.provision_quota_unlimited",t).hide();break;case"unlimited":$("div.provision_quota_edit",t).hide(),$("div.provision_quota_default",t).hide(),$("div.provision_quota_unlimited",t).show()}return!1});var e=$(".provision_rvms_quota_input",t);$(".provision_rvms_quota_slider",t).on("change",function(){e.val($(this).attr("data-slider"))}),e.change(function(){$(".provision_rvms_quota_slider",t).foundation("slider","set_value",this.value)});var a=$(".provision_cpu_quota_input",t);$(".provision_cpu_quota_slider",t).on("change",function(){a.val($(this).attr("data-slider"))}),a.change(function(){$(".provision_cpu_quota_slider",t).foundation("slider","set_value",this.value)});var n=$(".provision_memory_quota_input",t),s=$(".provision_memory_quota_tmp_input",t),i=function(){var t=s.val();n.val(t>0?Math.floor(1024*t):t)};$(".provision_memory_quota_slider",t).on("change",function(){s.val($(this).attr("data-slider")),i()}),s.change(function(){i(),$(".provision_memory_quota_slider",t).foundation("slider","set_value",this.value)}),$(".provision_rvms_quota_input",t).val("").change(),$(".provision_memory_quota_input",t).val("").change(),$(".provision_memory_quota_tmp_input",t).val("").change(),$(".provision_cpu_quota_input",t).val("").change()}function a(t){$("select.provision_quota_select",t).val("edit").change(),$(".provision_rvms_quota_input",t).val("").change(),$(".provision_memory_quota_input",t).val("").change(),$(".provision_memory_quota_tmp_input",t).val("").change(),$(".provision_cpu_quota_input",t).val("").change()}function n(t){var e=function(t,e){switch(t.val()){case"edit":return e.val();case"default":return s.QUOTA_LIMIT_DEFAULT;case"unlimited":return s.QUOTA_LIMIT_UNLIMITED}},a=e($(".provision_rvms_quota select.provision_quota_select",t),$(".provision_rvms_quota_input",t)),n=e($(".provision_cpu_quota select.provision_quota_select",t),$(".provision_cpu_quota_input",t)),i=e($(".provision_memory_quota select.provision_quota_select",t),$(".provision_memory_quota_input",t));return{VM:{VOLATILE_SIZE:s.QUOTA_LIMIT_DEFAULT,VMS:a,MEMORY:i,CPU:n}}}t("foundation.slider");var s=t("utils/quotas/quota-limits");return{setup:e,reset:a,retrieve:n}}),function(t){"use strict";Foundation.libs.alert={name:"alert",version:"5.5.1",settings:{callback:function(){}},init:function(t,e,a){this.bindings(e,a)},events:function(){var e=this,a=this.S;t(this.scope).off(".alert").on("click.fndtn.alert","["+this.attr_name()+"] .close",function(t){var n=a(this).closest("["+e.attr_name()+"]"),s=n.data(e.attr_name(!0)+"-init")||e.settings;t.preventDefault(),Modernizr.csstransitions?(n.addClass("alert-close"),n.on("transitionend webkitTransitionEnd oTransitionEnd",function(){a(this).trigger("close").trigger("close.fndtn.alert").remove(),s.callback()})):n.fadeOut(300,function(){a(this).trigger("close").trigger("close.fndtn.alert").remove(),s.callback()})})},reflow:function(){}}}(jQuery,window,window.document),define("foundation.alert",["foundation.core"],function(){}),define("templates/helpers/isTabPanelEnabled",["require","hbs/handlebars","sunstone-config"],function(t){var e=t("hbs/handlebars"),a=t("sunstone-config"),n=function(t,e,n){return a.isTabPanelEnabled(t,e)?n.fn(this):n.inverse(this)};return e.registerHelper("isTabPanelEnabled",n),n}),define("hbs!tabs/provision-tab/vms/info",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/isTabPanelEnabled"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'          <a href"#" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"The main disk of the Virtual Machine will be saved in a new Image",{name:"tr",hash:{},data:n}))+'" class="left button small radius success provision_snapshot_button tip-top">\n            <i class="fa fa-fw fa-lg fa-save"/>\n          </a>\n          <a data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"You have to power-off the virtual machine first",{name:"tr",hash:{},data:n}))+'" class="left button small radius white provision_snapshot_button_disabled tip-top" style="color: #999">\n            <i class="fa fa-fw fa-lg fa-save"/>\n          </a>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div class="text-center provision_info_vm_loading">\n  <span class="fa-stack fa-5x" style="color: #dfdfdf"> <i class="fa fa-cloud fa-stack-2x"></i> <i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i>\n  </span>\n  <br>\n  <br>\n  <span style="font-size: 18px; color: #999"></span>\n</div>\n<div class="provision_info_vm">\n  <div class="row">\n    <div class="large-12 large-centered columns">\n      <ul class="inline-list provision_action_icons">\n        <li>\n          <a href"#" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Open a remote console in a new window",{name:"tr",hash:{},data:n}))+'" class="left button small radius provision_vnc_button tip-top">\n            <i class="fa fa-fw fa-lg fa-desktop"/></a>\n          <a data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"You have to boot the Virtual Machine first",{name:"tr",hash:{},data:n}))+'" class="left button small radius white provision_vnc_button_disabled tip-top" style="color: #999">\n            <i class="fa fa-fw fa-lg fa-desktop"/></a>\n';return s=(e.isTabPanelEnabled||t&&t.isTabPanelEnabled||i).call(t,"provision-tab","templates",{name:"isTabPanelEnabled",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+'        </li>\n        <li class="right">\n          <a href"#" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Delete",{name:"tr",hash:{},data:n}))+'" class="button small radius alert provision_delete_confirm_button tip-top right">\n            <i class="fa fa-fw fa-lg fa-trash-o"/>\n          </a>\n          <a href"#" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Delete",{name:"tr",hash:{},data:n}))+'" class="button small radius alert provision_shutdownhard_confirm_button tip-top right">\n            <i class="fa fa-fw fa-lg fa-trash-o"/>\n          </a>\n          <a href"#" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Power off",{name:"tr",hash:{},data:n}))+'" class="button small radius secondary provision_poweroff_confirm_button tip-top right">\n            <i class="fa fa-fw fa-lg fa-power-off"/>\n          </a>\n          <a href"#" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Power on",{name:"tr",hash:{},data:n}))+'" class="button small radius secondary provision_poweron_button tip-top right">\n            <i class="fa fa-fw fa-lg fa-play"/>\n          </a>\n          <a href"#" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Reboot",{name:"tr",hash:{},data:n}))+'" class="button small radius secondary provision_reboot_confirm_button tip-top right">\n            <i class="fa fa-fw fa-lg fa-repeat"/>\n          </a>\n        </li>\n      </ul>\n    </div>\n  </div>\n  <div class="row">\n    <div class="provision_confirm_action large-12 large-centered columns"></div>\n  </div>\n  <div class="row">\n    <div class="large-5 columns">\n      <ul class="provision-pricing-table_vm_info provision-pricing-table" style="border: 0px !important; margin-top: 20px;"></ul>\n    </div>\n    <div class="large-6 columns right">\n      <div class="row">\n        <div class="large-6 medium-6  columns">\n          <div class="row text-center">\n            <div class="large-12 columns">\n              <h4 class="subheader" style="margin: 0px">\n                <small>'+r((e.tr||t&&t.tr||i).call(t,"CPU",{name:"tr",hash:{},data:n}))+'</small>\n              </h4>\n            </div>\n          </div>\n          <div class="row">\n            <div class="large-12 columns">\n              <div class="large-12 columns centered graph vm_cpu_graph" style="height: 100px;"></div>\n            </div>\n          </div>\n          <div class="row graph_legend">\n            <div class="large-12 columns centered vm_cpu_legend"></div>\n          </div>\n        </div>\n        <div class="large-6 medium-6 columns">\n          <div class="row text-center">\n            <div class="large-12 columns">\n              <h4 class="subheader" style="margin: 0px">\n                <small>'+r((e.tr||t&&t.tr||i).call(t,"Memory",{name:"tr",hash:{},data:n}))+'</small>\n              </h4>\n            </div>\n          </div>\n          <div class="row">\n            <div class="large-12 columns">\n              <div class="large-12 columns centered graph vm_memory_graph" style="height: 100px;"></div>\n            </div>\n          </div>\n          <div class="row graph_legend">\n            <div class="large-12 columns centered vm_memory_legend"></div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class="large-12 columns">\n      <br>\n      <div class="row">\n      <div class="large-3 medium-6 columns">\n        <div class="row text-center">\n          <div class="large-12 columns">\n            <h4 class="subheader" style="margin: 0px">\n              <small>'+r((e.tr||t&&t.tr||i).call(t,"Net RX",{name:"tr",hash:{},data:n}))+'</small>\n            </h4>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-12 columns">\n            <div class="large-12 columns centered graph vm_net_rx_graph" style="height: 100px;"></div>\n          </div>\n        </div>\n        <div class="row graph_legend">\n          <div class="large-12 columns centered vm_net_rx_legend"></div>\n        </div>\n      </div>\n      <div class="large-3 medium-6  columns">\n        <div class="row text-center">\n          <div class="large-12 columns">\n            <h4 class="subheader" style="margin: 0px">\n              <small>'+r((e.tr||t&&t.tr||i).call(t,"Net TX",{name:"tr",hash:{},data:n}))+'</small>\n            </h4>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-12 columns">\n            <div class="large-12 columns centered graph vm_net_tx_graph" style="height: 100px;"></div>\n          </div>\n        </div>\n        <div class="row graph_legend">\n          <div class="large-12 columns centered vm_net_tx_legend"></div>\n        </div>\n      </div>\n      <div class="large-3 medium-6  columns">\n        <div class="row text-center">\n          <div class="large-12 columns">\n            <h4 class="subheader" style="margin: 0px">\n              <small>'+r((e.tr||t&&t.tr||i).call(t,"Net Download Speed",{name:"tr",hash:{},data:n}))+'</small>\n            </h4>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-12 columns">\n            <div class="large-12 columns centered graph vm_net_rx_speed_graph" style="height: 100px;"></div>\n          </div>\n        </div>\n        <div class="row graph_legend">\n          <div class="large-12 columns centered vm_net_rx_speed_legend"></div>\n        </div>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <div class="row text-center">\n          <div class="large-12 columns">\n            <h4 class="subheader" style="margin: 0px">\n              <small>'+r((e.tr||t&&t.tr||i).call(t,"Net Upload Speed",{name:"tr",hash:{},data:n}))+'</small>\n            </h4>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-12 columns">\n            <div class="large-12 columns centered graph vm_net_tx_speed_graph" style="height: 100px;"></div>\n          </div>\n        </div>\n        <div class="row graph_legend">\n          <div class="large-12 columns centered vm_net_tx_speed_legend"></div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <br>\n  <br></div>'
+},useData:!0});return e.registerPartial("tabs/provision-tab/vms/info",a),e.registerPartial("tabs/provision-tab/vms/info",a),a}),define("hbs!tabs/provision-tab/vms/list",["hbs","hbs/handlebars","hbs!tabs/provision-tab/vms/info","templates/helpers/tr"],function(t,e){var a=e.template({1:function(){return"active"},3:function(){return'style="display:none"'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<dl class="accordion accordion_list provision_list_vms" data-accordion>\n  <dd class="';return s=e["if"].call(t,null!=(s=null!=t?t.opts:t)?s.active:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' accordion-navigation">\n    <a href="#provision_list_vm_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'" class="provision_back right only-not-active">\n      <span class="button small radius"> <i class="fa fa-fw fa-lg fa-th"/><i class="fa fa-fw fa-lg fa-chevron-left"/>\n      </span>\n    </a>\n    <h3 class="subheader">\n      <span style="color: #777">\n      </span>\n      <span class="provision_info_vm_name only-not-active"></span>\n      <span href"#" class="right only-active button small radius secondary provision_vms_list_refresh_button" \n                ',s=e.unless.call(t,null!=(s=null!=t?t.opts:t)?s.refresh:s,{name:"unless",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' data-tooltip title=" '+l((e.tr||t&&t.tr||o).call(t,"Refresh",{name:"tr",hash:{},data:n}))+'">\n        <i class="fa fa-fw fa-lg fa-refresh"/></span>\n      <span href"#" class="right only-not-active button small radius secondary provision_refresh_info" \n                ',s=e.unless.call(t,null!=(s=null!=t?t.opts:t)?s.refresh:s,{name:"unless",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' data-tooltip title=" '+l((e.tr||t&&t.tr||o).call(t,"Refresh",{name:"tr",hash:{},data:n}))+'">\n        <i class="fa fa-fw fa-lg fa-refresh"/>\n      </span>\n      <span href"#" class="right only-active button small radius secondary provision_vms_list_filter_button" \n                ',s=e.unless.call(t,null!=(s=null!=t?t.opts:t)?s.filter:s,{name:"unless",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' data-tooltip title=" '+l((e.tr||t&&t.tr||o).call(t,"Filter by User",{name:"tr",hash:{},data:n}))+'">\n        <i class="fa fa-fw fa-lg fa-filter"/>\n      </span>\n      <span class="right only-active provision_list_vms_filter" style="display: none"></span>\n      <span>\n        <span href"#" class="right  only-active button small radius success provision_create_vm_button" \n                ',s=e.unless.call(t,null!=(s=null!=t?t.opts:t)?s.create:s,{name:"unless",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='>\n          <i class="fa fa-fw fa-lg fa-plus-square"/>\n        </span>\n        <input type="search" class="only-active provision_list_vms_search provision-search-input " placeholder="Search VMs"/>\n      </h3>\n      <div id="provision_list_vm_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'" class="content ',s=e["if"].call(t,null!=(s=null!=t?t.opts:t)?s.active:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='">\n        <div class="row">\n          <div class="large-12 large-centered columns">\n            <table class="provision_vms_table">\n              <thead class="hidden">\n                <tr>\n                  <th>'+l((e.tr||t&&t.tr||o).call(t,"ID",{name:"tr",hash:{},data:n}))+"</th>\n                  <th>"+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+"</th>\n                  <th>"+l((e.tr||t&&t.tr||o).call(t,"User ID",{name:"tr",hash:{},data:n}))+'</th>\n                </tr>\n              </thead>\n              <tbody class="hidden"></tbody>\n            </table>\n            <br></div>\n        </div>\n      </div>\n    </dd>\n    <dd class="accordion-navigation">\n      <a class="provision_show_vm_accordion" href="#provision_show_vm_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'"></a>\n      <div id="provision_show_vm_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'" class="content">',s=this.invokePartial(a["tabs/provision-tab/vms/info"],"","tabs/provision-tab/vms/info",t,void 0,e,a,n),null!=s&&(c+=s),c+"</div>\n    </dd>\n  </dl>"},usePartial:!0,useData:!0});return e.registerPartial("tabs/provision-tab/vms/list",a),a}),define("tabs/provision-tab/vms/list",["require","foundation.alert","opennebula","utils/locale","sunstone-config","utils/notifier","utils/humanize","utils/resource-select","utils/graphs","hbs!./list"],function(t){function e(){$(".section_content").hide(),$(".provision_vms_list_section").fadeIn(),$("dd:not(.active) .provision_back",$(".provision_vms_list_section")).trigger("click"),$(".provision_vms_list_refresh_button",$(".provision_vms_list_section")).trigger("click")}function a(t,e){t.off(),t.html(n(e)),e.data&&$(".provision_vms_table",t).data("opennebula",e.data),r(t,e),o(t)}function n(t){return opts=$.extend({title:p.tr("Virtual Machines"),refresh:!0,create:!0,filter:!0},t),g+=1,v({accordionId:g,opts:opts})}function s(t,e){t.fnClearTable(!0),0==e.length?t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+p.tr("There are no Virtual Machines")+"</span><br><br></div>"):t.fnAddData(e)}function i(t,e){t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>');var a=t.data("opennebula");a?s(t,a):setTimeout(function(){u.VM.list({timeout:!0,success:function(e,a){s(t,a)},error:f.onError})},e)}function r(t,e){var a=$(".provision_vms_table",t).dataTable({iDisplayLength:6,sDom:'<"H">t<"F"lp>',aLengthMenu:[[6,12,36,72],[6,12,36,72]],aaSorting:[[0,"desc"]],aoColumnDefs:[{bVisible:!1,aTargets:["all"]}],aoColumns:[{mDataProp:"VM.ID"},{mDataProp:"VM.NAME"},{mDataProp:"VM.UID"}],fnPreDrawCallback:function(){return 0==this.$("tr",{filter:"applied"}).length?this.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+p.tr("There are no Virtual Machines")+"</span></div>"):$(".provision_vms_table",t).html('<ul class="provision_vms_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center"></ul>'),!0},fnDrawCallback:function(){return $(".provision_vms_ul",t).foundation("reflow","tooltip"),!0},fnRowCallback:function(e,a,n,s){var i=a.VM,r=l(i);return $(".provision_vms_ul",t).append('<li><ul class="provision-pricing-table" opennebula_id="'+i.ID+'" datatable_index="'+s+'"><li class="provision-title text-left"><a class="provision_info_vm_button" style="color:#555" href="#"><span class="'+r.color+'-color"  data-tooltip title="'+r.str+'"><i class="fa fa-fw fa-square"/> </span>'+i.NAME+'</a></li><li class="provision-bullet-item text-left" ><i class="fa fa-fw fa-lg fa-laptop"/> x'+i.TEMPLATE.CPU+" - "+(i.TEMPLATE.MEMORY>1e3?Math.floor(i.TEMPLATE.MEMORY/1024)+"GB":i.TEMPLATE.MEMORY+"MB")+" - "+c(i)+'</li><li class="provision-bullet-item text-left" ><span class="">'+d(i)+'</span></li><li class="provision-bullet-item-last text-left" ><span class=""><i class="fa fa-fw fa-lg fa-user"/> '+i.UNAME+'</span><span class="right">'+m.prettyTimeAgo(i.STIME)+"</span></li></ul></li>"),e}});$(".provision_list_vms_search",t).keyup(function(){a.fnFilter($(this).val())}),$(".provision_list_vms_search",t).change(function(){a.fnFilter($(this).val())}),t.on("click",".provision_vms_list_refresh_button",function(){return u.Action.clear_cache("VM"),i(a,0),!1}),$(".provision_list_vms_filter",t).on("change",".resource_list_select",function(){"-2"!=$(this).val()?a.fnFilter("^"+$(this).val()+"$",2,!0,!1):a.fnFilter("",2)}),_.insert(".provision_list_vms_filter",t,"User",e.filter_expression?e.filter_expression:"-2",!1,'<option value="-2">'+p.tr("ALL")+"</option>",null,null,!0,!0),t.on("click",".provision_vms_list_filter_button",function(){return $(".provision_list_vms_filter",t).fadeIn(),!1}),u.Action.clear_cache("VM"),i(a,0),$(document).foundation()}function o(t){function e(t,e){$(".provision_info_vm_name",e).text(""),$(".provision_info_vm_loading",e).show(),$(".provision_info_vm",e).css("visibility","hidden"),u.VM.show({data:{id:t},error:f.onError,success:function(t,a){var n=a.VM,s=l(n);switch(s.color){case"deploying":$(".provision_reboot_confirm_button",e).hide(),$(".provision_poweroff_confirm_button",e).hide(),$(".provision_poweron_button",e).hide(),$(".provision_delete_confirm_button",e).show(),$(".provision_shutdownhard_confirm_button",e).hide(),$(".provision_snapshot_button",e).hide(),$(".provision_vnc_button",e).hide(),$(".provision_snapshot_button_disabled",e).hide(),$(".provision_vnc_button_disabled",e).hide();break;case"running":$(".provision_reboot_confirm_button",e).show(),$(".provision_poweroff_confirm_button",e).show(),$(".provision_poweron_button",e).hide(),$(".provision_delete_confirm_button",e).hide(),$(".provision_shutdownhard_confirm_button",e).show(),$(".provision_snapshot_button",e).hide(),$(".provision_vnc_button",e).show(),$(".provision_snapshot_button_disabled",e).show(),$(".provision_vnc_button_disabled",e).hide();break;case"off":$(".provision_reboot_confirm_button",e).hide(),$(".provision_poweroff_confirm_button",e).hide(),$(".provision_poweron_button",e).show(),$(".provision_delete_confirm_button",e).show(),$(".provision_shutdownhard_confirm_button",e).hide(),$(".provision_snapshot_button",e).show(),$(".provision_vnc_button",e).hide(),$(".provision_snapshot_button_disabled",e).hide(),$(".provision_vnc_button_disabled",e).show();break;case"powering_off":case"error":$(".provision_reboot_confirm_button",e).hide(),$(".provision_poweroff_confirm_button",e).hide(),$(".provision_poweron_button",e).hide(),$(".provision_delete_confirm_button",e).show(),$(".provision_shutdownhard_confirm_button",e).hide(),$(".provision_snapshot_button",e).hide(),$(".provision_vnc_button",e).hide(),$(".provision_snapshot_button_disabled",e).hide(),$(".provision_vnc_button_disabled",e).hide();break;default:color="secondary",$(".provision_reboot_confirm_button",e).hide(),$(".provision_poweroff_confirm_button",e).hide(),$(".provision_poweron_button",e).hide(),$(".provision_delete_confirm_button",e).show(),$(".provision_shutdownhard_confirm_button",e).hide(),$(".provision_snapshot_button",e).hide(),$(".provision_vnc_button",e).hide(),$(".provision_snapshot_button_disabled",e).hide(),$(".provision_vnc_button_disabled",e).hide()}u.VM.isVNCSupported(n)||u.VM.isSPICESupported(n)||($(".provision_vnc_button",e).hide(),$(".provision_vnc_button_disabled",e).hide()),$(".provision_info_vm",e).attr("vm_id",n.ID),$(".provision_info_vm",e).data("vm",n),$(".provision_info_vm_name",e).text(n.NAME),$(".provision-pricing-table_vm_info",e).html('<li class="text-left provision-bullet-item"><span class="'+s.color+'-color"><i class="fa fa-fw fa-lg fa-square"/>&emsp;'+s.str+'</span></li><li class="text-left provision-bullet-item"><hr style="margin: 0px"></li><li class="text-left provision-bullet-item" ><span><i class="fa fa-fw fa-lg fa-laptop"/>&emsp;x'+n.TEMPLATE.CPU+" - "+(n.TEMPLATE.MEMORY>1e3?Math.floor(n.TEMPLATE.MEMORY/1024)+"GB":n.TEMPLATE.MEMORY+"MB")+"</span> - <span>"+c(n)+'</span></li><li class="text-left provision-bullet-item" ><span>'+d(n)+'</span></li><li class="text-left provision-bullet-item"><hr style="margin: 0px"></li><li class="text-right provision-bullet-item"><span class="left" style="color: #999;"><i class="fa fa-fw fa-lg fa-user"/>&emsp;'+n.UNAME+'</span><span class="right" style="color: #999;"><i class="fa fa-fw fa-lg fa-clock-o"/>&emsp;'+m.prettyTimeAgo(n.STIME)+" - ID: "+n.ID+"</span></li>"),$(".provision_confirm_action:first",e).html(""),$(".provision_info_vm",e).css("visibility","visible"),$(".provision_info_vm_loading",e).hide(),u.VM.monitor({data:{timeout:!0,id:n.ID,monitor:{monitor_resources:"CPU,MEMORY,NET_TX,NET_RX"}},success:function(t,a){for(var n=[{monitor_resources:"CPU",labels:"Real CPU",humanize_figures:!1,div_graph:$(".vm_cpu_graph",e)},{monitor_resources:"MEMORY",labels:"Real MEM",humanize_figures:!0,div_graph:$(".vm_memory_graph",e)},{labels:"Network reception",monitor_resources:"NET_RX",humanize_figures:!0,convert_from_bytes:!0,div_graph:$(".vm_net_rx_graph",e)},{labels:"Network transmission",monitor_resources:"NET_TX",humanize_figures:!0,convert_from_bytes:!0,div_graph:$(".vm_net_tx_graph",e)},{labels:"Network reception speed",monitor_resources:"NET_RX",humanize_figures:!0,convert_from_bytes:!0,y_sufix:"B/s",derivative:!0,div_graph:$(".vm_net_rx_speed_graph",e)},{labels:"Network transmission speed",monitor_resources:"NET_TX",humanize_figures:!0,convert_from_bytes:!0,y_sufix:"B/s",derivative:!0,div_graph:$(".vm_net_tx_speed_graph",e)}],s=0;s<n.length;s++)b.plot(a,n[s])}})}})}h.isTabPanelEnabled("provision-tab","templates")&&(t.on("click",".provision_snapshot_button",function(){$(".provision_confirm_action:first",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-12 columns"><span style="font-size: 14px; line-height: 20px">'+p.tr("This Virtual Machine will be saved in a new Template. Only the main disk will be preserved!")+"<br>"+p.tr("You can then create a new Virtual Machine using this Template")+'</span></div></div><br><div class="row"><div class="large-11 large-centered columns"><input type="text" class="provision_snapshot_name" placeholder="'+p.tr("Template Name")+'" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important; margin: 0px"/></div></div><br><div class="row"><div class="large-11 large-centered columns"><a href"#" class="provision_snapshot_create_button success button large-12 radius right">'+p.tr("Save Virtual Machine to Template")+'</a></div></div><a href="#" class="close" style="top: 20px">&times;</a></div>')}),t.on("click",".provision_snapshot_create_button",function(){var t=$(this);t.attr("disabled","disabled");var a=$(".provision_info_vm[vm_id]"),n=a.attr("vm_id"),s=$(".provision_snapshot_name",a).val();return u.VM.save_as_template({data:{id:n,extra_param:{name:s}},success:function(s){u.Action.clear_cache("VMTEMPLATE"),f.notifyMessage(p.tr("Image")+" "+s.request.data[0][1].name+" "+p.tr("saved successfully")),e(n,a),t.removeAttr("disabled")},error:function(e,a){f.onError(e,a),t.removeAttr("disabled")}}),!1})),t.on("click",".provision_delete_confirm_button",function(){$(".provision_confirm_action:first",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-9 columns"><span style="font-size: 14px; line-height: 20px">'+p.tr("Be careful, this action will inmediately destroy your Virtual Machine")+"<br>"+p.tr("All the information will be lost!")+'</span></div><div class="large-3 columns"><a href"#" class="provision_delete_button alert button large-12 radius right" style="margin-right: 15px">'+p.tr("Delete")+'</a></div></div><a href="#" class="close">&times;</a></div>')}),t.on("click",".provision_shutdownhard_confirm_button",function(){$(".provision_confirm_action:first",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-9 columns"><span style="font-size: 14px; line-height: 20px">'+p.tr("Be careful, this action will inmediately destroy your Virtual Machine")+"<br>"+p.tr("All the information will be lost!")+'</span></div><div class="large-3 columns"><a href"#" class="provision_shutdownhard_button alert button large-12 radius right" style="margin-right: 15px">'+p.tr("Delete")+'</a></div></div><a href="#" class="close" style="top: 20px">&times;</a></div>')}),t.on("click",".provision_poweroff_confirm_button",function(){$(".provision_confirm_action:first",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-11 columns"><span style="font-size: 14px; line-height: 20px">'+p.tr("This action will power off this Virtual Machine. The Virtual Machine will remain in the poweroff state, and can be powered on later")+"<br><br>"+p.tr("You can send the power off signal to the Virtual Machine (this is equivalent to execute the command from the console). If that doesn't effect your Virtual Machine, try to Power off the machine (this is equivalent to pressing the power off button in a physical computer).")+'</span></div></div><br><div class="row"><div class="large-12 columns"><a href"#" class="provision_poweroff_button button radius right" style="margin-right: 15px">'+p.tr("Power off")+'</a><label class="left" style="margin-left: 25px"><input type="radio" name="provision_poweroff_radio" value="poweroff_hard" class="provision_poweroff_hard_radio"> <i class="fa fa-fw fa-bolt"/> '+p.tr("Power off the machine")+'</label><label class="left" style="margin-left: 25px"><input type="radio" name="provision_poweroff_radio" value="poweroff" class="provision_poweroff_radio" checked> <i class="fa fa-fw fa-power-off"/> '+p.tr("Send the power off signal")+'</label></div></div><a href="#" class="close" style="top: 20px">&times;</a></div>')}),t.on("click",".provision_reboot_confirm_button",function(){$(".provision_confirm_action:first",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-11 columns"><span style="font-size: 14px; line-height: 20px">'+p.tr("This action will reboot this Virtual Machine.")+"<br><br>"+p.tr("You can send the reboot signal to the Virtual Machine (this is equivalent to execute the reboot command form the console). If that doesn't effect your Virtual Machine, try to Reboot the machine (this is equivalent to pressing the reset button a physical computer).")+'</span></div></div><br><div class="row"><div class="large-12 columns"><a href"#" class="provision_reboot_button button radius right" style="margin-right: 15px">'+p.tr("Reboot")+'</a><label class="left" style="margin-left: 25px"><input type="radio" name="provision_reboot_radio" value="reset" class="provision_reboot_hard_radio"> <i class="fa fa-fw fa-bolt"/> '+p.tr("Reboot the machine")+'</label><label class="left" style="margin-left: 25px"><input type="radio" name="provision_reboot_radio" value="reboot" class="provision_reboot_radio" checked> <i class="fa fa-fw fa-power-off"/> '+p.tr("Send the reboot signal")+'</label></div></div><a href="#" class="close" style="top: 20px">&times;</a></div>')}),t.on("click",".provision_delete_button",function(){var e=$(this);e.attr("disabled","disabled");var a=$(".provision_info_vm",t).attr("vm_id");return u.VM.del({data:{id:a},success:function(){$(".provision_back",t).click(),$(".provision_vms_list_refresh_button",t).click(),e.removeAttr("disabled")},error:function(t,a){f.onError(t,a),e.removeAttr("disabled")}}),!1}),t.on("click",".provision_shutdownhard_button",function(){var e=$(this);e.attr("disabled","disabled");var a=$(".provision_info_vm",t).attr("vm_id");return u.VM.cancel({data:{id:a},success:function(){$(".provision_back",t).click(),$(".provision_vms_list_refresh_button",t).click(),e.removeAttr("disabled")},error:function(t,a){f.onError(t,a),e.removeAttr("disabled")}}),!1}),t.on("click",".provision_poweroff_button",function(){var a=$(this);a.attr("disabled","disabled");var n=$(".provision_info_vm",t).attr("vm_id"),s=$("input[name=provision_poweroff_radio]:checked").val();return u.VM[s]({data:{id:n},success:function(){e(n,t),a.removeAttr("disabled")},error:function(t,e){f.onError(t,e),a.removeAttr("disabled")}}),!1}),t.on("click",".provision_reboot_button",function(){var a=$(this);a.attr("disabled","disabled");var n=$(".provision_info_vm",t).attr("vm_id"),s=$("input[name=provision_reboot_radio]:checked").val();return u.VM[s]({data:{id:n},success:function(){e(n,t),a.removeAttr("disabled")},error:function(t,e){f.onError(t,e),a.removeAttr("disabled")}}),!1}),t.on("click",".provision_poweron_button",function(){var a=$(this);a.attr("disabled","disabled");var n=$(".provision_info_vm",t).attr("vm_id");return u.VM.resume({data:{id:n},success:function(){e(n,t),a.removeAttr("disabled")},error:function(t,e){f.onError(t,e),a.removeAttr("disabled")}}),!1}),t.on("click",".provision_vnc_button",function(){var e=$(this);e.attr("disabled","disabled");var a=$(".provision_info_vm",t).attr("vm_id"),n=$(".provision_info_vm",t).data("vm");return u.VM.vnc({data:{id:a},success:function(t,a){if(u.VM.isVNCSupported(n)){var s=window.location.hostname,i=config.system_config.vnc_proxy_port,r=a.password,o=a.token,l=a.vm_name,c="vnc?";c+="host="+s,c+="&port="+i,c+="&token="+o,c+="&password="+r,c+="&encrypt="+config.user_config.vnc_wss,c+="&title="+l,window.open(c,"","_blank"),e.removeAttr("disabled")}else if(u.VM.isSPICESupported(n)){var d,p,h,m,o,l,_="ws://";"yes"==config.user_config.vnc_wss&&(_="wss://"),d=window.location.hostname,p=config.system_config.vnc_proxy_port,h=a.password,o=a.token,l=a.vm_name,m=_+d+":"+p+"?token="+o;var c="spice?";c+="host="+d,c+="&port="+p,c+="&token="+o,c+="&password="+h,c+="&encrypt="+config.user_config.vnc_wss,c+="&title="+l,window.open(c,"","_blank"),e.removeAttr("disabled")}else f.notifyError("The remote console is not enabled for this VM")},error:function(t,a){f.onError(t,a),e.removeAttr("disabled")}}),!1}),t.on("click",".provision_refresh_info",function(){var a=$(".provision_info_vm",t).attr("vm_id");return e(a,t),!1}),$(".provision_list_vms",t).on("click",".provision_info_vm_button",function(){$("a.provision_show_vm_accordion",t).trigger("click");var a=$(this).parents(".provision-pricing-table").attr("opennebula_id");return e(a,t),!1})}function l(t){var e,a,n=u.VM.stateStr(t.STATE);switch(n){case"INIT":case"PENDING":case"HOLD":e="deploying",a=p.tr("DEPLOYING")+" (1/3)";break;case"FAILED":e="error",a=p.tr("ERROR");break;case"ACTIVE":var s=u.VM.shortLcmStateStr(t.LCM_STATE);switch(s){case"LCM_INIT":e="deploying",a=p.tr("DEPLOYING")+" (1/3)";break;case"PROLOG":e="deploying",a=p.tr("DEPLOYING")+" (2/3)";break;case"BOOT":e="deploying",a=p.tr("DEPLOYING")+" (3/3)";break;case"RUNNING":case"SNAPSHOT":case"MIGRATE":e="running",a=p.tr("RUNNING");break;case"HOTPLUG":e="deploying",a=p.tr("SAVING IMAGE");break;case"FAILURE":e="error",a=p.tr("ERROR");break;case"SAVE":case"EPILOG":case"SHUTDOWN":case"CLEANUP":e="powering_off",a=p.tr("POWERING OFF");break;case"UNKNOWN":e="powering_off",a=p.tr("UNKNOWN");break;default:e="powering_off",a=p.tr("UNKNOWN")}break;case"STOPPED":case"SUSPENDED":case"POWEROFF":e="off",a=p.tr("OFF");break;default:e="powering_off",a=p.tr("UNKNOWN")}return{color:e,str:a}}function c(t){var e=[];return $.isArray(t.TEMPLATE.DISK)?e=t.TEMPLATE.DISK:$.isEmptyObject(t.TEMPLATE.DISK)||(e=[t.TEMPLATE.DISK]),e.length>0?e[0].IMAGE:""}function d(t){return'<i class="fa fa-fw fa-lg fa-globe"></i> '+u.VM.ipsStr(t)}t("foundation.alert");var u=t("opennebula"),p=t("utils/locale"),h=t("sunstone-config"),f=t("utils/notifier"),m=t("utils/humanize"),_=t("utils/resource-select"),b=t("utils/graphs"),v=t("hbs!./list"),g=0;return{generate:a,show:e,state:l}}),define("hbs!tabs/provision-tab/templates/list",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(){return"active"},3:function(){return'style="display:none"'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<dl class="accordion accordion_list provision_list_templates" data-accordion="dfsaf">\n  <dd class="';return s=e["if"].call(t,null!=(s=null!=t?t.opts:t)?s.active:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' accordion-navigation">\n    <a class="right only-not-active" href="#provision_list_template_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'">\n      <span class="button small radius"> <i class="fa fa-fw fa-lg fa-th"/><i class="fa fa-fw fa-lg fa-chevron-left"/>\n      </span>\n    </a>\n    <h3 class="subheader">\n      <span href"#" class="right only-active button small radius secondary provision_templates_list_refresh_button" \n          ',s=e.unless.call(t,null!=(s=null!=t?t.opts:t)?s.refresh:s,{name:"unless",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' data-tooltip title=" '+l((e.tr||t&&t.tr||o).call(t,"Refresh",{name:"tr",hash:{},data:n}))+'">\n        <i class="fa fa-fw fa-lg fa-refresh"/></span>\n      <span href"#" class="right only-active button small radius secondary provision_templates_list_filter_button" \n          ',s=e.unless.call(t,null!=(s=null!=t?t.opts:t)?s.filter:s,{name:"unless",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' data-tooltip title=" '+l((e.tr||t&&t.tr||o).call(t,"Filter by User",{name:"tr",hash:{},data:n}))+'">\n        <i class="fa fa-fw fa-lg fa-filter"/>\n      </span>\n      <span class="right only-active provision_list_templates_filter" style="display: none"></span>\n      <input type="search" class="provision_list_templates_search only-active provision-search-input" placeholder="Search Templates"/>\n    </h3>\n    <div id="provision_list_template_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'" class="content ',s=e["if"].call(t,null!=(s=null!=t?t.opts:t)?s.active:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+'">\n      <div class="row">\n        <div class="provision_confirm_delete_template_div large-12 large-centered columns"></div>\n      </div>\n      <div class="row">\n        <div class="large-12 large-centered columns">\n          <table class="provision_templates_table">\n            <thead class="hidden">\n              <tr>\n                <th>'+l((e.tr||t&&t.tr||o).call(t,"ID",{name:"tr",hash:{},data:n}))+"</th>\n                <th>"+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+"</th>\n                <th>"+l((e.tr||t&&t.tr||o).call(t,"Saved",{name:"tr",hash:{},data:n}))+"</th>\n                <th>"+l((e.tr||t&&t.tr||o).call(t,"User ID",{name:"tr",hash:{},data:n}))+'</th>\n              </tr>\n            </thead>\n            <tbody class="hidden"></tbody>\n          </table>\n          <br></div>\n      </div>\n    </div>\n  </dd>\n  <dd class="accordion-navigation">\n    <a class="provision_show_template_accordion" href="#provision_show_template_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'"></a>\n    <div id="provision_show_template_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'" class="content"></div>\n  </dd>\n</dl>'},useData:!0});return e.registerPartial("tabs/provision-tab/templates/list",a),a}),define("tabs/provision-tab/templates/list",["require","foundation.alert","opennebula","utils/locale","sunstone-config","utils/notifier","utils/humanize","utils/resource-select","hbs!./list"],function(t){function e(){$(".section_content").hide(),$(".provision_templates_list_section").fadeIn(),$(".provision_templates_list_refresh_button",$(".provision_templates_list_section")).trigger("click")}function a(t,e){t.off(),t.html(n(e)),i(t,e)}function n(t){return opts=$.extend({title:l.tr("Saved Templates"),refresh:!0,create:!0,active:!0,filter:!0},t),f+=1,h({accordionId:f,opts:opts})}function s(t,e){t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>'),setTimeout(function(){o.Template.list({timeout:!0,success:function(e,a){t.fnClearTable(!0),0==a.length?t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+l.tr("There are no templates available")+"</span></div>"):t.fnAddData(a)},error:d.onError})},e)}function i(t,e){var a=$(".provision_templates_table",t).dataTable({iDisplayLength:8,sDom:'<"H">t<"F"lp>',aLengthMenu:[[6,12,36,72],[6,12,36,72]],aaSorting:[[0,"desc"]],aoColumnDefs:[{bVisible:!1,aTargets:["all"]}],aoColumns:[{mDataProp:"VMTEMPLATE.ID"},{mDataProp:"VMTEMPLATE.NAME"},{mDataProp:"VMTEMPLATE.TEMPLATE.SAVED_TEMPLATE_ID",sDefaultContent:"-"},{mDataProp:"VMTEMPLATE.UID"}],fnPreDrawCallback:function(){return 0==this.$("tr",{filter:"applied"}).length?this.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+l.tr("There are no saved templates available")+"<br>"+l.tr("Create a template by saving a running Virtual Machine")+"</span></div>"):$(".provision_templates_table",t).html('<ul class="provision_templates_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center"></ul>'),!0},fnRowCallback:function(e,a,n,s){var i=a.VMTEMPLATE,o="";return c.isTabActionEnabled("provision-tab","Template.chmod")&&i.UID==config.user_id&&("1"==i.PERMISSIONS.GROUP_U?(o+='<a class="provision_confirm_unshare_template_button left" data-tooltip title="'+l.tr("Unshare")+'" style="color:#555" href="#"><i class="fa fa-fw fa-lg fa-ban only-on-hover"/></a>',o+='<span style="font-size:12px; color: #777">'+l.tr("SHARED")+"</span>"):o+='<a class="provision_confirm_chmod_template_button left" data-tooltip title="'+l.tr("Share")+'" style="color:#555" href="#"><i class="fa fa-fw fa-lg fa-share-alt only-on-hover"/></a>'),c.isTabActionEnabled("provision-tab","Template.delete")&&(o+='<a class="provision_confirm_delete_template_button" data-tooltip title="'+l.tr("Delete")+'"  style="color:#555" href="#"><i class="fa fa-fw fa-lg fa-trash-o right only-on-hover"/></a>'),$(".provision_templates_ul",t).append('<li><ul class="provision-pricing-table" opennebula_id="'+i.ID+'" saved_to_image_id="'+i.TEMPLATE.SAVED_TO_IMAGE_ID+'" datatable_index="'+s+'"><li class="provision-title text-left" title="'+i.NAME+'">'+i.NAME+'</li><li class="provision-bullet-item text-left" ><i class="fa fa-fw fa-lg fa-laptop"/> x'+i.TEMPLATE.CPU+" - "+(i.TEMPLATE.MEMORY>1e3?Math.floor(i.TEMPLATE.MEMORY/1024)+"GB":i.TEMPLATE.MEMORY+"MB")+" - "+r(i)+'</li><li class="provision-description text-left" style="padding-top:0px; padding-bottom: 5px">'+(i.TEMPLATE.DESCRIPTION||"")+'</li><li class="provision-bullet-item" style="padding-top:10px">'+o+'</li><li class="provision-bullet-item-last text-left" ><span class=""><i class="fa fa-fw fa-lg fa-user"/> '+i.UNAME+'</span><span class="right">'+u.prettyTimeAgo(i.REGTIME)+"</span></li></ul></li>"),e}});a.fnFilter("^(?!-$)",2,!0,!1),$(".provision_list_templates_search",t).keyup(function(){a.fnFilter($(this).val())}),$(".provision_list_templates_search",t).change(function(){a.fnFilter($(this).val())}),t.on("click",".provision_templates_list_refresh_button",function(){return o.Action.clear_cache("VMTEMPLATE"),$(".provision_confirm_delete_template_div",t).html(""),s(a,0),!1}),t.on("click",".provision_templates_list_search_button",function(){$(".provision_list_templates_search",t).fadeIn()
+}),$(".provision_list_templates_filter",t).on("change",".resource_list_select",function(){"-2"!=$(this).val()?a.fnFilter("^"+$(this).val()+"$",3,!0,!1):a.fnFilter("",3)}),p.insert(".provision_list_templates_filter",t,"User",e.filter_expression?e.filter_expression:"-2",!1,'<option value="-2">'+l.tr("ALL")+"</option>",null,null,!0,!0),t.on("click",".provision_templates_list_filter_button",function(){return $(".provision_list_templates_filter",t).fadeIn(),!1}),c.isTabActionEnabled("provision-tab","Template.delete")&&(t.on("click",".provision_confirm_delete_template_button",function(){var e=$(this).parents(".provision-pricing-table"),a=e.attr("opennebula_id"),n=e.attr("saved_to_image_id"),s=$(".provision-title",e).text();$(".provision_confirm_delete_template_div",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-9 columns"><span style="font-size: 14px; line-height: 20px">'+l.tr("Handle with care! This action will inmediately destroy the template")+' "'+s+'" '+l.tr("and the image associated.")+'</span></div><div class="large-3 columns"><a href"#" class="provision_delete_template_button alert button large-12 radius right" style="margin-right: 15px" image_id="'+n+'" template_id="'+a+'">'+l.tr("Delete")+'</a></div></div><a href="#" class="close">&times;</a></div>')}),t.on("click",".provision_delete_template_button",function(){})),c.isTabActionEnabled("provision-tab","Template.chmod")&&(t.on("click",".provision_confirm_chmod_template_button",function(){var e=$(this).parents(".provision-pricing-table"),a=e.attr("opennebula_id"),n=e.attr("saved_to_image_id"),s=$(".provision-title",e).text();$(".provision_confirm_delete_template_div",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-8 columns"><span style="font-size: 14px; line-height: 20px">'+l.tr("The template")+' "'+s+'" '+l.tr("and the image associated will be shared and all the users will be able to instantiate new VMs using this template.")+'</span></div><div class="large-4 columns"><a href"#" class="provision_chmod_template_button success button large-12 radius right" style="margin-right: 15px" image_id="'+n+'" template_id="'+a+'">'+l.tr("Share template")+'</a></div></div><a href="#" class="close">&times;</a></div>')}),t.on("click",".provision_chmod_template_button",function(){}),t.on("click",".provision_confirm_unshare_template_button",function(){var e=$(this).parents(".provision-pricing-table"),a=e.attr("opennebula_id"),n=e.attr("saved_to_image_id"),s=$(".provision-title",e).first().text();$(".provision_confirm_delete_template_div",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-8 columns"><span style="font-size: 14px; line-height: 20px">'+l.tr("The template")+' "'+s+'" '+l.tr("and the image associated will be unshared and the users will not be able to instantiate new VMs using this template.")+'</span></div><div class="large-4 columns"><a href"#" class="provision_unshare_template_button success button large-12 radius right" style="margin-right: 15px" image_id="'+n+'" template_id="'+a+'">'+l.tr("Unshare template")+'</a></div></div><a href="#" class="close">&times;</a></div>')}),t.on("click",".provision_unshare_template_button",function(){var e=$(this);e.attr("disabled","disabled");var a=$(this).attr("template_id"),n=$(this).attr("image_id");o.Template.chmod({timeout:!0,data:{id:a,extra_param:{group_u:0}},success:function(){$(".provision_templates_list_refresh_button",t).trigger("click"),o.Image.chmod({timeout:!0,data:{id:n,extra_param:{group_u:0}},success:function(){},error:d.onError})},error:d.onError})})),o.Action.clear_cache("VMTEMPLATE"),s(a,0),t.foundation()}function r(t){var e=[];return $.isArray(t.TEMPLATE.DISK)?e=t.TEMPLATE.DISK:$.isEmptyObject(t.TEMPLATE.DISK)||(e=[t.TEMPLATE.DISK]),e.length>0&&e[0].IMAGE?e[0].IMAGE:""}t("foundation.alert");var o=t("opennebula"),l=t("utils/locale"),c=t("sunstone-config"),d=t("utils/notifier"),u=t("utils/humanize"),p=t("utils/resource-select"),h=t("hbs!./list"),f=0;return{generate:a,show:e,updateDatatable:s}}),define("hbs!tabs/provision-tab/flows/info",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="text-center provision_info_flow_loading">\n  <span class="fa-stack fa-5x" style="color: #dfdfdf"> <i class="fa fa-cloud fa-stack-2x"></i> <i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i>\n  </span>\n  <br>\n  <br>\n  <span style="font-size: 18px; color: #999"></span>\n</div>\n<div class="provision_info_flow">\n  <div class="row">\n    <div class="large-12 large-centered columns">\n      <ul class="inline-list provision_action_icons">\n        <li>\n          <a href"#" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Recover a failed service, cleaning the failed VMs",{name:"tr",hash:{},data:n}))+'" class="left button small radius success provision_recover_button">\n            <i class="fa fa-fw fa-lg fa-wrench"/></a>\n        </li>\n        <li class="right">\n          <a href"#" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Delete",{name:"tr",hash:{},data:n}))+'" class="button small radius alert provision_delete_confirm_button tip-top right">\n            <i class="fa fa-fw fa-lg fa-trash-o"/></a>\n          <a href"#" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Shutdown",{name:"tr",hash:{},data:n}))+'" class="button small radius secondary provision_shutdown_confirm_button tip-top right">\n            <i class="fa fa-fw fa-lg fa-power-off"/>\n          </a>\n        </li>\n      </ul>\n    </div>\n  </div>\n  <div class="row">\n    <div class="provision_confirm_action large-10 large-centered columns"></div>\n  </div>\n  <br>\n  <div class="row">\n    <div class="large-4 columns">\n      <ul class="provision-pricing-table_flow_info provision-pricing-table" style="border: 0px !important; background: #fff;"></ul>\n    </div>\n    <div class="large-8 columns">\n      <div class="row">\n        <div class="large-12 columns">\n          <ul class="provision_roles_ul large-block-grid-2 medium-block-grid-2 small-block-grid-1 text-center"></ul>\n        </div>\n      </div>\n    </div>\n  </div>\n  <br>\n  <br>\n  <div class="row">\n    <div class="provision_role_vms_container large-12 large-centered columns"></div>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/provision-tab/flows/info",a),e.registerPartial("tabs/provision-tab/flows/info",a),a}),define("hbs!tabs/provision-tab/flows/list",["hbs","hbs/handlebars","hbs!tabs/provision-tab/flows/info","templates/helpers/tr"],function(t,e){var a=e.template({1:function(){return"active"},3:function(){return'style="display:none"'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<dl class="accordion accordion_list provision_list_flows" data-accordion>\n  <dd class="';return s=e["if"].call(t,null!=(s=null!=t?t.opts:t)?s.active:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' accordion-navigation">\n    <a class="provision_list_flow_accordion right only-not-active provision_back" href="#provision_list_flow_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'">\n      <span class="button small radius"> <i class="fa fa-fw fa-lg fa-th"/><i class="fa fa-fw fa-lg fa-chevron-left"/>\n      </span>\n    </a>\n    <h3 class="subheader">\n      <span class="provision_info_flow_name only-not-active"></span>\n      <span href"#" class="only-active right button radius small secondary provision_flows_list_refresh_button" \n              ',s=e.unless.call(t,null!=(s=null!=t?t.opts:t)?s.refresh:s,{name:"unless",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' data-tooltip title=" '+l((e.tr||t&&t.tr||o).call(t,"Refresh",{name:"tr",hash:{},data:n}))+'">\n        <i class="fa fa-fw fa-lg fa-refresh"/></span>\n      <span href"#" class="only-not-active right button small radius secondary provision_refresh_info" \n              ',s=e.unless.call(t,null!=(s=null!=t?t.opts:t)?s.refresh:s,{name:"unless",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' data-tooltip title=" '+l((e.tr||t&&t.tr||o).call(t,"Refresh",{name:"tr",hash:{},data:n}))+'">\n        <i class="fa fa-fw fa-lg fa-refresh"/>\n      </span>\n      <span href"#" class="only-active right button radius small secondary provision_flows_list_filter_button" \n              ',s=e.unless.call(t,null!=(s=null!=t?t.opts:t)?s.filter:s,{name:"unless",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+=' data-tooltip title=" '+l((e.tr||t&&t.tr||o).call(t,"Filter by User",{name:"tr",hash:{},data:n}))+'">\n        <i class="fa fa-fw fa-lg fa-filter"/>\n      </span>\n      <span class="only-active right provision_list_flows_filter" style="display: none"></span>\n      <span>\n        <input type="search" class="only-active provision_list_flows_search provision-search-input" placeholder="Search Services"/>\n        <span href"#" class="only-active right button radius small success provision_create_flow_button" \n              ',s=e.unless.call(t,null!=(s=null!=t?t.opts:t)?s.create:s,{name:"unless",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='>\n          <i class="fa fa-fw fa-lg fa-plus-square"/>\n        </span>\n      </h3>\n      <div id="provision_list_flow_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'" class="content ',s=e["if"].call(t,null!=(s=null!=t?t.opts:t)?s.active:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='">\n        <div class="">\n          <div class="row">\n            <div class="large-12 large-centered columns">\n              <table class="provision_flows_table">\n                <thead class="hidden">\n                  <tr>\n                    <th>'+l((e.tr||t&&t.tr||o).call(t,"ID",{name:"tr",hash:{},data:n}))+"</th>\n                    <th>"+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+"</th>\n                    <th>"+l((e.tr||t&&t.tr||o).call(t,"User ID",{name:"tr",hash:{},data:n}))+'</th>\n                  </tr>\n                </thead>\n                <tbody class="hidden"></tbody>\n              </table>\n              <br></div>\n          </div>\n        </div>\n      </div>\n    </dd>\n    <dd class="accordion-navigation">\n      <a class="provision_show_flow_accordion" href="#provision_show_flow_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'"></a>\n      <div id="provision_show_flow_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'" class="content">',s=this.invokePartial(a["tabs/provision-tab/flows/info"],"","tabs/provision-tab/flows/info",t,void 0,e,a,n),null!=s&&(c+=s),c+"</div>\n    </dd>\n  </dl>"},usePartial:!0,useData:!0});return e.registerPartial("tabs/provision-tab/flows/list",a),a}),define("tabs/provision-tab/flows/list",["require","foundation.alert","opennebula","utils/locale","utils/notifier","utils/humanize","utils/resource-select","tabs/provision-tab/vms/list","hbs!./list"],function(t){function e(){$(".section_content").hide(),$(".provision_flows_list_section").fadeIn(),$("dd:not(.active) .provision_back",$(".provision_flows_list_section")).trigger("click"),$(".provision_flows_list_refresh_button",$(".provision_flows_list_section")).trigger("click")}function a(t,e){t.off(),t.html(n(e)),i(t,e),r(t)}function n(t){return opts=$.extend({title:d.tr("Services"),active:!0,refresh:!0,create:!0,filter:!0},t),_+=1,m({accordionId:_,opts:opts})}function s(t,e){t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>'),setTimeout(function(){c.Service.list({timeout:!0,success:function(e,a){$(".flow_error_message").hide(),t.fnClearTable(!0),0==a.length?t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+d.tr("There are no Services")+"</span><br><br></div>"):t.fnAddData(a)},error:function(e,a){t.html('<div class="text-center"><br><br><div class="row flow_error_message" id="" hidden><div class="small-6 columns small-centered text-center"><div class="alert-box alert radius">'+d.tr("Cannot connect to OneFlow server")+'</div></div></div><br><br><span style="font-size: 18px; color: #999"></span></div>'),u.onError(e,a,$(".flow_error_message"))}})},e)}function i(t,e){provision_flows_datatable=$(".provision_flows_table",t).dataTable({iDisplayLength:6,sDom:'<"H">t<"F"lp>',aLengthMenu:[[6,12,36,72],[6,12,36,72]],aaSorting:[[0,"desc"]],aoColumnDefs:[{bVisible:!1,aTargets:["all"]}],aoColumns:[{mDataProp:"DOCUMENT.ID"},{mDataProp:"DOCUMENT.NAME"},{mDataProp:"DOCUMENT.UID"}],fnPreDrawCallback:function(){return 0==this.$("tr",{filter:"applied"}).length?this.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+d.tr("Looks like you don't have any Service. Click the button below to get started")+'</span><br><br><div class="row"><div class="large-6 large-centered columns"><a href"#" class="medium large-12 button radius provision_create_flow_button"">'+d.tr("Create a new Service")+"</a></div></div><br><br></div>"):$(".provision_flows_table",t).html('<ul class="provision_flows_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center"></ul>'),!0},fnDrawCallback:function(){$(".provision_flows_ul",t).foundation("reflow","tooltip")},fnRowCallback:function(e,a,n,s){var i=a.DOCUMENT,r=i.TEMPLATE.BODY,c=l(r),d=o(r),u="";return r.roles&&$.each(r.roles,function(t,e){var a=(l(e),{str:(e.nodes?e.nodes.length:0)+" / "+e.cardinality,percentage:100*Math.floor((e.nodes?e.nodes.length:0)/e.cardinality)});u+='<li class="provision-bullet-item text-left""><i class="fa fa-fw fa-lg fa-cube"/>&emsp;'+e.name+'<span class="right" style="font-size: 12px">'+a.str+" VMs</span></li>"}),$(".provision_flows_ul",t).append('<li><ul class="provision-pricing-table" opennebula_id="'+i.ID+'" datatable_index="'+s+'"><li class="provision-title text-left"><a class="provision_info_flow_button" style="color:#555" href="#"><span class="'+c.color+'-color" data-tooltip title="'+c.str+'"><i class="fa fa-fw fa-lg fa-square"/>&emsp;</span>'+i.NAME+"</a></li>"+u+'<li class="provision-bullet-item-last text-right"><span class="left"><i class="fa fa-fw fa-lg fa-user"/>&emsp;'+i.UNAME+"</span><span>"+(d?p.prettyTimeAgo(d):"-")+"</span></li></ul></li>"),e}}),$(".provision_list_flows_search",t).keyup(function(){provision_flows_datatable.fnFilter($(this).val())}),$(".provision_list_flows_search",t).change(function(){provision_flows_datatable.fnFilter($(this).val())}),t.on("click",".provision_flows_list_refresh_button",function(){return c.Action.clear_cache("SERVICE"),s(provision_flows_datatable,0),!1}),t.on("click",".provision_flows_list_search_button",function(){$(".provision_list_flows_search",t).fadeIn()}),$(".provision_list_flows_filter",t).on("change",".resource_list_select",function(){"-2"!=$(this).val()?provision_flows_datatable.fnFilter("^"+$(this).val()+"$",2,!0,!1):provision_flows_datatable.fnFilter("",2)}),h.insert(".provision_list_flows_filter",t,"User",e.filter_expression?e.filter_expression:"-2",!1,'<option value="-2">'+d.tr("ALL")+"</option>",null,null,!0,!0),t.on("click",".provision_flows_list_filter_button",function(){return $(".provision_list_flows_filter",t).fadeIn(),!1}),c.Action.clear_cache("SERVICE"),s(provision_flows_datatable,0),$(document).foundation()}function r(t){function e(t,e,a){$(".provision_info_flow_name",e).text(""),$(".provision_info_flow",e).css("visibility","hidden"),$(".provision_info_flow_loading",e).fadeIn(),$(".provision_role_vms_container").html(""),c.Service.show({data:{id:t},error:u.onError,success:function(t,n){var s=n.DOCUMENT,i=s.TEMPLATE.BODY,r=l(i),c=o(i);switch(r.color){case"deploying":$(".provision_recover_button",e).hide(),$(".provision_delete_confirm_button",e).show(),$(".provision_shutdown_confirm_button",e).show();break;case"running":$(".provision_recover_button",e).hide(),$(".provision_delete_confirm_button",e).show(),$(".provision_shutdown_confirm_button",e).show();break;case"off":$(".provision_recover_button",e).hide(),$(".provision_delete_confirm_button",e).show(),$(".provision_shutdown_confirm_button",e).hide();break;case"powering_off":case"error":$(".provision_recover_button",e).show(),$(".provision_delete_confirm_button",e).show(),$(".provision_shutdown_confirm_button",e).show();break;default:$(".provision_recover_button",e).show(),$(".provision_delete_confirm_button",e).show(),$(".provision_shutdown_confirm_button",e).show()}$(".provision_info_flow",e).attr("flow_id",s.ID),$(".provision_info_flow_name",e).text(s.NAME),$(".provision-pricing-table_flow_info",e).html('<li class="text-left provision-bullet-item"><span class="'+r.color+'-color"><i class="fa fa-fw fa-lg fa-square"/>&emsp;'+r.str+'</span></li><li class="text-left provision-bullet-item"><hr style="margin: 0px"></li><li class="text-left provision-bullet-item"><span style="color: #999;"><i class="fa fa-fw fa-lg fa-user"/>&emsp;'+s.UNAME+'</span><span class="right" style="color: #999;"><i class="fa fa-fw fa-lg fa-clock-o"/>&emsp;'+(c?p.prettyTimeAgo(c):"...")+" - ID: "+s.ID+"</span></li></ul>"),$(".provision_roles_ul",e).html(""),i.roles&&$.each(i.roles,function(t,n){var s=l(n),i={str:(n.nodes?n.nodes.length:0)+" / "+n.cardinality,percentage:100*Math.floor((n.nodes?n.nodes.length:0)/n.cardinality)},r=$('<li><ul class="provision_role_ul provision-pricing-table"><li class="provision-title text-left"><i class="fa fa-fw fa-cube"/>&emsp;'+n.name+'</li><li class="provision-bullet-item text-left" style="padding-top: 5px; margin-left: 10px; margin-right: 10px"><div class="progress small radius" style="margin-bottom:0px">  <span class="meter" style="width: '+i.percentage+'%;"></span></div></li><li class="provision-bullet-item text-left" style="padding-top: 0px; margin-left: 10px; margin-right: 10px; font-size: 14px"><span class="'+s.color+'-color">'+s.str+'</span><span class="right">'+i.str+' VMs</span></li><li class="text-left provision-bullet-item"><br></li><li class="provision-bullet-item text-left" style="padding-top: 5px; margin-left: 10px; margin-right: 10px"><a class="provision_role_vms_button button medium radius"><i class="fa fa-th fa-lg"></i></a><a class="provision_role_cardinality_button button medium success right radius"><i class="fa fa-arrows-h fa-lg"></i></a></li></ul></li>').appendTo($(".provision_roles_ul",e));$(".provision_role_ul",r).data("role",n),a&&a==n.name&&$(".provision_role_vms_button",r).trigger("click")}),$(".provision_info_flow_state_hr",e).html('<div style="height:1px; margin-top:5px; margin-bottom: 5px; background: #cfcfcf"></div>'),$(".provision_confirm_action:first",e).html(""),$(".provision_info_flow_loading",e).hide(),$(".provision_info_flow",e).css("visibility","visible")}})}t.on("click",".provision_role_vms_button",function(){$(".provision_role_vms_container",t).html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>');var e=$(this).closest(".provision_role_ul").data("role");$(".provision_info_flow",t).data("role_id",e.name);var a=[];e.nodes&&e.nodes.length>0&&$.each(e.nodes,function(t,e){a.push(e.vm_info)}),f.generate($(".provision_role_vms_container",t),{title:e.name+" "+d.tr("VMs"),active:!0,refresh:!1,create:!1,filter:!1,data:a})}),t.on("click",".provision_role_cardinality_button",function(){var e=$(this).closest(".provision_role_ul").data("role"),a=e.min_vms||1,n=e.max_vms||100;if($(".provision_confirm_action:first",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-12 large-centered columns"><div class="row"><div class="large-4 text-center columns"><span class="cardinality_value" style="color: #777; font-size:60px">'+e.cardinality+'</span><br><span style="color: #999; font-size:20px">'+e.name+" "+d.tr("VMs")+'</span></div><div class="large-8 columns text-center"><div class="cardinality_slider_div"><br><span class="left" style="color: #999;">'+a+'</span><span class="right" style="color: #999;">'+n+'</span><br><div class="cardinality_slider"></div><br><a href"#" class="provision_change_cardinality_button success button radius large-12" role_id="'+e.name+'">'+d.tr("Change Cardinality")+'</a></div><div class="cardinality_no_slider_div"><br><br><span class="" style="color: #999;">'+d.tr("The cardinality for this role cannot be changed")+'</span></div></div></div></div><a href="#" class="close" style="top: 20px">&times;</a></div>'),n>a){$(".cardinality_slider_div",t).show(),$(".cardinality_no_slider_div",t).hide();var s=$(".cardinality_slider",t).noUiSlider({handles:1,connect:"lower",range:[a,n],step:1,start:e.cardinality,value:e.cardinality,slide:function(e){"move"!=e&&$(this).val()&&$(".cardinality_value",t).html($(this).val())}});s.val(e.cardinality),s.addClass("noUiSlider")}else $(".cardinality_slider_div",t).hide(),$(".cardinality_no_slider_div",t).show();return!1}),t.on("click",".provision_change_cardinality_button",function(){var e=$(".provision_info_flow",t).attr("flow_id"),a=$(".cardinality_slider",t).val();c.Role.update({data:{id:e+"/role/"+$(this).attr("role_id"),extra_param:{cardinality:a}},success:function(){c.Action.clear_cache("SERVICE"),$(".provision_refresh_info",t).trigger("click")},error:u.onError})}),t.on("click",".provision_delete_confirm_button",function(){$(".provision_confirm_action:first",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-9 columns"><span style="font-size: 14px; line-height: 20px">'+d.tr("Be careful, this action will inmediately destroy your Service")+"<br>"+d.tr("All the information will be lost!")+'</span></div><div class="large-3 columns"><a href"#" class="provision_delete_button alert button large-12 radius right" style="margin-right: 15px">'+d.tr("Delete")+'</a></div></div><a href="#" class="close">&times;</a></div>')}),t.on("click",".provision_shutdown_confirm_button",function(){$(".provision_confirm_action:first",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-9 columns"><span style="font-size: 14px; line-height: 20px">'+d.tr("Be careful, this action will inmediately shutdown your Service")+"<br>"+d.tr("All the information will be lost!")+'</span></div><div class="large-3 columns"><a href"#" class="provision_shutdown_button alert button large-12 radius right" style="margin-right: 15px">'+d.tr("Shutdown")+'</a></div></div><a href="#" class="close">&times;</a></div>')}),t.on("click",".provision_recover_button",function(){var a=$(".provision_info_flow",t).attr("flow_id");c.Service.recover({data:{id:a},success:function(){e(a,t)},error:u.onError})}),t.on("click",".provision_shutdown_button",function(){var a=$(".provision_info_flow",t).attr("flow_id");c.Service.shutdown({data:{id:a},success:function(){e(a,t)},error:u.onError})}),t.on("click",".provision_delete_button",function(){var e=$(this);e.attr("disabled","disabled");var a=$(".provision_info_flow",t).attr("flow_id");c.Service.del({data:{id:a},success:function(){$(".provision_back",t).click(),$(".provision_flows_list_refresh_button",t).click(),e.removeAttr("disabled")},error:function(t,a){u.onError(t,a),e.removeAttr("disabled")}})}),t.on("click",".provision_refresh_info",function(){var a=$(".provision_info_flow",t).attr("flow_id"),n=$(".provision_info_flow",t).data("role_id");return e(a,t,n),!1}),$(".provision_list_flows",t).on("click",".provision_info_flow_button",function(){$("a.provision_show_flow_accordion",t).trigger("click");var a=$(this).parents(".provision-pricing-table").attr("opennebula_id");return e(a,t),!1})}function o(t){return t.log?t.log[0].timestamp:null}function l(t){var e,a,n=c.Service.state(t.state);switch(n){case d.tr("PENDING"):e="deploying",a=d.tr("PENDING");break;case d.tr("DEPLOYING"):e="deploying",a=d.tr("DEPLOYING");break;case d.tr("UNDEPLOYING"):e="powering_off",a=d.tr("UNDEPLOYING");break;case d.tr("FAILED_UNDEPLOYING"):e="error",a=d.tr("FAILED UNDEPLOYING");break;case d.tr("FAILED_DEPLOYING"):e="error",a=d.tr("FAILED DEPLOYING");break;case d.tr("FAILED_SCALING"):e="error",a=d.tr("FAILED SCALING");break;case d.tr("WARNING"):e="error",a=d.tr("WARNING");break;case d.tr("RUNNING"):e="running",a=d.tr("RUNNING");break;case d.tr("SCALING"):e="deploying",a=d.tr("SCALING");break;case d.tr("COOLDOWN"):e="error",a=d.tr("COOLDOWN");break;case d.tr("DONE"):e="off",a=d.tr("DONE");break;default:e="powering_off",a=d.tr("UNKNOWN")}return{color:e,str:a}}t("foundation.alert");var c=t("opennebula"),d=t("utils/locale"),u=t("utils/notifier"),p=t("utils/humanize"),h=t("utils/resource-select"),f=t("tabs/provision-tab/vms/list"),m=t("hbs!./list"),_=0;return{generate:a,show:e}}),define("hbs!tabs/provision-tab/users/quota-widget/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row">\n  <div class="large-12 large-centered columns">\n    <h5 class="subheader text-right">\n      <span class="left" style="margin-bottom: 0.5em">'+i((e.tr||t&&t.tr||s).call(t,"Running VMs",{name:"tr",hash:{},data:n}))+'</span>\n    </h5>\n  </div>\n</div>\n<div class="row provision_rvms_quota">\n  <div class="medium-3 small-12 columns">\n    <select class="provision_quota_select">\n      <option value="edit">'+i((e.tr||t&&t.tr||s).call(t,"Manual",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="unlimited">'+i((e.tr||t&&t.tr||s).call(t,"Unlimited",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="default">'+i((e.tr||t&&t.tr||s).call(t,"Default",{name:"tr",hash:{},data:n}))+'</option>\n    </select>\n  </div>\n  <div class="medium-9 small-12 columns provision_quota_edit">\n    <div class="row collapse">\n      <div class="small-9 columns">\n        <div class="range-slider radius provision_rvms_quota_slider" data-slider data-options="start: 0; end: 50;">\n          <span class="range-slider-handle"></span>\n          <span class="range-slider-active-segment"></span>\n          <input type="hidden"></div>\n      </div>\n      <div class="large-2 small-2 columns">\n        <input type="text"  class="provision-input provision_rvms_quota_input" style="margin-top: -7px; height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/>\n      </div>\n    </div>\n  </div>\n  <div class="medium-9 small-12 columns provision_quota_unlimited" style="display:none">\n    <span style="font-size: 18px; color: #999">'+i((e.tr||t&&t.tr||s).call(t,"Unlimited. Group quotas will still apply",{name:"tr",hash:{},data:n}))+'</span>\n  </div>\n  <div class="medium-9 small-12 columns provision_quota_default" style="display:none">\n    <span style="font-size: 18px; color: #999">\n      '+i((e.tr||t&&t.tr||s).call(t,"Use the default system quotas set by the cloud adminstrator",{name:"tr",hash:{},data:n}))+'\n    </span>\n  </div>\n</div>\n<div class="row">\n  <div class="large-12 large-centered columns">\n    <h5 class="subheader text-right">\n      <span class="left" style="margin-bottom: 0.5em">'+i((e.tr||t&&t.tr||s).call(t,"CPU",{name:"tr",hash:{},data:n}))+'</span>\n    </h5>\n  </div>\n</div>\n<div class="row provision_cpu_quota">\n  <div class="medium-3 small-12 columns">\n    <select class="provision_quota_select">\n      <option value="edit">'+i((e.tr||t&&t.tr||s).call(t,"Manual",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="unlimited">'+i((e.tr||t&&t.tr||s).call(t,"Unlimited",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="default">'+i((e.tr||t&&t.tr||s).call(t,"Default",{name:"tr",hash:{},data:n}))+'</option>\n    </select>\n  </div>\n  <div class="medium-9 small-12 columns provision_quota_edit">\n    <div class="row collapse">\n      <div class="small-9 columns">\n        <div class="range-slider radius provision_cpu_quota_slider" data-slider data-options="start: 0; end: 50;">\n          <span class="range-slider-handle"></span>\n          <span class="range-slider-active-segment"></span>\n          <input type="hidden"></div>\n      </div>\n      <div class="large-2 small-2 columns">\n        <input type="text"  class="provision-input provision_cpu_quota_input" style="margin-top: -7px; height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/>\n      </div>\n    </div>\n  </div>\n  <div class="medium-9 small-12 columns provision_quota_unlimited" style="display:none">\n    <span style="font-size: 18px; color: #999">'+i((e.tr||t&&t.tr||s).call(t,"Unlimited. Group quotas will still apply",{name:"tr",hash:{},data:n}))+'</span>\n  </div>\n  <div class="medium-9 small-12 columns provision_quota_default" style="display:none">\n    <span style="font-size: 18px; color: #999">\n      '+i((e.tr||t&&t.tr||s).call(t,"Use the default system quotas set by the cloud adminstrator",{name:"tr",hash:{},data:n}))+'\n    </span>\n  </div>\n</div>\n<div class="row">\n  <div class="large-12 large-centered columns">\n    <h5 class="subheader text-right">\n      <span class="left" style="margin-bottom: 0.5em">'+i((e.tr||t&&t.tr||s).call(t,"Memory (GBs)",{name:"tr",hash:{},data:n}))+'</span>\n    </h5>\n  </div>\n</div>\n<div class="vm_param">\n  <input type="hidden" class="provision_memory_quota_input"/>\n</div>\n<div class="row provision_memory_quota">\n  <div class="medium-3 small-12 columns">\n    <select class="provision_quota_select">\n      <option value="edit">'+i((e.tr||t&&t.tr||s).call(t,"Manual",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="unlimited">'+i((e.tr||t&&t.tr||s).call(t,"Unlimited",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="default">'+i((e.tr||t&&t.tr||s).call(t,"Default",{name:"tr",hash:{},data:n}))+'</option>\n    </select>\n  </div>\n  <div class="medium-9 small-12 columns provision_quota_edit">\n    <div class="row collapse">\n      <div class="small-9 columns">\n        <div class="range-slider radius provision_memory_quota_slider" data-slider data-options="start: 0; end: 50;">\n          <span class="range-slider-handle"></span>\n          <span class="range-slider-active-segment"></span>\n          <input type="hidden"></div>\n      </div>\n      <div class="large-2 small-2 columns">\n        <input type="text"  class="provision-input provision_memory_quota_tmp_input" style="margin-top: -7px; height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/>\n      </div>\n    </div>\n  </div>\n  <div class="medium-9 small-12 columns provision_quota_unlimited" style="display:none">\n    <span style="font-size: 18px; color: #999">'+i((e.tr||t&&t.tr||s).call(t,"Unlimited. Group quotas will still apply",{name:"tr",hash:{},data:n}))+'</span>\n  </div>\n  <div class="medium-9 small-12 columns provision_quota_default" style="display:none">\n    <span style="font-size: 18px; color: #999">\n      '+i((e.tr||t&&t.tr||s).call(t,"Use the default system quotas set by the cloud adminstrator",{name:"tr",hash:{},data:n}))+"\n    </span>\n  </div>\n</div>"
+},useData:!0});return e.registerPartial("tabs/provision-tab/users/quota-widget/html",a),a}),define("hbs!tabs/provision-tab/users/empty-graphs",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<span class="fa-stack fa-2x" style="color: #dfdfdf"> <i class="fa fa-cloud fa-stack-2x"></i>\n</span>\n<br>\n<span style="color: #cfcfcf">'+i((e.tr||t&&t.tr||s).call(t,"There is no information available",{name:"tr",hash:{},data:n}))+"</span>"},useData:!0});return e.registerPartial("tabs/provision-tab/users/empty-graphs",a),e.registerPartial("./empty-graphs",a),a}),define("hbs!tabs/provision-tab/users/info",["hbs","hbs/handlebars","hbs!tabs/provision-tab/users/empty-graphs","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div class="text-center provision_info_vdc_user_loading">\n  <span class="fa-stack fa-5x" style="color: #dfdfdf"> <i class="fa fa-cloud fa-stack-2x"></i> <i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i>\n  </span>\n  <br>\n  <br>\n  <span style="font-size: 18px; color: #999"></span>\n</div>\n<div class="provision_info_vdc_user">\n  <div class="row">\n    <div class="large-12 large-centered columns">\n      <ul class="inline-list provision_action_icons">\n        <li class="">\n          <a href"#" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Update the User Quotas",{name:"tr",hash:{},data:n}))+'" class="left button small secondary radius provision_vdc_user_quota_confirm_button tip-top">\n            <i class="fa fa-fw fa-lg fa-align-left"/></a>\n          <a href"#" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Change the password of the User",{name:"tr",hash:{},data:n}))+'" class="left button small secondary radius provision_vdc_user_password_confirm_button tip-top">\n            <i class="fa fa-fw fa-lg fa-lock"/></a>\n        </li>\n        <li class="right">\n          <a href"#" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Delete the User",{name:"tr",hash:{},data:n}))+'" class="right button small radius alert provision_vdc_user_delete_confirm_button tip-top">\n            <i class="fa fa-fw fa-lg fa-trash-o"/>\n          </a>\n        </li>\n      </ul>\n    </div>\n  </div>\n  <div class="row">\n    <div class="provision_vdc_user_confirm_action large-12 columns"></div>\n  </div>\n  <br>\n  <div class="row">\n    <div class="large-4 columns">\n      <ul class="provision-pricing-table_user_info provision-pricing-table" style="border: 0px !important; background: #fff;"></ul>\n    </div>\n    <div class="large-8 columns">\n      <div class="row dashboard_vm_accounting">\n        <div id="acct_content">\n          <div class="large-6 columns">\n            <input style="display:none;" value="vm" id="acct_group_by"/>\n            <div class="row">\n              <div class="large-12 columns graph_legend text-center">\n                <span style="color: #777; font-size: 14px">'+r((e.tr||t&&t.tr||i).call(t,"CPU hours",{name:"tr",hash:{},data:n}))+'</span>\n              </div>\n              <br>\n              <div class="large-12 columns">\n                <div class="large-12 columns centered graph" id="acct_cpu_graph" style="height: 100px;"></div>\n              </div>\n            </div>\n          </div>\n          <div class="large-6 columns">\n            <div class="row">\n              <div class="large-12 columns graph_legend text-center">\n                <span style="color: #777; font-size: 14px">'+r((e.tr||t&&t.tr||i).call(t,"Memory GB hours",{name:"tr",hash:{},data:n}))+'</span>\n              </div>\n              <div class="large-12 columns">\n                <div class="large-12 columns centered graph" id="acct_mem_graph" style="height: 100px;"></div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div id="acct_no_data">\n          <div class="row">\n            <div class="large-12 columns text-center">';return s=this.invokePartial(a["./empty-graphs"],"","./empty-graphs",t,void 0,e,a,n),null!=s&&(o+=s),o+'</div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <br>\n  <div class="row">\n    <div class="provision-user-resource-header large-12 columns text-center"></div>\n  </div>\n  <br>\n  <div class="row">\n    <div class="provision_vdc_info_container large-12 columns"></div>\n  </div>\n  <br></div>'},usePartial:!0,useData:!0});return e.registerPartial("tabs/provision-tab/users/info",a),e.registerPartial("tabs/provision-tab/users/info",a),a}),define("hbs!tabs/provision-tab/users/list",["hbs","hbs/handlebars","hbs!tabs/provision-tab/users/info","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<dl class="accordion accordion_list provision_list_users" data-accordion>\n  <dd class="active accordion-navigation">\n    <a href="#provision_list_user_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'" class="provision_back right only-not-active">\n      <span class="button small radius"> <i class="fa fa-fw fa-lg fa-th"/><i class="fa fa-fw fa-lg fa-chevron-left"/>\n      </span>\n    </a>\n    <h3 class="subheader">\n      <span class="provision_info_vdc_user_name only-not-active"></span>\n      <span href"#" class="right only-active provision_users_list_refresh_button button small radius secondary" data-tooltip title="'+l((e.tr||t&&t.tr||o).call(t,"Refresh",{name:"tr",hash:{},data:n}))+'">\n        <i class="fa fa-fw fa-lg fa-refresh"/></span>\n      <span href"#" class="right only-not-active provision_refresh_info button small radius secondary" data-tooltip title="'+l((e.tr||t&&t.tr||o).call(t,"Refresh",{name:"tr",hash:{},data:n}))+'">\n        <i class="fa fa-fw fa-lg fa-refresh"/>\n      </span>\n      <input type="search" class="provision_list_users_search provision-search-input only-active" placeholder="Search Users"/>\n      <span href"#" class="right only-active provision_create_user_button button small radius success">\n        <i class="fa fa-fw fa-lg fa-plus-square"/>\n      </span>\n    </h3>\n    <div id="provision_list_user_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'" class="content active">\n      <div class="row">\n        <div class="large-12 large-centered columns">\n          <table class="provision_users_table">\n            <thead class="hidden">\n              <tr>\n                <th>'+l((e.tr||t&&t.tr||o).call(t,"ID",{name:"tr",hash:{},data:n}))+"</th>\n                <th>"+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+'</th>\n              </tr>\n            </thead>\n            <tbody class="hidden"></tbody>\n          </table>\n          <br></div>\n      </div>\n    </div>\n  </dd>\n  <dd class="accordion-navigation">\n    <a class="provision_show_user_accordion" href="#provision_show_user_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'"></a>\n    <div id="provision_show_user_accordion'+l((i=null!=(i=e.accordionId||(null!=t?t.accordionId:t))?i:o,typeof i===r?i.call(t,{name:"accordionId",hash:{},data:n}):i))+'" class="content">';return s=this.invokePartial(a["tabs/provision-tab/users/info"],"","tabs/provision-tab/users/info",t,void 0,e,a,n),null!=s&&(c+=s),c+"</div>\n  </dd>\n</dl>\n;"},usePartial:!0,useData:!0});return e.registerPartial("tabs/provision-tab/users/list",a),a}),define("tabs/provision-tab/users/list",["require","foundation.alert","opennebula","utils/locale","sunstone-config","utils/notifier","utils/quotas/quota-widgets","utils/quotas/quota-limits","utils/quotas/quota-defaults","utils/accounting","utils/showback","./quota-widget","tabs/provision-tab/vms/list","tabs/provision-tab/templates/list","tabs/provision-tab/flows/list","hbs!./quota-widget/html","hbs!./list"],function(t){function e(){$(".section_content").hide(),$(".provision_users_list_section").fadeIn(),$("dd:not(.active) .provision_back",$(".provision_users_list_section")).trigger("click"),$(".provision_users_list_refresh_button",$(".provision_users_list_section")).trigger("click")}function a(t,e){t.off(),t.html(n(e)),i(t),r(t)}function n(){return T+=1,w({accordionId:T})}function s(t,e){t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>'),setTimeout(function(){o.User.list({timeout:!0,success:function(e,a,n){t.fnClearTable(!0),0==a.length?t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+l.tr("The list of users is empty")+"</span></div>"):(provision_quotas_list=n,t.fnAddData(a))},error:d.onError})},e)}function i(t){var e=$(".provision_users_table",t).dataTable({iDisplayLength:6,sDom:'<"H">t<"F"lp>',aLengthMenu:[[6,12,36,72],[6,12,36,72]],aaSorting:[[0,"desc"]],aoColumnDefs:[{bVisible:!1,aTargets:["all"]}],aoColumns:[{mDataProp:"USER.ID"},{mDataProp:"USER.NAME"}],fnPreDrawCallback:function(){return 0==this.$("tr",{filter:"applied"}).length?this.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+l.tr("The list of users is empty")+"</span></div>"):$(".provision_users_table",t).html('<ul class="provision_users_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center"></ul>'),!0},fnRowCallback:function(e,a,n,s){var i,r=a.USER;if(u.initEmptyQuotas(r),$.isEmptyObject(r.VM_QUOTA))quotas=u.quotaFloatInfo(0,0,null,!0),i="",i+='<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-th"></i> '+l.tr("VMs")+'<span class="right">'+quotas.str+"</span></li>",quotas=u.quotaFloatInfo(0,0,null,!0),i+='<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-tachometer"></i> '+l.tr("CPU")+'<span class="right">'+quotas.str+"</span></li>",quotas=u.quotaMBInfo(0,0,null,!0),i+='<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-align-left"></i> '+l.tr("Memory")+'<span class="right">'+quotas.str+"</span></li>";else{var o=h.getDefaultUserQuotas();quotas=u.quotaFloatInfo(r.VM_QUOTA.VM.VMS_USED,r.VM_QUOTA.VM.VMS,o.VM_QUOTA.VM.VMS,!0),i="",i+='<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-th"></i> '+l.tr("VMs")+'<span class="right">'+quotas.str+"</span></li>",quotas=u.quotaFloatInfo(r.VM_QUOTA.VM.CPU_USED,r.VM_QUOTA.VM.CPU,o.VM_QUOTA.VM.CPU,!0),i+='<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-tachometer"></i> '+l.tr("CPU")+'<span class="right">'+quotas.str+"</span></li>",quotas=u.quotaMBInfo(r.VM_QUOTA.VM.MEMORY_USED,r.VM_QUOTA.VM.MEMORY,o.VM_QUOTA.VM.MEMORY,!0),i+='<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-align-left"></i> '+l.tr("Memory")+'<span class="right">'+quotas.str+"</span></li>"}return $(".provision_users_ul",t).append('<li><ul class="provision-pricing-table" opennebula_id="'+r.ID+'" datatable_index="'+s+'"><li class="provision-title text-left" style="padding-bottom: 10px"><a class="provision_info_user_button" style="color:#555" href="#"><i class="fa fa-fw fa-lg fa-sign-in right only-on-hover"/>'+r.NAME+"</a></li>"+i+"</ul></li>"),e}});$(".provision_list_users_search",t).keyup(function(){e.fnFilter($(this).val())}),$(".provision_list_users_search",t).change(function(){e.fnFilter($(this).val())}),t.on("click",".provision_users_list_refresh_button",function(){return o.Action.clear_cache("USER"),s(e,0),!1}),$(document).foundation()}function r(t){function e(t,e){$(".provision_info_vdc_user_name",e).text(""),$(".provision_vdc_info_container",e).html(""),$(".provision_info_vdc_user",e).hide(),$(".provision_info_vdc_user_loading",e).fadeIn(),o.User.show({data:{id:t},error:d.onError,success:function(a,n){var s=n.USER;if($(".provision_vdc_user_confirm_action",e).html(""),$(".provision_info_vdc_user_acct",e).html(""),$(".provision_info_vdc_user",e).attr("opennebula_id",s.ID),$(".provision_info_vdc_user",e).attr("uname",s.NAME),$(".provision_info_vdc_user",e).attr("quotas",JSON.stringify(s.VM_QUOTA)),$(".provision_info_vdc_user_name",e).text(s.NAME),$(".provision-pricing-table_user_info",e).html(""),u.initEmptyQuotas(s),$.isEmptyObject(s.VM_QUOTA))quotas=u.quotaFloatInfo(0,0,null,!0),$(".provision-pricing-table_user_info",e).append('<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-th"></i> '+l.tr("VMs")+'<span class="right">'+quotas.str+'</span></li><li class="provision-bullet-item text-left"><div class="progress small radius" style="background: #f7f7f7">  <span class="meter" style="width: '+quotas.percentage+'%;"></span></div></li>'),quotas=u.quotaFloatInfo(0,0,null,!0),$(".provision-pricing-table_user_info",e).append('<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-tachometer"></i> '+l.tr("CPU")+'<span class="right">'+quotas.str+'</span></li><li class="provision-bullet-item text-left"><div class="progress small radius" style="background: #f7f7f7">  <span class="meter" style="width: '+quotas.percentage+'%;"></span></div></li>'),quotas=u.quotaMBInfo(0,0,null,!0),$(".provision-pricing-table_user_info",e).append('<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-align-left"></i> '+l.tr("Memory")+'<span class="right">'+quotas.str+'</span></li><li class="provision-bullet-item text-left"><div class="progress small radius" style="background: #f7f7f7">  <span class="meter" style="width: '+quotas.percentage+'%;"></span></div></li>');else{var i=h.default_quotas(s.DEFAULT_USER_QUOTAS);quotas=u.quotaFloatInfo(s.VM_QUOTA.VM.VMS_USED,s.VM_QUOTA.VM.VMS,i.VM_QUOTA.VM.VMS,!0),$(".provision-pricing-table_user_info",e).append('<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-th"></i> '+l.tr("VMs")+'<span class="right">'+quotas.str+'</span></li><li class="provision-bullet-item text-left"><div class="progress small radius" style="background: #f7f7f7">  <span class="meter" style="width: '+quotas.percentage+'%;"></span></div></li>'),quotas=u.quotaFloatInfo(s.VM_QUOTA.VM.CPU_USED,s.VM_QUOTA.VM.CPU,i.VM_QUOTA.VM.CPU,!0),$(".provision-pricing-table_user_info",e).append('<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-tachometer"></i> '+l.tr("CPU")+'<span class="right">'+quotas.str+'</span></li><li class="provision-bullet-item text-left"><div class="progress small radius" style="background: #f7f7f7">  <span class="meter" style="width: '+quotas.percentage+'%;"></span></div></li>'),quotas=u.quotaMBInfo(s.VM_QUOTA.VM.MEMORY_USED,s.VM_QUOTA.VM.MEMORY,i.VM_QUOTA.VM.MEMORY,!0),$(".provision-pricing-table_user_info",e).append('<li class="provision-bullet-item text-left"><i class="fa fa-fw fa-align-left"></i> '+l.tr("Memory")+'<span class="right">'+quotas.str+'</span></li><li class="provision-bullet-item text-left"><div class="progress small radius" style="background: #f7f7f7">  <span class="meter" style="width: '+quotas.percentage+'%;"></span></div></li>')}$(".provision-user-resource-header",e).html('<span class="provision_vdc_user_info_show_vms button medium radius" data-tooltip title="'+l.tr("User Virtual Machines")+'" style="margin-right: 10px"><i class="fa fa-th fa-lg"></i></span><span class="provision_vdc_user_info_show_templates button medium radius" data-tooltip title="'+l.tr("User Saved Templates")+'" style="margin-right: 10px"><i class="fa fa-save fa-lg"></i></span><span class="provision_vdc_user_info_show_flows button medium radius" data-tooltip title="'+l.tr("User Services")+'" style="margin-right: 10px"><i class="fa fa-cubes fa-lg"></i></span><span class="provision_vdc_user_info_show_acct button medium radius" data-tooltip title="'+l.tr("User Accounting")+'" style="margin-right: 10px"><i class="fa fa-bar-chart-o fa-lg"></i></span>'+(c.isFeatureEnabled("showback")?'<span class="provision_vdc_user_info_show_showback button medium radius" data-tooltip title="'+l.tr("User Showback")+'" style="margin-right: 10px"><i class="fa fa-money fa-lg"></i></span>':""));var r=Math.floor((new Date).getTime()/1e3);r-=604800;var p=-1,m={start_time:r,end_time:p,userfilter:t},_=!0;o.VM.accounting({success:function(t,a){f.fillAccounting($(".dashboard_vm_accounting",e),t,a,_)},error:d.onError,data:m}),$(".provision_info_vdc_user",e).show(),$(".provision_info_vdc_user_loading",e).hide(),$(document).foundation()}})}$(".provision_list_users",t).on("click",".provision_info_user_button",function(){$("a.provision_show_user_accordion",t).trigger("click");var a=$(this).parents(".provision-pricing-table").attr("opennebula_id");e(a,t)}),t.on("click",".provision_vdc_user_info_show_vms",function(){$(".provision_vdc_info_container",t).html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>'),b.generate($(".provision_vdc_info_container",t),{title:$(".provision_info_vdc_user",t).attr("uname")+" "+l.tr("VMs"),active:!0,refresh:!0,create:!1,filter:!1,filter_expression:$(".provision_info_vdc_user",t).attr("opennebula_id")})}),t.on("click",".provision_vdc_user_info_show_templates",function(){$(".provision_vdc_info_container",t).html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>'),v.generate($(".provision_vdc_info_container",t),{title:$(".provision_info_vdc_user",t).attr("uname")+" "+l.tr("Templates"),active:!0,refresh:!0,create:!1,filter:!1,filter_expression:$(".provision_info_vdc_user",t).attr("opennebula_id")})}),t.on("click",".provision_vdc_user_info_show_flows",function(){$(".provision_vdc_info_container",t).html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>'),g.generate($(".provision_vdc_info_container",t),{title:$(".provision_info_vdc_user",t).attr("uname")+" "+l.tr("Services"),active:!0,refresh:!0,create:!1,filter:!1,filter_expression:$(".provision_info_vdc_user",t).attr("opennebula_id")})}),t.on("click",".provision_vdc_user_info_show_acct",function(){$(".provision_vdc_info_container",t).html(""),$(".provision_vdc_info_container",t).html(f.html()),f.setup($(".provision_vdc_info_container",t),{fixed_user:$(".provision_info_vdc_user",t).attr("opennebula_id"),init_group_by:"vm"}),$(".provision_vdc_info_container",t).prepend('<h2 class="subheader">'+$(".provision_info_vdc_user",t).attr("uname")+" "+l.tr("Accounting")+"</h2>")}),c.isFeatureEnabled("showback")&&t.on("click",".provision_vdc_user_info_show_showback",function(){$(".provision_vdc_info_container",t).html(""),$(".provision_vdc_info_container",t).html(m.html()),m.setup($(".provision_vdc_info_container",t),{fixed_user:$(".provision_info_vdc_user",t).attr("opennebula_id"),fixed_group:""}),$(".provision_vdc_info_container",t).prepend('<h2 class="subheader">'+$(".provision_info_vdc_user",t).attr("uname")+" "+l.tr("Showback")+"</h2>")}),t.on("click",".provision_vdc_user_delete_confirm_button",function(){$(".provision_vdc_user_confirm_action",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-10 large-centered columns"><span style="font-size: 14px; line-height: 20px">'+l.tr("Be careful, this action will inmediately remove the User from OpenNebula")+'</span></div></div><br><div class="row"><div class="large-10 large-centered columns"><a href"#" class="provision_delete_button alert button large-12 large radius">'+l.tr("Delete User")+'</a></div></div><a href="#" class="close" style="top: 20px">&times;</a></div>')}),t.on("click",".provision_vdc_user_password_confirm_button",function(){$(".provision_vdc_user_confirm_action",t).html('<div data-alert class="alert-box secondary radius"><div class="row"><div class="large-10 large-centered columns"><input type="password" class="provision_vdc_user_new_password provision-input" placeholder="'+l.tr("New Password")+'" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/></div></div><div class="row"><div class="large-10 large-centered columns"><input type="password" class="provision_vdc_user_new_confirm_password provision-input" placeholder="'+l.tr("Confirm Password")+'" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/><br></div></div><div class="row"><div class="large-10 large-centered columns"><button href"#" type="submit" class="provision_vdc_user_change_password_button button success large radius large-12 small-12">'+l.tr("Update Password")+'</button></div></div><a href="#" class="close" style="top: 20px">&times;</a></div>'),t.on("click",".provision_vdc_user_change_password_button",function(){var a=$(this);a.attr("disabled","disabled");var n=$(".provision_info_vdc_user",t).attr("opennebula_id"),s=$(".provision_vdc_user_new_password",t).val(),i=$(".provision_vdc_user_new_confirm_password",t).val();return s.length?s!==i?(d.notifyError(l.tr("Passwords do not match")),!1):(o.User.passwd({data:{id:n,extra_param:s},success:function(){e(n,t),a.removeAttr("disabled")},error:function(t,e){d.onError(t,e),a.removeAttr("disabled")}}),!1):(d.notifyError(l.tr("Fill in a new password")),!1)})}),t.on("click",".provision_vdc_user_quota_confirm_button",function(){$(".provision_vdc_user_confirm_action",t).html('<div data-alert class="alert-box secondary radius">'+y()+'<br><br><div class="row"><div class="large-10 large-centered columns"><a href"#" class="provision_update_quota_button success large button large-12 radius" style="margin-right: 15px">'+l.tr("Update User Quota")+'</a></div></div><a href="#" class="close" style="top: 20px">&times;</a></div>'),_.setup(t),$(document).foundation();var e=$(".provision_info_vdc_user",t).attr("quotas");if(e){var a=JSON.parse(e),n=p.QUOTA_LIMIT_DEFAULT,s=p.QUOTA_LIMIT_DEFAULT,i=p.QUOTA_LIMIT_DEFAULT;void 0!=a.VM&&(n=a.VM.VMS,s=a.VM.CPU,i=a.VM.MEMORY,i!=p.QUOTA_LIMIT_UNLIMITED&&i!=p.QUOTA_LIMIT_DEFAULT&&(i=a.VM.MEMORY/1024));var r=function(t,e,a){switch(t){case p.QUOTA_LIMIT_DEFAULT:e.val("default").change(),a.val("").change();break;case p.QUOTA_LIMIT_UNLIMITED:e.val("unlimited").change(),a.val("").change();break;default:e.val("edit").change(),a.val(t).change()}};r(n,$("div.provision_rvms_quota select.provision_quota_select",t),$(".provision_rvms_quota_input",t)),r(s,$("div.provision_cpu_quota select.provision_quota_select",t),$(".provision_cpu_quota_input",t)),r(i,$("div.provision_memory_quota select.provision_quota_select",t),$(".provision_memory_quota_tmp_input",t))}}),t.on("click",".provision_delete_button",function(){var e=$(this);e.attr("disabled","disabled");var a=$(".provision_info_vdc_user",t).attr("opennebula_id");o.User.del({data:{id:a},success:function(){$(".provision_back",t).click(),$(".provision_users_list_refresh_button",t).click(),e.removeAttr("disabled")},error:function(t,a){d.onError(t,a),e.removeAttr("disabled")}})}),t.on("click",".provision_update_quota_button",function(){var a=$(this);a.attr("disabled","disabled");var n=$(".provision_info_vdc_user",t).attr("opennebula_id");quota_json=_.retrieve(t),o.User.set_quota({data:{id:n,extra_param:quota_json},success:function(){e(n,t),a.removeAttr("disabled")},error:function(t,e){d.onError(t,e),a.removeAttr("disabled")}})}),t.on("click",".provision_refresh_info",function(){var a=$(".provision_info_vdc_user",t).attr("opennebula_id");return e(a,t),!1})}t("foundation.alert");var o=t("opennebula"),l=t("utils/locale"),c=t("sunstone-config"),d=t("utils/notifier"),u=t("utils/quotas/quota-widgets"),p=t("utils/quotas/quota-limits"),h=t("utils/quotas/quota-defaults"),f=t("utils/accounting"),m=t("utils/showback"),_=t("./quota-widget"),b=t("tabs/provision-tab/vms/list"),v=t("tabs/provision-tab/templates/list"),g=t("tabs/provision-tab/flows/list"),y=t("hbs!./quota-widget/html"),w=t("hbs!./list"),T=0;return{generate:a,show:e}}),define("hbs!tabs/provision-tab/vms/create",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<form id="provision_create_vm" class="hidden section_content">\n  <div class="row">\n    <div class="large-10 large-centered columns">\n      <h2 class="subheader">'+i((e.tr||t&&t.tr||s).call(t,"Create Virtual Machine",{name:"tr",hash:{},data:n}))+'</h2>\n      <br></div>\n  </div>\n  <div class="row">\n    <div class="large-8 large-centered columns">\n      <input type="text" id="vm_name"  class="provision-input" placeholder="'+i((e.tr||t&&t.tr||s).call(t,"Virtual Machine Name",{name:"tr",hash:{},data:n}))+'" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/>\n      <br></div>\n  </div>\n  <div class="row">\n    <div class="large-10 large-centered columns">\n      <dl class="accordion provision_accordion_template" data-accordion="provision_accordion_template">\n        <dd style="border-bottom: 1px solid #efefef;" class="active accordion-navigation">\n          <a href="#provision_dd_template" style="background: #fff; font-size: 30px">\n            <span class="select_template" style="color:#555">'+i((e.tr||t&&t.tr||s).call(t,"Select a Template",{name:"tr",hash:{},data:n}))+'</span>\n            <span class="selected_template" style="display:none; color:#555">\n              <span class="provision-logo selected_template_logo" style="line-height: 80px"></span>\n              <span class="selected_template_name"></span>\n              <span class="has-tip right" style="cursor: pointer; margin-right:10px; line-height: 80px"> <i class="fa fa-pencil"/></span>\n            </span>\n          </a>\n          <div id="provision_dd_template" class="active content">\n            <div class="row provision_select_template">\n              <div class="large-12 large-centered columns">\n                <dl class="tabs text-center" data-tab style="width: 100%">\n                  <dd class="active" style="width: 33%;">\n                    <a href="#provision_system_templates_selector">'+i((e.tr||t&&t.tr||s).call(t,"System",{name:"tr",hash:{},data:n}))+'</a>\n                  </dd>\n                  <dd style="width: 33%;">\n                    <a href="#provision_vdc_templates_selector">'+i((e.tr||t&&t.tr||s).call(t,"Group",{name:"tr",hash:{},data:n}))+'</a>\n                  </dd>\n                  <dd style="width: 34%;">\n                    <a href="#provision_saved_templates_selector">'+i((e.tr||t&&t.tr||s).call(t,"Saved",{name:"tr",hash:{},data:n}))+'</a>\n                  </dd>\n                </dl>\n                <div class="row">\n                  <div class="large-12 large-centered columns">\n                    <h3 class="subheader text-right">\n                      <input type="search" class="provision-search-input right" placeholder="Search" id="provision_create_template_search"/>\n                    </h3>\n                    <br></div>\n                </div>\n                <div class="tabs-content">\n                  <div class="content active" id="provision_system_templates_selector">\n                    <table id="provision_system_templates_table">\n                      <thead class="hidden">\n                        <tr>\n                          <th>'+i((e.tr||t&&t.tr||s).call(t,"ID",{name:"tr",hash:{},data:n}))+"</th>\n                          <th>"+i((e.tr||t&&t.tr||s).call(t,"Name",{name:"tr",hash:{},data:n}))+"</th>\n                          <th>"+i((e.tr||t&&t.tr||s).call(t,"Saved",{name:"tr",hash:{},data:n}))+'</th>\n                        </tr>\n                      </thead>\n                      <tbody class="hidden"></tbody>\n                    </table>\n                  </div>\n                  <div class="content" id="provision_vdc_templates_selector">\n                    <table id="provision_vdc_templates_table">\n                      <thead class="hidden">\n                        <tr>\n                          <th>'+i((e.tr||t&&t.tr||s).call(t,"ID",{name:"tr",hash:{},data:n}))+"</th>\n                          <th>"+i((e.tr||t&&t.tr||s).call(t,"Name",{name:"tr",hash:{},data:n}))+"</th>\n                          <th>"+i((e.tr||t&&t.tr||s).call(t,"Saved",{name:"tr",hash:{},data:n}))+"</th>\n                          <th>"+i((e.tr||t&&t.tr||s).call(t,"Shared",{name:"tr",hash:{},data:n}))+'</th>\n                        </tr>\n                      </thead>\n                      <tbody class="hidden"></tbody>\n                    </table>\n                  </div>\n                  <div class="content" id="provision_saved_templates_selector">\n                    <table id="provision_saved_templates_table">\n                      <thead class="hidden">\n                        <tr>\n                          <th>'+i((e.tr||t&&t.tr||s).call(t,"ID",{name:"tr",hash:{},data:n}))+"</th>\n                          <th>"+i((e.tr||t&&t.tr||s).call(t,"Name",{name:"tr",hash:{},data:n}))+"</th>\n                          <th>"+i((e.tr||t&&t.tr||s).call(t,"Saved",{name:"tr",hash:{},data:n}))+"</th>\n                          <th>"+i((e.tr||t&&t.tr||s).call(t,"Shared",{name:"tr",hash:{},data:n}))+'</th>\n                        </tr>\n                      </thead>\n                      <tbody class="hidden"></tbody>\n                    </table>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </dd>\n      </dl>\n    </div>\n  </div>\n  <br>\n  <br>\n  <div class="row">\n    <div class="large-10 large-centered columns">\n      <div class="provision_capacity_selector"></div>\n      <br>\n      <br>\n      <div class="provision_network_selector"></div>\n      <br>\n      <br>\n      <div class="provision_custom_attributes_selector"></div>\n    </div>\n  </div>\n  <br>\n  <br>\n  <br>\n  <div class="row">\n    <div class="large-7 columns large-centered">\n      <div data-alert class="alert-box alert-box-error radius text-center hidden"></div>\n      <button href="#" class="button large success radius large-12 small-12" type="submit" style="height: 59px">'+i((e.tr||t&&t.tr||s).call(t,"Create",{name:"tr",hash:{},data:n}))+"</button>\n    </div>\n  </div>\n  <br>\n  <br></form>"},useData:!0});return e.registerPartial("tabs/provision-tab/vms/create",a),e.registerPartial("tabs/provision-tab/vms/create",a),a}),define("templates/helpers/isFeatureEnabled",["require","hbs/handlebars","sunstone-config"],function(t){var e=t("hbs/handlebars"),a=t("sunstone-config"),n=function(t,e){return a.isFeatureEnabled(t)?e.fn(this):e.inverse(this)};return e.registerHelper("isFeatureEnabled",n),n}),define("hbs!tabs/provision-tab/group/info",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/isFeatureEnabled"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'  <div class="row">\n    <div class="large-11 large-centered columns">\n      <h3 class="subheader text-right">\n        <span class="left">'+i((e.tr||t&&t.tr||s).call(t,"Group Showback",{name:"tr",hash:{},data:n}))+'</span>\n      </h3>\n    </div>\n  </div>\n  <br>\n  <div class="row">\n    <div  id="provision_info_vdc_group_showback" class="large-10 large-centered columns"></div>\n  </div>\n  <br>\n'
+},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div id="provision_manage_vdc" class="hidden section_content">\n  <div class="row">\n    <div class="large-11 large-centered columns">\n      <h3 class="subheader text-right">\n        <span class="left">'+r((e.tr||t&&t.tr||i).call(t,"Group Accounting",{name:"tr",hash:{},data:n}))+'</span>\n      </h3>\n    </div>\n  </div>\n  <br>\n  <div class="row">\n    <div  id="provision_info_vdc_group_acct" class="large-10 large-centered columns"></div>\n  </div>\n  <br>\n';return s=(e.isFeatureEnabled||t&&t.isFeatureEnabled||i).call(t,"showback",{name:"isFeatureEnabled",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+'  <div class="row">\n    <div class="large-11 large-centered columns">\n      <h3 class="subheader text-right">\n        <span class="left">'+r((e.tr||t&&t.tr||i).call(t,"Group Quotas",{name:"tr",hash:{},data:n}))+'</span>\n      </h3>\n    </div>\n  </div>\n  <br>\n  <div class="row">\n    <div class="large-11 columns large-centered quotas" id="provision_vdc_quotas_div"></div>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/provision-tab/group/info",a),e.registerPartial("tabs/provision-tab/group/info",a),a}),define("hbs!tabs/provision-tab/users/create",["hbs","hbs/handlebars","hbs!tabs/provision-tab/users/quota-widget/html","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<form id="provision_create_user" class="hidden section_content">\n  <div class="row">\n    <div class="large-10 large-centered columns">\n      <h2 class="subheader">'+r((e.tr||t&&t.tr||i).call(t,"Create User",{name:"tr",hash:{},data:n}))+'</h2>\n      <br></div>\n  </div>\n  <div class="row">\n    <div class="large-8 large-centered columns">\n      <input type="text" id="username"  class="provision-input" placeholder="'+r((e.tr||t&&t.tr||i).call(t,"Username",{name:"tr",hash:{},data:n}))+'" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/>\n      <br></div>\n  </div>\n  <div class="row">\n    <div class="large-8 large-centered columns">\n      <input type="password" id="password"  class="provision-input" placeholder="'+r((e.tr||t&&t.tr||i).call(t,"Password",{name:"tr",hash:{},data:n}))+'" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/>\n      <br></div>\n  </div>\n  <div class="row">\n    <div class="large-8 large-centered columns">\n      <input type="password" id="repeat_password"  class="provision-input" placeholder="'+r((e.tr||t&&t.tr||i).call(t,"Repeat Password",{name:"tr",hash:{},data:n}))+'" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/>\n      <br></div>\n  </div>\n  <div class="row">\n    <div class="large-10 large-centered columns">\n      <h3 class="subheader text-right">\n        <span class="left">'+r((e.tr||t&&t.tr||i).call(t,"Define Quotas",{name:"tr",hash:{},data:n}))+'</span>\n      </h3>\n      <br></div>\n  </div>\n  <br>\n  <div class="row">\n    <div class="large-8 large-centered columns">\n      <dl class="tabs text-center" data-tab style="width: 100%">\n        <dd class="active" style="width: 50%;">\n          <a href="#provision_create_user_default_quota">'+r((e.tr||t&&t.tr||i).call(t,"Default",{name:"tr",hash:{},data:n}))+'</a>\n        </dd>\n        <dd style="width: 50%;">\n          <a href="#provision_create_user_manual_quota">'+r((e.tr||t&&t.tr||i).call(t,"Manual",{name:"tr",hash:{},data:n}))+'</a>\n        </dd>\n      </dl>\n      <div class="tabs-content">\n        <div class="content active" id="provision_create_user_default_quota">\n          <div class="row">\n            <div class="large-12 large-centered columns">\n              <span style="font-size: 18px; color: #999">\n                '+r((e.tr||t&&t.tr||i).call(t,"Use the default system quotas set by the cloud adminstrator",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </div>\n          </div>\n        </div>\n        <div class="content" id="provision_create_user_manual_quota">';return s=this.invokePartial(a["tabs/provision-tab/users/quota-widget/html"],"","tabs/provision-tab/users/quota-widget/html",t,void 0,e,a,n),null!=s&&(o+=s),o+'</div>\n      </div>\n    </div>\n  </div>\n  <br>\n  <br>\n  <div class="row">\n    <div class="large-5 large-centered columns">\n      <hr>\n      <br></div>\n  </div>\n  <div class="row">\n    <div class="large-7 columns large-centered">\n      <div data-alert class="alert-box alert-box-error radius text-center hidden"></div>\n      <button href="#" class="button large radius large-12 small-12" type="submit">'+r((e.tr||t&&t.tr||i).call(t,"Add User",{name:"tr",hash:{},data:n}))+"</button>\n    </div>\n  </div>\n  <br></form>"},usePartial:!0,useData:!0});return e.registerPartial("tabs/provision-tab/users/create",a),e.registerPartial("tabs/provision-tab/users/create",a),a}),define("hbs!tabs/provision-tab/flows/create",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<form id="provision_create_flow" class="hidden section_content">\n  <div class="row">\n    <div class="large-10 large-centered columns">\n      <h2 class="subheader">'+i((e.tr||t&&t.tr||s).call(t,"Create Service",{name:"tr",hash:{},data:n}))+'</h2>\n      <br></div>\n  </div>\n  <div class="row">\n    <div class="large-8 large-centered columns">\n      <input type="text" id="flow_name"  class="provision-input" placeholder="'+i((e.tr||t&&t.tr||s).call(t,"Service Name",{name:"tr",hash:{},data:n}))+'" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-10 large-centered columns">\n      <dl class="accordion provision_accordion_flow_template" data-accordion="provision_accordion_flow_template">\n        <dd style="border-bottom: 1px solid #efefef;" class="active accordion-navigation">\n          <a href="#provision_dd_flow_template" style="background: #fff; font-size: 30px">\n            <span class="select_template" style="color:#555">'+i((e.tr||t&&t.tr||s).call(t,"Select a Template",{name:"tr",hash:{},data:n}))+'</span>\n            <span class="selected_template" style="display:none; color:#555">\n              <span class="provision-logo selected_template_logo" style="color:#555"></span>\n              <span class="selected_template_name" style="color:#555"></span>\n              <span class="has-tip right" style="cursor: pointer; margin-right:10px;"> <i class="fa fa-pencil"/></span>\n            </span>\n          </a>\n          <div id="provision_dd_flow_template" class="provision_select_flow_template active content">\n            <div class="row">\n              <div class="large-12 large-centered columns">\n                <h3 class="subheader text-right">\n                  <input type="search" class="provision-search-input right" placeholder="Search" id="provision_create_flow_template_search"/>\n                </h3>\n                <br></div>\n            </div>\n            <div class="row">\n              <div class="large-12 large-centered columns">\n                <table id="provision_flow_templates_table">\n                  <thead class="hidden">\n                    <tr>\n                      <th>'+i((e.tr||t&&t.tr||s).call(t,"ID",{name:"tr",hash:{},data:n}))+"</th>\n                      <th>"+i((e.tr||t&&t.tr||s).call(t,"Name",{name:"tr",hash:{},data:n}))+'</th>\n                    </tr>\n                  </thead>\n                  <tbody class="hidden"></tbody>\n                </table>\n              </div>\n            </div>\n          </div>\n        </dd>\n      </dl>\n    </div>\n  </div>\n  <br>\n  <br>\n  <br>\n  <div class="row">\n    <div class="provision_network_selector large-9 large-centered columns"></div>\n  </div>\n  <br>\n  <div class="row">\n    <div class="provision_custom_attributes_selector large-9 large-centered columns"></div>\n  </div>\n  <div id="provision_customize_flow_template" style="display: none"></div>\n  <br>\n  <br>\n  <div class="row">\n    <div class="large-7 columns large-centered">\n      <div data-alert class="alert-box alert-box-error radius text-center hidden"></div>\n      <button href="#" class="button large success radius large-12 small-12" type="submit" style="height: 59px">'+i((e.tr||t&&t.tr||s).call(t,"Create",{name:"tr",hash:{},data:n}))+"</button>\n    </div>\n  </div>\n  <br>\n  <br></form>"},useData:!0});return e.registerPartial("tabs/provision-tab/flows/create",a),e.registerPartial("tabs/provision-tab/flows/create",a),a}),define("hbs!tabs/provision-tab/content",["hbs","hbs/handlebars","hbs!tabs/provision-tab/vms/create","hbs!tabs/provision-tab/group/info","hbs!tabs/provision-tab/users/create","hbs!tabs/provision-tab/flows/create","templates/helpers/isTabPanelEnabled"],function(t,e){var a=e.template({1:function(){return'<div class="provision_templates_list_section hidden section_content"></div>\n'},3:function(t,e,a,n){var s,i="";return s=this.invokePartial(a["tabs/provision-tab/group/info"],"","tabs/provision-tab/group/info",t,void 0,e,a,n),null!=s&&(i+=s),s=this.invokePartial(a["tabs/provision-tab/users/create"],"","tabs/provision-tab/users/create",t,void 0,e,a,n),null!=s&&(i+=s),i+'<div class="provision_users_list_section hidden section_content"></div>\n'},5:function(t,e,a,n){var s,i="";return s=this.invokePartial(a["tabs/provision-tab/flows/create"],"","tabs/provision-tab/flows/create",t,void 0,e,a,n),null!=s&&(i+=s),i+'<div class="provision_flows_list_section hidden section_content"></div>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r='<div id="provision_dashboard" class="section_content"></div>\n\n';return s=this.invokePartial(a["tabs/provision-tab/vms/create"],"","tabs/provision-tab/vms/create",t,void 0,e,a,n),null!=s&&(r+=s),r+='<div class="provision_vms_list_section hidden section_content"></div>\n\n',s=(e.isTabPanelEnabled||t&&t.isTabPanelEnabled||i).call(t,"provision-tab","templates",{name:"isTabPanelEnabled",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(r+=s),r+="\n",s=(e.isTabPanelEnabled||t&&t.isTabPanelEnabled||i).call(t,"provision-tab","users",{name:"isTabPanelEnabled",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(r+=s),r+="\n",s=(e.isTabPanelEnabled||t&&t.isTabPanelEnabled||i).call(t,"provision-tab","flows",{name:"isTabPanelEnabled",hash:{},fn:this.program(5,n),inverse:this.noop,data:n}),null!=s&&(r+=s),r},usePartial:!0,useData:!0});return e.registerPartial("tabs/provision-tab/content",a),a}),define("hbs!tabs/provision-tab/header",["hbs","hbs/handlebars","templates/helpers/isTabPanelEnabled","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'        <li>\n          <a href"#" class="medium off-color" id="provision_vdc_info_button">\n            <i class="fa fa-fw fa-lg fa-bar-chart-o"/>\n            '+i((e.tr||t&&t.tr||s).call(t,"Group Info",{name:"tr",hash:{},data:n}))+'\n          </a>\n        </li>\n        <li>\n          <a href"#" class="medium off-color provision_users_list_button" id="">\n          <i class="fa fa-fw fa-lg fa-users"/>\n          '+i((e.tr||t&&t.tr||s).call(t,"Users",{name:"tr",hash:{},data:n}))+"\n          </a>\n        </li>\n"},3:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'        <li>\n          <a href"#" class="medium off-color provision_templates_list_button">\n            <i class="fa fa-fw fa-lg fa-save"/>\n            '+i((e.tr||t&&t.tr||s).call(t,"Templates",{name:"tr",hash:{},data:n}))+"\n          </a>\n        </li>\n"},5:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'        <li>\n          <a href"#" class="medium off-color provision_flows_list_button" id="">\n            <i class="fa fa-lg fa-fw fa-cubes"/>\n            '+i((e.tr||t&&t.tr||s).call(t,"Services",{name:"tr",hash:{},data:n}))+"\n          </a>\n        </li>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div style=" padding: 15px 0px 10px 0px; margin-bottom: 10px">\n  <div class="row">\n    <div class="large-12 columns">\n      <a href="#" class="provision_image_header" >\n        <img src="'+l((i=null!=(i=e.logo||(null!=t?t.logo:t))?i:o,typeof i===r?i.call(t,{name:"logo",hash:{},data:n}):i))+'" style="height:40px; vertical-align:top;"></a>\n      <br>\n      <br>\n      <ul class="inline-list provision-header text-center">\n';return s=(e.isTabPanelEnabled||t&&t.isTabPanelEnabled||o).call(t,"provision-tab","users",{name:"isTabPanelEnabled",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='        <li>\n          <a href"#" class="medium off-color provision_vms_list_button" id="">\n            <i class="fa fa-fw fa-lg fa-th"/>\n            '+l((e.tr||t&&t.tr||o).call(t,"VMs",{name:"tr",hash:{},data:n}))+"\n          </a>\n        </li>\n",s=(e.isTabPanelEnabled||t&&t.isTabPanelEnabled||o).call(t,"provision-tab","templates",{name:"isTabPanelEnabled",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),s=(e.isTabPanelEnabled||t&&t.isTabPanelEnabled||o).call(t,"provision-tab","flows",{name:"isTabPanelEnabled",hash:{},fn:this.program(5,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+"      </ul>\n    </div>\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/provision-tab/header",a),a}),define("hbs!tabs/provision-tab/dashboard/quotas",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row">\n  <div class="large-11 large-centered columns">\n    <h2 class="subheader">'+i((e.tr||t&&t.tr||s).call(t,"Quotas",{name:"tr",hash:{},data:n}))+'</h2>\n    <br></div>\n</div>\n<div class="row">\n  <div class="large-10 large-centered columns">\n    <div class="row">\n      <div class="large-4 columns text-center">\n        <span id="provision_dashboard_rvms_percentage"  style="font-size:50px">0</span>\n        <span style="font-size:20px; color: #999">%</span></div>\n        <div class="large-4 columns text-center">\n          <span id="provision_dashboard_cpu_percentage"  style="font-size:50px">0</span>\n          <span style="font-size:20px; color: #999">%</span></div>\n          <div class="large-4 columns text-center">\n            <span id="provision_dashboard_memory_percentage"  style="font-size:50px">0</span>\n            <span style="font-size:20px; color: #999">%</span></div>\n          </div>\n          <div class="row">\n            <div class="large-4 columns text-center">\n              <div class="progress large radius">\n                <span id="provision_dashboard_rvms_meter" class="meter"></span>\n              </div>\n            </div>\n            <div class="large-4 columns text-center">\n              <div class="progress large radius">\n                <span id="provision_dashboard_cpu_meter" class="meter"></span>\n              </div>\n            </div>\n            <div class="large-4 columns text-center">\n              <div class="progress large radius">\n                <span id="provision_dashboard_memory_meter" class="meter"></span>\n              </div>\n            </div>\n          </div>\n          <div class="row">\n            <div class="large-4 columns text-center">\n              <span>'+i((e.tr||t&&t.tr||s).call(t,"RUNNING VMS",{name:"tr",hash:{},data:n}))+'</span>\n              <br>\n              <span id="provision_dashboard_rvms_str" style="color: #999; font-size: 14px;"></span>\n            </div>\n            <div class="large-4 columns text-center">\n              <span>'+i((e.tr||t&&t.tr||s).call(t,"CPU",{name:"tr",hash:{},data:n}))+'</span>\n              <br>\n              <span id="provision_dashboard_cpu_str" style="color: #999; font-size: 14px;"></span>\n            </div>\n            <div class="large-4 columns text-center">\n              <span>'+i((e.tr||t&&t.tr||s).call(t,"MEMORY",{name:"tr",hash:{},data:n}))+'</span>\n              <br>\n              <span id="provision_dashboard_memory_str" style="color: #999; font-size: 14px;"></span>\n            </div>\n          </div>\n        </div>\n      </div>\n      <br>\n      <br>'},useData:!0});return e.registerPartial("tabs/provision-tab/dashboard/quotas",a),a}),define("hbs!tabs/provision-tab/dashboard/vdc-quotas",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row">\n  <div class="large-12 large-centered columns">\n    <h3 class="subheader">'+i((e.tr||t&&t.tr||s).call(t,"Group Quotas",{name:"tr",hash:{},data:n}))+'</h3>\n    <br></div>\n</div>\n<div class="row">\n  <div class="large-12 large-centered columns">\n    <div class="row">\n      <div class="large-4 columns text-center">\n        <span id="provision_dashboard_vdc_rvms_percentage" style="font-size:50px">0</span>\n        <span style="font-size:20px; color: #999">%</span>\n      </div>\n      <div class="large-4 columns text-center">\n        <span id="provision_dashboard_vdc_cpu_percentage" style="font-size:50px">0</span>\n        <span style="font-size:20px; color: #999">%</span>\n      </div>\n      <div class="large-4 columns text-center">\n        <span id="provision_dashboard_vdc_memory_percentage" style="font-size:50px">0</span>\n        <span style="font-size:20px; color: #999">%</span>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-4 columns text-center">\n        <div class="progress large radius">\n          <span id="provision_dashboard_vdc_rvms_meter" class="meter"></span>\n        </div>\n      </div>\n      <div class="large-4 columns text-center">\n        <div class="progress large radius">\n          <span id="provision_dashboard_vdc_cpu_meter" class="meter"></span>\n        </div>\n      </div>\n      <div class="large-4 columns text-center">\n        <div class="progress large radius">\n          <span id="provision_dashboard_vdc_memory_meter" class="meter"></span>\n        </div>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-4 columns text-center">\n        <span>'+i((e.tr||t&&t.tr||s).call(t,"RUNNING VMS",{name:"tr",hash:{},data:n}))+'</span>\n        <br>\n        <span id="provision_dashboard_vdc_rvms_str" style="color: #999; font-size: 14px;"></span>\n      </div>\n      <div class="large-4 columns text-center">\n        <span>'+i((e.tr||t&&t.tr||s).call(t,"CPU",{name:"tr",hash:{},data:n}))+'</span>\n        <br>\n        <span id="provision_dashboard_vdc_cpu_str" style="color: #999; font-size: 14px;"></span>\n      </div>\n      <div class="large-4 columns text-center">\n        <span>'+i((e.tr||t&&t.tr||s).call(t,"MEMORY",{name:"tr",hash:{},data:n}))+'</span>\n        <br>\n        <span id="provision_dashboard_vdc_memory_str" style="color: #999; font-size: 14px;"></span>\n      </div>\n    </div>\n  </div>\n</div>\n<br>\n<br>'},useData:!0});return e.registerPartial("tabs/provision-tab/dashboard/vdc-quotas",a),a}),define("hbs!tabs/provision-tab/dashboard/empty-graphs",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<span class="fa-stack fa-2x" style="color: #dfdfdf"> <i class="fa fa-cloud fa-stack-2x"></i>\n</span>\n<br>\n<span style="color: #cfcfcf">'+i((e.tr||t&&t.tr||s).call(t,"There is no information available",{name:"tr",hash:{},data:n}))+"</span>"},useData:!0});return e.registerPartial("tabs/provision-tab/dashboard/empty-graphs",a),e.registerPartial("./empty-graphs",a),a}),define("hbs!tabs/provision-tab/dashboard/vms",["hbs","hbs/handlebars","hbs!tabs/provision-tab/dashboard/empty-graphs","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div class="row">\n  <div class="large-11 large-centered columns">\n    <h2 class="subheader">'+r((e.tr||t&&t.tr||i).call(t,"Virtual Machines",{name:"tr",hash:{},data:n}))+'</h2>\n    <br></div>\n</div>\n<div class="row" id="provision_vms_dashboard">\n  <div class="large-11 large-centered columns">\n    <div class="row">\n      <div class="large-4 columns text-center">\n        <br>\n        <div class="row">\n          <div class="large-12 columns">\n            <span  id="provision_dashboard_total" style="font-size:80px"> <i class="fa fa-spinner fa-spin"></i>\n            </span>\n            <br>\n            <span style="color: #999;">'+r((e.tr||t&&t.tr||i).call(t,"TOTAL",{name:"tr",hash:{},data:n}))+'</span>\n          </div>\n        </div>\n        <br>\n        <br>\n        <div class="row">\n          <div class="large-12 columns text-center">\n            <a href"#" class="medium button success large radius provision_create_vm_button" style="margin-left: 5px; margin-right: 5px"> <i class="fa fa-lg fa-plus-square"/></a>\n            <a href"#" class="medium button large radius provision_vms_list_button" style="margin-left: 5px; margin-right: 5px">\n              <i class="fa fa-lg fa-th"/></a>\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-12 columns"></div>\n        </div>\n      </div>\n      <div class="large-2 columns">\n        <div class="row">\n          <div class="large-12 columns text-center">\n            <span id="provision_dashboard_running" style="font-size:40px">\n              <i class="fa fa-spinner fa-spin"></i>\n            </span>\n            <br>\n            <span  style="color: #999; font-size: 14px">'+r((e.tr||t&&t.tr||i).call(t,"RUNNING",{name:"tr",hash:{},data:n}))+'</span>\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-12 columns text-center ">\n            <span id="provision_dashboard_deploying"  style="font-size:40px">\n              <i class="fa fa-spinner fa-spin"></i>\n            </span>\n            <br>\n            <span  style="color: #999; font-size: 14px">'+r((e.tr||t&&t.tr||i).call(t,"DEPLOYING",{name:"tr",hash:{},data:n}))+'</span>\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-12 columns text-center">\n            <span  id="provision_dashboard_off" style="font-size:40px">\n              <i class="fa fa-spinner fa-spin"></i>\n            </span>\n            <br>\n            <span  style="color: #999; font-size: 14px">'+r((e.tr||t&&t.tr||i).call(t,"OFF",{name:"tr",hash:{},data:n}))+'</span>\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-12 columns text-center ">\n            <span  id="provision_dashboard_error" style="font-size:40px">\n              <i class="fa fa-spinner fa-spin"></i>\n            </span>\n            <br>\n            <span  style="color: #999; font-size: 14px">'+r((e.tr||t&&t.tr||i).call(t,"ERROR",{name:"tr",hash:{},data:n}))+'</span>\n          </div>\n        </div>\n      </div>\n      <div class="large-6 columns" id="dashboard_vm_accounting">\n        <input style="display:none;" value="vm" id="acct_group_by"/>\n        <div class="row">\n          <div class="large-12 columns graph_legend">\n            <h3 class="subheader">\n              <small>'+r((e.tr||t&&t.tr||i).call(t,"CPU hours",{name:"tr",hash:{},data:n}))+'</small>\n            </h3>\n          </div>\n          <div class="large-12 columns">\n            <div class="large-12 columns centered graph text-center" id="acct_cpu_graph" style="height: 100px;">';return s=this.invokePartial(a["./empty-graphs"],"","./empty-graphs",t,void 0,e,a,n),null!=s&&(o+=s),o+='</div>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-12 columns graph_legend">\n            <h3 class="subheader">\n              <small>'+r((e.tr||t&&t.tr||i).call(t,"Memory GB hours",{name:"tr",hash:{},data:n}))+'</small>\n            </h3>\n          </div>\n          <div class="large-12 columns">\n            <div class="large-12 columns centered graph text-center" id="acct_mem_graph" style="height: 100px;">',s=this.invokePartial(a["./empty-graphs"],"","./empty-graphs",t,void 0,e,a,n),null!=s&&(o+=s),o+"</div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<br>\n<br>"},usePartial:!0,useData:!0});return e.registerPartial("tabs/provision-tab/dashboard/vms",a),a}),define("hbs!tabs/provision-tab/dashboard/vdc-vms",["hbs","hbs/handlebars","hbs!tabs/provision-tab/dashboard/empty-graphs","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div class="row">\n  <div class="large-12 large-centered columns">\n    <h3 class="subheader">'+r((e.tr||t&&t.tr||i).call(t,"Group Virtual Machines",{name:"tr",hash:{},data:n}))+'</h3>\n    <br></div>\n</div>\n<div class="row" id="provision_vdc_vms_dashboard">\n  <div class="large-12 large-centered columns">\n    <div class="row">\n      <div class="large-4 columns text-center">\n        <br>\n        <div class="row">\n          <div class="large-12 columns">\n            <span  id="provision_dashboard_vdc_total" style="font-size:80px"> <i class="fa fa-spinner fa-spin"></i>\n            </span>\n            <br>\n            <span style="color: #999;">'+r((e.tr||t&&t.tr||i).call(t,"TOTAL",{name:"tr",hash:{},data:n}))+'</span>\n          </div>\n        </div>\n        <br>\n        <br>\n        <div class="row">\n          <div class="large-12 columns text-center">\n            <a href"#" class="medium button success large radius provision_create_vm_button" style="margin-left: 5px; margin-right: 5px"> <i class="fa fa-lg fa-plus-square"/></a>\n            <a href"#" class="medium button large radius provision_vms_list_button" style="margin-left: 5px; margin-right: 5px">\n              <i class="fa fa-lg fa-th"/></a>\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-12 columns"></div>\n        </div>\n      </div>\n      <div class="large-2 columns">\n        <div class="row">\n          <div class="large-12 columns text-center">\n            <span id="provision_dashboard_vdc_running" style="font-size:40px">\n              <i class="fa fa-spinner fa-spin"></i>\n            </span>\n            <br>\n            <span  style="color: #999; font-size: 14px">'+r((e.tr||t&&t.tr||i).call(t,"RUNNING",{name:"tr",hash:{},data:n}))+'</span>\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-12 columns text-center ">\n            <span id="provision_dashboard_vdc_deploying"  style="font-size:40px">\n              <i class="fa fa-spinner fa-spin"></i>\n            </span>\n            <br>\n            <span  style="color: #999; font-size: 14px">'+r((e.tr||t&&t.tr||i).call(t,"DEPLOYING",{name:"tr",hash:{},data:n}))+'</span>\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-12 columns text-center">\n            <span  id="provision_dashboard_vdc_off" style="font-size:40px">\n              <i class="fa fa-spinner fa-spin"></i>\n            </span>\n            <br>\n            <span  style="color: #999; font-size: 14px">'+r((e.tr||t&&t.tr||i).call(t,"OFF",{name:"tr",hash:{},data:n}))+'</span>\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-12 columns text-center ">\n            <span  id="provision_dashboard_vdc_error" style="font-size:40px">\n              <i class="fa fa-spinner fa-spin"></i>\n            </span>\n            <br>\n            <span  style="color: #999; font-size: 14px">'+r((e.tr||t&&t.tr||i).call(t,"ERROR",{name:"tr",hash:{},data:n}))+'</span>\n          </div>\n        </div>\n      </div>\n      <div class="large-6 columns" id="dashboard_vdc_vm_accounting">\n        <input style="display:none;" value="vm" id="acct_group_by"/>\n        <div class="row">\n          <div class="large-12 columns graph_legend">\n            <h3 class="subheader">\n              <small>'+r((e.tr||t&&t.tr||i).call(t,"CPU hours",{name:"tr",hash:{},data:n}))+'</small>\n            </h3>\n          </div>\n          <div class="large-12 columns">\n            <div class="large-12 columns centered graph text-center" id="acct_cpu_graph" style="height: 100px;">';return s=this.invokePartial(a["./empty-graphs"],"","./empty-graphs",t,void 0,e,a,n),null!=s&&(o+=s),o+='</div>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-12 columns graph_legend">\n            <h3 class="subheader">\n              <small>'+r((e.tr||t&&t.tr||i).call(t,"Memory GB hours",{name:"tr",hash:{},data:n}))+'</small>\n            </h3>\n          </div>\n          <div class="large-12 columns">\n            <div class="large-12 columns centered graph text-center" id="acct_mem_graph" style="height: 100px;">',s=this.invokePartial(a["./empty-graphs"],"","./empty-graphs",t,void 0,e,a,n),null!=s&&(o+=s),o+"</div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<br>\n<br>"},usePartial:!0,useData:!0});return e.registerPartial("tabs/provision-tab/dashboard/vdc-vms",a),a}),define("hbs!tabs/provision-tab/dashboard/users",["hbs","hbs/handlebars","hbs!tabs/provision-tab/dashboard/empty-graphs","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='    <div class="row">\n      <div class="large-11 large-centered columns">\n        <h3 class="subheader">\n          '+r((e.tr||t&&t.tr||i).call(t,"Users",{name:"tr",hash:{},data:n}))+'\n        </h3>\n        <br>\n      </div>\n    </div>\n    <div class="row" id="provision_users_dashboard">\n      <div class="large-12 large-centered columns">\n          <div class="row">\n            <div class="large-4 columns text-center">\n              <br>\n              <div class="row">\n                <div class="large-12 columns">\n                  <span  id="provision_dashboard_users_total" style="font-size:80px">\n                    <i class="fa fa-spinner fa-spin"></i>\n                  </span>\n                  <br>\n                  <span style="color: #999;">'+r((e.tr||t&&t.tr||i).call(t,"TOTAL",{name:"tr",hash:{},data:n}))+'</span>\n                </div>\n              </div>\n              <br>\n              <br>\n              <div class="row">\n                <div class="large-12 columns">\n                  <a href"#" class="medium button large success radius provision_create_user_button" style="margin-left: 5px; margin-right: 5px"><i class="fa fa-lg fa-plus-square"/></a>\n                  <a href"#" class="medium button large radius provision_users_list_button" style="margin-left: 5px; margin-right: 5px"><i class="fa fa-lg fa-users"/></a>\n                </div>\n              </div>\n              <br>\n              <div class="row">\n                <div class="large-12 columns">\n                </div>\n              </div>\n            </div>\n            <div class="large-8 columns" id="dashboard_vdc_user_accounting">\n              <input style="display:none;" value="user" id="acct_group_by"/>\n              <div class="row">\n                <div class="large-12 columns graph_legend">\n                  <h3 class="subheader"><small>'+r((e.tr||t&&t.tr||i).call(t,"CPU hours",{name:"tr",hash:{},data:n}))+'</small></h3>\n                </div>\n                <div class="large-12 columns">\n                  <div class="large-12 columns centered graph text-center" id="acct_cpu_graph" style="height: 100px;">\n';
+return s=this.invokePartial(a["./empty-graphs"],"                    ","./empty-graphs",t,void 0,e,a,n),null!=s&&(o+=s),o+='                  </div>\n                </div>\n              </div>\n              <div class="row">\n                <div class="large-12 columns graph_legend">\n                  <h3 class="subheader"><small>'+r((e.tr||t&&t.tr||i).call(t,"Memory GB hours",{name:"tr",hash:{},data:n}))+'</small></h3>\n                </div>\n                <div class="large-12 columns">\n                  <div class="large-12 columns centered graph text-center" id="acct_mem_graph" style="height: 100px;">\n',s=this.invokePartial(a["./empty-graphs"],"                    ","./empty-graphs",t,void 0,e,a,n),null!=s&&(o+=s),o+"                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n      </div>\n    </div>\n    <br>\n    <br>"},usePartial:!0,useData:!0});return e.registerPartial("tabs/provision-tab/dashboard/users",a),a}),define("tabs/provision-tab",["require","foundation.core","foundation.accordion","foundation-datatables","utils/locale","sunstone-config","opennebula","sunstone","utils/notifier","utils/resource-select","utils/quotas/quota-widgets","utils/quotas/quota-defaults","utils/accounting","utils/showback","utils/humanize","utils/quotas/quota-limits","utils/graphs","./provision-tab/users/quota-widget","./provision-tab/vms/list","./provision-tab/templates/list","./provision-tab/users/list","./provision-tab/flows/list","hbs!./provision-tab/content","hbs!./provision-tab/header","hbs!./provision-tab/dashboard/quotas","hbs!./provision-tab/dashboard/vdc-quotas","hbs!./provision-tab/dashboard/vms","hbs!./provision-tab/dashboard/vdc-vms","hbs!./provision-tab/dashboard/users","hbs!./provision-tab/group/info","./provision-tab/tabId"],function(t){function e(t,e){t.off();var a=[];$.each(e,function(t,e){var n=e.split("|"),s={name:t,mandatory:n[0],type:n[1],description:n[2]};switch(n[1]){case"text":a.push(s);break;case"password":a.push(s)}}),a.length>0?(t.html('<br><div class="row"><div class="large-12 large-centered columns"><h3 class="subheader text-right"><span class="left"><i class="fa fa-th fa-gears"></i>&emsp;'+b.tr("Custom Attributes")+'</span></h3><br></div></div><br><div class="provision_custom_attributes"></div><br><br><br>'),$.each(a,function(e,a){$(".provision_custom_attributes",t).append('<br><div class="row"><div class="large-10 large-centered columns"><label style="font-size: 16px"><i class="fa fa-asterisk" style="color:#0099c3"/> '+a.description+'<input type="'+a.type+'" attr_name="'+a.name+'" class="provision_custom_attribute provision-input" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/></label></div></div>')})):t.html("")}function a(t,e,a){t.off();var n=e.min_vms||1,s=e.max_vms||20;t.html('<br><div class="row"><div class="large-12 large-centered columns"><h3 class="subheader text-right"><span class="left"><i class="fa fa-th fa-lg"></i>&emsp;'+b.tr("Cardinality")+'</span></h3><br></div></div><br><br><div class="row"><div class="large-12 columns"><div class="row"><div class="large-2 text-center columns"><span class="cardinality_value" style="color: #777; font-size:40px">'+e.cardinality+'</span><br><span style="color: #999;">'+b.tr("VMs")+'</span></div><div class="large-6 columns"><div class="cardinality_slider_div"><span class="" style="color: #777;">'+b.tr("Change cardinality")+'</span><br><div class="range-slider radius cardinality_slider" data-slider data-options="start: 1; end: 50;"><span class="range-slider-handle"></span><span class="range-slider-active-segment"></span><input type="hidden"></div><span class="left" style="color: #999;">'+n+'</span><span class="right" style="color: #999;">'+s+'</span></div><div class="cardinality_no_slider_div"><br><br><span class="" style="color: #999;">'+b.tr("The cardinality for this role cannot be changed")+'</span></div></div><div class="large-4 columns text-center provision_create_service_cost_div hidden"><span class="cost_value" style="color: #777; font-size:40px"></span><br><span style="color: #999;">'+b.tr("COST")+" / "+b.tr("HOUR")+"</span></div></div></div></div>");var i=a.VMTEMPLATE.TEMPLATE,r=0;if(i.CPU_COST||i.MEMORY_COST&&v.isFeatureEnabled("showback")){$(".provision_create_service_cost_div").show(),i.CPU&&i.CPU_COST&&(r+=i.CPU*i.CPU_COST,$(".cost_value",t).data("CPU_COST",i.CPU_COST)),i.MEMORY&&i.MEMORY_COST&&(r+=i.MEMORY*i.MEMORY_COST,$(".cost_value",t).data("MEMORY_COST",i.MEMORY_COST)),$(".provision_create_service_cost_div",t).data("cost",r);var o=r*parseInt(e.cardinality);$(".cost_value",t).html(o.toFixed(2))}else $(".provision_create_service_cost_div").hide();s>n?($(".cardinality_slider",t).attr("data-options","start: "+n+"; end: "+s+";"),t.foundation(),$(".cardinality_slider_div",t).show(),$(".cardinality_no_slider_div",t).hide(),$(".cardinality_slider",t).foundation("slider","set_value",e.cardinality),$(".cardinality_slider",t).on("change",function(){$(".cardinality_value",t).html($(this).attr("data-slider"));var e=$(".provision_create_service_cost_div",t).data("cost")*$(this).attr("data-slider");$(".cost_value",t).html(e.toFixed(2))})):($(".cardinality_slider_div",t).hide(),$(".cardinality_no_slider_div",t).show())}function n(t,e){t.off();var a,n;e.MEMORY>1e3?(a=Math.floor(e.MEMORY/1024),n="GB"):(a=e.MEMORY?e.MEMORY:"-",n="MB"),t.html('<br><div class="row"><div class="large-12 large-centered columns"><h3 class="subheader text-right"><span class="left"><i class="fa fa-laptop fa-lg"></i>&emsp;'+b.tr("Capacity")+'</span></h3><br></div></div><br><div class="row"><div class="large-12 large-centered columns"><div class="row text-center"><div class="large-4 columns"><span class="cpu_value" style="color: #777; font-size:60px">'+(e.CPU?e.CPU:"-")+'</span><br><span style="color: #999;">'+b.tr("CPU")+'</span></div><div class="large-4 columns"><span class="memory_value" style="color: #777; font-size:60px">'+a+'</span> <span class="memory_unit" style="color: #777; font-size:30px">'+n+'</span><br><span style="color: #999;">'+b.tr("MEMORY")+'</span></div><div class="large-4 columns provision_create_template_cost_div hidden"><span class="cost_value" style="color: #777; font-size:60px"></span><br><span style="color: #999;">'+b.tr("COST")+" / "+b.tr("HOUR")+"</span></div></div></div></div>"+(v.provision.create_vm.isEnabled("capacity_select")&&"NO"!=e.SUNSTONE_CAPACITY_SELECT?'<br><br><div class="row"><div class="large-12 large-centered columns"><dl class="accordion" data-accordion="provision_accordion_'+z+'"><dd class="accordion-navigation"><a href="#provision_instance_type_dd_'+z+'" class="button large-12 medium radius" style="color: #555;">'+b.tr("Change Capacity")+'</a><div id="provision_instance_type_dd_'+z+'" class="content"><div class="row"><div class="large-12 large-centered columns"><h3 class="subheader text-right"><input type="search" class="provision-search-input right" placeholder="Search"/></h3><br></div></div><div class="row"><div class="large-12 large-centered columns"><table class="provision_instance_types_table"><thead class="hidden"><tr><th>'+b.tr("Name")+'</th></tr></thead><tbody class="hidden"></tbody></table><br></div></div></div></dd></dl></div></div>':"")+"<br>");var s=0;if(e.CPU_COST||e.MEMORY_COST&&v.isFeatureEnabled("showback")?($(".provision_create_template_cost_div").show(),e.CPU&&e.CPU_COST&&(s+=e.CPU*e.CPU_COST,$(".cost_value").data("CPU_COST",e.CPU_COST)),e.MEMORY&&e.MEMORY_COST&&(s+=e.MEMORY*e.MEMORY_COST,$(".cost_value").data("MEMORY_COST",e.MEMORY_COST)),$(".cost_value").html(s.toFixed(2))):$(".provision_create_template_cost_div").hide(),v.provision.create_vm.isEnabled("capacity_select")&&"NO"!=e.SUNSTONE_CAPACITY_SELECT){z+=1;var i=$(".provision_instance_types_table",t).dataTable({iDisplayLength:6,sDom:'<"H">t<"F"lp>',bSort:!1,aLengthMenu:[[6,12,36,72],[6,12,36,72]],aoColumnDefs:[{bVisible:!1,aTargets:["all"]}],aoColumns:[{mDataProp:"name"}],fnPreDrawCallback:function(){return 0==this.$("tr",{filter:"applied"}).length?this.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+b.tr("There are no instance_types available. Please contact your cloud administrator")+"</span></div>"):$(".provision_instance_types_table",t).html('<ul class="provision_instance_types_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center"></ul>'),!0},fnRowCallback:function(e,a){var n=a,s=$('<li><ul class="provision-pricing-table hoverable only-one" cpu="'+n.cpu+'" memory="'+n.memory+'"><li class="provision-title" title="'+n.name+'">'+n.name+'</li><li class="provision-bullet-item"><span style="font-size: 40px"><i class="fa fa-fw fa-laptop"/>&emsp;<span style="vertical-align: middle; font-size:14px">x'+n.cpu+" - "+(n.memory>1e3?Math.floor(n.memory/1024)+"GB":n.memory+"MB")+'</span></span></li><li class="provision-description">'+(n.description||"")+"</li></ul></li>").appendTo($(".provision_instance_types_ul",t));return $(".provision-pricing-table",s).data("opennebula",n),e}});$(".provision-search-input",t).on("keyup",function(){i.fnFilter($(this).val())}),$(".provision-search-input",t).on("change",function(){i.fnFilter($(this).val())}),t.on("click",".provision-pricing-table.only-one",function(){$(".cpu_value",t).html($(this).attr("cpu"));var e,a;if($(this).attr("memory")>1e3?(e=Math.floor($(this).attr("memory")/1024),a="GB"):(e=$(this).attr("memory"),a="MB"),$(".memory_value",t).html(e),$(".memory_unit",t).html(a),v.isFeatureEnabled("showback")){var n=0;$(".cost_value").data("CPU_COST")&&(n+=$(this).attr("cpu")*$(".cost_value").data("CPU_COST")),$(".cost_value").data("MEMORY_COST")&&(n+=$(this).attr("memory")*$(".cost_value").data("MEMORY_COST")),$(".cost_value").html(n.toFixed(2))}$(".accordion a",t).first().trigger("click")}),$(document).foundation(),p(i)}}function s(t,e,a){t.off();var n;n=e?'<span class="selected_network" template_nic=\''+JSON.stringify(e)+'\'><span style="color: #999; font-size: 14px">'+b.tr("INTERFACE")+'</span>&emsp;&emsp;<span style="color: #777;">'+(e.NETWORK||e.NETWORK_ID)+'</span></span><span class="has-tip right provision_remove_nic" style="cursor: pointer;"><i class="fa fa-times"/></span><span class="has-tip right" style="cursor: pointer; margin-right:10px"><i class="fa fa-pencil"/></span>':a?'<span style="color: #777; font-size: 16px">'+a.description+'</span><br><span class="selected_network only-not-active" attr_name=\''+a.name+'\' style="color: #777;"><span style="color: #999; font-size: 14px">'+b.tr("INTERFACE")+'</span>&emsp;&emsp;<span class="button radius small">'+b.tr("Select a Network")+'</span></span><span class="only-active" style="color:#555">'+b.tr("Select a Network for this interface")+'</span><span class="has-tip right only-not-active" style="cursor: pointer; margin-right:10px"><i class="fa fa-pencil"/></span>':'<span class="selected_network only-not-active" style="color: #777;"><span style="color: #999; font-size: 14px">'+b.tr("INTERFACE")+'</span>&emsp;&emsp;<span class="button radius small">'+b.tr("Select a Network")+'</span></span><span class="only-active" style="color:#555">'+b.tr("Select a Network for this interface")+'</span><span class="has-tip right provision_remove_nic" style="cursor: pointer;"><i class="fa fa-times"/></span><span class="has-tip right only-not-active" style="cursor: pointer; margin-right:10px"><i class="fa fa-pencil"/></span>';var s=$('<dd style="border-bottom: 1px solid #efefef;" class="accordion-navigation"><a href="#provision_accordion_dd_'+G+'" style="background: #fff; font-size: 24px">'+n+'</a><div id="provision_accordion_dd_'+G+'" class="content"><div class="row"><div class="large-12 large-centered columns"><h3 class="subheader text-right"><input type="search" class="provision-search-input right" placeholder="Search"/></h3><br></div></div><div class="row"><div class="large-12 large-centered columns"><table class="provision_networks_table"><thead class="hidden"><tr><th>'+b.tr("ID")+"</th><th>"+b.tr("Name")+'</th></tr></thead><tbody class="hidden"></tbody></table><br></div></div></div></dd>').appendTo(t);G+=1;var i=$(".provision_networks_table",s).dataTable({iDisplayLength:6,sDom:'<"H">t<"F"lp>',aLengthMenu:[[6,12,36,72],[6,12,36,72]],aoColumnDefs:[{bVisible:!1,aTargets:["all"]}],aoColumns:[{mDataProp:"VNET.ID"},{mDataProp:"VNET.NAME"}],fnPreDrawCallback:function(){return 0==this.$("tr",{filter:"applied"}).length?this.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+b.tr("There are no networks available. Please contact your cloud administrator")+"</span></div>"):$(".provision_networks_table",s).html('<ul class="provision_networks_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center"></ul>'),!0},fnRowCallback:function(t,e){var a=e.VNET;return $(".provision_networks_ul",s).append('<li><ul class="provision-pricing-table hoverable more-than-one" opennebula_id="'+a.ID+'" opennebula_name="'+a.NAME+'"><li class="provision-title" title="'+a.NAME+'">'+a.NAME+'</li><li class="provision-bullet-item"><i class="fa fa-fw fa-globe" style="font-size:40px;"/></li><li class="provision-description">'+(a.TEMPLATE.DESCRIPTION||"...")+"</li></ul></li>"),t}});$(".provision-search-input",s).on("keyup",function(){i.fnFilter($(this).val())}),$(".provision-search-input",s).on("change",function(){i.fnFilter($(this).val())}),s.on("click",".provision-pricing-table.more-than-one",function(){$(".selected_network",s).html('<span style="color: #999; font-size: 14px">'+b.tr("INTERFACE")+'</span>&emsp;&emsp;<span style="color: #777;">'+$(this).attr("opennebula_name")+"</span>"),$(".selected_network",s).attr("opennebula_id",$(this).attr("opennebula_id")),$(".selected_network",s).removeAttr("template_nic"),$("a",s).first().trigger("click")}),s.on("click",".provision_remove_nic",function(){return s.remove(),!1}),e||a||$("a",s).trigger("click"),h(i)}function i(t,e){t.off(),t.html('<br><div class="row"><div class="large-12 columns"><h3 class="subheader text-right"><span class="left"><i class="fa fa-globe fa-lg"></i>&emsp;'+b.tr("Network")+'</span></h3><br></div></div><br><div class="row"><div class="large-12 large-centered columns"><dl class="accordion provision_nic_accordion" data-accordion="provision_accordion_'+V+'"></dl><br><a class="button large-12 medium radius secondary provision_add_network_interface" style="padding: 1rem; color: #555; '+(e?"display:none;":"")+'">'+b.tr("Add another Network Interface")+"</a></div></div><br>"),V+=1,$(".provision_add_network_interface",t).on("click",function(){s($(".accordion",t))}),$(document).foundation()}function r(){if($(".section_content").hide(),$("#provision_dashboard").fadeIn(),$("#provision_dashboard").html(""),v.provision.dashboard.isEnabled("quotas")&&($("#provision_dashboard").append(O()),g.User.show({data:{id:"-1"},success:function(t,e){var a=e.USER;if(T.initEmptyQuotas(a),!$.isEmptyObject(a.VM_QUOTA)){var n=QuotasDefault.default_quotas(a.DEFAULT_USER_QUOTAS),s=T.quotaInfo(a.VM_QUOTA.VM.VMS_USED,a.VM_QUOTA.VM.VMS,n.VM_QUOTA.VM.VMS,!0);$("#provision_dashboard_rvms_percentage").html(s.percentage),$("#provision_dashboard_rvms_str").html(s.str),$("#provision_dashboard_rvms_meter").css("width",s.percentage+"%");var i=T.quotaMBInfo(a.VM_QUOTA.VM.MEMORY_USED,a.VM_QUOTA.VM.MEMORY,n.VM_QUOTA.VM.MEMORY,!0);$("#provision_dashboard_memory_percentage").html(i.percentage),$("#provision_dashboard_memory_str").html(i.str),$("#provision_dashboard_memory_meter").css("width",i.percentage+"%");var r=T.quotaFloatInfo(a.VM_QUOTA.VM.CPU_USED,a.VM_QUOTA.VM.CPU,n.VM_QUOTA.VM.CPU,!0);$("#provision_dashboard_cpu_percentage").html(r.percentage),$("#provision_dashboard_cpu_str").html(r.str),$("#provision_dashboard_cpu_meter").css("width",r.percentage+"%")}}})),v.provision.dashboard.isEnabled("vdcquotas")&&($("#provision_dashboard").append(R()),g.Group.show({data:{id:"-1"},success:function(t,e){var a=e.GROUP;if(T.initEmptyQuotas(a),!$.isEmptyObject(a.VM_QUOTA)){var n=E.default_quotas(a.DEFAULT_GROUP_QUOTAS),s=T.quotaInfo(a.VM_QUOTA.VM.VMS_USED,a.VM_QUOTA.VM.VMS,n.VM_QUOTA.VM.VMS,!0);$("#provision_dashboard_vdc_rvms_percentage").html(s.percentage),$("#provision_dashboard_vdc_rvms_str").html(s.str),$("#provision_dashboard_vdc_rvms_meter").css("width",s.percentage+"%");var i=T.quotaMBInfo(a.VM_QUOTA.VM.MEMORY_USED,a.VM_QUOTA.VM.MEMORY,n.VM_QUOTA.VM.MEMORY,!0);$("#provision_dashboard_vdc_memory_percentage").html(i.percentage),$("#provision_dashboard_vdc_memory_str").html(i.str),$("#provision_dashboard_vdc_memory_meter").css("width",i.percentage+"%");var r=T.quotaFloatInfo(a.VM_QUOTA.VM.CPU_USED,a.VM_QUOTA.VM.CPU,n.VM_QUOTA.VM.CPU,!0);$("#provision_dashboard_vdc_cpu_percentage").html(r.percentage),$("#provision_dashboard_vdc_cpu_str").html(r.str),$("#provision_dashboard_vdc_cpu_meter").css("width",r.percentage+"%")}}})),v.provision.dashboard.isEnabled("vms")){$("#provision_dashboard").append(L());var t=Math.floor((new Date).getTime()/1e3);t-=604800;var e=-1,a={start_time:t,end_time:e,userfilter:config.user_id},n=!0;g.VM.accounting({success:function(t,e){S.fillAccounting($("#dashboard_vm_accounting"),t,e,n)},error:w.onError,data:a}),g.VM.list({timeout:!0,success:function(t,e){var a=0,n=0,s=0,i=0,r=0;$.each(e,function(t,e){if(e.VM.UID==config.user_id){var o=A.state(e.VM);switch(a+=1,o.color){case"deploying":r+=1;break;case"error":i+=1;break;case"running":n+=1;break;case"powering_off":s+=1;break;case"off":s+=1}}});var o=$("#provision_vms_dashboard");$("#provision_dashboard_total",o).html(a),$("#provision_dashboard_running",o).html(n),$("#provision_dashboard_off",o).html(s),$("#provision_dashboard_error",o).html(i),$("#provision_dashboard_deploying",o).html(r)},error:w.onError})}if(v.provision.dashboard.isEnabled("vdcvms")){$("#provision_dashboard").append(N());var t=Math.floor((new Date).getTime()/1e3);t-=604800;var e=-1,a={start_time:t,end_time:e},n=!0;g.VM.accounting({success:function(t,e){S.fillAccounting($("#dashboard_vdc_vm_accounting"),t,e,n)},error:w.onError,data:a}),g.VM.list({timeout:!0,success:function(t,e){var a=0,n=0,s=0,i=0,r=0;$.each(e,function(t,e){var o=A.state(e.VM);switch(a+=1,o.color){case"deploying":r+=1;break;case"error":i+=1;break;case"running":n+=1;break;case"powering_off":s+=1;break;case"off":s+=1}});var o=$("#provision_vdc_vms_dashboard");$("#provision_dashboard_vdc_total",o).html(a),$("#provision_dashboard_vdc_running",o).html(n),$("#provision_dashboard_vdc_off",o).html(s),$("#provision_dashboard_vdc_error",o).html(i),$("#provision_dashboard_vdc_deploying",o).html(r)},error:w.onError})}if(v.provision.dashboard.isEnabled("users")){$("#provision_dashboard").append(U());var t=Math.floor((new Date).getTime()/1e3);t-=604800;var e=-1,a={start_time:t,end_time:e,group:config.user_gid},n=!0;g.VM.accounting({success:function(t,e){S.fillAccounting($("#dashboard_vdc_user_accounting"),t,e,n)},error:w.onError,data:a}),g.User.list({timeout:!0,success:function(t,e){var a=e.length||0,n=$("#provision_users_dashboard");$("#provision_dashboard_users_total",n).html(a)},error:w.onError})}}function o(t,e){var a=e.GROUP,n=$("#provision_manage_vdc"),s=E.default_quotas(a.DEFAULT_GROUP_QUOTAS),i=T.initQuotasPanel(a,s,"#provision_vdc_quotas_div",!1);$("#provision_vdc_quotas_div").html(i),T.setupQuotasPanel(a,"#provision_vdc_quotas_div",!1,"Group"),$("#provision_info_vdc_group_acct",n).html(S.html()),S.setup($("#provision_info_vdc_group_acct",n),{fixed_group:a.ID,init_group_by:"user"}),v.isFeatureEnabled("showback")&&($("#provision_info_vdc_group_showback",n).html(I.html()),I.setup($("#provision_info_vdc_group_showback",n),{fixed_user:"",fixed_group:a.ID})),$("#acct_placeholder",n).hide()}function l(){g.Action.clear_cache("VMTEMPLATE"),M.updateDatatable(provision_system_templates_datatable),provision_system_templates_datatable.fnFilter("^-$",2,!0,!1),M.updateDatatable(provision_vdc_templates_datatable),provision_vdc_templates_datatable.fnFilter("^(?!-$)",2,!0,!1),provision_vdc_templates_datatable.fnFilter("^1$",3,!0,!1),v.isTabPanelEnabled("provision-tab","templates")&&(M.updateDatatable(provision_saved_templates_datatable),provision_saved_templates_datatable.fnFilter("^(?!-$)",2,!0,!1),provision_saved_templates_datatable.fnFilter("^0$",3,!0,!1)),$(".provision_accordion_template .selected_template").hide(),$(".provision_accordion_template .select_template").show(),$("#provision_create_vm .provision_capacity_selector").html(""),$("#provision_create_vm .provision_network_selector").html(""),$("#provision_create_vm .provision_custom_attributes_selector").html(""),$("#provision_create_vm dd:not(.active) a[href='#provision_dd_template']").trigger("click"),$(".section_content").hide(),$("#provision_create_vm").fadeIn()}function c(){f(provision_flow_templates_datatable);var t=$("#provision_create_flow");$("#provision_customize_flow_template",t).hide(),$("#provision_customize_flow_template",t).html(""),$(".provision_network_selector",t).html(""),$(".provision_custom_attributes_selector",t).html(""),$(".provision_accordion_flow_template .selected_template",t).hide(),$(".provision_accordion_flow_template .select_template",t).show(),$("dd:not(.active) a[href='#provision_dd_flow_template']",t).trigger("click"),$(".alert-box-error",t).hide(),$(".section_content").hide(),$("#provision_create_flow").fadeIn()}function d(){$(".section_content").hide(),$("#provision_create_user").fadeIn(),$(document).foundation()}function u(){$(".section_content").hide(),$("#provision_manage_vdc").fadeIn(),y.runAction("Provision.Group.show","-1")}function p(t){t.fnClearTable(!0),config.instance_types&&0!=config.instance_types.length?t.fnAddData(config.instance_types):t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+b.tr("There are no instance types available")+"</span></div>")}function h(t){t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>'),g.Network.list({timeout:!0,success:function(e,a){t.fnClearTable(!0),0==a.length?t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+b.tr("There are no networks available.")+"</span></div>"):t.fnAddData(a)},error:w.onError})}function f(t,e){t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>'),setTimeout(function(){g.ServiceTemplate.list({timeout:!0,success:function(e,a){t.fnClearTable(!0),0==a.length?t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+b.tr("There are no templates available")+"</span></div>"):t.fnAddData(a)},error:w.onError})},e)}function m(){g.Action.clear_cache("USER"),k.show(0);var t=$("#provision_create_user");$("#username",t).val(""),$("#password",t).val(""),$("#repeat_password",t).val(""),x.reset(t),$(".alert-box-error",t).hide(),$(".alert-box-error",t).html("")}function _(){$(document).ready(function(){function t(t,e){var a,n=t.VMTEMPLATE;a=n.TEMPLATE.LOGO?'<span class="provision-logo" href="#"><img  src="'+n.TEMPLATE.LOGO+'"></span>':'<span style="color: #bfbfbf; font-size: 60px;"><i class="fa fa-fw fa-file-text-o"/></span>';var s=$('<li><ul class="provision-pricing-table hoverable only-one" opennebula_id="'+n.ID+'"><li class="provision-title" title="'+n.NAME+'">'+n.NAME+'</li><li style="height: 85px" class="provision-bullet-item">'+a+'</li><li class="provision-description">'+(n.TEMPLATE.DESCRIPTION||"...")+"</li></ul></li>").appendTo($("#"+e+"_ul"));$(".provision-pricing-table",s).data("opennebula",t)}function o(t,e){return 0==t.$("tr",{filter:"applied"}).length?t.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+b.tr("There are no templates available")+"</span></div>"):$("#"+e+"_table").html('<ul id="'+e+'_ul" class="large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center"></ul>'),!0}var p="provision-tab",h=$("#"+p);if(v.isTabEnabled(p)){$(".right-header").prepend(P({logo:v.provision.logo})),$(".left-content").remove(),$(".right-content").addClass("large-centered small-centered"),$("#footer").removeClass("right"),$("#footer").addClass("large-centered small-centered"),$("#provision_logout").click(function(){return g.Auth.logout({success:function(){window.location.href="login"}}),!1}),A.generate($(".provision_vms_list_section"),{active:!0}),v.isTabPanelEnabled("provision-tab","templates")&&M.generate($(".provision_templates_list_section"),{active:!0}),D.generate($(".provision_flows_list_section"),{active:!0}),k.generate($(".provision_users_list_section"),{active:!0}),$(".provision_image_header").on("click",function(){y.showTab(F),$("li",".provision-header").removeClass("active"),r()}),$(".configuration").on("click",function(){$("li",".provision-header").removeClass("active")}),r(),$(".provision-header").on("click","li",function(){y.showTab(F),$("li",".provision-header").removeClass("active"),$(this).closest("li").addClass("active")}),$(document).on("click",".provision_vms_list_button",function(){g.Action.clear_cache("VM"),A.show(0)}),$(document).on("click",".provision_templates_list_button",function(){g.Action.clear_cache("VMTEMPLATE"),M.show(0)}),$(document).on("click",".provision_flows_list_button",function(){g.Action.clear_cache("SERVICE"),D.show(0)}),$(document).on("click",".provision_users_list_button",function(){g.Action.clear_cache("USER"),k.show(0)}),provision_system_templates_datatable=$("#provision_system_templates_table").dataTable({iDisplayLength:6,sDom:'<"H">t<"F"lp>',aLengthMenu:[[6,12,36,72],[6,12,36,72]],aoColumnDefs:[{bVisible:!1,aTargets:["all"]}],aoColumns:[{mDataProp:"VMTEMPLATE.ID"},{mDataProp:"VMTEMPLATE.NAME"},{mDataProp:"VMTEMPLATE.TEMPLATE.SAVED_TEMPLATE_ID",sDefaultContent:"-"}],fnPreDrawCallback:function(){o(this,"provision_system_templates")},fnRowCallback:function(e,a){return t(a,"provision_system_templates"),e}}),provision_vdc_templates_datatable=$("#provision_vdc_templates_table").dataTable({iDisplayLength:6,sDom:'<"H">t<"F"lp>',aLengthMenu:[[6,12,36,72],[6,12,36,72]],aoColumnDefs:[{bVisible:!1,aTargets:["all"]}],aoColumns:[{mDataProp:"VMTEMPLATE.ID"},{mDataProp:"VMTEMPLATE.NAME"},{mDataProp:"VMTEMPLATE.TEMPLATE.SAVED_TEMPLATE_ID",sDefaultContent:"-"},{mDataProp:"VMTEMPLATE.PERMISSIONS.GROUP_U"}],fnPreDrawCallback:function(){o(this,"provision_vdc_templates")},fnRowCallback:function(e,a){return t(a,"provision_vdc_templates"),e}}),provision_saved_templates_datatable=$("#provision_saved_templates_table").dataTable({iDisplayLength:6,sDom:'<"H">t<"F"lp>',aLengthMenu:[[6,12,36,72],[6,12,36,72]],aoColumnDefs:[{bVisible:!1,aTargets:["all"]}],aoColumns:[{mDataProp:"VMTEMPLATE.ID"},{mDataProp:"VMTEMPLATE.NAME"},{mDataProp:"VMTEMPLATE.TEMPLATE.SAVED_TEMPLATE_ID",sDefaultContent:"-"},{mDataProp:"VMTEMPLATE.PERMISSIONS.GROUP_U"}],fnPreDrawCallback:function(){o(this,"provision_saved_templates")},fnRowCallback:function(e,a){return t(a,"provision_saved_templates"),e}}),$("#provision_create_template_search").on("keyup",function(){provision_system_templates_datatable.fnFilter($(this).val()),provision_saved_templates_datatable.fnFilter($(this).val()),provision_vdc_templates_datatable.fnFilter($(this).val())}),$("#provision_create_template_search").on("change",function(){provision_system_templates_datatable.fnFilter($(this).val()),provision_saved_templates_datatable.fnFilter($(this).val()),provision_vdc_templates_datatable.fnFilter($(this).val())}),$("#provision_create_template_refresh_button").click(function(){g.Action.clear_cache("VMTEMPLATE"),M.updateDatatable(provision_system_templates_datatable),M.updateDatatable(provision_saved_templates_datatable),M.updateDatatable(provision_vdc_templates_datatable)}),h.on("click","#provision_create_vm .provision_select_template .provision-pricing-table.only-one",function(){var t=$("#provision_create_vm");if($(this).hasClass("selected"))$(".provision_network_selector",t).html(""),$(".provision_capacity_selector",t).html(""),$(".provision_accordion_template .selected_template").hide(),$(".provision_accordion_template .select_template").show();else{var a=($(this).attr("opennebula_id"),$(this).data("opennebula")),r=a.VMTEMPLATE.TEMPLATE.NIC,o=[];$.isArray(r)?o=r:$.isEmptyObject(r)||(o=[r]),$(".provision_accordion_template .selected_template").show(),$(".provision_accordion_template .select_template").hide(),$(".provision_accordion_template .selected_template_name").html(a.VMTEMPLATE.NAME),$(".provision_accordion_template .selected_template_logo").html(a.VMTEMPLATE.TEMPLATE.LOGO?'<img  src="'+a.VMTEMPLATE.TEMPLATE.LOGO+'">':'<i class="fa fa-file-text-o fa-lg"/>&emsp;'),$(".provision_accordion_template a").first().trigger("click"),n($(".provision_capacity_selector",t),a.VMTEMPLATE.TEMPLATE),v.provision.create_vm.isEnabled("network_select")&&"NO"!=a.VMTEMPLATE.TEMPLATE.SUNSTONE_NETWORK_SELECT?(i($(".provision_network_selector",t)),$.each(o,function(e,a){s($(".provision_nic_accordion",t),a)})):$(".provision_network_selector",t).html(""),a.VMTEMPLATE.TEMPLATE.USER_INPUTS?e($(".provision_custom_attributes_selector",t),a.VMTEMPLATE.TEMPLATE.USER_INPUTS):$(".provision_custom_attributes_selector",t).html("")}}),h.on("click","#provision_create_vm .provision-pricing-table.only-one",function(){$(this).hasClass("selected")?$(this).removeClass("selected"):($(".provision-pricing-table",$(this).parents(".large-block-grid-3,.large-block-grid-2")).removeClass("selected"),$(this).addClass("selected"))}),$("#provision_create_vm").submit(function(){var t,e=$(this),a=$("#vm_name",e).val(),n=$(".tabs-content .content.active .selected",e).attr("opennebula_id"),s=[];$(".selected_network",e).each(function(){t=$(this).attr("template_nic")?JSON.parse($(this).attr("template_nic")):$(this).attr("opennebula_id")?{network_id:$(this).attr("opennebula_id")}:void 0,t&&s.push(t)});var i=$(".provision_instance_types_ul .selected",e);if(!n)return $(".alert-box-error",e).fadeIn().html(b.tr("You must select at least a template configuration")),!1;var r={vm_name:a,template:{}};if(s.length>0&&(r.template.nic=s),i.length>0){var o=i.data("opennebula");delete o.name,$.extend(r.template,o)}var l=!1,c={};return $(".provision_custom_attributes",$(this))&&$(".provision_custom_attribute",$(".provision_custom_attributes",$(this))).each(function(){$(this).val()?($(this).parent("label").css("color","#777"),c[$(this).attr("attr_name")]=$(this).val()):($(this).parent("label").css("color","red"),l=!0)}),l?($(".alert-box-error",$(this)).fadeIn().html(b.tr("You have not specified all the Custom Atrributes for this VM")),!1):($.isEmptyObject(c)||$.extend(r.template,c),y.runAction("Provision.instantiate",n,r),!1)}),$(document).on("click",".provision_create_vm_button",function(){l()}),provision_flow_templates_datatable=$("#provision_flow_templates_table").dataTable({iDisplayLength:6,sDom:'<"H">t<"F"lp>',aLengthMenu:[[6,12,36,72],[6,12,36,72]],aaSorting:[[1,"asc"]],aoColumnDefs:[{bVisible:!1,aTargets:["all"]}],aoColumns:[{mDataProp:"DOCUMENT.ID"},{mDataProp:"DOCUMENT.NAME"}],fnPreDrawCallback:function(){return 0==this.$("tr",{filter:"applied"}).length?this.html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa fa-info-circle fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999">'+b.tr("There are no templates available")+"</span></div>"):$("#provision_flow_templates_table").html('<ul id="provision_flow_templates_ul" class="large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center"></ul>'),!0
+},fnRowCallback:function(t,e){var a,n=e.DOCUMENT,s=n.TEMPLATE.BODY,i="";s.roles&&$.each(s.roles,function(t,e){i+='<li class="provision-bullet-item text-left" style="margin-left: 10px;margin-right: 10px;"><i class="fa fa-fw fa-cube"/>&emsp;'+e.name+'<span class="right">'+e.cardinality+" VMs</span></li>"}),a=s.LOGO?'<span class="provision-logo" href="#"><img  src="'+s.LOGO+'"></span>':'<span style="color: #bfbfbf; font-size: 60px;"><i class="fa fa-fw fa-cubes"/></span>';var r=$('<li><ul class="provision-pricing-table hoverable only-one" opennebula_id="'+n.ID+'"><li class="provision-title" title="'+n.NAME+'">'+n.NAME+'</li><li style="height: 85px" class="provision-bullet-item">'+a+"</li>"+i+'<li class="provision-description" style="padding-top:0px">'+(n.TEMPLATE.DESCRIPTION||"")+"</li></ul></li>").appendTo($("#provision_flow_templates_ul"));return $(".provision-pricing-table",r).data("opennebula",e),t}}),$("#provision_create_flow_template_search").on("keyup",function(){provision_flow_templates_datatable.fnFilter($(this).val())}),$("#provision_create_flow_template_search").on("change",function(){provision_flow_templates_datatable.fnFilter($(this).val())}),$("#provision_create_flow_template_refresh_button").click(function(){g.Action.clear_cache("SERVICE_TEMPLATE"),f(provision_flow_templates_datatable)}),h.on("click",".provision_select_flow_template .provision-pricing-table.only-one",function(){var t=$("#provision_create_flow");if($(this).hasClass("selected"))$("#provision_customize_flow_template").hide(),$("#provision_customize_flow_template").html(""),$(".provision_network_selector",t).html(""),$(".provision_custom_attributes_selector",t).html(""),$(".provision_accordion_flow_template .selected_template").hide(),$(".provision_accordion_flow_template .select_template").show();else{$("#provision_customize_flow_template").show(),$("#provision_customize_flow_template").html("");var n=$(this).data("opennebula"),r=n.DOCUMENT.TEMPLATE.BODY;$(".provision_accordion_flow_template .selected_template").show(),$(".provision_accordion_flow_template .select_template").hide(),$(".provision_accordion_flow_template .selected_template_name").html(r.name),$(".provision_accordion_flow_template .selected_template_logo").html('<i class="fa fa-cubes fa-lg"/>&emsp;'),$(".provision_accordion_flow_template a").first().trigger("click");var t=$("#provision_create_flow");if(r.custom_attrs){var o=[],l=[];$.each(r.custom_attrs,function(t,e){var a=e.split("|"),n={name:t,mandatory:a[0],type:a[1],description:a[2]};switch(a[1]){case"vnet_id":o.push(n);break;case"text":l.push(n);break;case"password":l.push(n)}}),o.length>0&&(i($(".provision_network_selector",t),!0),$.each(o,function(e,a){s($(".provision_nic_accordion",t),null,a)}))}else $(".provision_network_selector",t).html(""),$(".provision_custom_attributes_selector",t).html("");$.each(r.roles,function(t,n){var s=$('<div id="provision_create_flow_role_'+t+'" class="provision_create_flow_role"><div class="row"><div class="large-10 large-centered columns"><h2 class="subheader"><i class="fa fa-cube fa-lg"></i>&emsp;'+n.name+'</h2><br></div></div><div class="row"><div class="provision_cardinality_selector large-9 large-centered columns"></div></div><br><div class="row"><div class="provision_custom_attributes_selector large-9 large-centered columns"></div></div></div><br><br>').appendTo($("#provision_customize_flow_template"));s.data("opennebula",n);var i=n.vm_template,r="#provision_create_flow_role_"+t;g.Template.show({data:{id:i},success:function(t,i){var o=$(r);a($(".provision_cardinality_selector",s),n,i),i.VMTEMPLATE.TEMPLATE.USER_INPUTS?e($(".provision_custom_attributes_selector",o),i.VMTEMPLATE.TEMPLATE.USER_INPUTS):$(".provision_custom_attributes_selector",o).html("")}})}),$(document).foundation()}}),h.on("click","#provision_create_flow .provision-pricing-table.only-one",function(){$(this).hasClass("selected")?$(this).removeClass("selected"):($(".provision-pricing-table",$(this).parents(".large-block-grid-3,.large-block-grid-2")).removeClass("selected"),$(this).addClass("selected"))}),$("#provision_create_flow").submit(function(){var t=$(this),e=$("#flow_name",t).val(),a=$(".provision_select_flow_template .selected",t).attr("opennebula_id");if(!a)return $(".alert-box-error",t).fadeIn().html(b.tr("You must select at least a template configuration")),!1;var n={},s=!1;if($(".provision_nic_accordion",t)&&$(".selected_network",$(".provision_nic_accordion",t)).each(function(){$(this).attr("opennebula_id")?($(this).css("color","#777"),n[$(this).attr("attr_name")]=$(this).attr("opennebula_id")):($(this).css("color","red"),s=!0)}),s)return $(".alert-box-error",t).fadeIn().html(b.tr("You have not specified all the Networks for this Service")),!1;var i=[],r=!1;$(".provision_create_flow_role",t).each(function(){var t={};$(".provision_custom_attributes",$(this))&&$(".provision_custom_attribute",$(".provision_custom_attributes",$(this))).each(function(){$(this).val()?($(this).parent("label").css("color","#777"),t[$(this).attr("attr_name")]=$(this).val()):($(this).parent("label").css("color","red"),r=!0)});var e=$(this).data("opennebula");$.each(e.elasticity_policies,function(t,e){e.expression=htmlDecode(e.expression)}),i.push($.extend(e,{cardinality:$(".cardinality_value",$(this)).text(),user_inputs_values:t}))});var o={merge_template:{name:e,roles:i,custom_attrs_values:n}};return r?($(".alert-box-error",$(this)).fadeIn().html(b.tr("You have not specified all the Custom Atrributes for this Service")),!1):(y.runAction("Provision.Flow.instantiate",a,o),!1)}),$(".provision_create_flow_button").on("click",function(){c()}),$("#provision_vdc_info_button").on("click",function(){g.Action.clear_cache("GROUP"),u()});var m=$("#provision_create_user");x.setup(m),$('a[href="#provision_create_user_manual_quota"]',m).on("click",function(){$(".provision_rvms_quota_input",m).change(),$(".provision_memory_quota_input",m).change(),$(".provision_memory_quota_tmp_input",m).change(),$(".provision_cpu_quota_input",m).change()}),$("#provision_create_user").submit(function(){var t=$(this),e=$("#username",t).val(),a=$("#password",t).val(),n=$("#repeat_password",t).val(),s="core";if(!e.length||!a.length)return $(".alert-box-error",t).fadeOut(),$(".alert-box-error",t).fadeIn().html(b.tr("You have to provide a username and password")),!1;if(a!==n)return $(".alert-box-error",t).fadeOut(),$(".alert-box-error",t).fadeIn().html(b.tr("Passwords do not match")),!1;var i={user:{name:e,password:a,auth_driver:s}};return y.runAction("Provision.User.create",i),$(".alert-box-error",t).html('<div class="text-center"><span class="fa-stack fa-5x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span><br><br><span style="font-size: 18px; color: #999"></span></div>'),!1}),$(document).on("click",".provision_create_user_button",function(){d()})}})}t("foundation.core"),t("foundation.accordion"),t("foundation-datatables");var b=t("utils/locale"),v=t("sunstone-config"),g=t("opennebula"),y=t("sunstone"),w=t("utils/notifier"),T=(t("utils/resource-select"),t("utils/quotas/quota-widgets")),E=t("utils/quotas/quota-defaults"),S=t("utils/accounting"),I=t("utils/showback"),x=(t("utils/humanize"),t("utils/quotas/quota-limits"),t("utils/graphs"),t("./provision-tab/users/quota-widget")),A=t("./provision-tab/vms/list"),M=t("./provision-tab/templates/list"),k=t("./provision-tab/users/list"),D=t("./provision-tab/flows/list"),C=t("hbs!./provision-tab/content"),P=t("hbs!./provision-tab/header"),O=t("hbs!./provision-tab/dashboard/quotas"),R=t("hbs!./provision-tab/dashboard/vdc-quotas"),L=t("hbs!./provision-tab/dashboard/vms"),N=t("hbs!./provision-tab/dashboard/vdc-vms"),U=t("hbs!./provision-tab/dashboard/users"),F=(t("hbs!./provision-tab/group/info"),t("./provision-tab/tabId")),q={"Provision.User.create":{type:"create",call:g.User.create,callback:function(t,e){$("div#provision_create_user_manual_quota",$("#provision_create_user")).hasClass("active")?(quota_json=x.retrieve($("#provision_create_user")),y.runAction("Provision.User.set_quota",[e.USER.ID],quota_json)):m()},error:w.onError},"Provision.User.set_quota":{type:"multiple",call:g.User.set_quota,callback:function(){m()},error:w.onError},"Provision.Group.show":{type:"single",call:g.Group.show,callback:o,error:w.onError},"Provision.Flow.instantiate":{type:"single",call:g.ServiceTemplate.instantiate,callback:function(){g.Action.clear_cache("SERVICE"),D.show(0);var t=$("#provision_create_flow");$("#flow_name",t).val(""),$(".provision-pricing-table",t).removeClass("selected")},error:w.onError},"Provision.instantiate":{type:"single",call:g.Template.instantiate,callback:function(){g.Action.clear_cache("VM"),show_provision_vm_list(0);var t=$("#provision_create_vm");$("#vm_name",t).val(""),$(".provision_selected_networks").html(""),$(".provision-pricing-table",t).removeClass("selected"),$(".alert-box-error",t).hide(),$('a[href="#provision_system_templates_selector"]',t).click()},error:w.onError}};$(document).foundation();var z=0,V=0,G=0,B={tabId:F,list_header:"",actions:q,content:C(),setup:_};return B}),define("tabs/users-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"User.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"User.create_dialog":{type:"create_dialog",layout:"create"},"User.update_password":{type:"action",layout:"main_buttons",text:e.tr("Password")},"User.change_authentication":{type:"action",layout:"main_buttons",text:e.tr("Auth")},"User.quotas_dialog":{type:"action",layout:"main_buttons",text:e.tr("Quotas")},"User.chgrp":{type:"confirm_with_select",text:e.tr("Change group"),layout:"user_select",select:"Group",tip:e.tr("This will change the main group of the selected users. Select the new group")+":"},"User.addgroup":{type:"confirm_with_select",text:e.tr("Add to group"),layout:"user_select",select:"Group",tip:e.tr("This will add the user to a secondary group. Select the new group")+":"},"User.delgroup":{type:"confirm_with_select",text:e.tr("Remove from group"),layout:"user_select",select:"Group",tip:e.tr("This will remove the user from a secondary group. Select the group")+":"},"User.delete":{type:"confirm",text:e.tr("Delete"),layout:"del"}};return a}),define("hbs!utils/tab-datatable/empty-table",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="text-center" style="font-size: 18px; color: #999">\n  <br>\n  <span class="fa-stack fa-3x" style="color: #dfdfdf"> \n    <i class="fa fa-cloud fa-stack-2x"></i> \n    <i class="fa fa-info-circle fa-stack-1x fa-inverse"></i>\n  </span>\n  <br>\n  <span style=" color: #999">'+i((e.tr||t&&t.tr||s).call(t,"There is no data available",{name:"tr",hash:{},data:n}))+"</span>\n</div>\n<br>"},useData:!0});return e.registerPartial("utils/tab-datatable/empty-table",a),a}),function(t,e){"use strict";Foundation.libs.tooltip={name:"tooltip",version:"5.5.1",settings:{additional_inheritable_classes:[],tooltip_class:".tooltip",append_to:"body",touch_close_text:"Tap To Close",disable_for_touch:!1,hover_delay:0,show_on:"all",tip_template:function(t,e){return'<span data-selector="'+t+'" id="'+t+'" class="'+Foundation.libs.tooltip.settings.tooltip_class.substring(1)+'" role="tooltip">'+e+'<span class="nub"></span></span>'}},cache:{},init:function(t,e,a){Foundation.inherit(this,"random_str"),this.bindings(e,a)},should_show:function(e){var a=t.extend({},this.settings,this.data_options(e));return"all"===a.show_on?!0:this.small()&&"small"===a.show_on?!0:this.medium()&&"medium"===a.show_on?!0:this.large()&&"large"===a.show_on?!0:!1},medium:function(){return matchMedia(Foundation.media_queries.medium).matches},large:function(){return matchMedia(Foundation.media_queries.large).matches},events:function(e){var a=this,n=a.S;a.create(this.S(e)),t(this.scope).off(".tooltip").on("mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"]",function(e){var s=n(this),i=t.extend({},a.settings,a.data_options(s)),r=!1;if(Modernizr.touch&&/touchstart|MSPointerDown/i.test(e.type)&&n(e.target).is("a"))return!1;if(/mouse/i.test(e.type)&&a.ie_touch(e))return!1;if(s.hasClass("open"))Modernizr.touch&&/touchstart|MSPointerDown/i.test(e.type)&&e.preventDefault(),a.hide(s);else{if(i.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(e.type))return;!i.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(e.type)&&(e.preventDefault(),n(i.tooltip_class+".open").hide(),r=!0),/enter|over/i.test(e.type)?this.timer=setTimeout(function(){a.showTip(s)}.bind(this),a.settings.hover_delay):"mouseout"===e.type||"mouseleave"===e.type?(clearTimeout(this.timer),a.hide(s)):a.showTip(s)}}).on("mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"].open",function(e){return/mouse/i.test(e.type)&&a.ie_touch(e)?!1:void(("touch"!=t(this).data("tooltip-open-event-type")||"mouseleave"!=e.type)&&("mouse"==t(this).data("tooltip-open-event-type")&&/MSPointerDown|touchstart/i.test(e.type)?a.convert_to_touch(t(this)):a.hide(t(this))))}).on("DOMNodeRemoved DOMAttrModified","["+this.attr_name()+"]:not(a)",function(){a.hide(n(this))})},ie_touch:function(){return!1},showTip:function(t){var e=this.getTip(t);return this.should_show(t,e)?this.show(t):void 0},getTip:function(e){var a=this.selector(e),n=t.extend({},this.settings,this.data_options(e)),s=null;return a&&(s=this.S('span[data-selector="'+a+'"]'+n.tooltip_class)),"object"==typeof s?s:!1},selector:function(t){var e=t.attr("id"),a=t.attr(this.attr_name())||t.attr("data-selector");return(e&&e.length<1||!e)&&"string"!=typeof a&&(a=this.random_str(6),t.attr("data-selector",a).attr("aria-describedby",a)),e&&e.length>0?e:a},create:function(a){var n=this,s=t.extend({},this.settings,this.data_options(a)),i=this.settings.tip_template;"string"==typeof s.tip_template&&e.hasOwnProperty(s.tip_template)&&(i=e[s.tip_template]);var r=t(i(this.selector(a),t("<div></div>").html(a.attr("title")).html())),o=this.inheritable_classes(a);r.addClass(o).appendTo(s.append_to),Modernizr.touch&&(r.append('<span class="tap-to-close">'+s.touch_close_text+"</span>"),r.on("touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip",function(){n.hide(a)})),a.removeAttr("title").attr("title","")},reposition:function(e,a,n){var s,i,r,o,l;if(a.css("visibility","hidden").show(),s=e.data("width"),i=a.children(".nub"),r=i.outerHeight(),o=i.outerHeight(),a.css(this.small()?{width:"100%"}:{width:s?s:"auto"}),l=function(t,e,a,n,s){return t.css({top:e?e:"auto",bottom:n?n:"auto",left:s?s:"auto",right:a?a:"auto"}).end()},l(a,e.offset().top+e.outerHeight()+10,"auto","auto",e.offset().left),this.small())l(a,e.offset().top+e.outerHeight()+10,"auto","auto",12.5,t(this.scope).width()),a.addClass("tip-override"),l(i,-r,"auto","auto",e.offset().left);else{var c=e.offset().left;Foundation.rtl&&(i.addClass("rtl"),c=e.offset().left+e.outerWidth()-a.outerWidth()),l(a,e.offset().top+e.outerHeight()+10,"auto","auto",c),a.removeClass("tip-override"),n&&n.indexOf("tip-top")>-1?(Foundation.rtl&&i.addClass("rtl"),l(a,e.offset().top-a.outerHeight(),"auto","auto",c).removeClass("tip-override")):n&&n.indexOf("tip-left")>-1?(l(a,e.offset().top+e.outerHeight()/2-a.outerHeight()/2,"auto","auto",e.offset().left-a.outerWidth()-r).removeClass("tip-override"),i.removeClass("rtl")):n&&n.indexOf("tip-right")>-1&&(l(a,e.offset().top+e.outerHeight()/2-a.outerHeight()/2,"auto","auto",e.offset().left+e.outerWidth()+r).removeClass("tip-override"),i.removeClass("rtl"))}a.css("visibility","visible").hide()},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},inheritable_classes:function(e){var a=t.extend({},this.settings,this.data_options(e)),n=["tip-top","tip-left","tip-bottom","tip-right","radius","round"].concat(a.additional_inheritable_classes),s=e.attr("class"),i=s?t.map(s.split(" "),function(e){return-1!==t.inArray(e,n)?e:void 0}).join(" "):"";return t.trim(i)},convert_to_touch:function(e){var a=this,n=a.getTip(e),s=t.extend({},a.settings,a.data_options(e));0===n.find(".tap-to-close").length&&(n.append('<span class="tap-to-close">'+s.touch_close_text+"</span>"),n.on("click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose",function(){a.hide(e)})),e.data("tooltip-open-event-type","touch")},show:function(t){var e=this.getTip(t);"touch"==t.data("tooltip-open-event-type")&&this.convert_to_touch(t),this.reposition(t,e,t.attr("class")),t.addClass("open"),e.fadeIn(150)},hide:function(t){var e=this.getTip(t);e.fadeOut(150,function(){e.find(".tap-to-close").remove(),e.off("click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose"),t.removeClass("open")})},off:function(){var e=this;this.S(this.scope).off(".fndtn.tooltip"),this.S(this.settings.tooltip_class).each(function(a){t("["+e.attr_name()+"]").eq(a).attr("title",t(this).text())}).remove()},reflow:function(){}}}(jQuery,window,window.document),define("foundation.tooltip",["foundation.core"],function(){}),define("utils/tips",["require","foundation.tooltip"],function(t){t("foundation.tooltip");var e=function(t,e){$(".tip",t).each(function(){var t=$(this);t.removeClass("tip");var a=t.html(),n=["has-tip"];e&&n.push(e),t.html('<span data-tooltip class="'+n.join(" ")+'" data-width="210" title="'+a+'"><i class="fa fa-question-circle"></i></span>')}),$(document).foundation("reflow","tooltip")};return{setup:e}}),define("hbs!utils/tab-datatable/table",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'  <div class="row">\n    <div class="large-8 small-2 columns">\n      <a id="refresh_button_'+o((s=null!=(s=e.dataTableId||(null!=t?t.dataTableId:t))?s:r,typeof s===i?s.call(t,{name:"dataTableId",hash:{},data:n}):s))+'" href="#" class="button small radius secondary"> <i class="fa fa-refresh" /></a>\n    </div>\n    <div class="large-4 small-10 columns">\n      <input id="'+o((s=null!=(s=e.dataTableId||(null!=t?t.dataTableId:t))?s:r,typeof s===i?s.call(t,{name:"dataTableId",hash:{},data:n}):s))+'_search" class="search" type="search" placeholder="'+o((e.tr||t&&t.tr||r).call(t,"Search",{name:"tr",hash:{},data:n}))+'"/>\n    </div>\n  </div>\n'},3:function(t){var e=this.lambda,a=this.escapeExpression;return"        <th>"+a(e(t,t))+"</th>\n"},5:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c=this.lambda;return'  <div class="row">\n    <div class="large-12 columns" id="selected_ids_row_'+l((i=null!=(i=e.dataTableId||(null!=t?t.dataTableId:t))?i:o,typeof i===r?i.call(t,{name:"dataTableId",hash:{},data:n}):i))+'">\n      <label for="selected_resource_id_'+l((i=null!=(i=e.dataTableId||(null!=t?t.dataTableId:t))?i:o,typeof i===r?i.call(t,{name:"dataTableId",hash:{},data:n}):i))+'" id="select_resource_'+l((i=null!=(i=e.dataTableId||(null!=t?t.dataTableId:t))?i:o,typeof i===r?i.call(t,{name:"dataTableId",hash:{},data:n}):i))+'" class="radius secondary label">'+l(c(null!=(s=null!=t?t.selectOptions:t)?s.select_resource:s,t))+'</label>\n      <span id="selected_resource_'+l((i=null!=(i=e.dataTableId||(null!=t?t.dataTableId:t))?i:o,typeof i===r?i.call(t,{name:"dataTableId",hash:{},data:n}):i))+'" class="radius secondary label" style="display: none;">'+l(c(null!=(s=null!=t?t.selectOptions:t)?s.you_selected:s,t))+'</span>\n      <span id="select_resource_multiple_'+l((i=null!=(i=e.dataTableId||(null!=t?t.dataTableId:t))?i:o,typeof i===r?i.call(t,{name:"dataTableId",hash:{},data:n}):i))+'" class="radius secondary label" style="display: none;">'+l(c(null!=(s=null!=t?t.selectOptions:t)?s.select_resource_multiple:s,t))+'</span>\n      <span id="selected_resource_multiple_'+l((i=null!=(i=e.dataTableId||(null!=t?t.dataTableId:t))?i:o,typeof i===r?i.call(t,{name:"dataTableId",hash:{},data:n}):i))+'" class="radius secondary label" style="display: none;">'+l(c(null!=(s=null!=t?t.selectOptions:t)?s.you_selected_multiple:s,t))+'</span>\n      <input id="selected_resource_id_'+l((i=null!=(i=e.dataTableId||(null!=t?t.dataTableId:t))?i:o,typeof i===r?i.call(t,{name:"dataTableId",hash:{},data:n}):i))+'" type="text"/>\n      <span id="selected_resource_name_'+l((i=null!=(i=e.dataTableId||(null!=t?t.dataTableId:t))?i:o,typeof i===r?i.call(t,{name:"dataTableId",hash:{},data:n}):i))+'" class="radius label" type="text"></span>\n    </div>\n  </div>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dataTableId||(null!=t?t.dataTableId:t))?i:o,typeof i===r?i.call(t,{name:"dataTableId",hash:{},data:n}):i))+'Container">\n';return s=e["if"].call(t,null!=(s=null!=t?t.conf:t)?s.select:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='  <table id="'+l((i=null!=(i=e.dataTableId||(null!=t?t.dataTableId:t))?i:o,typeof i===r?i.call(t,{name:"dataTableId",hash:{},data:n}):i))+'" class="datatable twelve">\n    <thead>\n      <tr>\n        <th class="check">\n          <input type="checkbox" class="check_all" value=""/>\n        </th>\n',s=e.each.call(t,null!=t?t.columns:t,{name:"each",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+="      </tr>\n    </thead>\n    <tbody></tbody>\n  </table>\n",s=e["if"].call(t,null!=(s=null!=t?t.conf:t)?s.select:s,{name:"if",hash:{},fn:this.program(5,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+"</div>"},useData:!0});return e.registerPartial("utils/tab-datatable/table",a),a}),define("hbs!utils/tab-datatable/search-input",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<input id="'+o((s=null!=(s=e.dataTableSearchId||(null!=t?t.dataTableSearchId:t))?s:r,typeof s===i?s.call(t,{name:"dataTableSearchId",hash:{},data:n}):s))+'" type="search" placeholder="'+o((e.tr||t&&t.tr||r).call(t,"Search",{name:"tr",hash:{},data:n}))+'" />'},useData:!0});return e.registerPartial("utils/tab-datatable/search-input",a),a}),define("utils/tab-datatable",["require","foundation-datatables","hbs!./tab-datatable/empty-table","sunstone","sunstone-config","utils/locale","utils/tips","opennebula","utils/notifier","hbs!./tab-datatable/table","hbs!./tab-datatable/search-input"],function(t){function e(){var t=this;return t.conf.select&&(t.selectOptions.select_resource||(t.selectOptions.select_resource=M.tr("Please select a resource from the list")),t.selectOptions.you_selected||(t.selectOptions.you_selected=M.tr("You selected the following resource:")),void 0==t.selectOptions.id_index&&(t.selectOptions.id_index=0),$.extend(t.selectOptions,t.conf.selectOptions),t.selectOptions.fixed_ids_map_orig={},void 0!=t.selectOptions.fixed_ids&&$.each(t.selectOptions.fixed_ids,function(){t.selectOptions.fixed_ids_map_orig[this]=!0}),t.selectOptions.starred_ids_map={},void 0!=t.selectOptions.starred_ids&&$.each(t.selectOptions.starred_ids,function(){t.selectOptions.starred_ids_map[this]=!0}),void 0==t.selectOptions.multiple_choice&&(t.selectOptions.multiple_choice=!1)),t.dataTableHTML=P({dataTableId:this.dataTableId,columns:this.columns,conf:this.conf,selectOptions:this.selectOptions}),t.searchInputHTML=O({dataTableSearchId:this.dataTableId+"Search"}),t}function a(t){this.dataTable=$("#"+this.dataTableId).dataTable(this.dataTableOptions);var e=this;$("#"+this.dataTableId+"Search").keyup(function(){e.dataTable.fnFilter($(this).val())}),this.dataTable.on("draw",function(){e.recountCheckboxes()}),this.dataTable.fnSort([[1,A.tableOrder]]),this.conf.actions&&(this.initCheckAllBoxes(),this.tableCheckboxesListener()),1==this.conf.oneSelection&&this.onlyOneCheckboxListener(),this.conf.info?this.infoListener(n):this.conf.customTrListener?this.infoListener(this.conf.customTrListener):this.infoListener(),this.conf.select&&(t&&t.selectOptions&&$.extend(this.selectOptions,t.selectOptions),this.initSelectResourceTableSelect())}function n(t,e){var a=t.dataTable.fnGetData(e);if(!a)return!0;var n=$(a[0]).val();return n?(x.showElement(t.tabId,t.resource+".show",n),!1):!0}function s(t){var e=this;this.dataTable.on("click","tbody tr",function(a){return $(a.target).is("input")||$(a.target).is("select")||$(a.target).is("option")?!0:(t?a.ctrlKey||a.metaKey||$(a.target).is("input")?$(".check_item",this).trigger("click"):t(e,this):$(".check_item",this).trigger("click"),!1)})}function i(t,e){var a=this.elementArray(e);this.dataTable.fnAddData(a)}function r(t){var e="#"+this.resource.toLowerCase()+"_"+t.request.data,a=$(e,this.dataTable).parents("tr")[0];this.dataTable.fnDeleteRow(a),this.recountCheckboxes();var n=this.dataTable.parents(".tab");x.rightInfoVisible(n)&&$("a[href='back']",n).click()}function o(){var t=this;this.dataTable.on("change",".check_all",function(){var e=$(this).closest(".dataTables_wrapper");$(this).is(":checked")?($("tbody input.check_item",e).prop("checked",!0),$("td",e).addClass("markrowchecked")):($("tbody input.check_item",e).prop("checked",!1),$("td",e).removeClass("markrowchecked")),t.recountCheckboxes()})}function l(){var t,e=$("tbody",this.dataTable);if(this.conf.customTabContext)t=this.conf.customTabContext;else if(t=e.parents(".tab"),$(".right-info",t).is(":visible"))return;{var a=$("tr",e),n=a.length,s=$("input.check_item:checked",a).length;$(".last_action_button",t)}s?($(".top_button, .list_button",t).prop("disabled",!1),n==s?$(".check_all",this.dataTable).prop("checked",!0):$(".check_all",this.dataTable).prop("checked",!1)):($(".check_all",this.dataTable).prop("checked",!1),$(".top_button, .list_button",t).prop("disabled",!0).attr("disabled","disabled")),$(".create_dialog_button",t).prop("disabled",!1),$(".alwaysActive",t).prop("disabled",!1)}function c(){var t=this.conf.customTabContext||this.dataTable.parents(".tab");$(".last_action_button",t).prop("disabled",!0),$(".top_button, .list_button",t).prop("disabled",!0),$(".create_dialog_button",t).prop("disabled",!1),$(".alwaysActive",t).prop("disabled",!1);var e=this;this.dataTable.on("change","tbody input.check_item",function(){$(this).parents("table");$(this).is(":checked")?$(this).parents("tr").children().addClass("markrowchecked"):$(this).parents("tr").children().removeClass("markrowchecked"),e.recountCheckboxes()})}function d(){var t=this;this.dataTable.on("change","tbody input.check_item",function(){var e=$(this).is(":checked");$("td",t.dataTable).removeClass("markrowchecked"),$("input.check_item:checked",t.dataTable).prop("checked",!1),$("td",$(this).closest("tr")).addClass("markrowchecked"),$(this).prop("checked",e)})}function u(t,e,a){var n=null,s=new Array,i=this;i.preUpdateView&&i.preUpdateView();var r=this.dataTable.attr("row_id");if(void 0!=r&&$.each($(this.dataTable.fnGetNodes()),function(){if(0!=$("td.markrow",this).length){var t=i.dataTable.fnGetData(this);n=t[r]}}),$.each($(this.dataTable.fnGetNodes()),function(){0!=$("td.markrowchecked",this).length&&s.push(isNaN($($("td",$(this))[1]).html())?$($("td",$(this))[0]).html():$($("td",$(this))[1]).html())}),this.dataTable&&this.dataTable.fnSettings()){var o=this.dataTable.fnSettings(),l=o._iDisplayStart;this.dataTable.fnClearTable(!1);var c;a?c=e:(c=[],$.each(e,function(){var t=i.elementArray(this);t&&c.push(t)}));var i=this;c.length>0&&i.dataTable.fnAddData(c,!1);var d=l;d>c.length-1&&(d=c.length>0?c.length-1:0),o.iInitDisplayStart=d,this.dataTable.fnDraw(!0)}void 0!=n&&$.each($(this.dataTable.fnGetNodes()),function(){var t=i.dataTable.fnGetData(this);t[r]==n&&$("td",this)[0].click()}),0!=s.length&&$.each($(this.dataTable.fnGetNodes()),function(){var t=$($("td",this)[1]).html();isNaN(t)&&(t=$($("td",this)[0]).html()),t&&-1!=$.inArray(t,s)&&($("input.check_item",this).first().click(),$("td",this).addClass("markrowchecked"))}),i.postUpdateView&&i.postUpdateView()}function p(t,e){var a=e[this.xmlRoot].ID,n=this.elementArray(e),s="#"+this.resource.toLowerCase()+"_"+a,i=this.dataTable.fnGetNodes(),r=$(s,i).parents("tr")[0];if(r){var o=$("input.check_item",r).prop("checked"),l=this.dataTable.fnGetPosition(r);this.dataTable.fnUpdate(n,l,void 0,!1),$("input.check_item",r).prop("checked",o),this.recountCheckboxes()}}function h(t,e){var a=this.dataTable.fnGetNodes(),n=$(e+"_"+t,a).parents("tr")[0];return this.dataTable.fnGetData(n)}function f(){$("tr input.check_item:visible",this.dataTable).replaceWith(R)}function m(t){var e=[];if(this.dataTable){var a=this.dataTable.parents(".tab");if(x.rightInfoVisible(a)&&!t)e.push(x.rightInfoResourceId(a));else{var n=$("tbody input.check_item:checked",this.dataTable);$.each(n,function(){e.push($(this).val())})}}return e}function _(t,e){this.dataTable.fnFilter(t,e)}function b(){function t(t,n){e.dataTable.unbind("draw");var s=n[e.selectOptions.id_index],i=n[e.selectOptions.name_index],r=$("#selected_ids_row_"+e.dataTableId,a).data("ids");return r[s]?(delete r[s],void 0!=t&&($("td",t).removeClass("markrowchecked"),$("input.check_item",t).prop("checked",!1)),$("#selected_ids_row_"+e.dataTableId+' span[row_id="'+s+'"]',a).remove(),e.selectOptions.unselect_callback()):(r[s]=!0,void 0!=t&&($("td",t).addClass("markrowchecked"),$("input.check_item",t).prop("checked",!0)),$("#selected_ids_row_"+e.dataTableId,a).append('<span row_id="'+s+'" class="radius label">'+i+' <span class="fa fa-times blue"></span></span> '),e.selectOptions.select_callback(n,e.selectOptions)),$.isEmptyObject(r)?($("#selected_resource_multiple_"+e.dataTableId,a).hide(),$("#select_resource_multiple_"+e.dataTableId,a).show()):($("#selected_resource_multiple_"+e.dataTableId,a).show(),$("#select_resource_multiple_"+e.dataTableId,a).hide()),$(".alert-box",a).hide(),!0}var e=this,a=$("#"+e.dataTableId+"Container");void 0==e.selectOptions.id_index&&(e.selectOptions.id_index=0),void 0==e.selectOptions.name_index&&(e.selectOptions.name_index=1),void 0==e.selectOptions.dataTable_options&&(e.selectOptions.dataTable_options={}),void 0==e.selectOptions.select_callback&&(e.selectOptions.select_callback=function(){}),void 0==e.selectOptions.unselect_callback&&(e.selectOptions.unselect_callback=function(){}),e.selectOptions.dataTable_options.fnRowCallback=e.selectOptions.multiple_choice?function(t,n){var s=n[e.selectOptions.id_index],i=$("#selected_ids_row_"+e.dataTableId,a).data("ids");i[s]?($("td",t).addClass("markrowchecked"),$("input.check_item",this).prop("checked",!0)):($("td",t).removeClass("markrowchecked"),$("input.check_item",this).prop("checked",!1))}:function(t,n){var s=n[e.selectOptions.id_index],i=$("#selected_resource_id_"+e.dataTableId,a).val();s==i?($("td",t).addClass("markrow"),$("input.check_item",this).prop("checked",!0)):($("td",t).removeClass("markrow"),$("input.check_item",this).prop("checked",!1))},$("#refresh_button_"+e.dataTableId,a).off("click"),a.on("click","#refresh_button_"+e.dataTableId,function(){return e.updateFn(),!1}),$("#"+e.dataTableId+"_search",a).keyup(function(){e.dataTable.fnFilter($(this).val())}),e.dataTable.fnSort([[e.selectOptions.id_index,config.user_config.table_order]]),e.selectOptions.read_only?$("#selected_ids_row_"+e.dataTableId,a).hide():e.selectOptions.multiple_choice&&($("#selected_resource_"+e.dataTableId,a).hide(),$("#select_resource_"+e.dataTableId,a).hide(),$("#selected_resource_multiple_"+e.dataTableId,a).hide(),$("#select_resource_multiple_"+e.dataTableId,a).show()),$("#selected_resource_id_"+e.dataTableId,a).hide(),$("#selected_resource_name_"+e.dataTableId,a).hide(),$("#selected_ids_row_"+e.dataTableId,a).data("options",e.selectOptions),e.selectOptions.read_only||(e.selectOptions.multiple_choice?($("#selected_ids_row_"+e.dataTableId,a).data("ids",{}),$("#"+e.dataTableId+" tbody",a).on("click","tr",function(){var a=e.dataTable.fnGetData(this);
+t(this,a)}),$(a).on("click","#selected_ids_row_"+e.dataTableId+" span.fa.fa-times",function(){var n=$(this).parent("span").attr("row_id"),s=!1;if($.each(e.dataTable.fnGetData(),function(a,i){return i[e.selectOptions.id_index]==n?(s=!0,t(e.dataTable.fnGetNodes(a),i),!1):void 0}),!s){var i=$("#selected_ids_row_"+e.dataTableId,a).data("ids");delete i[n],$("#selected_ids_row_"+e.dataTableId+' span[row_id="'+n+'"]',a).remove(),$.isEmptyObject(i)?($("#selected_resource_multiple_"+e.dataTableId,a).hide(),$("#select_resource_multiple_"+e.dataTableId,a).show()):($("#selected_resource_multiple_"+e.dataTableId,a).show(),$("#select_resource_multiple_"+e.dataTableId,a).hide())}e.selectOptions.unselect_callback(aData,e.selectOptions)})):$("#"+e.dataTableId+" tbody",a).delegate("tr","click",function(){e.dataTable.unbind("draw");var t=e.dataTable.fnGetData(this);return $("td.markrow",e.dataTable).removeClass("markrow"),$("tbody input.check_item",e.dataTable).prop("checked",!1),$("#selected_resource_"+e.dataTableId,a).show(),$("#select_resource_"+e.dataTableId,a).hide(),$(".alert-box",a).hide(),$("td",this).addClass("markrow"),$("input.check_item",this).prop("checked",!0),$("#selected_resource_id_"+e.dataTableId,a).val(t[e.selectOptions.id_index]).change(),$("#selected_resource_id_"+e.dataTableId,a).hide(),$("#selected_resource_name_"+e.dataTableId,a).text(t[e.selectOptions.name_index]).change(),$("#selected_resource_name_"+e.dataTableId,a).show(),e.selectOptions.select_callback(t,e.selectOptions),!0})),k.setup(a)}function v(){var t=this,e=$("#"+t.dataTableId+"Container");$("td.markrow",t.dataTable).removeClass("markrow"),$("tbody input.check_item",t.dataTable).prop("checked",!1),$("#"+t.dataTableId+"_search",e).val("").trigger("keyup"),$("#refresh_button_"+t.dataTableId).click(),$("#selected_resource_id_"+t.dataTableId,e).val("").hide(),$("#selected_resource_name_"+t.dataTableId,e).text("").hide(),$("#selected_resource_"+t.dataTableId,e).hide(),$("#select_resource_"+t.dataTableId,e).show()}function g(){var t=this,e=$("#"+t.dataTableId+"Container");if(t.selectOptions.multiple_choice){var a=$("#selected_ids_row_"+t.dataTableId,e).data("ids"),n=[];return $.each(a,function(t){n.push(t)}),n}return $("#selected_resource_id_"+t.dataTableId,e).val()}function y(){var t=this,e=$("#"+t.dataTableId+"Container");return t.selectOptions.multiple_choice?$("#selected_ids_row_"+t.dataTableId,e):$("#selected_resource_id_"+t.dataTableId,e)}function w(){var t=this,e=$("#"+t.dataTableId+"Container");$("#refresh_button_"+t.dataTableId,e).click()}function T(t){var e=this,a=$("#"+e.dataTableId+"Container");if(e.selectOptions.multiple_choice){e.refreshResourceTableSelect(a,e.dataTableId);var n=$("#selected_ids_row_"+e.dataTableId,a).data("ids");n={},$("#selected_ids_row_"+e.dataTableId+" span[row_id]",a).remove(),void 0==t.ids&&(t.ids=[]),$.each(t.ids,function(t,s){if(isNaN(s))return!0;n[s]=!0;var i=""+s;$.each(e.dataTable.fnGetData(),function(t,a){return a[e.selectOptions.id_index]==s?(i=a[e.selectOptions.name_index],!1):void 0}),$("#selected_ids_row_"+e.dataTableId,a).append('<span row_id="'+s+'" class="radius label">'+i+' <span class="fa fa-times blue"></span></span> ')}),$("#selected_ids_row_"+e.dataTableId,a).data("ids",n),$.isEmptyObject(n)?($("#selected_resource_multiple_"+e.dataTableId,a).hide(),$("#select_resource_multiple_"+e.dataTableId,a).show()):($("#selected_resource_multiple_"+e.dataTableId,a).show(),$("#select_resource_multiple_"+e.dataTableId,a).hide()),$(".alert-box",a).hide(),e.dataTable.fnDraw()}else{$("td.markrow",e.dataTable).removeClass("markrow"),$("tbody input.check_item",e.dataTable).prop("checked",!1),$("#selected_resource_"+e.dataTableId,a).show(),$("#select_resource_"+e.dataTableId,a).hide(),$(".alert-box",a).hide();var s=void 0,i="";if(void 0!=t.ids)s=t.ids,i=""+s,$.each(e.dataTable.fnGetData(),function(t,a){return a[e.selectOptions.id_index]==s?(i=a[e.selectOptions.name_index],!1):void 0});else if(void 0!=t.names){i=t.names.name;var r=t.names.uname;$.each(e.dataTable.fnGetData(),function(t,a){return a[e.selectOptions.name_index]==i&&a[e.selectOptions.uname_index]==r?(s=a[e.selectOptions.id_index],!1):void 0})}$("#selected_resource_id_"+e.dataTableId,a).val(s).change(),$("#selected_resource_id_"+e.dataTableId,a).hide(),$("#selected_resource_name_"+e.dataTableId,a).text(i).change(),$("#selected_resource_name_"+e.dataTableId,a).show(),e.refreshResourceTableSelect(a,e.dataTableId)}}function E(){var t=this,e=function(e,a){var n=[],s=$.extend({},t.selectOptions.fixed_ids_map_orig);$.each(a,function(){var e=!0;t.selectOptions.filter_fn&&(e=t.selectOptions.filter_fn(this[t.xmlRoot])),void 0!=t.selectOptions.fixed_ids&&(e=e&&s[this[t.xmlRoot].ID]);var a;e&&(a=t.elementArray(this),e=0!=a),e&&(void 0!=t.selectOptions.starred_ids&&(a[t.selectOptions.name_index]=t.selectOptions.starred_ids_map[this[t.xmlRoot].ID]?'<i class="fa fa-star fa-fw"></i> '+a[t.selectOptions.name_index]:'<i class="fa fa-fw"></i> '+a[t.selectOptions.name_index]),n.push(a),delete s[this[t.xmlRoot].ID])});var i=t.columns.length+1;$.each(s,function(e){for(var a=[],s=0;i>=s;s++)a.push("");a[t.selectOptions.id_index]=e,n.push(a)}),t.updateView(null,n,!0)},a=function(t,a,n){e(t,[]),C.onError(t,a,n)};void 0==t.selectOptions.zone_id?D[t.resource].list({timeout:!0,success:e,error:a}):D[t.resource].list_in_zone({data:{zone_id:t.selectOptions.zone_id},timeout:!0,success:e,error:a})}function S(){var t=this;D[t.resource].list({success:function(e,a){t.updateView(e,a)},error:C.onError})}t("foundation-datatables");var I=t("hbs!./tab-datatable/empty-table"),x=t("sunstone"),A=t("sunstone-config"),M=t("utils/locale"),k=t("utils/tips"),D=t("opennebula"),C=t("utils/notifier"),P=t("hbs!./tab-datatable/table"),O=t("hbs!./tab-datatable/search-input"),R='<img src="images/ajax-loader.gif" alt="retrieving" class="loading_img"/>';return $.extend(!0,$.fn.dataTable.defaults,{dom:"t<'row collapse'<'small-6 columns'i><'small-6 columns'lp>>",renderer:"foundation",language:{sLengthMenu:"_MENU_",emptyTable:I()}}),e.prototype={initialize:a,initCheckAllBoxes:o,tableCheckboxesListener:c,onlyOneCheckboxListener:d,infoListener:s,addElement:i,deleteElement:r,updateElement:p,elements:m,updateView:u,getElementData:h,waitingNodes:f,recountCheckboxes:l,filter:_,resetResourceTableSelect:v,refreshResourceTableSelect:w,selectResourceTableSelect:T,retrieveResourceTableSelect:g,idInput:y,initSelectResourceTableSelect:b,updateFn:E,list:S},e}),define("utils/template-utils",["require","utils/locale","sunstone"],function(t){function e(t){return void 0!=t?t.replace(/\\/g,"\\").replace(/"/g,'\\"'):t}function a(t){return $("<div/>").html(t).text()}function n(t,e){e&&(t=$.extend({},t,e));var n="\n";return $.each(t,function(t,e){if(e)if(e.constructor==Array){$.each(e,function(e,a){if(!a)return!0;if("object"==typeof a){n+=t+"=[";for(var s in a)n+=s+'="'+a[s].toString().replace(/"/g,'\\"')+'",';n=n.substring(0,n.length-1),n+="]\n"}else n=n+t+'="'+a.toString().replace(/"/g,'\\"')+'"\n'})}else if("object"==typeof e){n+=t+"=[";for(var a in e)n+=a+'="'+e[a].toString().replace(/"/g,'\\"')+'",';n=n.substring(0,n.length-1),n+="]\n"}else n=n+t+'="'+e.toString().replace(/"/g,'\\"')+'"\n';else n=n+t+"=\n"}),a(n)}t("utils/locale"),t("sunstone");return{templateToString:n,htmlDecode:a,escapeDoubleQuotes:e}}),define("tabs/users-tab/tabId",["require"],function(){return"users-tab"}),define("tabs/users-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","utils/quotas/quota-defaults","utils/quotas/quota-widgets","utils/template-utils","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=h,this.dataTableId=t,this.resource=u,this.xmlRoot=p,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check",5,6,7]},{sWidth:"35px",aTargets:[0]},{sWidth:"150px",aTargets:[5,6,7]},{bVisible:!0,aTargets:r.tabTableColumns(h)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[o.tr("ID"),o.tr("Name"),o.tr("Group"),o.tr("Auth driver"),o.tr("VMs"),o.tr("Memory"),o.tr("CPU"),o.tr("Group ID"),o.tr("Hidden User Data")],this.selectOptions={id_index:1,name_index:2,select_resource:o.tr("Please select a User from the list"),you_selected:o.tr("You selected the following User:"),select_resource_multiple:o.tr("Please select one or more users from the list"),you_selected_multiple:o.tr("You selected the following users:")},this.totalUsers=0,i.call(this)}function a(t){this.totalUsers++;var e=t[p],a='<span class="progress-text right" style="font-size: 12px">-</span>',n='<span class="progress-text right" style="font-size: 12px">-</span>',s='<span class="progress-text right" style="font-size: 12px">-</span>',i=l.getDefaultUserQuotas();c.initEmptyQuotas(e),$.isEmptyObject(e.VM_QUOTA)||(a=c.quotaBar(e.VM_QUOTA.VM.VMS_USED,e.VM_QUOTA.VM.VMS,i.VM_QUOTA.VM.VMS),n=c.quotaBarMB(e.VM_QUOTA.VM.MEMORY_USED,e.VM_QUOTA.VM.MEMORY,i.VM_QUOTA.VM.MEMORY),s=c.quotaBarFloat(e.VM_QUOTA.VM.CPU_USED,e.VM_QUOTA.VM.CPU,i.VM_QUOTA.VM.CPU));var r=d.templateToString(e);return['<input class="check_item" type="checkbox" id="'+u.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.NAME,e.GNAME,e.AUTH_DRIVER,a,n,s,e.GID,r]}function n(){this.totalUsers=0}function s(){$(".total_users").text(this.totalUsers)}var i=t("utils/tab-datatable"),r=t("sunstone-config"),o=t("utils/locale"),l=t("utils/quotas/quota-defaults"),c=t("utils/quotas/quota-widgets"),d=t("utils/template-utils"),u="User",p="USER",h=t("./tabId");return e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e.prototype.preUpdateView=n,e.prototype.postUpdateView=s,e}),define("tabs/users-tab/form-panels/create/formPanelId",["require"],function(){return"createUserForm"}),define("tabs/users-tab/dialogs/password/dialogId",["require"],function(){return"userPasswordDialog"}),define("tabs/users-tab/dialogs/auth-driver/dialogId",["require"],function(){return"userAuthDriverDialog"}),define("tabs/users-tab/dialogs/quotas/dialogId",["require"],function(){return"userQuotasDialog"}),define("tabs/users-tab/actions",["require","sunstone","utils/notifier","utils/locale","./datatable","opennebula/user","./tabId","./form-panels/create/formPanelId","./dialogs/password/dialogId","./dialogs/auth-driver/dialogId","./dialogs/quotas/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=(t("./datatable"),t("opennebula/user")),i="User",r="USER",o=t("./tabId"),l=t("./form-panels/create/formPanelId"),c=t("./dialogs/password/dialogId"),d=t("./dialogs/auth-driver/dialogId"),u=t("./dialogs/quotas/dialogId"),p={"User.create":{type:"create",call:s.create,callback:function(t,a){e.resetFormPanel(o,l),e.hideFormPanel(o),e.getDataTable(o).addElement(t,a)},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)},notify:!0},"User.create_dialog":{type:"custom",call:function(){e.showFormPanel(o,l,"create")}},"User.list":{type:"list",call:s.list,callback:function(t,a){e.getDataTable(o).updateView(t,a)},error:a.onError},"User.refresh":{type:"custom",call:function(){var t=$("#"+o);e.rightInfoVisible(t)?e.runAction(i+".show",e.rightInfoResourceId(t)):(e.getDataTable(o).waitingNodes(),e.runAction(i+".list",{force:!0}))},error:a.onError},"User.update_password":{type:"custom",call:function(){e.getDialog(c).setParams({selectedElements:e.getDataTable(o).elements()}),e.getDialog(c).reset(),e.getDialog(c).show()}},"User.passwd":{type:"multiple",call:s.passwd,error:a.onError},"User.chgrp":{type:"multiple",call:s.chgrp,callback:function(){e.runAction(i+".refresh")},elements:function(){return e.getDataTable(o).elements()},error:a.onError},"User.addgroup":{type:"multiple",call:s.addgroup,callback:function(){e.runAction(i+".refresh")},elements:function(){return e.getDataTable(o).elements()},error:a.onError},"User.delgroup":{type:"multiple",call:s.delgroup,callback:function(t){e.runAction(i+".show",t.request.data[0][0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError},"User.change_authentication":{type:"custom",call:function(){e.getDialog(d).show()}},"User.chauth":{type:"multiple",call:s.chauth,error:a.onError},"User.show":{type:"single",call:s.show,callback:function(t,a){e.getDataTable(o).updateElement(t,a),e.rightInfoVisible($("#"+o))&&e.insertPanels(o,a)},error:a.onError},"User.delete":{type:"multiple",call:s.del,callback:function(t,a){e.getDataTable(o).deleteElement(t,a)},elements:function(){return e.getDataTable(o).elements()},error:a.onError},"User.update_template":{type:"single",call:s.update,callback:function(t){e.runAction(i+".show",t.request.data[0][0]),t.request.data[0][0]==config.user_id&&e.runAction("Settings.refresh")},error:a.onError},"User.update_language":{type:"single",call:s.update,callback:function(t){e.runAction(i+".show",t.request.data[0][0]),t.request.data[0][0]==config.user_id&&e.runAction("Settings.refresh"),a.notifyMessage(n.tr("The user must refresh the page for the change to take effect"))},error:a.onError},"User.update_view":{type:"single",call:s.update,callback:function(t){e.runAction(i+".show",t.request.data[0][0]),t.request.data[0][0]==config.user_id&&e.runAction("Settings.refresh"),a.notifyMessage(n.tr("The user must refresh the page for the change to take effect"))},error:a.onError},"User.fetch_quotas":{type:"single",call:s.show,callback:function(t,a){e.getDialog(u).setParams({element:a[r]}),e.getDialog(u).reset(),e.getDialog(u).show()},error:a.onError},"User.quotas_dialog":{type:"custom",call:function(){var t=$("#"+o);if(e.rightInfoVisible(t))$('a[href="#user_quotas_tab"]',t).click(),$("#edit_quotas_button",t).click();else{var a=e.getDataTable(o).elements();1==a.length?e.runAction(i+".fetch_quotas",a[0]):(e.getDialog(u).setParams({element:{}}),e.getDialog(u).reset(),e.getDialog(u).show())}}},"User.set_quota":{type:"multiple",call:s.set_quota,elements:function(){return e.getDataTable(o).elements()},callback:function(t){e.getDialog(u).hide(),e.runAction(i+".show",t.request.data[0])},error:a.onError}};return p}),define("utils/dialogs/dialog",["require","foundation.reveal"],function(t){function e(){return this}function a(){var t=this,e=$(t.html()).appendTo("div#dialogs");return t.setup(e),e.foundation("reveal","reflow"),e.on("opened.fndtn.reveal",function(a){"fndtn.reveal"===a.namespace&&t.onShow(e)}),e.on("opened.fndtn.close",function(){t.onClose&&t.onClose(e)}),e.on("click",".resetDialog",function(){t.reset(),t.show()}),t.dialogElement=e,t.dialogElement}function n(){return this.dialogElement.foundation("reveal","open"),!1}function s(){this.dialogElement.foundation("reveal","close")}function i(){return this.dialogElement.remove(),this.dialogElement=this.insert(),!1}return t("foundation.reveal"),e.prototype={insert:a,show:n,hide:s,reset:i},e}),define("hbs!tabs/users-tab/dialogs/password/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal" role="dialog" data-reveal >\n  <div class="row">\n    <h3 class="subheader">'+l((e.tr||t&&t.tr||o).call(t,"Update Password",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n  <form data-abide="ajax" id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'Form">\n    <div class="row">\n      <div class="large-12 columns">\n        ';return i=null!=(i=e.userCreationHTML||(null!=t?t.userCreationHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"userCreationHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n      </div>\n    </div>\n    <div class="form_buttons row">\n      <button type="submit" class="button radius right">\n        '+l((e.tr||t&&t.tr||o).call(t,"Change",{name:"tr",hash:{},data:n}))+'\n      </button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/users-tab/dialogs/password/html",a),a}),define("hbs!tabs/users-tab/utils/user-creation/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o="function";return'<div class="row name_row">\n  <div class="large-12 columns">\n    <label for="username">'+r((e.tr||t&&t.tr||i).call(t,"Username",{name:"tr",hash:{},data:n}))+'</label>\n    <input required type="text" name="username" id="'+r((s=null!=(s=e.idPrefix||(null!=t?t.idPrefix:t))?s:i,typeof s===o?s.call(t,{name:"idPrefix",hash:{},data:n}):s))+'_username" />\n  </div>\n</div>\n<div class="row password_row">\n  <div class="large-12 columns">\n    <label for="pass">'+r((e.tr||t&&t.tr||i).call(t,"Password",{name:"tr",hash:{},data:n}))+'</label>\n    <input required type="password" name="pass" id="'+r((s=null!=(s=e.idPrefix||(null!=t?t.idPrefix:t))?s:i,typeof s===o?s.call(t,{name:"idPrefix",hash:{},data:n}):s))+'_pass" />\n  </div>\n  <div class="large-12 columns">\n    <label for="confirm_password">'+r((e.tr||t&&t.tr||i).call(t,"Confirm Password",{name:"tr",hash:{},data:n}))+'</label>\n    <input data-equalto="'+r((s=null!=(s=e.idPrefix||(null!=t?t.idPrefix:t))?s:i,typeof s===o?s.call(t,{name:"idPrefix",hash:{},data:n}):s))+'_pass" type="password" name="confirm_password" id="'+r((s=null!=(s=e.idPrefix||(null!=t?t.idPrefix:t))?s:i,typeof s===o?s.call(t,{name:"idPrefix",hash:{},data:n}):s))+'_confirm_password" />\n    <small class="error">'+r((e.tr||t&&t.tr||i).call(t,"Passwords do not match",{name:"tr",hash:{},data:n}))+'</small>\n  </div>\n</div>\n<div class="row auth_driver_row">\n  <div class="large-12 columns">\n    <label for="driver">'+r((e.tr||t&&t.tr||i).call(t,"Authentication",{name:"tr",hash:{},data:n}))+'</label>\n    <select name="driver" id="'+r((s=null!=(s=e.idPrefix||(null!=t?t.idPrefix:t))?s:i,typeof s===o?s.call(t,{name:"idPrefix",hash:{},data:n}):s))+'_driver">\n      <option value="core" selected="selected">'+r((e.tr||t&&t.tr||i).call(t,"Core",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="ssh">'+r((e.tr||t&&t.tr||i).call(t,"SSH",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="x509">'+r((e.tr||t&&t.tr||i).call(t,"x509",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="ldap">'+r((e.tr||t&&t.tr||i).call(t,"LDAP",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="public">'+r((e.tr||t&&t.tr||i).call(t,"Public",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="custom">'+r((e.tr||t&&t.tr||i).call(t,"Custom",{name:"tr",hash:{},data:n}))+'</option>\n    </select>\n    <div>\n      <input type="text" id="'+r((s=null!=(s=e.idPrefix||(null!=t?t.idPrefix:t))?s:i,typeof s===o?s.call(t,{name:"idPrefix",hash:{},data:n}):s))+'_custom_auth" name="custom_auth" />\n    </div>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/users-tab/utils/user-creation/html",a),a}),define("tabs/users-tab/utils/user-creation",["require","hbs!./user-creation/html"],function(t){function e(t,e){this.idPrefix=t,this.options=e,void 0==this.options&&(this.options={}),void 0==this.options.name&&(this.options.name=!0),void 0==this.options.password&&(this.options.password=!0),void 0==this.options.auth_driver&&(this.options.auth_driver=!0)}function a(){return l({idPrefix:this.idPrefix})}function n(t){var e=this;0==this.options.name&&($("#"+e.idPrefix+"_username",t).removeAttr("required"),$(".name_row",t).hide()),0==this.options.password&&($("#"+e.idPrefix+"_pass",t).removeAttr("required"),$(".password_row",t).hide()),0==this.options.auth_driver&&$(".auth_driver_row",t).hide(),$("#"+e.idPrefix+"_driver",t).change(function(){"ldap"==$(this).val()?($("#"+e.idPrefix+"_pass",t).removeAttr("required"),$(".password_row",t).hide()):e.options.password&&($("#"+e.idPrefix+"_pass",t).attr("required",""),$(".password_row",t).show())}),$('input[name="custom_auth"]',t).parent().hide(),$("select#"+e.idPrefix+"_driver",t).change(function(){"custom"==$(this).val()?($('input[name="custom_auth"]',t).parent().show(),$('input[name="custom_auth"]',t).attr("required","")):($('input[name="custom_auth"]',t).parent().hide(),$('input[name="custom_auth"]',t).removeAttr("required"))})}function s(t){var e=this,a=$("#"+e.idPrefix+"_username",t).val(),n=$("#"+e.idPrefix+"_pass",t).val(),s=$("#"+e.idPrefix+"_driver",t).val();return"custom"==s?s=$('input[name="custom_auth"]',t).val():"ldap"==s&&(n="-"),{name:a,password:n,auth_driver:s}}function i(t){var e=this;$("#"+e.idPrefix+"_username",t).attr("disabled","disabled").removeAttr("required"),$("#"+e.idPrefix+"_pass",t).attr("disabled","disabled").removeAttr("required"),$("#"+e.idPrefix+"_confirm_password",t).attr("disabled","disabled").removeAttr("required"),$("#"+e.idPrefix+"_driver",t).attr("disabled","disabled").removeAttr("required"),$("#"+e.idPrefix+"_custom_auth",t).attr("disabled","disabled").removeAttr("required")}function r(t){var e=this;$("#"+e.idPrefix+"_username",t).removeAttr("disabled").attr("required",""),$("#"+e.idPrefix+"_pass",t).removeAttr("disabled").attr("required",""),$("#"+e.idPrefix+"_confirm_password",t).removeAttr("disabled").attr("required",""),$("#"+e.idPrefix+"_driver",t).removeAttr("disabled").attr("required",""),$("#"+e.idPrefix+"_custom_auth",t).removeAttr("disabled"),$("select#"+e.idPrefix+"_driver",t).change()}function o(t,e){$("#"+this.idPrefix+"_username",t).val(e)}var l=t("hbs!./user-creation/html");return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=n,e.prototype.retrieve=s,e.prototype.enable=r,e.prototype.disable=i,e.prototype.setName=o,e}),define("tabs/users-tab/dialogs/password",["require","utils/dialogs/dialog","hbs!./password/html","sunstone","utils/notifier","utils/locale","tabs/users-tab/utils/user-creation","./password/dialogId","../tabId"],function(t){function e(){this.dialogId=p,this.userCreation=new u(p,{name:!1,auth_driver:!1}),r.call(this)}function a(t){this.selectedElements=t.selectedElements}function n(){return o({dialogId:this.dialogId,userCreationHTML:this.userCreation.html()})}function s(t){var e=this;return this.userCreation.setup(t),t.off("invalid.fndtn.abide","#"+p+"Form"),t.off("valid.fndtn.abide","#"+p+"Form"),t.on("invalid.fndtn.abide","#"+p+"Form",function(t){"abide.fndtn"==t.namespace&&c.notifyError(d.tr("One or more required fields are missing or malformed."))}).on("valid.fndtn.abide","#"+p+"Form",function(a){if("abide.fndtn"==a.namespace){var n=e.userCreation.retrieve(t);return l.runAction("User.passwd",e.selectedElements,n.password),l.getDialog(p).hide(),l.getDialog(p).reset(),l.runAction("User.refresh"),!1}}),t.foundation("reflow","abide"),!1}function i(){return!1}{var r=t("utils/dialogs/dialog"),o=t("hbs!./password/html"),l=t("sunstone"),c=t("utils/notifier"),d=t("utils/locale"),u=t("tabs/users-tab/utils/user-creation"),p=t("./password/dialogId");t("../tabId")}return e.DIALOG_ID=p,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=n,e.prototype.onShow=i,e.prototype.setup=s,e.prototype.setParams=a,e}),define("hbs!tabs/users-tab/dialogs/auth-driver/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal" role="dialog" data-reveal >\n  <div class="row">\n    <h3 class="subheader">'+l((e.tr||t&&t.tr||o).call(t,"Change authentication",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n  <form data-abide="ajax" id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'Form">\n    <div class="row">\n      <div class="large-12 columns">\n        ';return i=null!=(i=e.userCreationHTML||(null!=t?t.userCreationHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"userCreationHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n      </div>\n    </div>\n    <div class="form_buttons row">\n      <button type="submit" class="button radius right">\n        '+l((e.tr||t&&t.tr||o).call(t,"Change",{name:"tr",hash:{},data:n}))+'\n      </button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/users-tab/dialogs/auth-driver/html",a),a}),define("tabs/users-tab/dialogs/auth-driver",["require","utils/dialogs/dialog","hbs!./auth-driver/html","sunstone","utils/notifier","utils/locale","tabs/users-tab/utils/user-creation","./auth-driver/dialogId","../tabId"],function(t){function e(){this.dialogId=u,this.userCreation=new d(u,{name:!1,password:!1}),i.call(this)}function a(){return r({dialogId:this.dialogId,userCreationHTML:this.userCreation.html()})}function n(t){var e=this;return this.userCreation.setup(t),t.off("invalid.fndtn.abide","#"+u+"Form"),t.off("valid.fndtn.abide","#"+u+"Form"),t.on("invalid.fndtn.abide","#"+u+"Form",function(t){"abide.fndtn"==t.namespace&&l.notifyError(c.tr("One or more required fields are missing or malformed."))}).on("valid.fndtn.abide","#"+u+"Form",function(a){if("abide.fndtn"==a.namespace){var n=e.userCreation.retrieve(t),s=o.getDataTable(p).elements();return o.runAction("User.chauth",s,n.auth_driver),o.getDialog(u).hide(),o.getDialog(u).reset(),o.runAction("User.refresh"),!1}}),t.foundation("reflow","abide"),!1}function s(){return!1}var i=t("utils/dialogs/dialog"),r=t("hbs!./auth-driver/html"),o=t("sunstone"),l=t("utils/notifier"),c=t("utils/locale"),d=t("tabs/users-tab/utils/user-creation"),u=t("./auth-driver/dialogId"),p=t("../tabId");return e.DIALOG_ID=u,e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e}),define("hbs!tabs/users-tab/dialogs/quotas/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large max-height" role="dialog" data-reveal >\n  <div class="row">\n    <h3 class="subheader">'+l((e.tr||t&&t.tr||o).call(t,"Update Quota",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n  <form data-abide="ajax" id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'Form">\n    <div class="row">\n      <div class="large-12 columns">\n        ';return i=null!=(i=e.quotasHTML||(null!=t?t.quotasHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"quotasHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n      </div>\n    </div>\n    <div class="form_buttons row">\n      <button type="submit" class="button radius right" value="User.set_quota">\n        '+l((e.tr||t&&t.tr||o).call(t,"Apply changes",{name:"tr",hash:{},data:n}))+'\n      </button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/users-tab/dialogs/quotas/html",a),a}),define("tabs/users-tab/dialogs/quotas",["require","utils/dialogs/dialog","hbs!./quotas/html","utils/locale","utils/quotas/quota-defaults","utils/quotas/quota-widgets","./quotas/dialogId","../tabId"],function(t){function e(){this.dialogId=d,this.element=void 0,r.call(this)}function a(){return o({dialogId:this.dialogId,quotasHTML:c.dialogHTML()})}function n(t){return c.setupQuotasDialog(t),!1}function s(t){this.element=t.element}function i(t){return c.populateQuotasDialog(this.element,l.getDefaultQuotas(u),t),!1}var r=t("utils/dialogs/dialog"),o=t("hbs!./quotas/html"),l=(t("utils/locale"),t("utils/quotas/quota-defaults")),c=t("utils/quotas/quota-widgets"),d=t("./quotas/dialogId"),u=(t("../tabId"),"User");return e.DIALOG_ID=d,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=i,e.prototype.setup=n,e.prototype.setParams=s,e}),define("templates/helpers/valOrDefault",["require","hbs/handlebars","utils/locale"],function(t){var e=t("hbs/handlebars"),a=(t("utils/locale"),function(t,a){var n=t||a;return new e.SafeString(n)});return e.registerHelper("valOrDefault",a),a}),define("hbs!tabs/users-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/valOrDefault"],function(t,e){var a=e.template({1:function(t){var e,a=this.lambda,n=this.escapeExpression;return"        "+n(a(null!=(e=null!=(e=null!=t?t.element:t)?e.TEMPLATE:e)?e.SSH_PUBLIC_KEY:e,t))+"\n"},3:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return"        "+i((e.tr||t&&t.tr||s).call(t,"You can provide a SSH Key for this User clicking on the edit button",{name:"tr",hash:{},data:n}))+"\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table id="info_user_table" class="dataTable extended_table" cellpadding="0" cellspacing="0" border="0">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.NAME:s,t))+"</td>\n          <td></td>\n        </tr>\n        ";return i=null!=(i=e.groupTrHTML||(null!=t?t.groupTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"groupTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Secondary groups",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.secondaryGroups||(null!=t?t.secondaryGroups:t))?i:r,typeof i===c?i.call(t,{name:"secondaryGroups",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Authentication driver",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.AUTH_DRIVER:s,t))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Password",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">\n            <button id="update_password" type="button" class="button tiny radius secondary" >\n              '+o((e.tr||t&&t.tr||r).call(t,"Update password",{name:"tr",hash:{},data:n}))+' <a><i class="fa fa-pencil-square-o"/></a>\n            </button>\n          </td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Table Order",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td_table_order">'+o((e.valOrDefault||t&&t.valOrDefault||r).call(t,null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.TABLE_ORDER:s,"-",{name:"valOrDefault",hash:{},data:n}))+'</td>\n          <td>\n            <div id="div_edit_table_order">\n              <a id="div_edit_table_order_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n            </div>\n          </td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Language",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td_language">'+o((e.valOrDefault||t&&t.valOrDefault||r).call(t,null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.LANG:s,"-",{name:"valOrDefault",hash:{},data:n}))+'</td>\n          <td>\n            <div id="div_edit_language">\n              <a id="div_edit_language_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n            </div>\n          </td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"View",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td_view">'+o((e.valOrDefault||t&&t.valOrDefault||r).call(t,null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.DEFAULT_VIEW:s,"-",{name:"valOrDefault",hash:{},data:n}))+'</td>\n          <td>\n            <div id="div_edit_view">\n              <a id="div_edit_view_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">\n    <table class="dataTable extended_table" cellpadding="0" cellspacing="0" border="0">\n      <thead>\n        <tr>\n          <th>'+o((e.tr||t&&t.tr||r).call(t,"Public SSH Key",{name:"tr",hash:{},data:n}))+'</th>\n          <th>\n            <a class="user_ssh_public_key_edit right" href="#"><i class="fa fa-pencil-square-o"></i></a>\n          </th>\n        </tr>\n      </thead>\n    </table>\n    <textarea rows="6" type="text" id="user_ssh_public_key_textarea" name="ssh_public_key" class="hidden">'+o(l(null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.SSH_PUBLIC_KEY:s,t))+'</textarea>\n    <p id="user_ssh_public_key_text" name="ssh_public_key">\n',s=e["if"].call(t,null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.SSH_PUBLIC_KEY:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.program(3,n),data:n}),null!=s&&(d+=s),d+='    </p>\n  </div>\n</div>\n<div class="row">\n  <div class="large-9 columns">\n    ',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"\n  </div>\n</div>"
+},useData:!0});return e.registerPartial("tabs/users-tab/panels/info/html",a),a}),define("hbs!tabs/users-tab/panels/info/chgrp-tr",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o=this.lambda;return'<tr>\n  <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"Group",{name:"tr",hash:{},data:n}))+'</td>\n  <td id="value_td_group">'+r(o(null!=(s=null!=t?t.element:t)?s.GNAME:s,t))+'</td>\n  <td>\n    <div id="div_edit_chg_group">\n      <a id="div_edit_chg_group_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n    </div>\n  </td>\n</tr>'},useData:!0});return e.registerPartial("tabs/users-tab/panels/info/chgrp-tr",a),a}),define("utils/panel/template-table",["require","utils/locale","sunstone","utils/template-utils"],function(t){function e(t,e,n){var i='<table id="'+e.toLowerCase()+'_template_table" class="dataTable configuration_attrs"  cellpadding="0" cellspacing="0" border="0">                   <thead>                     <tr>                       <th colspan="3">'+n+"</th>                     </tr>                    </thead>"+a(t,e)+'<tr>                      <td class="key_td"><input type="text" name="new_key" id="new_key" /></td>                      <td class="value_td"><textarea rows="1" type="text" name="new_value" id="new_value"></textarea></td>                      <td class="text-right"><button type="button" id="button_add_value" class="button small secondary">'+s.tr("Add")+"</button></td>                    </tr></table>";return i}function a(t,e,a,s){var i="";if(!t)return"Not defined";var r=null;for(r in t)i+=n(r,t[r],e,a,s);return i}function n(t,e,i,r,o){var l="";if(e.constructor==Array){var c=null;for(c=0;c<e.length;++c){var d=e[c];"object"==typeof d?(l+='<tr id="'+i.toLowerCase()+"_template_table_"+t+'">                             <td class="key_td key_vectorial_td">'+s.tr(t)+'</td>                             <td class="value_vectorial_td"></td>                             <td class="text-right">                               <span id="div_add_vectorial">                                 <a id="div_add_vectorial_'+t+'" class="add_vectorial_a ocurrence_'+c+" vectorial_key_"+t+'" href="#"><i class="fa fa-plus-sign"/></a>                               </span>&emsp;                               <span id="div_minus">                                 <a id="div_minus_'+t+'" class="remove_vectorial_x ocurrence_'+c+'" href="#"><i class="fa fa-pencil-square-o"/><i class="fa fa-trash-o"/></a>                               </span>                             </td>',l+=a(d,i,t,c)):l+=n(t,d,i,!1,c)}}else{var u="";null!=o&&(u=" ocurrence_"+o),r?l+='<tr>                       <td class="key_td key_vectorial_td">&emsp;&emsp;'+s.tr(t)+'</td>                       <td class="value_td value_vectorial_td value_td_input_'+t+u+" vectorial_key_"+r+'" id="value_td_input_'+t+'">'+e+'</td>                       <td class="text-right">                         <span id="div_edit_vectorial">                           <a id="div_edit_'+t+'" class="edit_e'+u+" vectorial_key_"+r+'" href="#"><i class="fa fa-pencil-square-o"/></a>                         </span>&emsp;                         <span id="div_minus_vectorial">                           <a id="div_minus_'+t+'" class="remove_x'+u+" vectorial_key_"+r+'" href="#"><i class="fa fa-trash-o"/></a>                         </span>                       </td>                     </tr>':"object"==typeof e?(l+='<tr id="'+i.toLowerCase()+"_template_table_"+t+'">                             <td class="key_td key_vectorial_td">'+s.tr(t)+'</td>                             <td class="value_vectorial_td"></td>                             <td class="text-right">                               <span id="div_add_vectorial">                                 <a id="div_add_vectorial_'+t+'" class="add_vectorial_a'+u+" vectorial_key_"+t+'" href="#"><i class="fa fa-plus-sign"/></a>                               </span>&emsp;                               <span id="div_minus">                                 <a id="div_minus_'+t+'" class="remove_vectorial_x'+u+'" href="#"><i class="fa fa-trash-o"/></a>                               </span>                             </td>',l+=a(e,i,t,o)):l+='<tr>                           <td class="key_td">'+s.tr(t)+'</td>                           <td class="value_td" id="value_td_input_'+t+'">'+e+'</td>                           <td class="text-right">                             <span id="div_edit">                               <a id="div_edit_'+t+'" class="edit_e'+u+'" href="#"><i class="fa fa-pencil-square-o"/></a>                             </span>&emsp;                             <span id="div_minus">                               <a id="div_minus_'+t+'" class="remove_x'+u+'" href="#"><i class="fa fa-trash-o"/></a>                             </span>                           </td>                         </tr>'}return l}var s=t("utils/locale"),i=t("sunstone"),r=t("utils/template-utils"),o=function(t,e,a,n,o){n.off("keypress","#new_key"),n.off("keypress","#new_value"),n.off("keypress","#new_value_vectorial"),n.off("click","#div_minus"),n.off("click","#div_edit"),n.off("change",".input_edit_value"),n.off("click","#div_edit_vectorial"),n.off("change",".input_edit_value_vectorial"),n.off("click","#div_minus_vectorial"),n.off("click","#button_add_value"),n.off("click","#button_add_value_vectorial"),n.off("click","#div_add_vectorial"),n.on("click","#button_add_value",function(){if(new_value=$("#new_value",$(this).parent().parent()).val(),new_key=$("#new_key",$(this).parent().parent()).val(),""!=new_key){var n=$.extend({},t);t[$.trim(new_key)]&&t[$.trim(new_key)]instanceof Array?t[$.trim(new_key)].push($.trim(new_value)):t[$.trim(new_key)]=$.trim(new_value),template_str=r.templateToString(t,o),i.runAction(e+".update_template",a,template_str),t=n}}),n.on("keypress","#new_value",function(t){var e=t||window.event,a=e.keyCode;13!=a||e.altKey||($("#button_add_value",$(this).parent().parent()).click(),e.preventDefault())}),n.on("click","#div_minus",function(){field=this.firstElementChild.id.substring(10,this.firstElementChild.id.length);var n=this.firstElementChild.className.split(" "),s=null;1!=n.length&&$.each(n,function(t,e){e.match(/^ocurrence_/)&&(s=e.substring(10,e.length))}),null!=s?t[field].splice(s,1):delete t[field],template_str=r.templateToString(t,o),i.runAction(e+".update_template",a,template_str)}),n.on("click","#div_edit",function(){var t=this.firstElementChild.id.substring(9,this.firstElementChild.id.length),e=$("#value_td_input_"+t).text();input=$("#value_td_input_"+t).html('<textarea class="input_edit_value" id="input_edit_'+t+'" type="text"></textarea>'),$("#input_edit_"+t).val(e),n.off("keypress","#input_edit_"+t),n.on("keypress","#input_edit_"+t,function(e){var a=e||window.event,n=a.keyCode;13!=n||a.altKey||$("#input_edit_"+t).blur()})}),n.on("change",".input_edit_value",function(){var n=$.trim(this.id.substring(11,this.id.length)),s=$.trim(this.value),l=$.extend({},t);delete t[n],t[n]=s,template_str=r.templateToString(t,o),i.runAction(e+".update_template",a,template_str),t=l}),n.on("click","#div_edit_vectorial",function(){var t=$.trim(this.firstElementChild.id.substring(9,this.firstElementChild.id.length)),e=this.firstElementChild.className.split(" "),a=" ",n=null;if(1!=e.length&&$.each(e,function(t,e){e.match(/^ocurrence_/)&&(a+=e+" ")}),1!=e.length&&$.each(e,function(t,e){e.match(/^vectorial_key_/)&&(n=e)})," "!=a){var s=$.trim($(".value_td_input_"+t+"."+a.substring(1,a.length-1)+"."+n).text());$(".value_td_input_"+t+"."+a.substring(1,a.length-1)+"."+n).html('<input class="input_edit_value_vectorial'+a+n+'" id="input_edit_'+t+'" type="text" value="'+s+'"/>')}else{var s=$.trim($(".value_td_input_"+t+"."+n).text());$(".value_td_input_"+t+"."+n).html('<input class="input_edit_value_vectorial'+a+n+'" id="input_edit_'+t+'" type="text" value="'+s+'"/>')}}),n.on("change",".input_edit_value_vectorial",function(){var n=$.trim(this.id.substring(11,this.id.length)),s=$.trim(this.value),l=$.extend({},t),c=this.className.split(" "),d=null,u=null;1!=c.length&&$.each(c,function(t,e){e.match(/^ocurrence_/)&&(d=e.substring(10,e.length))}),1!=c.length&&$.each(c,function(t,e){e.match(/^vectorial_key_/)&&(u=e.substring(14,e.length))}),null!=d?t[u][d][n]=s:t[u][n]=s,template_str=r.templateToString(t,o),i.runAction(e+".update_template",a,template_str),t=l}),n.on("click","#div_minus_vectorial",function(){var n=this.firstElementChild.id.substring(10,this.firstElementChild.id.length),s=this.firstElementChild.className.split(" "),l=null,c=null;1!=s.length&&$.each(s,function(t,e){e.match(/^ocurrence_/)&&(l=e.substring(10,e.length))}),1!=s.length&&$.each(s,function(t,e){e.match(/^vectorial_key_/)&&(c=e.substring(14,e.length))}),null!=l?delete t[c][l][n]:delete t[c][n],template_str=r.templateToString(t,o),i.runAction(e+".update_template",a,template_str)}),n.on("click","#div_add_vectorial",function(){if(!$("#button_add_value_vectorial").html()){var t=(this.firstElementChild.id.substring(18,this.firstElementChild.id.length),this.firstElementChild.className.split(" ")),e=null,a=null;1!=t.length&&$.each(t,function(t,a){a.match(/^ocurrence_/)&&(e=a)}),1!=t.length&&$.each(t,function(t,e){e.match(/^vectorial_key_/)&&(a=e)}),$(this).parent().parent().after('<tr>                                                <td class="key_td"><input type="text" style="text-align:center" name="new_key_vectorial" id="new_key_vectorial" /></td>                                                <td class="value_td"><input type="text" name="new_value" id="new_value_vectorial" /></td>                                                <td class=""><button class="'+a+" "+e+'" id="button_add_value_vectorial">'+s.tr("Add")+"</button></td>                                               </tr>")}}),n.on("click","#button_add_value_vectorial",function(){if(""!=$("#new_value_vectorial").val()&&""!=$("#new_key_vectorial").val()){var n=this.className.split(" "),s=null,l=null,c=$.extend({},t);1!=n.length&&$.each(n,function(t,e){e.match(/^vectorial_key_/)&&(l=e)}),1!=n.length&&$.each(n,function(t,e){e.match(/^ocurrence_/)&&(s=e)}),l=l.substring(14,l.length),null!=s?(s=s.substring(10,s.length),t[l][s][$("#new_key_vectorial").val()]=$.trim($("#new_value_vectorial").val())):t[l][$("#new_key_vectorial").val()]=$.trim($("#new_value_vectorial").val()),template_str=r.templateToString(t,o),i.runAction(e+".update_template",a,template_str),t=c}}),n.on("keypress","#new_value_vectorial",function(t){var e=t||window.event,a=e.keyCode;13==a&&($("#button_add_value_vectorial").click(),e.preventDefault())})};return{html:e,setup:o}}),define("tabs/users-tab/panels/info/panelId",["require"],function(){return"user_info_tab"}),define("tabs/users-tab/panels/info",["require","hbs!./info/html","hbs!./info/chgrp-tr","utils/resource-select","utils/locale","opennebula/user","sunstone","utils/panel/template-table","../tabId","./info/panelId","tabs/users-tab/dialogs/password/dialogId"],function(t){function e(t){return this.title=o.tr("Info"),this.icon="fa-info-circle",this.element=t[h],this}function a(){var t,e=i({element:this.element});t="object"==typeof this.element.GROUPS.ID?this.element.GROUPS.ID.join(","):"-";var a=$.extend({},this.element.TEMPLATE);delete a.SSH_PUBLIC_KEY,delete a.LANG,delete a.TABLE_ORDER,delete a.DEFAULT_VIEW;var n=d.html(a,p,o.tr("Attributes"));return s({element:this.element,groupTrHTML:e,secondaryGroups:t,templateTableHTML:n})}function n(t){var e=this,a=$.extend({},this.element.TEMPLATE);delete a.SSH_PUBLIC_KEY,delete a.LANG,delete a.TABLE_ORDER,delete a.DEFAULT_VIEW;var n={};return void 0!=this.element.TEMPLATE.SSH_PUBLIC_KEY&&(n.SSH_PUBLIC_KEY=this.element.TEMPLATE.SSH_PUBLIC_KEY),void 0!=this.element.TEMPLATE.LANG&&(n.LANG=this.element.TEMPLATE.LANG),void 0!=this.element.TEMPLATE.TABLE_ORDER&&(n.TABLE_ORDER=this.element.TEMPLATE.TABLE_ORDER),void 0!=this.element.TEMPLATE.DEFAULT_VIEW&&(n.DEFAULT_VIEW=this.element.TEMPLATE.DEFAULT_VIEW),d.setup(a,p,this.element.ID,t,n),t.off("click","#div_edit_chg_group_link"),t.on("click","#div_edit_chg_group_link",function(){r.insert("#value_td_group",t,"Group",e.element.GID,!1)}),t.off("change","#value_td_group .resource_list_select"),t.on("change","#value_td_group .resource_list_select",function(){var t=$(this).val();""!=t&&c.runAction(p+".chgrp",[e.element.ID],t)}),t.off("click",".user_ssh_public_key_edit"),t.on("click",".user_ssh_public_key_edit",function(){$("#user_ssh_public_key_text",t).hide(),$("#user_ssh_public_key_textarea",t).show().focus()}),t.off("click","#update_password"),t.on("click","#update_password",function(){c.getDialog(f).setParams({selectedElements:[e.element.ID]}),c.getDialog(f).reset(),c.getDialog(f).show()}),t.off("change","#user_ssh_public_key_textarea"),t.on("change","#user_ssh_public_key_textarea",function(){var a=e.element.ID;l.show({data:{id:a},success:function(){var n=e.element.TEMPLATE;n.SSH_PUBLIC_KEY=$("#user_ssh_public_key_textarea",t).val(),template_str="",$.each(n,function(t,e){template_str+=t+'="'+e+'"\n'}),c.runAction("User.update_template",a,template_str)}})}),t.off("focusout","#user_ssh_public_key_textarea"),t.on("focusout","#user_ssh_public_key_textarea",function(){$("#user_ssh_public_key_text",t).show(),$("#user_ssh_public_key_textarea",t).hide()}),t.off("click","#div_edit_table_order"),t.on("click","#div_edit_table_order",function(){$(".value_td_table_order",t).html('<select id="table_order_select"><option value="asc">'+o.tr("ascending")+'</option><option value="desc">'+o.tr("descending")+"</option></select>"),e.element.TEMPLATE.TABLE_ORDER&&$("#table_order_select",t).val(e.element.TEMPLATE.TABLE_ORDER)}),t.off("change","#table_order_select"),t.on("change","#table_order_select",function(){var a=e.element.ID;l.show({data:{id:a},success:function(){var n=e.element.TEMPLATE;n.TABLE_ORDER=$("#table_order_select",t).val(),template_str="",$.each(n,function(t,e){template_str+=t+'="'+e+'"\n'}),c.runAction("User.update_template",a,template_str)}})}),t.off("click","#div_edit_language"),t.on("click","#div_edit_language",function(){$(".value_td_language",t).html('<select id="language_select">'+o.language_options+"</select>"),e.element.TEMPLATE.LANG&&$("#language_select",t).val(e.element.TEMPLATE.LANG)}),t.off("change","#language_select"),t.on("change","#language_select",function(){var a=e.element.ID;l.show({data:{id:a},success:function(){var n=e.element.TEMPLATE;n.LANG=$("#language_select",t).val(),template_str="",$.each(n,function(t,e){template_str+=t+'="'+e+'"\n'}),c.runAction("User.update_language",a,template_str)}})}),t.off("click","#div_edit_view"),t.on("click","#div_edit_view",function(){var a="";$.each(config.available_views,function(t,e){a+='<option value="'+e+'">'+e+"</option>"}),$(".value_td_view",t).html('<select id="view_select">'+a+"</select>"),e.element.TEMPLATE.DEFAULT_VIEW&&$("#view_select",t).val(e.element.TEMPLATE.DEFAULT_VIEW)}),t.off("change","#view_select"),t.on("change","#view_select",function(){var a=e.element.ID;l.show({data:{id:a},success:function(){var n=e.element.TEMPLATE;n.DEFAULT_VIEW=$("#view_select",t).val(),template_str="",$.each(n,function(t,e){template_str+=t+'="'+e+'"\n'}),c.runAction("User.update_view",a,template_str)}})}),!1}var s=t("hbs!./info/html"),i=t("hbs!./info/chgrp-tr"),r=t("utils/resource-select"),o=t("utils/locale"),l=t("opennebula/user"),c=t("sunstone"),d=t("utils/panel/template-table"),u=(t("../tabId"),t("./info/panelId")),p="User",h="USER",f=t("tabs/users-tab/dialogs/password/dialogId");return e.PANEL_ID=u,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/users-tab/panels/quotas/panelId",["require"],function(){return"user_quotas_tab"}),define("tabs/users-tab/panels/quotas",["require","utils/locale","sunstone-config","utils/quotas/quota-defaults","utils/quotas/quota-widgets","../tabId","./quotas/panelId"],function(t){function e(t,e){return this.tabId=e||l,this.title=s.tr("Quotas"),this.icon="fa-align-left",this.element=t[u],this}function a(){return o.initQuotasPanel(this.element,r.getDefaultQuotas(d),i.isTabActionEnabled(this.tabId,d+".quotas_dialog"))}function n(t){return o.setupQuotasPanel(this.element,t,i.isTabActionEnabled(this.tabId,d+".quotas_dialog"),d),!1}var s=t("utils/locale"),i=t("sunstone-config"),r=t("utils/quotas/quota-defaults"),o=t("utils/quotas/quota-widgets"),l=t("../tabId"),c=t("./quotas/panelId"),d="User",u="USER";return e.PANEL_ID=c,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/users-tab/panels/accounting/panelId",["require"],function(){return"user_accounting_tab"}),define("tabs/users-tab/panels/accounting",["require","utils/locale","utils/accounting","../tabId","./accounting/panelId"],function(t){function e(t){return this.title=s.tr("Accounting"),this.icon="fa-bar-chart-o",this.element=t[o],this}function a(){return i.html()}function n(t){i.setup(t,{fixed_user:this.element.ID,init_group_by:"vm"})}var s=t("utils/locale"),i=t("utils/accounting"),r=(t("../tabId"),t("./accounting/panelId")),o="USER";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/users-tab/panels/showback/panelId",["require"],function(){return"user_showback_tab"}),define("tabs/users-tab/panels/showback",["require","utils/locale","sunstone-config","utils/showback","../tabId","./showback/panelId"],function(t){function e(t){if(this.title=s.tr("Showback"),this.icon="fa-money",this.element=t[l],!i.isFeatureEnabled("showback"))throw"Showback is disabled in the configuration";return this}function a(){return r.html()}function n(t){r.setup(t,{fixed_user:this.element.ID,fixed_group:""})}var s=t("utils/locale"),i=t("sunstone-config"),r=t("utils/showback"),o=(t("../tabId"),t("./showback/panelId")),l="USER";return e.PANEL_ID=o,e.prototype.html=a,e.prototype.setup=n,e}),function(t,e,a){"use strict";Foundation.libs.abide={name:"abide",version:"5.5.1",settings:{live_validate:!0,validate_on_blur:!0,focus_on_invalid:!0,error_labels:!0,error_class:"error",timeout:1e3,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/},validators:{equalTo:function(t){var e=a.getElementById(t.getAttribute(this.add_namespace("data-equalto"))).value,n=t.value,s=e===n;return s}}},timer:null,init:function(t,e,a){this.bindings(e,a)},events:function(e){var a=this,n=a.S(e).attr("novalidate","novalidate"),s=n.data(this.attr_name(!0)+"-init")||{};this.invalid_attr=this.add_namespace("data-invalid"),n.off(".abide").on("submit.fndtn.abide validate.fndtn.abide",function(t){var e=/ajax/i.test(a.S(this).attr(a.attr_name()));return a.validate(a.S(this).find("input, textarea, select").get(),t,e)}).on("reset",function(){return a.reset(t(this))}).find("input, textarea, select").off(".abide").on("blur.fndtn.abide change.fndtn.abide",function(t){s.validate_on_blur===!0&&a.validate([this],t)}).on("keydown.fndtn.abide",function(t){s.live_validate===!0&&9!=t.which&&(clearTimeout(a.timer),a.timer=setTimeout(function(){a.validate([this],t)}.bind(this),s.timeout))})},reset:function(e){e.removeAttr(this.invalid_attr),t(this.invalid_attr,e).removeAttr(this.invalid_attr),t("."+this.settings.error_class,e).not("small").removeClass(this.settings.error_class)},validate:function(t,e,a){for(var n=this.parse_patterns(t),s=n.length,i=this.S(t[0]).closest("form"),r=/submit/.test(e.type),o=0;s>o;o++)if(!n[o]&&(r||a))return this.settings.focus_on_invalid&&t[o].focus(),i.trigger("invalid").trigger("invalid.fndtn.abide"),this.S(t[o]).closest("form").attr(this.invalid_attr,""),!1;return(r||a)&&i.trigger("valid").trigger("valid.fndtn.abide"),i.removeAttr(this.invalid_attr),a?!1:!0},parse_patterns:function(t){for(var e=t.length,a=[];e--;)a.push(this.pattern(t[e]));return this.check_validation_and_apply_styles(a)},pattern:function(t){var e=t.getAttribute("type"),a="string"==typeof t.getAttribute("required"),n=t.getAttribute("pattern")||"";return this.settings.patterns.hasOwnProperty(n)&&n.length>0?[t,this.settings.patterns[n],a]:n.length>0?[t,new RegExp(n),a]:this.settings.patterns.hasOwnProperty(e)?[t,this.settings.patterns[e],a]:(n=/.*/,[t,n,a])},check_validation_and_apply_styles:function(e){var a=e.length,n=[],s=this.S(e[0][0]).closest("[data-"+this.attr_name(!0)+"]");for(s.data(this.attr_name(!0)+"-init")||{};a--;){var i,r,o=e[a][0],l=e[a][2],c=o.value.trim(),d=this.S(o).parent(),u=o.getAttribute(this.add_namespace("data-abide-validator")),p="radio"===o.type,h="checkbox"===o.type,f=this.S('label[for="'+o.getAttribute("id")+'"]'),m=l?o.value.length>0:!0,_=[];if(o.getAttribute(this.add_namespace("data-equalto"))&&(u="equalTo"),i=d.is("label")?d.parent():d,u&&(r=this.settings.validators[u].apply(this,[o,l,i]),_.push(r)),p&&l)_.push(this.valid_radio(o,l));else if(h&&l)_.push(this.valid_checkbox(o,l));else if(_.push(e[a][1].test(c)&&m||!l&&o.value.length<1||t(o).attr("disabled")?!0:!1),_=[_.every(function(t){return t})],_[0])this.S(o).removeAttr(this.invalid_attr),o.setAttribute("aria-invalid","false"),o.removeAttribute("aria-describedby"),i.removeClass(this.settings.error_class),f.length>0&&this.settings.error_labels&&f.removeClass(this.settings.error_class).removeAttr("role"),t(o).triggerHandler("valid");else{this.S(o).attr(this.invalid_attr,""),o.setAttribute("aria-invalid","true");var b=i.find("small."+this.settings.error_class,"span."+this.settings.error_class),v=b.length>0?b[0].id:"";v.length>0&&o.setAttribute("aria-describedby",v),i.addClass(this.settings.error_class),f.length>0&&this.settings.error_labels&&f.addClass(this.settings.error_class).attr("role","alert"),t(o).triggerHandler("invalid")}n.push(_[0])}return n=[n.every(function(t){return t})]},valid_checkbox:function(t,e){var t=this.S(t),a=t.is(":checked")||!e||t.get(0).getAttribute("disabled");return a?t.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class):t.attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),a},valid_radio:function(t){for(var e=t.getAttribute("name"),a=this.S(t).closest("[data-"+this.attr_name(!0)+"]").find("[name='"+e+"']"),n=a.length,s=!1,i=!1,r=0;n>r;r++)a[r].getAttribute("disabled")?(i=!0,s=!0):a[r].checked?s=!0:i&&(s=!1);for(var r=0;n>r;r++)s?this.S(a[r]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class):this.S(a[r]).attr(this.invalid_attr,"").parent().addClass(this.settings.error_class);return s},valid_equal:function(t,e,n){var s=a.getElementById(t.getAttribute(this.add_namespace("data-equalto"))).value,i=t.value,r=s===i;return r?(this.S(t).removeAttr(this.invalid_attr),n.removeClass(this.settings.error_class),label.length>0&&settings.error_labels&&label.removeClass(this.settings.error_class)):(this.S(t).attr(this.invalid_attr,""),n.addClass(this.settings.error_class),label.length>0&&settings.error_labels&&label.addClass(this.settings.error_class)),r},valid_oneof:function(t,e,a,n){var t=this.S(t),s=this.S("["+this.add_namespace("data-oneof")+"]"),i=s.filter(":checked").length>0;if(i?t.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class):t.attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),!n){var r=this;s.each(function(){r.valid_oneof.call(r,this,null,null,!0)})}return i}}}(jQuery,window,window.document),define("foundation.abide",["foundation.core"],function(){}),define("utils/form-panels/form-panel",["require","foundation.abide","utils/notifier","utils/locale","sunstone"],function(t){function e(){return this}function a(t){var e=this;this.wizardElement=$(e.htmlWizard()).appendTo($("#wizardForms",t)),e.htmlAdvanced&&(this.advancedElement=$(e.htmlAdvanced()).appendTo($("#advancedForms",t))),t.off("invalid.fndtn.abide","#"+e.formPanelId+"Wizard"),t.off("valid.fndtn.abide","#"+e.formPanelId+"Wizard"),t.on("invalid.fndtn.abide","#"+e.formPanelId+"Wizard",function(t){"abide.fndtn"==t.namespace&&(c.notifyError(d.tr("One or more required fields are missing or malformed.")),u.hideFormPanelLoading(e.tabId))}).on("valid.fndtn.abide","#"+e.formPanelId+"Wizard",function(t){return"abide.fndtn"==t.namespace?(e.submitWizard(this),!1):void 0}),t.off("invalid.fndtn.abide","#"+e.formPanelId+"Advanced"),t.off("valid.fndtn.abide","#"+e.formPanelId+"Advanced"),t.on("invalid.fndtn.abide","#"+e.formPanelId+"Advanced",function(t){"abide.fndtn"==t.namespace&&(c.notifyError(d.tr("One or more required fields are missing or malformed.")),u.hideFormPanelLoading(e.tabId))}).on("valid.fndtn.abide","#"+e.formPanelId+"Advanced",function(t){return"abide.fndtn"==t.namespace?(e.submitAdvanced(this),!1):void 0}),t.foundation("reflow","abide"),e.setup(t)}function n(t){this.wizardElement.remove(),this.htmlAdvanced&&this.advancedElement.remove(),this.insert(t)}function s(t,e){var a=this.action;this.action=e,(a!=e||"update"==e)&&this.reset(t)}function i(){if(this.action){var t=this.actions[this.action];return t?t:null}return null}function r(){var t=this.actionOptions();return t?t.title:""}function o(){var t=this.actionOptions();return t?t.buttonText:""}function l(){var t=this.actionOptions();return t?t.resetButton:!1}t("foundation.abide");var c=t("utils/notifier"),d=t("utils/locale"),u=t("sunstone");return e.prototype={insert:a,reset:n,setAction:s,title:r,buttonText:o,resetButton:l,actionOptions:i},e}),define("hbs!tabs/users-tab/form-panels/create/wizard",["hbs","hbs/handlebars"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<form data-abide="ajax" id="'+l((i=null!=(i=e.formPanelId||(null!=t?t.formPanelId:t))?i:o,typeof i===r?i.call(t,{name:"formPanelId",hash:{},data:n}):i))+'Wizard" class="custom creation">\n  <div class="row" >\n    <div class="medium-6 columns">\n      ';return i=null!=(i=e.userCreationHTML||(null!=t?t.userCreationHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"userCreationHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n    </div>\n  </div>\n</form>"},useData:!0});return e.registerPartial("tabs/users-tab/form-panels/create/wizard",a),a}),define("tabs/users-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","tabs/users-tab/utils/user-creation","hbs!./create/wizard","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=u,this.tabId=p,this.actions={create:{title:l.tr("Create User"),buttonText:l.tr("Create"),resetButton:!0}},this.userCreation=new c(u),r.call(this)}function a(){return d({formPanelId:this.formPanelId,userCreationHTML:this.userCreation.html()})}function n(t){this.userCreation.setup(t)}function s(t){var e={user:this.userCreation.retrieve(t)};return o.runAction("User.create",e),!1}function i(){}t("foundation.tab");var r=t("utils/form-panels/form-panel"),o=t("sunstone"),l=t("utils/locale"),c=t("tabs/users-tab/utils/user-creation"),d=t("hbs!./create/wizard"),u=t("./create/formPanelId"),p=t("../tabId");return e.FORM_PANEL_ID=u,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.submitWizard=s,e.prototype.onShow=i,e.prototype.setup=n,e}),define("tabs/users-tab",["require","utils/locale","./users-tab/buttons","./users-tab/actions","./users-tab/datatable","./users-tab/tabId","./users-tab/dialogs/password","./users-tab/dialogs/auth-driver","./users-tab/dialogs/quotas","./users-tab/panels/info","./users-tab/panels/quotas","./users-tab/panels/accounting","./users-tab/panels/showback","./users-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./users-tab/buttons"),n=t("./users-tab/actions"),s=t("./users-tab/datatable"),i=t("./users-tab/tabId"),r="dataTableUsers",o=[t("./users-tab/dialogs/password"),t("./users-tab/dialogs/auth-driver"),t("./users-tab/dialogs/quotas")],l=[t("./users-tab/panels/info"),t("./users-tab/panels/quotas"),t("./users-tab/panels/accounting"),t("./users-tab/panels/showback")],c=[t("./users-tab/form-panels/create")],d={tabId:i,title:e.tr("Users"),tabClass:"subTab",parentTab:"system-tab",listHeader:'<i class="fa fa-fw fa-user"></i>&emsp;'+e.tr("Users"),infoHeader:'<i class="fa fa-fw fa-user"></i>&emsp;'+e.tr("User"),subheader:'<span>        <span class="total_users"/> <small>'+e.tr("TOTAL")+"</small>      </span>",resource:"User",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("hbs!tabs/settings-tab/panels/user-config/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='<div class="row">\n  <div class="large-6 columns">\n    <div class="row">\n      <div class="large-12 large-centered columns">\n        <dl class="accordion" data-accordion>\n          <dd class="accordion-navigation">\n            <a href="#provision_update_language_accordion" class="text-center accordion-a">\n              <div class="row only-not-active">\n                <div class="large-12 large-centered columns">\n                  <div class="text-center">\n                    <span class="fa-stack fa-3x" style="color: #777"> <i class="fa fa-cloud fa-stack-2x"></i> <i class="fa fa-comments fa-stack-1x fa-inverse"></i>\n                    </span>\n                  </div>\n                </div>\n              </div>\n              <br class="only-not-active">\n              <i class="fa fa-lg fa-comments only-active"></i>\n              '+o((e.tr||t&&t.tr||r).call(t,"Change Language",{name:"tr",hash:{},data:n}))+'\n            </a>\n            <div id="provision_update_language_accordion" class="content">\n              <br>\n              <form id="provision_change_language_form">\n                <div class="row">\n                  <div class="large-12 columns">\n                    <select type="language" id="provision_new_language" class="provision-input" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;">';
+return i=null!=(i=e.languageOptions||(null!=t?t.languageOptions:t))?i:r,s=typeof i===l?i.call(t,{name:"languageOptions",hash:{},data:n}):i,null!=s&&(c+=s),c+'</select>\n                  </div>\n                </div>\n                <div class="row">\n                  <div class="large-12 columns">\n                    <button href"#" type="submit" class="button large radius large-12 small-12">'+o((e.tr||t&&t.tr||r).call(t,"Update Language",{name:"tr",hash:{},data:n}))+'</button>\n                  </div>\n                </div>\n              </form>\n            </div>\n          </dd>\n        </dl>\n      </div>\n    </div>\n  </div>\n  <div class="large-6 columns">\n    <div class="row">\n      <div class="large-12 large-centered columns">\n        <dl class="accordion" data-accordion>\n          <dd class="accordion-navigation">\n            <a href="#provision_update_password_accordion" class="text-center accordion-a">\n              <div class="row only-not-active">\n                <div class="large-12 large-centered columns">\n                  <div class="text-center">\n                    <span class="fa-stack fa-3x" style="color: #777">\n                      <i class="fa fa-cloud fa-stack-2x"></i>\n                      <i class="fa fa-lock fa-stack-1x fa-inverse"></i>\n                    </span>\n                  </div>\n                </div>\n              </div>\n              <br class="only-not-active">\n              <i class="fa fa-lg fa-lock only-active"></i>\n              '+o((e.tr||t&&t.tr||r).call(t,"Change Password",{name:"tr",hash:{},data:n}))+'\n            </a>\n            <div id="provision_update_password_accordion" class="content">\n              <br>\n              <form id="provision_change_password_form">\n                <div class="row">\n                  <div class="large-12 columns">\n                    <input type="password" id="provision_new_password" class="provision-input" placeholder="'+o((e.tr||t&&t.tr||r).call(t,"New Password",{name:"tr",hash:{},data:n}))+'" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/>\n                  </div>\n                </div>\n                <div class="row">\n                  <div class="large-12 columns">\n                    <input type="password" id="provision_new_confirm_password" class="provision-input" placeholder="'+o((e.tr||t&&t.tr||r).call(t,"Confirm Password",{name:"tr",hash:{},data:n}))+'" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"/>\n                  </div>\n                </div>\n                <div class="row">\n                  <div class="large-12 columns">\n                    <button href"#" type="submit" class="button large radius large-12 small-12">'+o((e.tr||t&&t.tr||r).call(t,"Update Password",{name:"tr",hash:{},data:n}))+'</button>\n                  </div>\n                </div>\n              </form>\n            </div>\n          </dd>\n        </dl>\n      </div>\n    </div>\n  </div>\n</div>\n<br>\n<br>\n<div class="row">\n  <div class="large-6 columns">\n    <div class="row">\n      <div class="large-12 large-centered columns">\n        <dl class="accordion" data-accordion>\n          <dd class="accordion-navigation">\n            <a href="#provision_update_view_accordion" class="text-center accordion-a">\n              <div class="row only-not-active">\n                <div class="large-12 large-centered columns">\n                  <div class="text-center">\n                    <span class="fa-stack fa-3x" style="color: #777">\n                      <i class="fa fa-cloud fa-stack-2x"></i>\n                      <i class="fa fa-picture-o fa-stack-1x fa-inverse"></i>\n                    </span>\n                  </div>\n                </div>\n              </div>\n              <br class="only-not-active">\n              <i class="fa fa-lg fa-picture-o only-active"></i>\n              '+o((e.tr||t&&t.tr||r).call(t,"Change view",{name:"tr",hash:{},data:n}))+'\n            </a>\n            <div id="provision_update_view_accordion" class="content">\n              <br>\n              <form id="provision_change_view_form">\n                <div class="row">\n                  <div class="large-12 columns">\n                    <select id="provision_user_views_select" class="provision-input" style="height: 40px !important; font-size: 16px; padding: 0.5rem  !important;"></select>\n                  </div>\n                </div>\n                <div class="row">\n                  <div class="large-12 columns">\n                    <button href"#" type="submit" class="button large radius large-12 small-12">'+o((e.tr||t&&t.tr||r).call(t,"Update view",{name:"tr",hash:{},data:n}))+'</button>\n                  </div>\n                </div>\n              </form>\n            </div>\n          </dd>\n        </dl>\n      </div>\n    </div>\n  </div>\n  <div class="large-6 columns">\n    <form id="provision_add_ssh_key_form">\n      <div class="row">\n        <div class="large-12 large-centered columns">\n          <dl class="accordion" data-accordion>\n            <dd class="accordion-navigation">\n              <a href="#provision_add_ssh_key_accordion" class="text-center accordion-a">\n                <div class="row only-not-active">\n                  <div class="large-12 large-centered columns">\n                    <div class="text-center">\n                      <span class="fa-stack fa-3x" style="color: #777">\n                        <i class="fa fa-cloud fa-stack-2x"></i>\n                        <i class="fa fa-key fa-stack-1x fa-inverse"></i>\n                      </span>\n                    </div>\n                  </div>\n                </div>\n                <br class="only-not-active">\n                <i class="fa fa-key fa-lg only-active"></i>\n                <span class="provision_add_ssh_key_button">'+o((e.tr||t&&t.tr||r).call(t,"Add SSH Key",{name:"tr",hash:{},data:n}))+'</span>\n                <span class="provision_update_ssh_key_button">'+o((e.tr||t&&t.tr||r).call(t,"Update SSH Key",{name:"tr",hash:{},data:n}))+'</span>\n              </a>\n              <div id="provision_add_ssh_key_accordion" class="content">\n                <br>\n                <p style="font-size: 16px; color: #999">\n                  <span class="provision_add_ssh_key_button">\n                    '+o((e.tr||t&&t.tr||r).call(t,"Add a public SSH key to your account!",{name:"tr",hash:{},data:n}))+"\n                    <br>\n                    "+o((e.tr||t&&t.tr||r).call(t,"You will be able to access your Virtual Machines without password",{name:"tr",hash:{},data:n}))+'\n                  </span>\n                  <span class="provision_update_ssh_key_button">\n                    '+o((e.tr||t&&t.tr||r).call(t,"Update your public SSH key!",{name:"tr",hash:{},data:n}))+"\n                    <br>\n                    "+o((e.tr||t&&t.tr||r).call(t,"You will be able to access your Virtual Machines without password",{name:"tr",hash:{},data:n}))+'\n                  </span>\n                </p>\n                <div class="row">\n                  <div class="large-12 large-centered columns">\n                    <textarea id="provision_ssh_key" style="height: 100px; font-size: 14px" placeholder="SSH key" class="provision-input"></textarea>\n                  </div>\n                </div>\n                <div class="row">\n                  <div class="large-12 large-centered columns">\n                    <button href="#" type="submit" class="provision_add_ssh_key_button button large radius large-12 small-12">'+o((e.tr||t&&t.tr||r).call(t,"Add SSH Key",{name:"tr",hash:{},data:n}))+'</button>\n                    <button href="#" type="submit" class="provision_update_ssh_key_button button large radius large-12 small-12 hidden">'+o((e.tr||t&&t.tr||r).call(t,"Update SSH Key",{name:"tr",hash:{},data:n}))+"</button>\n                  </div>\n                </div>\n              </div>\n            </dd>\n          </dl>\n        </div>\n      </div>\n    </form>\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/settings-tab/panels/user-config/html",a),a}),define("tabs/settings-tab/panels/user-config/panelId",["require"],function(){return"user_config_tab"}),define("tabs/settings-tab/panels/user-config",["require","foundation.accordion","utils/locale","sunstone-config","opennebula","hbs!./user-config/html","../tabId","./user-config/panelId"],function(t){function e(t,e){return this.tabId=e||o,this.title=s.tr("Config"),this.icon="fa-info",this.element=t[c],this}function a(){return r({languageOptions:s.language_options})}function n(t){$(document).foundation("accordion","reflow");var e=this.element.TEMPLATE.SSH_PUBLIC_KEY;return e&&e.length?($("#provision_ssh_key",t).val(e),$(".provision_add_ssh_key_button",t).hide(),$(".provision_update_ssh_key_button"),t.show()):($(".provision_add_ssh_key_button",t).show(),$(".provision_update_ssh_key_button",t).hide()),$('#provision_new_language option[value="'+config.user_config.lang+'"]',t).attr("selected","selected"),$('#provision_user_views_select option[value="'+config.user_config.default_view+'"]',t).attr("selected","selected"),$.each(config.available_views,function(e,a){$("select#provision_user_views_select",t).append('<option value="'+a+'">'+a+"</option>")}),$("#provision_change_password_form").submit(function(){var t=$("#provision_new_password",this).val(),e=$("#provision_new_confirm_password",this).val();return t.length?t!==e?(Notifier.notifyError(s.tr("Passwords do not match")),!1):(Sunstone.runAction("User.passwd","-1",t),!1):(Notifier.notifyError(s.tr("Fill in a new password")),!1)}),$("#provision_add_ssh_key_form").submit(function(){var t=$("#provision_ssh_key",this).val();return t.length?(i.User.show({data:{id:"-1"},success:function(e,a){var n=a.USER.TEMPLATE;n.SSH_PUBLIC_KEY=t,template_str="",$.each(n,function(t,e){template_str+=t+'="'+e+'"\n'}),Sunstone.runAction("User.update_template","-1",template_str)}}),!1):(Notifier.notifyError(s.tr("You have to provide an SSH key")),!1)}),$("#provision_change_view_form").submit(function(){var t=$("#provision_user_views_select",this).val();return i.User.show({data:{id:"-1"},success:function(e,a){var n=a.USER.TEMPLATE;n.DEFAULT_VIEW=t,template_str="",$.each(n,function(t,e){template_str+=t+'="'+e+'"\n'});var s=i.Helper.action("update",{template_raw:template_str});$.ajax({url:"config",type:"POST",dataType:"json",data:JSON.stringify(s),success:function(){window.location.href="."},error:function(){}})}}),!1}),$("#provision_change_language_form").submit(function(){var t=$("#provision_new_language",this).val();return i.User.show({data:{id:"-1"},success:function(e,a){var n=a.USER.TEMPLATE;n.LANG=t,template_str="",$.each(n,function(t,e){template_str+=t+'="'+e+'"\n'});var s=i.Helper.action("update",{template_raw:template_str});$.ajax({url:"config",type:"POST",dataType:"json",data:JSON.stringify(s),success:function(){window.location.href="."},error:function(){}})}}),!1}),!1}t("foundation.accordion");var s=t("utils/locale"),i=(t("sunstone-config"),t("opennebula")),r=t("hbs!./user-config/html"),o=t("../tabId"),l=t("./user-config/panelId"),c="USER";return e.PANEL_ID=l,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/settings-tab/panels/group-quotas/panelId",["require"],function(){return"group_quotas_tab"}),define("tabs/settings-tab/panels/group-quotas",["require","utils/locale","sunstone-config","utils/quotas/quota-defaults","utils/quotas/quota-widgets","opennebula/group","../tabId","./group-quotas/panelId"],function(t){function e(t,e){return this.tabId=e||c,this.title=i.tr("Group Quotas"),this.icon="fa-align-left",this.element=t[u],this}function a(){return'<div class="row">              <div class="large-6 columns">                <label>'+i.tr("Select group")+':                  <select id="quota_group_sel">                  </select>                </label>              </div>            </div>            <div id="group_quotasTabBody" class="row">            </div>'}function n(t){var e=this.element.GROUPS.ID;$.isArray(e)||(e=[e]);var a="";return $.each(e,function(){a+='<option elem_id="'+this+'" value="'+this+'">'+l.getName(this)+" (id:"+this+")</option>"}),$("select#quota_group_sel",t).html(a),$("#quota_group_sel",t).off("change"),$("#quota_group_sel",t).on("change",function(){var e=$("select#quota_group_sel").val();""!=e&&s(e,t)}),s("-1",t),!1}function s(t,e){l.show({data:{id:t},success:function(t,a){var n=a.GROUP,s=o.initQuotasPanel(n,r.getDefaultQuotas("Group"),!1);$("#group_quotasTabBody",e).html(s),o.setupQuotasPanel(n,$("#group_quotasTabBody",e),!1,"Group"),$("select#quota_group_sel",e).val(n.ID)}})}var i=t("utils/locale"),r=(t("sunstone-config"),t("utils/quotas/quota-defaults")),o=t("utils/quotas/quota-widgets"),l=t("opennebula/group"),c=t("../tabId"),d=t("./group-quotas/panelId"),u="USER";return e.PANEL_ID=d,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/acls-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Wizard" class="custom creation">\n  <div class="row">\n    <div class="medium-6 columns">\n      <fieldset>\n        <legend>'+o((e.tr||t&&t.tr||r).call(t,"This rule applies to",{name:"tr",hash:{},data:n}))+'</legend>\n        <div class="row">\n          <div class="large-4 columns">\n            <input type="radio" class="applies" name="applies_select" value="*" id="applies_all">\n            <label class="applies" for="applies_all">'+o((e.tr||t&&t.tr||r).call(t,"All",{name:"tr",hash:{},data:n}))+'</label>\n          </div>\n          <div class="large-4 columns">\n            <input type="radio" class="applies" name="applies_select" value="applies_to_user" id="applies_id">\n            <label class="applies" for="applies_id">'+o((e.tr||t&&t.tr||r).call(t,"User",{name:"tr",hash:{},data:n}))+'</label>\n          </div>\n          <div class="large-4 columns">\n            <input type="radio" class="applies" name="applies_select" value="applies_to_group" id="applies_group">\n            <label class="applies" for="applies_group">'+o((e.tr||t&&t.tr||r).call(t,"Group",{name:"tr",hash:{},data:n}))+'</label>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-12 columns">\n            <div class="applies_to_user">\n              <label for="applies_to_user">'+o((e.tr||t&&t.tr||r).call(t,"User",{name:"tr",hash:{},data:n}))+':</label>\n              <div name="applies_to_user" id="applies_to_user">\n              </div>\n            </div>\n            <div class="applies_to_group">\n              <label for="applies_to_group">'+o((e.tr||t&&t.tr||r).call(t,"Group",{name:"tr",hash:{},data:n}))+':</label>\n              <div name="applies_to_group" id="applies_to_group">\n              </div>\n            </div>\n          </div>\n        </div>\n      </fieldset>\n    </div>\n    <div class="medium-6 columns">\n      <label for="zones_applies">'+o((e.tr||t&&t.tr||r).call(t,"Zones where the rule applies",{name:"tr",hash:{},data:n}))+'</label>\n      <div name="zones_applies" id="zones_applies">\n      </div>\n    </div>\n  </div>\n  <fieldset>\n    <legend>'+o((e.tr||t&&t.tr||r).call(t,"Affected resources",{name:"tr",hash:{},data:n}))+'</legend>\n    <div class="row">\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_host" name="res_host" class="resource_cb" value="HOST">\n        <label for="res_host">'+o((e.tr||t&&t.tr||r).call(t,"Hosts",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_cluster" name="res_cluster" class="resource_cb" value="CLUSTER">\n        <label for="res_cluster">'+o((e.tr||t&&t.tr||r).call(t,"Clusters",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_datastore" name="res_datastore" class="resource_cb" value="DATASTORE">\n        <label for="res_datastore">'+o((e.tr||t&&t.tr||r).call(t,"Datastores",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_vm" name="res_vm" class="resource_cb" value="VM">\n        <label for="res_vm">'+o((e.tr||t&&t.tr||r).call(t,"Virtual Machines",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_net" name="res_net" class="resource_cb" value="NET">\n        <label for="res_net">'+o((e.tr||t&&t.tr||r).call(t,"Virtual Networks",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_image" name="res_image" class="resource_cb" value="IMAGE">\n        <label for="res_image">'+o((e.tr||t&&t.tr||r).call(t,"Images",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_template" name="res_template" class="resource_cb" value="TEMPLATE">\n        <label for="res_template">'+o((e.tr||t&&t.tr||r).call(t,"Templates",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_user" name="res_user" class="resource_cb" value="USER">\n        <label for="res_user">'+o((e.tr||t&&t.tr||r).call(t,"Users",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_group" name="res_group" class="resource_cb" value="GROUP">\n        <label for="res_group">'+o((e.tr||t&&t.tr||r).call(t,"Groups",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_document" name="res_document" class="resource_cb" value="DOCUMENT">\n        <label for="res_document">'+o((e.tr||t&&t.tr||r).call(t,"Documents",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_zone" name="res_zone" class="resource_cb" value="ZONE">\n        <label for="res_zone">'+o((e.tr||t&&t.tr||r).call(t,"Zones",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_secgroup" name="res_secgroup" class="resource_cb" value="SECGROUP">\n        <label for="res_secgroup">'+o((e.tr||t&&t.tr||r).call(t,"Security Groups",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="res_vdc" name="res_vdc" class="resource_cb" value="VDC">\n        <label for="res_vdc">'+o((e.tr||t&&t.tr||r).call(t,"VDCs",{name:"tr",hash:{},data:n}))+"</label>\n      </div>\n    </div>\n  </fieldset>\n  <fieldset>\n    <legend>"+o((e.tr||t&&t.tr||r).call(t,"Resource subset",{name:"tr",hash:{},data:n}))+'</legend>\n    <div class="row">\n      <div class="large-3 columns">\n        <input type="radio" class="res_subgroup" name="mode_select" value="*" id="res_subgroup_all">\n        <label class="res_subgroup" for="res_subgroup_all">'+o((e.tr||t&&t.tr||r).call(t,"All",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 columns">\n        <input type="radio" class="res_subgroup" name="mode_select" value="res_id" id="res_subgroup_id">\n        <label class="res_subgroup" for="res_subgroup_id">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 columns">\n        <input type="radio" class="res_subgroup" name="mode_select" value="belonging_to" id="res_subgroup_group">\n        <label class="res_subgroup" for="res_subgroup_group">'+o((e.tr||t&&t.tr||r).call(t,"Group",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 columns">\n        <input type="radio" class="res_subgroup" name="mode_select" value="in_cluster" id="res_subgroup_cluster">\n        <label class="res_subgroup" for="res_subgroup_cluster">'+o((e.tr||t&&t.tr||r).call(t,"Cluster",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-6 columns">\n        <div class="res_id">\n          <label for="res_id">'+o((e.tr||t&&t.tr||r).call(t,"Resource ID",{name:"tr",hash:{},data:n}))+':</label>\n          <input type="text" name="res_id" id="res_id"></input>\n        </div>\n        <div class="belonging_to">\n          <label for="belonging_to">'+o((e.tr||t&&t.tr||r).call(t,"Group",{name:"tr",hash:{},data:n}))+':</label>\n          <div name="belonging_to" id="belonging_to">\n          </div>\n        </div>\n        <div class="in_cluster">\n          <label for="in_cluster">'+o((e.tr||t&&t.tr||r).call(t,"Cluster",{name:"tr",hash:{},data:n}))+':</label>\n          <div name="in_cluster" id="in_cluster">\n          </div>\n        </div>\n      </div>\n    </div>\n  </fieldset>\n  <fieldset>\n    <legend>'+o((e.tr||t&&t.tr||r).call(t,"Allowed operations",{name:"tr",hash:{},data:n}))+'</legend>\n    <div class="row">\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="right_delete" name="right_delete" class="right_cb" value="USE">\n        <label for="right_delete">'+o((e.tr||t&&t.tr||r).call(t,"Use",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="right_use" name="right_use" class="right_cb" value="MANAGE">\n        <label for="right_use">'+o((e.tr||t&&t.tr||r).call(t,"Manage",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="right_manage" name="right_manage" class="right_cb" value="ADMIN">\n        <label for="right_manage">'+o((e.tr||t&&t.tr||r).call(t,"Administrate",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n      <div class="large-3 medium-6 columns">\n        <input type="checkbox" id="right_create" name="right_create" class="right_cb" value="CREATE">\n        <label for="right_create">'+o((e.tr||t&&t.tr||r).call(t,"Create",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n    </div>\n  </fieldset>\n  <br>\n  <div class="row">\n    <div class="large-12 columns">\n      <label for="acl_preview">'+o((e.tr||t&&t.tr||r).call(t,"ACL String preview",{name:"tr",hash:{},data:n}))+':</label>\n      <input type="text" name="acl_preview" id="acl_preview"></input>\n    </div>\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/acls-tab/form-panels/create/wizard",a),a}),define("tabs/acls-tab/form-panels/create/formPanelId",["require"],function(){return"createAclForm"}),define("tabs/acls-tab/tabId",["require"],function(){return"acls-tab"}),define("tabs/acls-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","utils/notifier","utils/resource-select","hbs!./create/wizard","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=p,this.tabId=h,this.actions={create:{title:l.tr("Create ACL"),buttonText:l.tr("Create"),resetButton:!0}},r.call(this)}function a(){return u({formPanelId:this.formPanelId})}function n(t){$("#applies_all",t).attr("checked","checked"),$(".applies_to_user",t).hide(),$(".applies_to_group",t).hide(),$("#res_subgroup_all",t).attr("checked","checked"),$(".res_id",t).hide(),$(".belonging_to",t).hide(),$(".in_cluster",t).hide(),$(".applies",t).click(function(){var e=$(this).val();switch(e){case"*":$(".applies_to_user",t).hide(),$(".applies_to_group",t).hide();break;case"applies_to_user":$(".applies_to_user",t).show(),$(".applies_to_group",t).hide();break;case"applies_to_group":$(".applies_to_user",t).hide(),$(".applies_to_group",t).show()}}),$(".res_subgroup",t).click(function(){var e=$(this).val();switch(e){case"*":$(".res_id",t).hide(),$(".belonging_to",t).hide(),$(".in_cluster",t).hide();break;case"res_id":$(".res_id",t).show(),$(".belonging_to").hide(),$(".in_cluster",t).hide();break;case"belonging_to":$(".res_id",t).hide(),$(".belonging_to",t).show(),$(".in_cluster",t).hide();break;case"in_cluster":$(".res_id",t).hide(),$(".belonging_to",t).hide(),$(".in_cluster",t).show()}}),$("input#res_id",t).keyup(function(){$(this).trigger("change")}),t.off("change","input,select"),t.on("change","input,select",function(){var e="",a=$(".applies:checked",t).val();switch(a){case"*":e="*";break;case"applies_to_user":e="#"+$("div#applies_to_user .resource_list_select",t).val();break;case"applies_to_group":e="@"+$("div#applies_to_group .resource_list_select",t).val()}var n="";$(".resource_cb:checked",t).each(function(){n+=$(this).val()+"+"}),n.length&&(n=n.substring(0,n.length-1));var s="",a=$(".res_subgroup:checked",t).val();switch(a){case"*":s="*";break;case"res_id":s="#"+$("#res_id",t).val();break;case"belonging_to":s="@"+$("div#belonging_to .resource_list_select",t).val();break;case"in_cluster":s="%"+$("#in_cluster .resource_list_select",t).val()}var i="";$(".right_cb:checked",t).each(function(){i+=$(this).val()+"+"}),i.length&&(i=i.substring(0,i.length-1));var r=$("#zones_applies .resource_list_select",t).val();"*"!=r&&(r="#"+r);var o=e+" "+n+"/"+s+" "+i+" "+r;$("#acl_preview",t).val(o)})}function s(t){var e=$(".applies:checked",t).val();switch(e){case"applies_to_user":var a=$("#applies_to_user .resource_list_select",t).val().length;if(!a)return o.hideFormPanelLoading(this.tabId),c.notifyError(l.tr("Please select a user to whom the acl applies")),!1;break;case"applies_to_group":var a=$("#applies_to_group .resource_list_select",t).val().length;if(!a)return o.hideFormPanelLoading(this.tabId),c.notifyError(l.tr("Please select a group to whom the acl applies")),!1}var n=$(".resource_cb:checked",t).length;if(!n)return o.hideFormPanelLoading(this.tabId),c.notifyError(l.tr("Please select at least one resource")),!1;var e=$(".res_subgroup:checked",t).val();switch(e){case"res_id":var a=$("#res_id",t).val().length;if(!a)return o.hideFormPanelLoading(this.tabId),c.notifyError(l.tr("Please provide a resource ID for the resource(s) in this rule")),!1;break;case"belonging_to":var a=$("#belonging_to .resource_list_select",t).val().length;if(!a)return o.hideFormPanelLoading(this.tabId),c.notifyError("Please select a group to which the selected resources belong to"),!1;break;case"in_cluster":var a=$("#in_cluster .resource_list_select",t).val().length;if(!a)return o.hideFormPanelLoading(this.tabId),c.notifyError("Please select a cluster to which the selected resources belong to"),!1}var s=$(".right_cb:checked",t).length;if(!s)return o.hideFormPanelLoading(this.tabId),c.notifyError("Please select at least one operation"),!1;var i=$("#acl_preview",t).val(),r={acl:i};return o.runAction("Acl.create",r),!1}function i(t){d.insert("div#applies_to_user",t,"User",null,!0),d.insert("div#applies_to_group",t,"Group",null,!0),d.insert("div#belonging_to",t,"Group",null,!0),d.insert("#in_cluster",t,"Cluster",null,!0),$('#in_cluster select option[value="-1"]',t).remove(),d.insert("div#zones_applies",t,"Zone","*",!1,'<option value="*">'+l.tr("All")+"</option>")}t("foundation.tab");var r=t("utils/form-panels/form-panel"),o=t("sunstone"),l=t("utils/locale"),c=t("utils/notifier"),d=t("utils/resource-select"),u=t("hbs!./create/wizard"),p=t("./create/formPanelId"),h=t("../tabId");return e.FORM_PANEL_ID=p,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.submitWizard=s,e.prototype.onShow=i,e.prototype.setup=n,e}),define("tabs/settings-tab",["require","utils/locale","opennebula/user","sunstone","./users-tab/actions","./settings-tab/tabId","tabs/users-tab/tabId","tabs/users-tab/dialogs/password","tabs/users-tab/panels/info","tabs/settings-tab/panels/user-config","tabs/users-tab/panels/quotas","tabs/settings-tab/panels/group-quotas","tabs/users-tab/panels/accounting","tabs/users-tab/panels/showback","./acls-tab/form-panels/create"],function(t){function e(){n.show({data:{id:-1},success:function(t,e){s.insertPanels(r,e,r,$(".right-list",$("#"+r)))}})}{var a=t("utils/locale"),n=t("opennebula/user"),s=t("sunstone"),i=t("./users-tab/actions"),r=t("./settings-tab/tabId");t("tabs/users-tab/tabId")}i["Settings.refresh"]={type:"custom",call:e};var o=[t("tabs/users-tab/dialogs/password")],l=[t("tabs/users-tab/panels/info"),t("tabs/settings-tab/panels/user-config"),t("tabs/users-tab/panels/quotas"),t("tabs/settings-tab/panels/group-quotas"),t("tabs/users-tab/panels/accounting"),t("tabs/users-tab/panels/showback")],c=([t("./acls-tab/form-panels/create")],{tabId:r,title:'<i class="fa fa-lg fa-fw fa-cog"></i>&emsp;'+a.tr("Settings"),listHeader:'<i class="fa fa-cog"></i>&emsp;'+a.tr("Settings"),resource:"Settings",actions:i,content:'<span class="fa-stack fa-2x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span>',dialogs:o,panels:l});return c}),define("hbs!tabs/dashboard-tab/html",["hbs","hbs/handlebars"],function(t,e){var a=e.template({1:function(t){var e,a=this.lambda,n='    <div class="small-12 large-12 columns">\n      ';return e=a(t,t),null!=e&&(n+=e),n+"\n    </div>\n"},3:function(t){var e,a=this.lambda,n='    <div class="small-4 large-4 columns">\n      ';return e=a(t,t),null!=e&&(n+=e),n+"\n    </div>\n"},5:function(t){var e,a=this.lambda,n='    <div class="small-6 large-6 columns">\n      ';return e=a(t,t),null!=e&&(n+=e),n+"\n    </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i='<div>\n  <div id="one_per_row">\n';return s=e.each.call(t,null!=t?t.onePerRow:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(i+=s),i+='  </div>\n  <div id="three_per_row" class="row">\n',s=e.each.call(t,null!=t?t.threePerRow:t,{name:"each",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(i+=s),i+='  </div>\n  <div id="two_per_row" class="row">\n',s=e.each.call(t,null!=t?t.twoPerRow:t,{name:"each",hash:{},fn:this.program(5,n),inverse:this.noop,data:n}),null!=s&&(i+=s),i+='  </div>\n  <div id="one_footer">\n',s=e.each.call(t,null!=t?t.oneFooter:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(i+=s),i+"  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/dashboard-tab/html",a),a}),define("tabs/vms-tab/tabId",["require"],function(){return"vms-tab"}),define("tabs/hosts-tab/tabId",["require"],function(){return"hosts-tab"}),define("tabs/images-tab/tabId",["require"],function(){return"images-tab"}),define("tabs/vnets-tab/tabId",["require"],function(){return"vnets-tab"}),define("tabs/vms-tab/form-panels/create/formPanelId",["require"],function(){return"createVMForm"}),define("tabs/hosts-tab/form-panels/create/formPanelId",["require"],function(){return"createHostForm"}),define("tabs/images-tab/form-panels/create/formPanelId",["require"],function(){return"createImageForm"}),define("tabs/vnets-tab/form-panels/create/formPanelId",["require"],function(){return"createVNetForm"}),define("hbs!tabs/dashboard-tab/storage",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row totals-info dashboard-widget-footer">\n  <div class="small-12 large-12 columns text-center">\n    <h2 class="subheader">\n      <small>'+i((e.tr||t&&t.tr||s).call(t,"IMAGES",{name:"tr",hash:{},data:n}))+'</small>\n      <br>\n      <span class="total_images subheader"></span>\n      <small><i class="fa fa-fw fa-upload"></i> </small>\n    </h2>\n  </div>\n  <div class="small-12 large-12 columns text-center">\n    <h5 class="subheader">\n      <span class="size_images subheader"></span>\n      <br>\n      <small>'+i((e.tr||t&&t.tr||s).call(t,"USED",{name:"tr",hash:{},data:n}))+'</small>\n    </h5>\n  </div>\n    <div class="small-12 large-12 columns text-center">\n      <br>\n      <a class="button secondary radius tiny show_images_tab"> <i class="fa fa-lg fa-list fa-fw"></i>\n      </a>\n      <a class="button secondary  radius tiny show_create_image">\n        <i class="fa fa-lg fa-plus fa-fw"></i><i class="fa fa-fw fa-lg fa-upload"></i>\n      </a>\n    </div>\n</div>'
+},useData:!0});return e.registerPartial("tabs/dashboard-tab/storage",a),a}),define("hbs!tabs/dashboard-tab/empty-graph",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<span class="fa-stack fa-2x" style="color: #dfdfdf"> <i class="fa fa-cloud fa-stack-2x"></i>\n</span>\n<br>\n<span style="color: #cfcfcf">'+i((e.tr||t&&t.tr||s).call(t,"There is no information available",{name:"tr",hash:{},data:n}))+"</span>"},useData:!0});return e.registerPartial("tabs/dashboard-tab/empty-graph",a),e.registerPartial("./empty-graph",a),a}),define("hbs!tabs/dashboard-tab/users",["hbs","hbs/handlebars","hbs!tabs/dashboard-tab/empty-graph","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div class="row totals-info">\n  <div class="large-3 medium-6 small-12 columns">\n    <div class="small-12 large-12 columns text-center">\n      <h2 class="subheader">\n        <small>'+r((e.tr||t&&t.tr||i).call(t,"USERS",{name:"tr",hash:{},data:n}))+'</small>\n        <br>\n        <span class="subheader total_users">-</span>\n        <small><i class="fa fa-fw fa-user"></i> </small>\n      </h2>\n    </div>\n    <div class="small-12 large-12 columns text-center" style="margin-top: 20px">\n      <a class="button secondary radius tiny show_users_tab"> <i class="fa fa-lg fa-list fa-fw"></i></a>\n      <a class="button secondary radius tiny show_create_user">\n        <i class="fa fa-lg fa-plus fa-fw"></i><i class="fa fa-fw fa-lg fa-user"></i></a>\n    </div>\n  </div>\n  <div class="large-9 medium-6 small-12 columns text-center" id="dashboard_vdc_user_accounting">\n    <input style="display:none;" value="user" id="acct_group_by"/>\n    <div class="small-12 large-6 columns">\n      <h4 class="subheader">\n        <small>'+r((e.tr||t&&t.tr||i).call(t,"CPU hours",{name:"tr",hash:{},data:n}))+'</small>\n      </h4>\n      <div class="large-12 columns centered graph text-center" id="acct_cpu_graph" style="height: 100px;">';return s=this.invokePartial(a["./empty-graph"],"","./empty-graph",t,void 0,e,a,n),null!=s&&(o+=s),o+='</div>\n    </div>\n    <div class="small-12 large-6 columns">\n      <h4 class="subheader">\n        <small>'+r((e.tr||t&&t.tr||i).call(t,"Memory GB hours",{name:"tr",hash:{},data:n}))+'</small>\n      </h4>\n      <div class="large-12 columns centered graph text-center" id="acct_mem_graph" style="height: 100px;">',s=this.invokePartial(a["./empty-graph"],"","./empty-graph",t,void 0,e,a,n),null!=s&&(o+=s),o+'</div>\n    </div>\n  </div>\n</div>\n<div class="row dashboard-widget-footer">\n  <div class="small-3 large-3 columns text-center"></div>\n</div>'},usePartial:!0,useData:!0});return e.registerPartial("tabs/dashboard-tab/users",a),a}),define("hbs!tabs/dashboard-tab/network",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row totals-info dashboard-widget-footer">\n  <div class="small-12 large-12 columns text-center">\n    <h2 class="subheader">\n      <small>'+i((e.tr||t&&t.tr||s).call(t,"VNETs",{name:"tr",hash:{},data:n}))+'</small>\n      <br>\n      <span class="total_vnets subheader"></span>\n      <small><i class="fa fa-fw fa-sitemap"></i> </small>\n    </h2>\n  </div>\n  <div class="small-12 large-12 columns text-center">\n    <h5 class="subheader">\n      <span class="addresses_vnets subheader"></span>\n      <br>\n      <small>'+i((e.tr||t&&t.tr||s).call(t,"USED IPs",{name:"tr",hash:{},data:n}))+'</small>\n    </h5>\n  </div>\n    <div class="small-12 large-12 columns text-center">\n      <br>\n      <a class="button secondary radius tiny show_vnets_tab"> <i class="fa fa-lg fa-list fa-fw"></i>\n      </a>\n      <a class="button secondary  radius tiny show_create_vnet">\n        <i class="fa fa-lg fa-plus fa-fw"></i><i class="fa fa-fw fa-lg fa-sitemap"></i>\n      </a>\n    </div>\n</div>'},useData:!0});return e.registerPartial("tabs/dashboard-tab/network",a),a}),define("hbs!tabs/dashboard-tab/hosts",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row  totals-info">\n  <div class="small-12 medium-6 large-3 columns centered">\n    <div class="small-12 large-12 columns text-center">\n      <h2 class="subheader">\n        <small>'+i((e.tr||t&&t.tr||s).call(t,"HOSTs",{name:"tr",hash:{},data:n}))+'</small>\n        <br>\n        <span class="total_hosts subheader"/> \n        <small><i class="fa fa-fw fa-lg fa-hdd-o"></i></small>\n      </h2>\n    </div>\n    <div class="small-4 large-4 columns text-center">\n      <h5 class="subheader">\n        <span class="on_hosts subheader success-color"/>\n        <br>\n        <small class="success-color">'+i((e.tr||t&&t.tr||s).call(t,"ON",{name:"tr",hash:{},data:n}))+'</small>\n      </h5>\n    </div>\n    <div class="small-4 large-4 columns text-center">\n      <h5 class="subheader">\n        <span class="off_hosts subheader"/>\n        <br>\n        <small>'+i((e.tr||t&&t.tr||s).call(t,"OFF",{name:"tr",hash:{},data:n}))+'</small>\n      </h5>\n    </div>\n    <div class="small-4 large-4 columns text-center">\n      <h5 class="subheader">\n        <span class="error_hosts subheader alert-color"/>\n        <br>\n        <small class="alert-color">'+i((e.tr||t&&t.tr||s).call(t,"ERROR",{name:"tr",hash:{},data:n}))+'</small>\n      </h5>\n    </div>\n    <div class="small-12 large-12 columns text-center">\n      <br>\n      <a class="button secondary radius tiny show_hosts_tab"> <i class="fa fa-lg fa-list fa-fw"></i>\n      </a>\n      <a class="button secondary  radius tiny show_create_host">\n        <i class="fa fa-lg fa-plus fa-fw"></i><i class="fa fa-fw fa-lg fa-hdd-o"></i>\n      </a>\n    </div>\n  </div>\n  <div class="small-12 medium-6 large-9 columns">\n    <div class="row">\n      <div class="small-12 large-6 columns">\n        <div id="dashboard_host_allocated_cpu" style="padding: 0px 40px"></div>\n        <br>\n        <div id="dashboard_host_real_cpu" style="padding: 0px 40px"></div>\n      </div>\n      <div class="small-12 large-6 columns">\n        <div id="dashboard_host_allocated_mem" style="padding: 0px 40px"></div>\n        <br>\n        <div id="dashboard_host_real_mem" style="padding: 0px 40px"></div>\n      </div>\n    </div>\n  </div>\n</div>\n<div class="row dashboard-widget-footer">\n  <div class="small-3 large-3 columns text-center"></div>\n</div>'},useData:!0});return e.registerPartial("tabs/dashboard-tab/hosts",a),a}),define("hbs!tabs/dashboard-tab/vms",["hbs","hbs/handlebars","hbs!tabs/dashboard-tab/empty-graph","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div class="row totals-info">\n  <div class="small-12 medium-6 large-3 columns">\n    <div class="small-12 large-12 columns text-center">\n      <h2 class="subheader">\n        <small>'+r((e.tr||t&&t.tr||i).call(t,"VMs",{name:"tr",hash:{},data:n}))+'</small>\n        <br>\n        <span class="subheader total_vms"></span>\n        <small><i class="fa fa-fw fa-th"></i></small>\n      </h2>\n    </div>\n    <div class="small-4 large-4 columns text-center">\n      <h5 class="subheader">\n        <span class="subheader active_vms success-color"></span>\n        <br>\n        <small class="success-color">'+r((e.tr||t&&t.tr||i).call(t,"ACTIVE",{name:"tr",hash:{},data:n}))+'</small>\n      </h5>\n    </div>\n    <div class="small-4 large-4 columns text-center">\n      <h5 class="subheader">\n        <span class="subheader pending_vms"></span>\n        <br>\n        <small>'+r((e.tr||t&&t.tr||i).call(t,"PENDING",{name:"tr",hash:{},data:n}))+'</small>\n      </h5>\n    </div>\n    <div class="small-4 large-4 columns text-center">\n      <h5 class="subheader">\n        <span class="subheader failed_vms alert-color"></span>\n        <br>\n        <small class="alert-color">'+r((e.tr||t&&t.tr||i).call(t,"FAILED",{name:"tr",hash:{},data:n}))+'</small>\n      </h5>\n    </div>\n    <div class="small-12 large-12 columns text-center" style="margin-top: 20px">\n      <a class="button secondary radius tiny show_vms_tab"> <i class="fa fa-lg fa-list fa-fw"></i>\n      </a>\n      <a class="button secondary radius tiny show_create_vm">\n        <i class="fa fa-lg fa-plus fa-fw"></i><i class="fa fa-fw fa-lg fa-th"></i></a>\n      <br>\n    </div>\n  </div>\n  <div class="large-9 medium-6 small-12 columns text-center" id="dashboard_vm_accounting">\n    <input style="display:none;" value="vm" id="acct_group_by"/>\n    <div class="small-12 large-6 columns">\n      <h4 class="subheader">\n        <small>'+r((e.tr||t&&t.tr||i).call(t,"CPU hours",{name:"tr",hash:{},data:n}))+'</small>\n      </h4>\n      <div class="large-12 columns centered graph text-center" id="acct_cpu_graph" style="height: 180px;">';return s=this.invokePartial(a["./empty-graph"],"","./empty-graph",t,void 0,e,a,n),null!=s&&(o+=s),o+='</div>\n    </div>\n    <div class="small-12 large-6 columns">\n      <h4 class="subheader">\n        <small>'+r((e.tr||t&&t.tr||i).call(t,"Memory GB hours",{name:"tr",hash:{},data:n}))+'</small>\n      </h4>\n      <div class="large-12 columns centered graph text-center" id="acct_mem_graph" style="height: 180px;">',s=this.invokePartial(a["./empty-graph"],"","./empty-graph",t,void 0,e,a,n),null!=s&&(o+=s),o+'</div>\n    </div>\n  </div>\n</div>\n<div class="row dashboard-widget-footer">\n  <div class="small-3 large-3 columns text-center"></div>\n</div>'},usePartial:!0,useData:!0});return e.registerPartial("tabs/dashboard-tab/vms",a),a}),define("hbs!tabs/dashboard-tab/user-quotas",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<h5 class="subheader"> <i class="fa fa-fw fa-lg fa-align-left"></i>\n  '+i((e.tr||t&&t.tr||s).call(t,"User Quotas",{name:"tr",hash:{},data:n}))+'\n</h5>\n<div class="row totals-info dashboard-widget-footer" id="quotas_tab_user">\n  <div class="large-12 small-12 columns">\n    <div class="row">\n      <div class="large-8 large-centered columns">\n        <div class="text-center">\n          <span class="fa-stack fa-5x" style="color: #dfdfdf"> <i class="fa fa-cloud fa-stack-2x"></i>\n            <i class="fa fa-align-left fa-stack-1x fa-inverse"></i>\n          </span>\n          <br>\n          <p style="font-size: 18px; color: #999">'+i((e.tr||t&&t.tr||s).call(t,"There are no quotas defined",{name:"tr",hash:{},data:n}))+"</p>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/dashboard-tab/user-quotas",a),a}),define("hbs!tabs/dashboard-tab/group-quotas",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<h5 class="subheader"> <i class="fa fa-fw fa-lg fa-align-left"></i>\n  '+i((e.tr||t&&t.tr||s).call(t,"Group Quotas",{name:"tr",hash:{},data:n}))+'\n</h5>\n<div id="quotas_tab_group_TabBody" class="row">\n  <div class="large-12 columns">\n    <div class="row">\n      <div class="large-8 large-centered columns">\n        <div class="text-center">\n          <span class="fa-stack fa-5x" style="color: #dfdfdf"> <i class="fa fa-cloud fa-stack-2x"></i>\n            <i class="fa fa-align-left fa-stack-1x fa-inverse"></i>\n          </span>\n          <br>\n          <p style="font-size: 18px; color: #999">'+i((e.tr||t&&t.tr||s).call(t,"There are no quotas defined",{name:"tr",hash:{},data:n}))+'</p>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<div class="row dashboard-widget-footer">\n  <div class="large-12 columns">\n    <label>\n      '+i((e.tr||t&&t.tr||s).call(t,"Select group",{name:"tr",hash:{},data:n}))+':\n      <div id="quotas_tab_group_sel"></div>\n    </label>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/dashboard-tab/group-quotas",a),a}),define("hbs!tabs/dashboard-tab/accounting",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<h5 class="subheader"> <i class="fa fa-fw fa-lg fa-bar-chart-o"></i>\n  '+i((e.tr||t&&t.tr||s).call(t,"Accounting",{name:"tr",hash:{},data:n}))+'\n</h5>\n<div class="row dashboard-widget-footer">\n  <div id="user_dashboard_info_acct_div" class="large-12 columns columns"></div>\n</div>'},useData:!0});return e.registerPartial("tabs/dashboard-tab/accounting",a),a}),define("tabs/dashboard-tab",["require","utils/locale","sunstone-config","sunstone","utils/notifier","opennebula/vm","utils/accounting","hbs!./dashboard-tab/html","tabs/vms-tab/tabId","tabs/hosts-tab/tabId","tabs/users-tab/tabId","tabs/images-tab/tabId","tabs/vnets-tab/tabId","tabs/vms-tab/form-panels/create/formPanelId","tabs/hosts-tab/form-panels/create/formPanelId","tabs/users-tab/form-panels/create/formPanelId","tabs/images-tab/form-panels/create/formPanelId","tabs/vnets-tab/form-panels/create/formPanelId","hbs!./dashboard-tab/storage","hbs!./dashboard-tab/users","hbs!./dashboard-tab/network","hbs!./dashboard-tab/hosts","hbs!./dashboard-tab/vms","hbs!./dashboard-tab/user-quotas","hbs!./dashboard-tab/group-quotas","hbs!./dashboard-tab/accounting","./dashboard-tab/tabId"],function(t){function e(){var t={threePerRow:[],twoPerRow:[],onePerRow:[],oneFooter:[]};return $.each(i.dashboardWidgets("widgets_three_per_row"),function(e,a){T.push(a),t.threePerRow.push(E[a].html())}),$.each(i.dashboardWidgets("widgets_two_per_row"),function(e,a){T.push(a),t.twoPerRow.push(E[a].html())}),$.each(i.dashboardWidgets("widgets_one_per_row"),function(e,a){T.push(a),t.onePerRow.push(E[a].html())}),$.each(i.dashboardWidgets("widgets_one_footer"),function(e,a){T.push(a),t.oneFooter.push(E[a].html())}),d(t)}function a(){w||n(),$.each(T,function(t,e){E[e].onShow&&E[e].onShow()})}function n(){w=!0,$(document).on("click",".show_vms_tab",function(){return r.showTab(u),!1}),$(document).on("click",".show_hosts_tab",function(){return r.showTab(p),!1}),$(document).on("click",".show_users_tab",function(){return r.showTab(h),!1}),$(document).on("click",".show_images_tab",function(){return r.showTab(f),!1}),$(document).on("click",".show_vnets_tab",function(){return r.showTab(m),!1}),$(document).on("click",".show_create_vm",function(){return r.showTab(u),r.showFormPanel(u,_,"create"),!1}),$(document).on("click",".show_create_host",function(){return r.showTab(p),r.showFormPanel(p,b,"create"),!1}),$(document).on("click",".show_create_user",function(){return r.showTab(h),r.showFormPanel(h,v,"create"),!1}),$(document).on("click",".show_create_image",function(){return r.showTab(f),r.showFormPanel(f,g,"create"),!1}),$(document).on("click",".show_create_vnet",function(){return r.showTab(m),r.showFormPanel(m,y,"create"),!1})}var s=t("utils/locale"),i=t("sunstone-config"),r=t("sunstone"),o=t("utils/notifier"),l=t("opennebula/vm"),c=t("utils/accounting"),d=t("hbs!./dashboard-tab/html"),u=t("tabs/vms-tab/tabId"),p=t("tabs/hosts-tab/tabId"),h=t("tabs/users-tab/tabId"),f=t("tabs/images-tab/tabId"),m=t("tabs/vnets-tab/tabId"),_=t("tabs/vms-tab/form-panels/create/formPanelId"),b=t("tabs/hosts-tab/form-panels/create/formPanelId"),v=t("tabs/users-tab/form-panels/create/formPanelId"),g=t("tabs/images-tab/form-panels/create/formPanelId"),y=t("tabs/vnets-tab/form-panels/create/formPanelId"),w=!1,T=[],E={storage:{html:t("hbs!./dashboard-tab/storage"),onShow:function(){r.runAction("Image.list")}},users:{html:t("hbs!./dashboard-tab/users"),onShow:function(){r.runAction("User.list"),r.runAction("Group.list");var t=-1,e=Math.floor((new Date).getTime()/1e3);e-=604800;var a={start_time:e,end_time:t},n=!0;$("#acct_cpu_graph, #acct_mem_graph","#dashboard_vdc_user_accounting").html('<span  id="provision_dashboard_total" style="font-size:80px"><i class="fa fa-spinner fa-spin"></i></span>'),l.accounting({success:function(t,e){c.fillAccounting($("#dashboard_vdc_user_accounting"),t,e,n)},error:o.onError,data:a})}},network:{html:t("hbs!./dashboard-tab/network"),onShow:function(){r.runAction("Network.list")}},hosts:{html:t("hbs!./dashboard-tab/hosts"),onShow:function(){r.runAction("Host.list")}},vms:{html:t("hbs!./dashboard-tab/vms"),onShow:function(){r.runAction("VM.list");var t=-1,e=Math.floor((new Date).getTime()/1e3);e-=604800;var a={start_time:e,end_time:t},n=!0;$("#acct_cpu_graph, #acct_mem_graph","#dashboard_vm_accounting").html('<span  id="provision_dashboard_total" style="font-size:80px"><i class="fa fa-spinner fa-spin"></i></span>'),l.accounting({success:function(t,e){c.fillAccounting($("#dashboard_vm_accounting"),t,e,n)},error:o.onError,data:a})}},user_quotas:{html:t("hbs!./dashboard-tab/user-quotas")},group_quotas:{html:t("hbs!./dashboard-tab/group-quotas")},accounting:{html:t("hbs!./dashboard-tab/accounting")}},S={"Dashboard.refresh":{type:"action",layout:"refresh",alwaysActive:!0}},I={"Dashboard.refresh":{type:"custom",call:a}},x=t("./dashboard-tab/tabId"),A={tabId:x,resource:"Dashboard",title:'<i class="fa fa-lg fa-fw fa-tachometer"></i>&emsp;'+s.tr("Dashboard"),listHeader:'<i class="fa fa-lg fa-fw fa-tachometer"></i>&emsp;'+s.tr("Dashboard"),buttons:S,actions:I,content:e()};return A}),define("tabs/system-tab",["require","utils/locale"],function(t){var e=t("utils/locale"),a="system-tab",n={tabId:a,title:'<i class="fa fa-lg fa-fw fa-cogs"></i>&emsp;'+e.tr("System"),no_content:!0};return n}),define("tabs/groups-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Group.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Group.create_dialog":{type:"create_dialog",layout:"create"},"Group.update_dialog":{type:"action",layout:"main",text:e.tr("Update")},"Group.quotas_dialog":{type:"action",text:e.tr("Quotas"),layout:"main"},"Group.delete":{type:"confirm",text:e.tr("Delete"),layout:"del"}};return a}),define("tabs/groups-tab/tabId",["require"],function(){return"groups-tab"}),define("tabs/groups-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","utils/quotas/quota-defaults","utils/quotas/quota-widgets","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=p,this.dataTableId=t,this.resource=d,this.xmlRoot=u,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check",4,5,6]},{sWidth:"35px",aTargets:[0]},{sWidth:"150px",aTargets:[4,5,6]},{bVisible:!0,aTargets:r.tabTableColumns(p)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[o.tr("ID"),o.tr("Name"),o.tr("Users"),o.tr("VMs"),o.tr("Memory"),o.tr("CPU")],this.selectOptions={id_index:1,name_index:2,select_resource:o.tr("Please select a Group from the list"),you_selected:o.tr("You selected the following Group:"),select_resource_multiple:o.tr("Please select one or more groups from the list"),you_selected_multiple:o.tr("You selected the following groups:")},this.totalGroups=0,i.call(this)}function a(t){var e=t[u],a="0";e.USERS.ID&&(a=$.isArray(e.USERS.ID)?e.USERS.ID.length:"1");var n='<span class="progress-text right" style="font-size: 12px">-</span>',s='<span class="progress-text right" style="font-size: 12px">-</span>',i='<span class="progress-text right" style="font-size: 12px">-</span>',r=l.getDefaultGroupQuotas();return c.initEmptyQuotas(e),$.isEmptyObject(e.VM_QUOTA)||(n=c.quotaBar(e.VM_QUOTA.VM.VMS_USED,e.VM_QUOTA.VM.VMS,r.VM_QUOTA.VM.VMS),s=c.quotaBarMB(e.VM_QUOTA.VM.MEMORY_USED,e.VM_QUOTA.VM.MEMORY,r.VM_QUOTA.VM.MEMORY),i=c.quotaBarFloat(e.VM_QUOTA.VM.CPU_USED,e.VM_QUOTA.VM.CPU,r.VM_QUOTA.VM.CPU)),['<input class="check_item" type="checkbox" id="'+d.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.NAME,a,n,s,i]}function n(){this.totalGroups=0}function s(){$(".total_groups").text(this.totalGroups)}var i=t("utils/tab-datatable"),r=t("sunstone-config"),o=t("utils/locale"),l=t("utils/quotas/quota-defaults"),c=t("utils/quotas/quota-widgets"),d="Group",u="GROUP",p=t("./tabId");return e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e.prototype.preUpdateView=n,e.prototype.postUpdateView=s,e}),define("tabs/groups-tab/form-panels/create/formPanelId",["require"],function(){return"createGroupForm"}),define("tabs/groups-tab/dialogs/quotas/dialogId",["require"],function(){return"groupQuotasDialog"}),define("tabs/groups-tab/actions",["require","sunstone","utils/notifier","utils/locale","./datatable","opennebula/group","./tabId","./form-panels/create/formPanelId","./dialogs/quotas/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=(t("utils/locale"),t("./datatable"),t("opennebula/group")),s="Group",i="GROUP",r=t("./tabId"),o=t("./form-panels/create/formPanelId"),l=t("./dialogs/quotas/dialogId"),c={"Group.create":{type:"create",call:n.create,callback:function(t,a){e.resetFormPanel(r,o),e.hideFormPanel(r),e.getDataTable(r).addElement(t,a)},error:function(t,n){e.hideFormPanelLoading(r),a.onError(t,n)},notify:!0},"Group.create_dialog":{type:"custom",call:function(){e.showFormPanel(r,o,"create")}},"Group.list":{type:"list",call:n.list,callback:function(t,a){e.getDataTable(r).updateView(t,a)},error:a.onError},"Group.show":{type:"single",call:n.show,callback:function(t,a){e.getDataTable(r).updateElement(t,a),e.rightInfoVisible($("#"+r))&&e.insertPanels(r,a)},error:a.onError},"Group.refresh":{type:"custom",call:function(){var t=$("#"+r);e.rightInfoVisible(t)?e.runAction(s+".show",e.rightInfoResourceId(t)):(e.getDataTable(r).waitingNodes(),e.runAction(s+".list",{force:!0}))},error:a.onError},"Group.update":{type:"single",call:n.update,callback:function(){e.hideFormPanel(r)},error:function(t,n){e.hideFormPanelLoading(r),a.onError(t,n)}},"Group.update_template":{type:"single",call:n.update,callback:function(t){e.runAction(s+".show",t.request.data[0][0])},error:a.onError},"Group.update_dialog":{type:"single",call:function(){var t=e.getDataTable(r).elements();if(1!=t.length)return a.notifyMessage("Please select one (and just one) group to update."),!1;var n=""+t[0];e.runAction(s+".show_to_update",n)}},"Group.show_to_update":{type:"single",call:n.show,callback:function(t,a){e.showFormPanel(r,o,"update",function(t,e){t.fill(e,a[i])})},error:a.onError},"Group.delete":{type:"multiple",call:n.del,callback:function(t,a){e.getDataTable(r).deleteElement(t,a)},elements:function(){return e.getDataTable(r).elements()},error:a.onError},"Group.fetch_quotas":{type:"single",call:n.show,callback:function(t,a){e.getDialog(l).setParams({element:a[i]}),e.getDialog(l).reset(),e.getDialog(l).show()},error:a.onError},"Group.quotas_dialog":{type:"custom",call:function(){var t=$("#"+r);if(e.rightInfoVisible(t))$('a[href="#group_quotas_tab"]',t).click(),$("#edit_quotas_button",t).click();else{var a=e.getDataTable(r).elements();1==a.length?e.runAction(s+".fetch_quotas",a[0]):(e.getDialog(l).setParams({element:{}}),e.getDialog(l).reset(),e.getDialog(l).show())}}},"Group.set_quota":{type:"multiple",call:n.set_quota,elements:function(){return e.getDataTable(r).elements()},callback:function(t){e.getDialog(l).hide(),e.runAction(s+".show",t.request.data[0])},error:a.onError},"Group.add_admin":{type:"single",call:n.add_admin,callback:function(t){e.runAction(s+".show",t.request.data[0][0])},error:a.onError},"Group.del_admin":{type:"single",call:n.del_admin,callback:function(t){e.runAction(s+".show",t.request.data[0][0])},error:a.onError}};return c}),define("hbs!tabs/groups-tab/dialogs/quotas/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large max-height" role="dialog" data-reveal >\n  <div class="row">\n    <h3 class="subheader">'+l((e.tr||t&&t.tr||o).call(t,"Update Quota",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n  <form data-abide="ajax" id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'Form">\n    <div class="row">\n      <div class="large-12 columns">\n        ';return i=null!=(i=e.quotasHTML||(null!=t?t.quotasHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"quotasHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n      </div>\n    </div>\n    <div class="form_buttons row">\n      <button type="submit" class="button radius right" value="Group.set_quota">\n        '+l((e.tr||t&&t.tr||o).call(t,"Apply changes",{name:"tr",hash:{},data:n}))+'\n      </button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/groups-tab/dialogs/quotas/html",a),a}),define("tabs/groups-tab/dialogs/quotas",["require","utils/dialogs/dialog","hbs!./quotas/html","utils/locale","utils/quotas/quota-defaults","utils/quotas/quota-widgets","./quotas/dialogId","../tabId"],function(t){function e(){this.dialogId=d,this.element=void 0,r.call(this)}function a(){return o({dialogId:this.dialogId,quotasHTML:c.dialogHTML()})}function n(t){return c.setupQuotasDialog(t),!1}function s(t){this.element=t.element}function i(t){return c.populateQuotasDialog(this.element,l.getDefaultQuotas(u),t),!1}var r=t("utils/dialogs/dialog"),o=t("hbs!./quotas/html"),l=(t("utils/locale"),t("utils/quotas/quota-defaults")),c=t("utils/quotas/quota-widgets"),d=t("./quotas/dialogId"),u=(t("../tabId"),"Group");return e.DIALOG_ID=d,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=i,e.prototype.setup=n,e.prototype.setParams=s,e}),define("hbs!tabs/groups-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='        <thead>\n          <tr>\n            <th colspan="3">'+r((e.tr||t&&t.tr||i).call(t,"Group Admins Views",{name:"tr",hash:{},data:n}))+"</th>\n          </tr>\n        </thead>\n";return s=e.each.call(t,null!=t?t.adminViews:t,{name:"each",hash:{},fn:this.program(2,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o},2:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='          <tr>\n            <td class="key_td">\n              '+l((i=null!=(i=e.name||(null!=t?t.name:t))?i:o,typeof i===r?i.call(t,{name:"name",hash:{},data:n}):i))+"\n";return s=e["if"].call(t,null!=t?t.description:t,{name:"if",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+"            </td>\n          </tr>\n"},3:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'                <span class="tip">'+o((s=null!=(s=e.description||(null!=t?t.description:t))?s:r,typeof s===i?s.call(t,{name:"description",hash:{},data:n}):s))+"</span>\n"},5:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='        <thead>\n          <tr>\n            <th colspan="3">'+r((e.tr||t&&t.tr||i).call(t,"Group Users Views",{name:"tr",hash:{},data:n}))+"</th>\n          </tr>\n        </thead>\n";return s=e.each.call(t,null!=t?t.userViews:t,{name:"each",hash:{},fn:this.program(2,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.NAME:s,t))+'</td>\n          <td></td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n';return s=e["if"].call(t,null!=t?t.adminViews:t,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(d+=s),s=e["if"].call(t,null!=t?t.userViews:t,{name:"if",hash:{},fn:this.program(5,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+='    </table>\n  </div>\n</div>\n<div class="row">\n  <div class="large-9 columns">\n    ',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/groups-tab/panels/info/html",a),a}),define("tabs/groups-tab/utils/views",["require","utils/locale"],function(t){var e=t("utils/locale"),a={advanced:{name:"Advanced Layout",description:e.tr("This layout exposes a complete view of the cloud, allowing administrators and advanced users to have full control of any physical or virtual resource of the cloud."),preview:"advanced_layout.png"},cloud:{name:"Cloud Layout",description:e.tr("This layout exposes a simplified version of the cloud where group administrators and cloud end-users will be able to manage any virtual resource of the cloud, without taking care of the physical resources management."),preview:"cloud_layout.png"},vcenter:{name:"vCenter Layout",description:e.tr("Set of views to present the valid operation against a vCenter infrastructure"),preview:"vcenter_layout.png"},other:{name:"Other Layouts",description:"",preview:null}},n={admin:{id:"admin",name:"Admin",description:e.tr("This view provides full control of the cloud"),type:"advanced"},user:{id:"user",name:"User",description:e.tr("In this view users will not be able to manage nor retrieve the hosts and clusters of the cloud. They will be able to see Datastores and Virtual Networks in order to use them when creating a new Image or Virtual Machine, but they will not be able to create new ones."),type:"advanced"},groupadmin:{id:"groupadmin",name:"Group Admin",description:e.tr("This view provides control of all the resources belonging to a group, but with no access to resources outside that group, that is, restricted to the physical and virtual resources of the group. This view features the ability to create new users within the group as well as set and keep track of user quotas."),type:"cloud"},cloud:{id:"cloud",name:"Cloud",description:e.tr("This is a simplified view mainly intended for user that just require a portal where they can provision new virtual machines easily from pre-defined Templates."),type:"cloud"},admin_vcenter:{id:"admin_vcenter",name:"Admin vCenter",description:e.tr("View designed to present the valid operations against a vCenter infrastructure to a cloud administrator"),type:"vcenter"},groupadmin_vcenter:{id:"groupadmin_vcenter",name:"Group Admin vCenter",description:e.tr("View designed to present the valid operations agaist a vCenter infrastructure to a group administrator"),type:"vcenter"},cloud_vcenter:{id:"cloud_vcenter",name:"Cloud vCenter",description:e.tr("View designed to present the valid operations against a vCenter infrastructure to a cloud consumer"),type:"vcenter"}};return{info:n,types:a}}),define("tabs/groups-tab/panels/info/panelId",["require"],function(){return"group_info_tab"}),define("tabs/groups-tab/panels/info",["require","hbs!./info/html","utils/locale","../utils/views","utils/tips","utils/panel/template-table","../tabId","./info/panelId"],function(t){function e(t){return this.title=r.tr("Info"),this.icon="fa-info-circle",this.element=t[p],this
+}function a(){var t=s(this.element.TEMPLATE.GROUP_ADMIN_VIEWS,this.element.TEMPLATE.GROUP_ADMIN_DEFAULT_VIEW),e=s(this.element.TEMPLATE.SUNSTONE_VIEWS,this.element.TEMPLATE.DEFAULT_VIEW),a=$.extend({},this.element.TEMPLATE);delete a.GROUP_ADMIN_VIEWS,delete a.SUNSTONE_VIEWS,delete a.GROUP_ADMIN_DEFAULT_VIEW,delete a.DEFAULT_VIEW;var n=c.html(a,u,r.tr("Attributes"));return i({element:this.element,adminViews:t,userViews:e,templateTableHTML:n})}function n(t){var e=this;l.setup(t);var a=["GROUP_ADMIN_VIEWS","SUNSTONE_VIEWS","GROUP_ADMIN_DEFAULT_VIEW","DEFAULT_VIEW"],n=$.extend({},this.element.TEMPLATE);$.each(a,function(t,e){delete n[e]});var s={};return $.each(a,function(t,a){void 0!=e.element.TEMPLATE[a]&&(s[a]=e.element.TEMPLATE[a])}),c.setup(n,u,this.element.ID,t,s),!1}function s(t,e){var a=[];return t&&$.each(t.split(","),function(t,n){var s,i=o.info[n];s=i?{name:i.name,description:i.description}:{name:n,description:""},n==e&&(s.name+=" ("+r.tr("default")+")"),a.push(s)}),a}var i=t("hbs!./info/html"),r=t("utils/locale"),o=t("../utils/views"),l=t("utils/tips"),c=t("utils/panel/template-table"),d=(t("../tabId"),t("./info/panelId")),u="Group",p="GROUP";return e.PANEL_ID=d,e.prototype.html=a,e.prototype.setup=n,e}),define("templates/helpers/isTabActionEnabled",["require","hbs/handlebars","sunstone-config"],function(t){var e=t("hbs/handlebars"),a=t("sunstone-config"),n=function(t,e,n){return a.isTabActionEnabled(t,e)?n.fn(this):n.inverse(this)};return e.registerHelper("isTabActionEnabled",n),n}),define("hbs!tabs/groups-tab/panels/users/html",["hbs","hbs/handlebars","templates/helpers/isTabActionEnabled","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'  <div class="row">\n    <div class="large-4 columns right">\n      <span>\n        <button class="button secondary small radius" id="edit_admins_button" style="width: 100%;">\n          <span class="fa fa-pencil-square-o"></span>'+i((e.tr||t&&t.tr||s).call(t,"Edit administrators",{name:"tr",hash:{},data:n}))+'\n        </button>\n        <button class="button alert small radius" id="cancel_admins_button" style="display: none">\n          '+i((e.tr||t&&t.tr||s).call(t,"Cancel",{name:"tr",hash:{},data:n}))+'\n        </button>\n        <button class="button success small radius" id="submit_admins_button" style="display: none">\n          '+i((e.tr||t&&t.tr||s).call(t,"Apply",{name:"tr",hash:{},data:n}))+"\n        </button>\n      </span>\n    </div>\n  </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o="function",l="";return s=(e.isTabActionEnabled||t&&t.isTabActionEnabled||r).call(t,"groups-tab","Group.edit_admins",{name:"isTabActionEnabled",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(l+=s),l+='<div class="group_users_info_table">\n  ',i=null!=(i=e.usersTableHTML||(null!=t?t.usersTableHTML:t))?i:r,s=typeof i===o?i.call(t,{name:"usersTableHTML",hash:{},data:n}):i,null!=s&&(l+=s),l+"\n</div>\n\n\n"},useData:!0});return e.registerPartial("tabs/groups-tab/panels/users/html",a),a}),define("tabs/groups-tab/panels/users/panelId",["require"],function(){return"group_users_tab"}),define("tabs/groups-tab/panels/users",["require","utils/locale","sunstone-config","hbs!./users/html","tabs/users-tab/datatable","sunstone","../tabId","./users/panelId"],function(t){function e(t){return this.title=s.tr("Users"),this.icon="fa-users",this.element=t[d],this}function a(){this.users=[],void 0!=this.element.USERS.ID&&(this.users=this.element.USERS.ID,$.isArray(this.users)||(this.users=[this.users])),this.admins=[],void 0!=this.element.ADMINS.ID&&(this.admins=this.element.ADMINS.ID,$.isArray(this.admins)||(this.admins=[this.admins]));var t={info:!0,select:!0,selectOptions:{read_only:!0,fixed_ids:this.users,starred_ids:this.admins}};return this.usersTable=new o(u,t),r({usersTableHTML:this.usersTable.dataTableHTML})}function n(t){var e=this;this.usersTable.initialize(),this.usersTable.refreshResourceTableSelect(),i.isTabActionEnabled("groups-tab","Group.edit_admins")&&(t.off("click","#edit_admins_button"),t.on("click","#edit_admins_button",function(){$("#edit_admins_button",t).hide(),$("#cancel_admins_button",t).show(),$("#submit_admins_button",t).show();var a={info:!1,select:!0,selectOptions:{multiple_choice:!0,fixed_ids:e.users,starred_ids:e.admins}};return e.usersTableEdit=new o(p,a),$("div.group_users_info_table",t).html(e.usersTableEdit.dataTableHTML),e.usersTableEdit.initialize(),e.usersTableEdit.selectResourceTableSelect({ids:e.admins}),!1}),t.off("click","#cancel_admins_button"),t.on("click","#cancel_admins_button",function(){return l.runAction("Group.show",e.element.ID),!1}),t.off("click","#submit_admins_button"),t.on("click","#submit_admins_button",function(){var a=e.usersTableEdit.retrieveResourceTableSelect(t,"group_users_edit_list");return $.each(a,function(t,a){-1==e.admins.indexOf(a)&&l.runAction("Group.add_admin",e.element.ID,{admin_id:a})}),$.each(e.admins,function(t,n){-1==a.indexOf(n)&&l.runAction("Group.del_admin",e.element.ID,{admin_id:n})}),!1}))}var s=t("utils/locale"),i=t("sunstone-config"),r=t("hbs!./users/html"),o=t("tabs/users-tab/datatable"),l=t("sunstone"),c=(t("../tabId"),t("./users/panelId")),d="GROUP",u=c+"UsersTable",p=c+"UsersTableEdit";return e.PANEL_ID=c,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/groups-tab/panels/quotas/panelId",["require"],function(){return"group_quotas_tab"}),define("tabs/groups-tab/panels/quotas",["require","utils/locale","sunstone-config","utils/quotas/quota-defaults","utils/quotas/quota-widgets","../tabId","./quotas/panelId"],function(t){function e(t){return this.title=s.tr("Quotas"),this.icon="fa-align-left",this.element=t[u],this}function a(){return o.initQuotasPanel(this.element,r.getDefaultQuotas(d),i.isTabActionEnabled(l,d+".quotas_dialog"))}function n(t){return o.setupQuotasPanel(this.element,t,i.isTabActionEnabled(l,d+".quotas_dialog"),d),!1}var s=t("utils/locale"),i=t("sunstone-config"),r=t("utils/quotas/quota-defaults"),o=t("utils/quotas/quota-widgets"),l=t("../tabId"),c=t("./quotas/panelId"),d="Group",u="GROUP";return e.PANEL_ID=c,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/groups-tab/panels/accounting/panelId",["require"],function(){return"group_accounting_tab"}),define("tabs/groups-tab/panels/accounting",["require","utils/locale","utils/accounting","../tabId","./accounting/panelId"],function(t){function e(t){return this.title=s.tr("Accounting"),this.icon="fa-bar-chart-o",this.element=t[o],this}function a(){return i.html()}function n(t){i.setup(t,{fixed_group:this.element.ID,init_group_by:"user"})}var s=t("utils/locale"),i=t("utils/accounting"),r=(t("../tabId"),t("./accounting/panelId")),o="GROUP";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/groups-tab/panels/showback/panelId",["require"],function(){return"group_showback_tab"}),define("tabs/groups-tab/panels/showback",["require","utils/locale","sunstone-config","utils/showback","../tabId","./showback/panelId"],function(t){function e(t){if(this.title=s.tr("Showback"),this.icon="fa-money",this.element=t[l],!i.isFeatureEnabled("showback"))throw"Showback is disabled in the configuration";return this}function a(){return r.html()}function n(t){r.setup(t,{fixed_user:"",fixed_group:this.element.ID})}var s=t("utils/locale"),i=t("sunstone-config"),r=t("utils/showback"),o=(t("../tabId"),t("./showback/panelId")),l="GROUP";return e.PANEL_ID=o,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/groups-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='        <div class="row">\n          <div class="large-7 columns">\n            <h4>'+l((i=null!=(i=e.name||(null!=t?t.name:t))?i:o,typeof i===r?i.call(t,{name:"name",hash:{},data:n}):i))+"\n";return s=e["if"].call(t,null!=t?t.description:t,{name:"if",hash:{},fn:this.program(2,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+="            </h4>\n            <table class=\"dataTable extended_table\">\n              <tr>\n                <th style='width: 60%;'></th>\n                <th>"+l((e.tr||t&&t.tr||o).call(t,"Group Users",{name:"tr",hash:{},data:n}))+"</th>\n                <th>"+l((e.tr||t&&t.tr||o).call(t,"Group Admins",{name:"tr",hash:{},data:n}))+"</th>\n              </tr>\n",s=e.each.call(t,null!=t?t.views:t,{name:"each",hash:{},fn:this.program(4,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='            </table>\n          </div>\n          <div class="large-5 columns" style="text-align: center">\n',s=e["if"].call(t,null!=t?t.preview:t,{name:"if",hash:{},fn:this.program(7,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+"          </div>\n        </div>\n        <br>\n"},2:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'              <span class="tip">'+o((s=null!=(s=e.description||(null!=t?t.description:t))?s:r,typeof s===i?s.call(t,{name:"description",hash:{},data:n}):s))+"</span>\n"},4:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c="              <tr>\n                <td>\n                  "+l((i=null!=(i=e.name||(null!=t?t.name:t))?i:o,typeof i===r?i.call(t,{name:"name",hash:{},data:n}):i))+" "+l((e.tr||t&&t.tr||o).call(t,"View",{name:"tr",hash:{},data:n}))+"\n";return s=e["if"].call(t,null!=t?t.description:t,{name:"if",hash:{},fn:this.program(5,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+'                </td>\n                <td>\n                  <input class="user_view_input" type="checkbox"\n                  id="group_view_'+l((i=null!=(i=e.id||(null!=t?t.id:t))?i:o,typeof i===r?i.call(t,{name:"id",hash:{},data:n}):i))+'"\n                  value="'+l((i=null!=(i=e.id||(null!=t?t.id:t))?i:o,typeof i===r?i.call(t,{name:"id",hash:{},data:n}):i))+'"/>\n                </td>\n                <td>\n                  <input class="admin_view_input" type="checkbox"\n                  id="group_admin_view_'+l((i=null!=(i=e.id||(null!=t?t.id:t))?i:o,typeof i===r?i.call(t,{name:"id",hash:{},data:n}):i))+'"\n                  value="'+l((i=null!=(i=e.id||(null!=t?t.id:t))?i:o,typeof i===r?i.call(t,{name:"id",hash:{},data:n}):i))+'"/>\n                </td>\n              </tr>\n'},5:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'                  <span class="tip">'+o((s=null!=(s=e.description||(null!=t?t.description:t))?s:r,typeof s===i?s.call(t,{name:"description",hash:{},data:n}):s))+"</span>\n"},7:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'            <img src="images/'+o((s=null!=(s=e.preview||(null!=t?t.preview:t))?s:r,typeof s===i?s.call(t,{name:"preview",hash:{},data:n}):s))+'" style="height: 200px;">\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<form data-abide="ajax" id="'+l((i=null!=(i=e.formPanelId||(null!=t?t.formPanelId:t))?i:o,typeof i===r?i.call(t,{name:"formPanelId",hash:{},data:n}):i))+'Wizard" class="custom creation">\n  <div class="row">\n    <div class="columns medium-5">\n      <label>'+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+':\n        <input required type="text" name="name" id="name" />\n      </label>\n    </div>\n    <div class="columns medium-7">\n      <dl class="tabs right-info-tabs text-center right" data-tab>\n       <dd class="active"><a href="#resource_views"><i class="fa fa-eye"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"Views",{name:"tr",hash:{},data:n}))+'</a></dd>\n       <dd><a href="#administrators"><i class="fa fa-upload"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"Admin",{name:"tr",hash:{},data:n}))+'</a></dd>\n       <dd><a href="#resource_creation"><i class="fa fa-folder-open"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"Permissions",{name:"tr",hash:{},data:n}))+'</a></dd>\n     </dl>\n   </div>\n </div>\n <div class="tabs-content">\n  <div id="resource_views" class="content active">\n    <div class="row">\n      <div class="large-12 columns">\n        <p class="subheader">\n          '+l((e.tr||t&&t.tr||o).call(t,"Allow users in this group to use the following Sunstone views",{name:"tr",hash:{},data:n}))+'\n          &emsp;<span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Views available to the group users. If the default is unset, the one set in sunstone-views.yaml will be used",{name:"tr",hash:{},data:n}))+'</span>\n        </p>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="user_view_default">'+l((e.tr||t&&t.tr||o).call(t,"Default Users View",{name:"tr",hash:{},data:n}))+'\n            </label>\n            <select id="user_view_default">\n            </select>\n          </div>\n          <div class="large-6 columns">\n            <label for="admin_view_default">'+l((e.tr||t&&t.tr||o).call(t,"Default Admin View",{name:"tr",hash:{},data:n}))+'\n            </label>\n            <select id="admin_view_default">\n            </select>\n          </div>\n        </div>\n        <br>\n';return s=e.each.call(t,null!=t?t.viewTypes:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='      </div>\n    </div>\n  </div>\n  <div id="administrators" class=" content">\n    <div class="row">\n      <div class="medium-6 columns" id="admin_user_wrapper">\n        <div class="row">\n          <div class="large-12 columns">\n            <label>\n              <input type="checkbox" id="admin_user" name="admin_user" value="YES" />\n              '+l((e.tr||t&&t.tr||o).call(t,"Create an administrator user",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"You can create now an administrator user. More administrators can be added later.",{name:"tr",hash:{},data:n}))+"</span>\n            </label>\n          </div>\n        </div>\n        ",i=null!=(i=e.userCreationHTML||(null!=t?t.userCreationHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"userCreationHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n      </div>\n    </div>\n  </div>\n  <div id="resource_creation" class="content">\n    <div class="row">\n      <div class="large-12 columns">\n        <label>\n          <input type="checkbox" id="shared_resources" name="shared_resources" value="YES" />\n          '+l((e.tr||t&&t.tr||o).call(t,"Allow users to view the VMs and Services of other users in the same group",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"An ACL Rule will be created to give users in this group access to all the resources in the same group.",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <p class="subheader">\n          '+l((e.tr||t&&t.tr||o).call(t,"Allow users in this group to create the following resources",{name:"tr",hash:{},data:n}))+'\n          &emsp;<span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"This will create new ACL Rules to define which virtual resources this group's users will be able to create.",{name:"tr",hash:{},data:n}))+'</span>\n        </p>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <table class="dataTable" style="table-layout:fixed">\n          <thead><tr>\n            <th>'+l((e.tr||t&&t.tr||o).call(t,"VMs",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+l((e.tr||t&&t.tr||o).call(t,"VNets",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+l((e.tr||t&&t.tr||o).call(t,"Security Groups",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+l((e.tr||t&&t.tr||o).call(t,"Images",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+l((e.tr||t&&t.tr||o).call(t,"Templates",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+l((e.tr||t&&t.tr||o).call(t,"Documents",{name:"tr",hash:{},data:n}))+'<span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Documents are a special tool used for general purposes, mainly by OneFlow. If you want to enable users of this group to use service composition via OneFlow, let it checked.",{name:"tr",hash:{},data:n}))+'</span></th>\n          </tr></thead>\n          <tbody>\n            <tr>\n              <td><input type="checkbox" id="group_res_vm" name="group_res_vm" class="resource_cb" value="VM"></input></td>\n              <td><input type="checkbox" id="group_res_net" name="group_res_net" class="resource_cb" value="NET"></input></td>\n              <td><input type="checkbox" id="group_res_sg" name="group_res_sg" class="resource_cb" value="SECGROUP"></input></td>\n              <td><input type="checkbox" id="group_res_image" name="group_res_image" class="resource_cb" value="IMAGE"></input></td>\n              <td><input type="checkbox" id="group_res_template" name="group_res_template" class="resource_cb" value="TEMPLATE"></input></td>\n              <td><input type="checkbox" id="group_res_document" name="group_res_document" class="resource_cb" value="DOCUMENT"></input></td>\n              <td/>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n    </div>\n  </div>\n</div>\n<div class="reveal-footer">\n  <div class="row collapse" id="default_vdc_warning">\n    <div class="large-12 columns text-right">\n      <span class="radius secondary label"><i class="fa fa-warning"/> '+l((e.tr||t&&t.tr||o).call(t,"New Groups are automatically added to the default VDC",{name:"tr",hash:{},data:n}))+"</span>\n    </div>\n  </div>\n</div>\n</form>"},useData:!0});return e.registerPartial("tabs/groups-tab/form-panels/create/wizard",a),a}),define("tabs/groups-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","tabs/users-tab/utils/user-creation","utils/tips","tabs/groups-tab/utils/views","utils/template-utils","hbs!./create/wizard","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=_,this.tabId=b,this.actions={create:{title:d.tr("Create Group"),buttonText:d.tr("Create"),resetButton:!0},update:{title:d.tr("Update Group"),buttonText:d.tr("Update"),resetButton:!1}},this.userCreation=new u(_),l.call(this)}function a(){var t,e={cloud:[],advanced:[],vcenter:[],other:[]};$.each(config.all_views,function(a,n){if(t=h.info[n])switch(t.type){case"advanced":e.advanced.push(t);break;case"cloud":e.cloud.push(t);break;case"vcenter":e.vcenter.push(t);break;default:e.other.push({id:n,name:n,description:null,type:"other"})}else e.other.push({id:n,name:n,description:null,type:"other"})});var a=[];return $.each(e,function(t,e){e.length>0&&a.push({name:h.types[t].name,description:h.types[t].description,preview:h.types[t].preview,views:e})}),m({formPanelId:this.formPanelId,userCreationHTML:this.userCreation.html(),viewTypes:a})}function n(t){var e=this;this.userCreation.setup($("#admin_user_wrapper",t)),p.setup(t),$("input#name",t).change(function(){var a=$(this).val();e.userCreation.setName(t,a+"-admin")}),$("input#admin_user",t).change(function(){$(this).prop("checked")?e.userCreation.enable($("#admin_user_wrapper",t)):e.userCreation.disable($("#admin_user_wrapper",t))}),this.userCreation.disable($("#admin_user_wrapper",t)),$.each($('[id^="group_res"]',t),function(){$(this).prop("checked",!0)}),$("#group_res_net",t).prop("checked",!1),$(t).off("change",".admin_view_input"),$(t).on("change",".admin_view_input",function(){o(t,"admin")}),$(t).off("change",".user_view_input"),$(t).on("change",".user_view_input",function(){o(t,"user")}),"create"==this.action&&($("input#group_view_cloud").attr("checked","checked").change(),$("input#group_admin_view_groupadmin").attr("checked","checked").change(),o(t,"admin","groupadmin"),o(t,"user","cloud"))}function s(t){var e=[];$.each($('[id^="group_view"]:checked',t),function(){e.push($(this).val())});var a=[];$.each($('[id^="group_admin_view"]:checked',t),function(){a.push($(this).val())});var n=$("#user_view_default",t).val(),s=$("#admin_view_default",t).val();if("create"==this.action){var i=$("#name",t).val(),r=null;$("#admin_user",t).prop("checked")&&(r=this.userCreation.retrieve($("#admin_user_wrapper",t)));var o={group:{name:i}};r&&(o.group.group_admin=r);var l="",d="";return $.each($('[id^="group_res"]:checked',t),function(){l+=d+$(this).val(),d="+"}),o.group.resources=l,$("#shared_resources",t).prop("checked")&&(o.group.shared_resources="VM+DOCUMENT"),o.group.views=e,void 0!=n&&(o.group.default_view=n),o.group.admin_views=a,void 0!=s&&(o.group.default_admin_view=s),c.runAction("Group.create",o),!1}if("update"==this.action){var u=this.element.TEMPLATE;delete u.SUNSTONE_VIEWS,delete u.DEFAULT_VIEW,delete u.GROUP_ADMIN_VIEWS,delete u.GROUP_ADMIN_DEFAULT_VIEW,0!=e.length&&(u.SUNSTONE_VIEWS=e.join(",")),void 0!=n&&(u.DEFAULT_VIEW=n),0!=a.length&&(u.GROUP_ADMIN_VIEWS=a.join(",")),void 0!=s&&(u.GROUP_ADMIN_DEFAULT_VIEW=s);var p=f.templateToString(u);return c.runAction("Group.update",this.resourceId,p),!1}}function i(){}function r(t,e){if("update"==this.action){this.resourceId=e.ID,this.element=e,$("input#name",t).attr("disabled","disabled"),$("a[href='#administrators']",t).parents("dd").hide(),$("a[href='#resource_creation']",t).parents("dd").hide(),$("input#name",t).val(e.NAME);var a="";if($('input[id^="group_view"]',t).removeAttr("checked"),e.TEMPLATE.SUNSTONE_VIEWS){a=e.TEMPLATE.SUNSTONE_VIEWS;var n=a.split(",");$.each(n,function(){$('input[id^="group_view"][value="'+this.trim()+'"]',t).attr("checked","checked").change()})}if($('input[id^="group_default_view"]',t).removeAttr("checked"),e.TEMPLATE.DEFAULT_VIEW?$("#user_view_default",t).val(e.TEMPLATE.DEFAULT_VIEW.trim()).change():$("#user_view_default",t).val("").change(),$('input[id^="group_admin_view"]',t).removeAttr("checked"),e.TEMPLATE.GROUP_ADMIN_VIEWS){a=e.TEMPLATE.GROUP_ADMIN_VIEWS;var n=a.split(",");$.each(n,function(){$('input[id^="group_admin_view"][value="'+this.trim()+'"]',t).attr("checked","checked").change()})}$('input[id^="group_default_admin_view"]',t).removeAttr("checked"),e.TEMPLATE.GROUP_ADMIN_DEFAULT_VIEW?$("#admin_view_default",t).val(e.TEMPLATE.GROUP_ADMIN_DEFAULT_VIEW.trim()).change():$("#admin_view_default",t).val("").change()}}function o(t,e,a){var n=a||$("#"+e+"_view_default",t).val(),s='<option id="" name="" value=""></option>';$("."+e+"_view_input:checked",t).each(function(){var t=h.info[this.value]?h.info[this.value].name:this.value;s+='<option value="'+this.value+'">'+t+"</option>"}),$("select#"+e+"_view_default",t).html(s),n&&$("#"+e+"_view_default",t).val(n).change()}t("foundation.tab");var l=t("utils/form-panels/form-panel"),c=t("sunstone"),d=t("utils/locale"),u=t("tabs/users-tab/utils/user-creation"),p=t("utils/tips"),h=t("tabs/groups-tab/utils/views"),f=t("utils/template-utils"),m=t("hbs!./create/wizard"),_=t("./create/formPanelId"),b=t("../tabId");return e.FORM_PANEL_ID=_,e.prototype=Object.create(l.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.submitWizard=s,e.prototype.onShow=i,e.prototype.fill=r,e.prototype.setup=n,e}),define("tabs/groups-tab",["require","utils/locale","./groups-tab/buttons","./groups-tab/actions","./groups-tab/datatable","./groups-tab/tabId","./groups-tab/dialogs/quotas","./groups-tab/panels/info","./groups-tab/panels/users","./groups-tab/panels/quotas","./groups-tab/panels/accounting","./groups-tab/panels/showback","./groups-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./groups-tab/buttons"),n=t("./groups-tab/actions"),s=t("./groups-tab/datatable"),i=t("./groups-tab/tabId"),r="dataTableGroups",o=[t("./groups-tab/dialogs/quotas")],l=[t("./groups-tab/panels/info"),t("./groups-tab/panels/users"),t("./groups-tab/panels/quotas"),t("./groups-tab/panels/accounting"),t("./groups-tab/panels/showback")],c=[t("./groups-tab/form-panels/create")],d={tabId:i,title:e.tr("Groups"),tabClass:"subTab",parentTab:"system-tab",listHeader:'<i class="fa fa-fw fa-users"></i>&emsp;'+e.tr("Groups"),infoHeader:'<i class="fa fa-fw fa-users"></i>&emsp;'+e.tr("Group"),subheader:'<span>        <span class="total_groups"/> <small>'+e.tr("TOTAL")+"</small>      </span>",resource:"Group",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/vdcs-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Vdc.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Vdc.create_dialog":{type:"create_dialog",layout:"create"},"Vdc.update_dialog":{type:"action",layout:"main",text:e.tr("Update")},"Vdc.delete":{type:"confirm",layout:"del",text:e.tr("Delete")}};return a}),define("tabs/vdcs-tab/tabId",["require"],function(){return"vdcs-tab"}),define("tabs/vdcs-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=c,this.dataTableId=t,this.resource=o,this.xmlRoot=l,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:i.tabTableColumns(c)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[r.tr("ID"),r.tr("Name"),r.tr("Groups"),r.tr("Clusters"),r.tr("Hosts"),r.tr("VNets"),r.tr("Datastores")],this.selectOptions={id_index:1,name_index:2,select_resource:r.tr("Please select a VDC from the list"),you_selected:r.tr("You selected the following VDC:"),select_resource_multiple:r.tr("Please select one or more VDCs from the list"),you_selected_multiple:r.tr("You selected the following VDCs:")},s.call(this)}function a(t){var e=t[l];return['<input class="check_item" type="checkbox" id="'+o.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.NAME,n(e.GROUPS.ID),n(e.CLUSTERS.CLUSTER),n(e.HOSTS.HOST),n(e.VNETS.VNET),n(e.DATASTORES.DATASTORE)]}function n(t){var e=0;return $.isArray(t)?e=t.length:$.isEmptyObject(t)||(e=1),e}var s=t("utils/tab-datatable"),i=t("sunstone-config"),r=t("utils/locale"),o="Vdc",l="VDC",c=t("./tabId");return e.prototype=Object.create(s.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("tabs/vdcs-tab/form-panels/create/formPanelId",["require"],function(){return"createVDCForm"}),define("tabs/vdcs-tab/actions",["require","sunstone","utils/notifier","utils/locale","./datatable","opennebula/vdc","./tabId","./form-panels/create/formPanelId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=(t("./datatable"),t("opennebula/vdc")),i="Vdc",r=t("./tabId"),o=t("./form-panels/create/formPanelId"),l={"Vdc.create":{type:"create",call:s.create,callback:function(t,s){e.resetFormPanel(r,o),e.hideFormPanel(r);var l=t.request.data[0].group_ids;void 0!=l&&$.each(l,function(){e.runAction(i+".add_group",s.VDC.ID,{group_id:parseInt(this)})});var c=t.request.data[0].clusters;void 0!=c&&$.each(c,function(){e.runAction(i+".add_cluster",s.VDC.ID,this)});var d=t.request.data[0].hosts;void 0!=d&&$.each(d,function(){e.runAction(i+".add_host",s.VDC.ID,this)});var u=t.request.data[0].vnets;void 0!=u&&$.each(u,function(){e.runAction(i+".add_vnet",s.VDC.ID,this)});var p=t.request.data[0].datastores;void 0!=p&&$.each(p,function(){e.runAction(i+".add_datastore",s.VDC.ID,this)}),e.runAction(i+".show",t.request.data[0][0]),e.getDataTable(r).addElement(t,s),a.notifyCustom(n.tr("VDC created")," ID: "+s.VDC.ID,!1)},error:a.onError},"Vdc.create_dialog":{type:"custom",call:function(){e.showFormPanel(r,o,"create")}},"Vdc.list":{type:"list",call:s.list,callback:function(t,a){e.getDataTable(r).updateView(t,a)},error:a.onError},"Vdc.show":{type:"single",call:s.show,callback:function(t,a){e.getDataTable(r).updateElement(t,a),e.rightInfoVisible($("#"+r))&&e.insertPanels(r,a)},error:a.onError},"Vdc.refresh":{type:"custom",call:function(){var t=$("#"+r);e.rightInfoVisible(t)?e.runAction(i+".show",e.rightInfoResourceId(t)):(e.getDataTable(r).waitingNodes(),e.runAction(i+".list",{force:!0}))},error:a.onError},"Vdc.delete":{type:"multiple",call:s.del,callback:function(t,a){e.getDataTable(r).deleteElement(t,a)},elements:function(){return e.getDataTable(r).elements()},error:a.onError},"Vdc.rename":{type:"single",call:s.rename,callback:function(t){e.runAction(i+".show",t.request.data[0][0])},error:a.onError},"Vdc.update_dialog":{type:"custom",call:function(){var t=e.getDataTable(r).elements();if(1!=t.length)return a.notifyMessage("Please select one (and just one) VDC to update."),!1;var n=""+t[0];e.runAction(i+".show_to_update",n)}},"Vdc.show_to_update":{type:"single",call:s.show,callback:function(t,a){e.showFormPanel(r,o,"update",function(t,e){t.fill(e,a.VDC)})},error:a.onError},"Vdc.update":{type:"single",call:s.update,callback:function(){e.hideFormPanel(r),a.notifyMessage(n.tr("VDC updated correctly"))},error:function(t,n){e.hideFormPanelLoading(r),a.onError(t,n)}},"Vdc.update_template":{type:"single",call:s.update,callback:function(t){e.runAction(i+".show",t.request.data[0][0])},error:a.onError},"Vdc.add_group":{type:"single",call:s.add_group,callback:function(){},error:a.onError},"Vdc.del_group":{type:"single",call:s.del_group,callback:function(){},error:a.onError},"Vdc.add_cluster":{type:"single",call:s.add_cluster,callback:function(){},error:a.onError},"Vdc.del_cluster":{type:"single",call:s.del_cluster,callback:function(){},error:a.onError},"Vdc.add_host":{type:"single",call:s.add_host,callback:function(){},error:a.onError},"Vdc.del_host":{type:"single",call:s.del_host,callback:function(){},error:a.onError},"Vdc.add_vnet":{type:"single",call:s.add_vnet,callback:function(){},error:a.onError},"Vdc.del_vnet":{type:"single",call:s.del_vnet,callback:function(){},error:a.onError},"Vdc.add_datastore":{type:"single",call:s.add_datastore,callback:function(){},error:a.onError},"Vdc.del_datastore":{type:"single",call:s.del_datastore,callback:function(){},error:a.onError}};return l}),define("hbs!tabs/vdcs-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n       <tr>\n        <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n        <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n        <td></td>\n      </tr>\n      ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n    </tbody>\n  </table>\n</div>\n</div>\n<div class="row">\n  <div class="large-9 columns">\n    ',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/vdcs-tab/panels/info/html",a),a}),define("hbs!utils/panel/rename-tr/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<tr class="'+o((s=null!=(s=e.resourceType||(null!=t?t.resourceType:t))?s:r,typeof s===i?s.call(t,{name:"resourceType",hash:{},data:n}):s))+'_rename">\n  <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'</td>\n  <td class="value_td_rename">'+o((s=null!=(s=e.resourceName||(null!=t?t.resourceName:t))?s:r,typeof s===i?s.call(t,{name:"resourceName",hash:{},data:n}):s))+'</td>\n  <td>\n    <div id="div_edit_rename">\n      <a id="div_edit_rename_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n    </div>\n  </td>\n</tr>'
+},useData:!0});return e.registerPartial("utils/panel/rename-tr/html",a),a}),define("utils/panel/rename-tr",["require","hbs!./rename-tr/html","sunstone"],function(t){var e=t("hbs!./rename-tr/html"),a=t("sunstone"),n=function(t,a){var n=e({resourceType:t.toLowerCase(),resourceName:a});return n},s=function(t,e,n){return n.off("click","#div_edit_rename_link"),n.on("click","#div_edit_rename_link",function(){var t=$(".value_td_rename",n).text();$(".value_td_rename",n).html('<input class="input_edit_value_rename" id="input_edit_rename" type="text" value="'+t+'"/>')}),n.off("change",".input_edit_value_rename"),n.on("change",".input_edit_value_rename",function(){var s=$(".input_edit_value_rename",n).val();if(""!=s){var i={name:s};a.runAction(t+".rename",e,i)}}),!1};return{html:n,setup:s}}),define("tabs/vdcs-tab/panels/info/panelId",["require"],function(){return"vdc_info_tab"}),define("tabs/vdcs-tab/panels/info",["require","hbs!./info/html","utils/locale","utils/panel/rename-tr","utils/panel/template-table","../tabId","./info/panelId"],function(t){function e(t){return this.title=i.tr("Info"),this.icon="fa-info-circle",this.element=t[d],this}function a(){var t=r.html(c,this.element.NAME),e=o.html(this.element.TEMPLATE,c,i.tr("Attributes"));return s({element:this.element,renameTrHTML:t,templateTableHTML:e})}function n(t){r.setup(c,this.element.ID,t),o.setup(this.element.TEMPLATE,c,this.element.ID,t)}var s=t("hbs!./info/html"),i=t("utils/locale"),r=t("utils/panel/rename-tr"),o=t("utils/panel/template-table"),l=(t("../tabId"),t("./info/panelId")),c="Vdc",d="VDC";return e.PANEL_ID=l,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/vdcs-tab/panels/groups/panelId",["require"],function(){return"vdc_groups_tab"}),define("tabs/vdcs-tab/panels/groups",["require","utils/locale","tabs/groups-tab/datatable","./groups/panelId"],function(t){function e(t){return this.title=s.tr("Groups"),this.icon="fa-users",this.element=t[l],this}function a(){var t=[];void 0!=this.element.GROUPS.ID&&(t=this.element.GROUPS.ID,$.isArray(t)||(t=[t]));var e={info:!0,select:!0,selectOptions:{read_only:!0,fixed_ids:t}};return this.groupsTable=new i(o,e),this.groupsTable.dataTableHTML}function n(){return this.groupsTable.initialize(),this.groupsTable.refreshResourceTableSelect(),!1}var s=t("utils/locale"),i=t("tabs/groups-tab/datatable"),r=t("./groups/panelId"),o=r+"GroupsTable",l="VDC";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/vdcs-tab/utils/common",["require"],function(){function t(t){function e(t){void 0==a[t]&&(a[t]={clusters:[],hosts:[],vnets:[],datastores:[]})}var a={},n=[],s=[],i=[],r=[];return t.CLUSTERS.CLUSTER&&(n=t.CLUSTERS.CLUSTER,$.isArray(n)||(n=[n])),t.HOSTS.HOST&&(s=t.HOSTS.HOST,$.isArray(s)||(s=[s])),t.VNETS.VNET&&(i=t.VNETS.VNET,$.isArray(i)||(i=[i])),t.DATASTORES.DATASTORE&&(r=t.DATASTORES.DATASTORE,$.isArray(r)||(r=[r])),$.each(n,function(t,n){e(n.ZONE_ID),a[n.ZONE_ID].clusters.push(n.CLUSTER_ID)}),$.each(s,function(t,n){e(n.ZONE_ID),a[n.ZONE_ID].hosts.push(n.HOST_ID)}),$.each(i,function(t,n){e(n.ZONE_ID),a[n.ZONE_ID].vnets.push(n.VNET_ID)}),$.each(r,function(t,n){e(n.ZONE_ID),a[n.ZONE_ID].datastores.push(n.DATASTORE_ID)}),a}var e="-10";return{indexedVdcResources:t,VDC_ALL_RESOURCES:e}}),define("hbs!tabs/vdcs-tab/utils/resources-tab/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row">\n  <div class="large-8 medium-6 columns">\n    <label class="inline right">'+i((e.tr||t&&t.tr||s).call(t,"Zone",{name:"tr",hash:{},data:n}))+'</label>\n  </div>\n  <div class="large-4 medium-6 columns end">\n    <select class="vdc_zones_select">\n    </select>\n  </div>\n</div>\n<div class="row">\n  <div class="large-12 columns">\n    <div class="tabs-content vdc_zones_tabs_content"></div>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/vdcs-tab/utils/resources-tab/html",a),a}),define("hbs!tabs/vdcs-tab/utils/resources-zone/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div class="row">\n  <div class="large-12 columns">\n    <dl class="tabs right-info-tabs text-center" data-tab>\n      <dd class="active"><a href="#vdcClustersTab_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'"><i class="fa fa-th"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"Clusters",{name:"tr",hash:{},data:n}))+'</a></dd>\n      <dd><a href="#vdcHostsTab_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'"><i class="fa fa-hdd-o"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"Hosts",{name:"tr",hash:{},data:n}))+'</a></dd>\n      <dd><a href="#vdcVnetsTab_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'"><i class="fa fa-globe"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"VNets",{name:"tr",hash:{},data:n}))+'</a></dd>\n      <dd><a href="#vdcDatastoresTab_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'"><i class="fa fa-folder-open"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"Datastores",{name:"tr",hash:{},data:n}))+'</a></dd>\n    </dl>\n    <div class="tabs-content">\n      <div class="content active" id="vdcClustersTab_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" class="content">\n        <div class="row">\n          <div class="large-12 columns">\n            <label for="all_clusters_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'">\n              <input type="checkbox" name="all_clusters_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" id="all_clusters_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" />\n              '+l((e.tr||t&&t.tr||o).call(t,"All",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Selects all current and future clusters",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n          </div>\n        </div>\n        <div class="vdc_clusters_select">\n          ';return i=null!=(i=e.clustersTableHTML||(null!=t?t.clustersTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"clustersTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n        </div>\n      </div>\n      <div id="vdcHostsTab_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" class="content">\n        <div class="row">\n          <div class="large-12 columns">\n            <label for="all_hosts_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'">\n              <input type="checkbox" name="all_hosts_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" id="all_hosts_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" />\n              '+l((e.tr||t&&t.tr||o).call(t,"All",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Selects all current and future hosts",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n          </div>\n        </div>\n        <div class="vdc_hosts_select">\n          ',i=null!=(i=e.hostsTableHTML||(null!=t?t.hostsTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"hostsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n        </div>\n      </div>\n      <div id="vdcVnetsTab_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" class="content">\n        <div class="row">\n          <div class="large-12 columns">\n            <label for="all_vnets_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'">\n              <input type="checkbox" name="all_vnets_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" id="all_vnets_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" />\n              '+l((e.tr||t&&t.tr||o).call(t,"All",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Selects all current and future vnets",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n          </div>\n        </div>\n        <div class="vdc_vnets_select">\n          ',i=null!=(i=e.vnetsTableHTML||(null!=t?t.vnetsTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"vnetsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n        </div>\n      </div>\n      <div id="vdcDatastoresTab_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" class="content">\n        <div class="row">\n          <div class="large-12 columns">\n            <label for="all_datastores_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'">\n              <input type="checkbox" name="all_datastores_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" id="all_datastores_'+l((i=null!=(i=e.unique_id||(null!=t?t.unique_id:t))?i:o,typeof i===r?i.call(t,{name:"unique_id",hash:{},data:n}):i))+'" />\n              '+l((e.tr||t&&t.tr||o).call(t,"All",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Selects all current and future datastores",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n          </div>\n        </div>\n        <div class="vdc_datastores_select">\n          ',i=null!=(i=e.datastoresTableHTML||(null!=t?t.datastoresTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"datastoresTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n        </div>\n      </div>\n    </div>\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/vdcs-tab/utils/resources-zone/html",a),a}),define("tabs/clusters-tab/tabId",["require"],function(){return"clusters-tab"}),define("tabs/clusters-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=c,this.dataTableId=t,this.resource=o,this.xmlRoot=l,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:i.tabTableColumns(c)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[r.tr("ID"),r.tr("Name"),r.tr("Hosts"),r.tr("VNets"),r.tr("Datastores")],this.selectOptions={id_index:1,name_index:2,select_resource:r.tr("Please select a Cluster from the list"),you_selected:r.tr("You selected the following Cluster:"),select_resource_multiple:r.tr("Please select one or more clusters from the list"),you_selected_multiple:r.tr("You selected the following clusters:")},s.call(this)}function a(t){var e=t[l];return['<input class="check_item" type="checkbox" id="'+o.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.NAME,n(e.HOSTS.ID),n(e.VNETS.ID),n(e.DATASTORES.ID)]}function n(t){var e=0;return $.isArray(t)?e=t.length:$.isEmptyObject(t)||(e=1),e}var s=t("utils/tab-datatable"),i=t("sunstone-config"),r=t("utils/locale"),o="Cluster",l="CLUSTER",c=t("./tabId");return e.prototype=Object.create(s.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("tabs/hosts-tab/utils/cpu-bars",["require","utils/progress-bar","utils/humanize"],function(t){var e=t("utils/progress-bar"),a=(t("utils/humanize"),function(t,a){var n,s,i=a?t:t.HOST_SHARE,r=parseInt(i.MAX_CPU);if(i.CPU_USAGE){var o=parseInt(i.CPU_USAGE);if(r>0){var l=Math.round(o/r*100);n=o+" / "+r+" ("+l+"%)"}else n="";s=e.html(o,r,n)}var c;if(i.USED_CPU){var d=parseInt(i.USED_CPU);if(r>0){var u=Math.round(d/r*100);n=d+" / "+r+" ("+u+"%)"}else n="";c=e.html(d,r,n)}return{real:c,allocated:s}});return{html:a}}),define("tabs/hosts-tab/utils/memory-bars",["require","utils/progress-bar","utils/humanize"],function(t){var e=t("utils/progress-bar"),a=t("utils/humanize"),n=function(t,n){var s,i=n?t:t.HOST_SHARE,r=parseInt(i.MAX_MEM),o="";if(i.MEM_USAGE){var l=parseInt(i.MEM_USAGE);if(r>0){var c=Math.round(l/r*100);o=a.size(l)+" / "+a.size(r)+" ("+c+"%)"}else o=a.size(l)+" / -";s=e.html(l,r,o)}var d;if(i.USED_MEM){var u=parseInt(i.USED_MEM);if(r>0){var p=Math.round(u/r*100);o=a.size(u)+" / "+a.size(r)+" ("+p+"%)"}else o=a.size(u)+" / -";d=e.html(u,r,o)}return{real:d,allocated:s}};return{html:n}}),define("tabs/hosts-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","utils/humanize","./utils/cpu-bars","./utils/memory-bars","opennebula/host","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=m,this.dataTableId=t,this.resource=h,this.xmlRoot=f,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check",5,6,7,8]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:o.tabTableColumns(m)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[l.tr("ID"),l.tr("Name"),l.tr("Cluster"),l.tr("RVMs"),l.tr("Real CPU"),l.tr("Allocated CPU"),l.tr("Real MEM"),l.tr("Allocated MEM"),l.tr("Status"),l.tr("IM MAD"),l.tr("VM MAD"),l.tr("Last monitored on")],this.selectOptions={id_index:1,name_index:2,select_resource:l.tr("Please select a Host from the list"),you_selected:l.tr("You selected the following Host:"),select_resource_multiple:l.tr("Please select one or more hosts from the list"),you_selected_multiple:l.tr("You selected the following hosts:")},this.totalHosts=0,this.onHosts=0,this.offHosts=0,this.errorHosts=0,this.maxCPU=0,this.allocatedCPU=0,this.realCPU=0,this.maxMemory=0,this.allocatedMemory=0,this.realMemory=0,r.call(this)}function a(t){var e=t.HOST,a=d.html(e),n=u.html(e);this.totalHosts++;var s=p.simpleStateStr(e.STATE);switch(s){case"INIT":case"UPDATE":case"ON":this.onHosts++;break;case"ERROR":case"RETRY":this.errorHosts++;break;case"OFF":this.offHosts++}return this.maxCPU+=parseInt(e.HOST_SHARE.MAX_CPU),this.allocatedCPU+=parseInt(e.HOST_SHARE.CPU_USAGE),this.realCPU+=parseInt(e.HOST_SHARE.USED_CPU),this.maxMemory+=parseInt(e.HOST_SHARE.MAX_MEM),this.allocatedMemory+=parseInt(e.HOST_SHARE.MEM_USAGE),this.realMemory+=parseInt(e.HOST_SHARE.USED_MEM),['<input class="check_item" type="checkbox" id="'+h.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.NAME,e.CLUSTER.length?e.CLUSTER:"-",e.HOST_SHARE.RUNNING_VMS,a.real,a.allocated,n.real,n.allocated,s,e.IM_MAD,e.VM_MAD,c.prettyTime(e.LAST_MON_TIME)]}function n(){this.totalHosts=0,this.onHosts=0,this.offHosts=0,this.errorHosts=0,this.maxCPU=0,this.allocatedCPU=0,this.realCPU=0,this.maxMemory=0,this.allocatedMemory=0,this.realMemory=0}function s(){$(".total_hosts").text(this.totalHosts),$(".on_hosts").text(this.onHosts),$(".off_hosts").text(this.offHosts),$(".error_hosts").text(this.errorHosts);var t=0;this.maxCPU>0?(t=Math.round(this.allocatedCPU/this.maxCPU*100),info_str=this.allocatedCPU+" / "+this.maxCPU):info_str="- / -",$("#dashboard_host_allocated_cpu").html(i("dashboard_host_allocated_cpu",l.tr("Allocated CPU"),"30px","14px",{percentage:t,str:info_str}));var e=0;this.maxCPU>0?(e=Math.round(this.realCPU/this.maxCPU*100),info_str=this.realCPU+" / "+this.maxCPU):info_str="- / -",$("#dashboard_host_real_cpu").html(i("dashboard_host_real_cpu",l.tr("Real CPU"),"30px","14px",{percentage:e,str:info_str}));var a=0;this.maxMemory>0?(a=Math.round(this.allocatedMemory/this.maxMemory*100),info_str=c.size(this.allocatedMemory)+" / "+c.size(this.maxMemory)):info_str=c.size(this.allocatedMemory)+" / -",$("#dashboard_host_allocated_mem").html(i("dashboard_host_allocated_mem",l.tr("Allocated Memory"),"30px","14px",{percentage:a,str:info_str}));var n=0;this.maxMemory>0?(n=Math.round(this.realMemory/this.maxMemory*100),info_str=c.size(this.realMemory)+" / "+c.size(this.maxMemory)):info_str=c.size(this.realMemory)+" / -",$("#dashboard_host_real_mem").html(i("dashboard_host_real_mem",l.tr("Real Memory"),"30px","14px",{percentage:n,str:info_str}))}function i(t,e,a,n,s){var i=s.percentage>100?100:s.percentage;return'<div class="row"><div class="large-12 columns text-center" style="margin-bottom: 5px"><h4 class="subheader"><small>'+e+'</small></h4></div></div><div class="row"><div class="large-12 columns text-center"><div class="progress large radius">  <span id="'+t+'_meter" class="meter" style="width: '+i+'%"></span></div></div></div><div class="row"><div class="large-12 columns text-center"><span id="'+t+'_percentage" class="left" style="font-size:'+n+';">'+s.percentage+' %</span><span id="'+t+'_str" class="right" style="color: #999; font-size: '+n+';">'+s.str+"</span></div></div>"}var r=t("utils/tab-datatable"),o=t("sunstone-config"),l=t("utils/locale"),c=t("utils/humanize"),d=t("./utils/cpu-bars"),u=t("./utils/memory-bars"),p=t("opennebula/host"),h="Host",f="HOST",m=t("./tabId");return e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e.prototype.preUpdateView=n,e.prototype.postUpdateView=s,e}),define("tabs/vnets-tab/utils/common",["require"],function(){function t(t){var e=t.AR_POOL.AR;return e?e.constructor!=Array&&(e=[e]):e=[],e}return{getARList:t}}),define("tabs/vnets-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","utils/progress-bar","./utils/common","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=p,this.dataTableId=t,this.resource=d,this.xmlRoot=u,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:r.tabTableColumns(p)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[o.tr("ID"),o.tr("Owner"),o.tr("Group"),o.tr("Name"),o.tr("Reservation"),o.tr("Cluster"),o.tr("Bridge"),o.tr("Leases"),o.tr("VLAN ID")],this.selectOptions={id_index:1,name_index:4,uname_index:2,select_resource:o.tr("Please select a network from the list"),you_selected:o.tr("You selected the following network:"),select_resource_multiple:o.tr("Please select one or more networks from the list"),you_selected_multiple:o.tr("You selected the following networks:")},this.usedLeases=0,this.totalVNets=0,i.call(this)}function a(t){var e=t[u];this.usedLeases=this.usedLeases+parseInt(e.USED_LEASES),this.totalVNets++;var a=0,n=c.getARList(e);return $.each(n,function(){a+=parseInt(this.SIZE)}),['<input class="check_item" type="checkbox" id="'+d.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.UNAME,e.GNAME,e.NAME,o.tr(e.PARENT_NETWORK_ID.length?"Yes":"No"),e.CLUSTER.length?e.CLUSTER:"-",e.BRIDGE,l.html(e.USED_LEASES,a),e.VLAN_ID.length?e.VLAN_ID:"-"]}function n(){this.totalVNets=0,this.usedLeases=0}function s(){$(".total_vnets").text(this.totalVNets),$(".addresses_vnets").text(this.usedLeases)}var i=t("utils/tab-datatable"),r=t("sunstone-config"),o=t("utils/locale"),l=t("utils/progress-bar"),c=t("./utils/common"),d="Network",u="VNET",p=t("./tabId");return e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e.prototype.preUpdateView=n,e.prototype.postUpdateView=s,e}),define("tabs/datastores-tab/utils/datastore-capacity-bar",["require","utils/progress-bar","utils/humanize"],function(t){var e=t("utils/progress-bar"),a=t("utils/humanize"),n=function(t){var n=parseInt(t.TOTAL_MB),s=n-parseInt(t.FREE_MB);if(n>0){var i=Math.round(s/n*100);info_str=a.sizeFromMB(s)+" / "+a.sizeFromMB(n)+" ("+i+"%)"}else info_str=1==t.TYPE?"- / -":a.size(s)+" / -";return e.html(s,n,info_str)};return{html:n}}),define("tabs/datastores-tab/tabId",["require"],function(){return"datastores-tab"}),define("tabs/datastores-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","opennebula/datastore","./utils/datastore-capacity-bar","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=d,this.dataTableId=t,this.resource=l,this.xmlRoot=c,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{sWidth:"250px",aTargets:[5]},{bVisible:!0,aTargets:s.tabTableColumns(d)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[i.tr("ID"),i.tr("Owner"),i.tr("Group"),i.tr("Name"),i.tr("Capacity"),i.tr("Cluster"),i.tr("Basepath"),i.tr("TM MAD"),i.tr("DS MAD"),i.tr("Type"),i.tr("Status")],this.selectOptions={id_index:1,name_index:4,uname_index:2,select_resource:i.tr("Please select a datastore from the list"),you_selected:i.tr("You selected the following datastore:"),select_resource_multiple:i.tr("Please select one or more datastores from the list"),you_selected_multiple:i.tr("You selected the following datastores:")},n.call(this)}function a(t){var e=t.DATASTORE;return['<input class="check_item" type="checkbox" id="'+l.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.UNAME,e.GNAME,e.NAME,o.html(e),e.CLUSTER.length?e.CLUSTER:"-",e.BASE_PATH,e.TM_MAD,e.DS_MAD,e.TEMPLATE.TYPE.toLowerCase().split("_")[0],i.tr(r.stateStr(e.STATE))]}var n=t("utils/tab-datatable"),s=t("sunstone-config"),i=t("utils/locale"),r=t("opennebula/datastore"),o=t("./utils/datastore-capacity-bar"),l="Datastore",c="DATASTORE",d=t("./tabId");return e.prototype=Object.create(n.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("tabs/vdcs-tab/utils/resources-zone",["require","hbs!./resources-zone/html","tabs/clusters-tab/datatable","tabs/hosts-tab/datatable","tabs/vnets-tab/datatable","tabs/datastores-tab/datatable","utils/tips","./common"],function(t){function e(t,e,a,n,s){this.unique_id=t,this.zone_id=e,this.resources=void 0,void 0!=s&&void 0!=s[e]&&(this.resources=s[e])}function a(){return this.zone_id}function n(){var t=this,e={};return $.each(["clusters","hosts","vnets","datastores"],function(a,n){void 0!=t.resources?(e[n]={info:!0,select:!0,selectOptions:{read_only:!0,zone_id:t.zone_id}},(1!=t.resources[n].length||t.resources[n][0]!=m)&&(e[n].selectOptions.fixed_ids=t.resources[n])):e[n]={info:!1,select:!0,selectOptions:{multiple_choice:!0,zone_id:t.zone_id}}}),t.clustersTable=new c("vdc_clusters_"+t.unique_id,e.clusters),t.hostsTable=new d("vdc_hosts_"+t.unique_id,e.hosts),t.vnetsTable=new u("vdc_vnets_"+t.unique_id,e.vnets),t.datastoresTable=new p("vdc_datastores_"+t.unique_id,e.datastores),l({unique_id:t.unique_id,clustersTableHTML:t.clustersTable.dataTableHTML,hostsTableHTML:t.hostsTable.dataTableHTML,vnetsTableHTML:t.vnetsTable.dataTableHTML,datastoresTableHTML:t.datastoresTable.dataTableHTML})}function s(){var t=this;$.each([t.clustersTable,t.hostsTable,t.vnetsTable,t.datastoresTable],function(){this.refreshResourceTableSelect()})}function i(t){var e=this;t.foundation(),$.each(["clusters","hosts","vnets","datastores"],function(a,n){void 0!=e.resources&&(1==e.resources[n].length&&e.resources[n][0]==m&&$("#all_"+n+"_"+e.unique_id,t).prop("checked","checked"),$("#all_"+n+"_"+e.unique_id,t).prop("disabled",!0)),$("input[name='all_"+n+"_"+e.unique_id+"']",t).change(function(){$(this).prop("checked")?$("div.vdc_"+n+"_select",t).hide():$("div.vdc_"+n+"_select",t).show()})}),$.each([e.clustersTable,e.hostsTable,e.vnetsTable,e.datastoresTable],function(){this.initialize()}),h.setup(t)}function r(t){var e,a,n,s;e=$("input[name='all_clusters_"+this.unique_id+"']",t).prop("checked")?[m]:this.clustersTable.retrieveResourceTableSelect(),a=$("input[name='all_hosts_"+this.unique_id+"']",t).prop("checked")?[m]:this.hostsTable.retrieveResourceTableSelect(),n=$("input[name='all_vnets_"+this.unique_id+"']",t).prop("checked")?[m]:this.vnetsTable.retrieveResourceTableSelect(),s=$("input[name='all_datastores_"+this.unique_id+"']",t).prop("checked")?[m]:this.datastoresTable.retrieveResourceTableSelect();var i={clusters:e,hosts:a,vnets:n,datastores:s};return i}function o(t,e){void 0==e[this.zone_id]&&(e[this.zone_id]={clusters:[],hosts:[],vnets:[],datastores:[]});var a=e[this.zone_id];1==a.clusters.length&&a.clusters[0]==m?$("#all_clusters_"+this.unique_id,t).click():this.clustersTable.selectResourceTableSelect({ids:a.clusters}),1==a.hosts.length&&a.hosts[0]==m?$("#all_hosts_"+this.unique_id,t).click():this.hostsTable.selectResourceTableSelect({ids:a.hosts}),1==a.vnets.length&&a.vnets[0]==m?$("#all_vnets_"+this.unique_id,t).click():this.vnetsTable.selectResourceTableSelect({ids:a.vnets}),1==a.datastores.length&&a.datastores[0]==m?$("#all_datastores_"+this.unique_id,t).click():this.datastoresTable.selectResourceTableSelect({ids:a.datastores})}var l=t("hbs!./resources-zone/html"),c=t("tabs/clusters-tab/datatable"),d=t("tabs/hosts-tab/datatable"),u=t("tabs/vnets-tab/datatable"),p=t("tabs/datastores-tab/datatable"),h=t("utils/tips"),f=t("./common"),m=f.VDC_ALL_RESOURCES;return e.prototype.constructor=e,e.prototype.html=n,e.prototype.setup=i,e.prototype.onShow=s,e.prototype.retrieve=r,e.prototype.fill=o,e.prototype.getZoneId=a,e}),define("tabs/vdcs-tab/utils/resources-tab",["require","hbs!./resources-tab/html","./resources-zone","./common"],function(t){function e(t){this.unique_id_prefix=t,this.zones=[]}function a(){return c({})}function n(t){$.each(this.zones,function(e,a){a.onShow(t)})}function s(t){var e=this;$("select.vdc_zones_select",t).change(function(){t.find(".vdc_zone_content").hide(),$("div#"+e.unique_id_prefix+"_"+$(this).val()+"Tab",t).show()}),$("select.vdc_zones_select",t)[0].selectedIndex=0,$("select.vdc_zones_select",t).change()}function i(t){var e=[],a=[],n=[],s=[];return $.each(this.zones,function(i,r){var o=r.retrieve(t),l=r.getZoneId();$.each(o.clusters,function(t,a){e.push({zone_id:l,cluster_id:a})}),$.each(o.hosts,function(t,e){a.push({zone_id:l,host_id:e})}),$.each(o.vnets,function(t,e){n.push({zone_id:l,vnet_id:e})}),$.each(o.datastores,function(t,e){s.push({zone_id:l,ds_id:e})})}),{clusters:e,hosts:a,vnets:n,datastores:s}}function r(t){var e={};return $.each(this.zones,function(a,n){e[n.getZoneId()]=n.retrieve(t)}),e}function o(t,e){$.each(this.zones,function(a,n){n.fill(t,e)})}function l(t,e,a,n){var s=this.unique_id_prefix+"_"+t,i=new d(s,t,e,a,n),r='<div id="'+s+'Tab" class="vdc_zone_content">'+i.html()+"</div>";$(r).appendTo($(".vdc_zones_tabs_content",a)),$("select.vdc_zones_select",a).append('<option value="'+t+'">'+e+"</option>");var o=$("#"+s+"Tab",a);i.setup(o),i.onShow(o),this.zones.push(i)}{var c=t("hbs!./resources-tab/html"),d=t("./resources-zone");t("./common")}return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.retrieveIndexed=r,e.prototype.fill=o,e.prototype.addResourcesZone=l,e}),define("tabs/vdcs-tab/panels/resources/panelId",["require"],function(){return"vdc_resources_tab"}),define("tabs/vdcs-tab/panels/resources",["require","utils/locale","../utils/common","../utils/resources-tab","opennebula/zone","../tabId","./resources/panelId"],function(t){function e(t){return this.title=s.tr("Resources"),this.icon="fa-th",this.element=t[c],this.resourcesTab=new r("vdc_info_panel"),this}function a(){return this.resourcesTab.html()}function n(t){var e=this,a=i.indexedVdcResources(this.element);$.each(a,function(n){e.resourcesTab.addResourcesZone(n,o.getName(n),t,a)}),e.resourcesTab.setup(t),e.resourcesTab.onShow(t)}var s=t("utils/locale"),i=t("../utils/common"),r=t("../utils/resources-tab"),o=t("opennebula/zone"),l=(t("../tabId"),t("./resources/panelId")),c="VDC";return e.PANEL_ID=l,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!utils/custom-tags-table/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row">\n  <div class="large-4 columns">\n    <input type="text" id="KEY" name="key" />\n  </div>\n  <div class="large-6 columns">\n    <input type="text" id="VALUE" name="value" />\n  </div>\n  <div class="large-2 columns">\n    <button type="button" class="button secondary small radius" id="add_custom">\n      '+i((e.tr||t&&t.tr||s).call(t,"Add",{name:"tr",hash:{},data:n}))+'\n    </button>\n  </div>\n</div>\n<div class="row">\n  <div class="large-12 columns">\n    <table id="custom_tags" class="dataTable policies_table">\n      <thead>\n        <tr>\n          <th>'+i((e.tr||t&&t.tr||s).call(t,"KEY",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+i((e.tr||t&&t.tr||s).call(t,"VALUE",{name:"tr",hash:{},data:n}))+'</th>\n          <th></th>\n        </tr>\n      </thead>\n      <tbody id="tbodyinput">\n        <tr>\n        </tr>\n        <tr>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>'},useData:!0});return e.registerPartial("utils/custom-tags-table/html",a),a}),define("utils/custom-tags-table",["require","utils/locale","hbs!./custom-tags-table/html","utils/template-utils"],function(t){function e(){return i()}function a(t){$("#add_custom",t).click(function(){var e=$("#custom_tags",t)[0],a=e.rows.length,n=e.insertRow(a),s=n.insertCell(0),i=document.createElement("input");i.id="KEY",i.type="text",i.value=$("input#KEY",t).val(),s.appendChild(i);var r=n.insertCell(1),o=document.createElement("input");o.id="VALUE",o.type="text",o.value=$("input#VALUE",t).val(),r.appendChild(o);var l=n.insertCell(2);l.innerHTML="<i class='fa fa-times-circle fa fa-lg remove-tab'></i>"}),t.on("click","i.remove-tab",function(){$(this).closest("tr").remove()})}function n(t){var e={};return $("#custom_tags tr",t).each(function(){$("#KEY",$(this)).val()&&(e[$("#KEY",$(this)).val()]=$("#VALUE",$(this)).val())}),e}function s(t,e){$.each(e,function(e,a){var n=$("#custom_tags",t)[0],s=n.rows.length,i=n.insertRow(s),o=i.insertCell(0),l=document.createElement("input");l.id="KEY",l.type="text",l.value=r.htmlDecode(e),o.appendChild(l);var c=i.insertCell(1),d=document.createElement("input");d.id="VALUE",d.type="text",d.value=r.htmlDecode(a),c.appendChild(d);var u=i.insertCell(2);u.innerHTML="<i class='fa fa-times-circle fa fa-lg remove-tab'></i>"})}var i=(t("utils/locale"),t("hbs!./custom-tags-table/html")),r=t("utils/template-utils");return{html:e,setup:a,retrieve:n,fill:s}}),define("utils/wizard-fields",["require","utils/template-utils"],function(t){function e(t){var e={},a=$("[wizard_field]",t);return a.each(function(){var t=$(this);if(1!=t.prop("wizard_field_disabled")&&null!=t.val()&&t.val().length&&("checkbox"!=t.attr("type")||t.prop("checked"))&&("radio"!=t.attr("type")||t.prop("checked"))){var a=t.attr("wizard_field");e[a]=t.val()}}),e}function a(t,e){var a=$("[wizard_field]",t);a.each(function(){var t=$(this),a=t.attr("wizard_field");if(e[a]){switch(t.attr("type")){case"radio":var s=t.val()==e[a];t.prop("checked",s),s&&t.change();break;case"checkbox":var s=t.val().toUpperCase()==e[a].toUpperCase();t.prop("checked",s),s&&t.change();break;default:t.val(n.escapeDoubleQuotes(n.htmlDecode(e[a]))),t.change()}delete e[a]}})}var n=t("utils/template-utils");return{retrieve:e,fill:a}}),define("hbs!tabs/vdcs-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<form data-abide="ajax" id="'+l((i=null!=(i=e.formPanelId||(null!=t?t.formPanelId:t))?i:o,typeof i===r?i.call(t,{name:"formPanelId",hash:{},data:n}):i))+'Wizard" class="custom creation">\n  <div>\n    <dl id="vdc_create_tabs" class="tabs right-info-tabs text-center" data-tab>\n      <dd class="active"><a href="#vdcCreateGeneralTab"><i class="fa fa-th"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"General",{name:"tr",hash:{},data:n}))+'</a></dd>\n      <dd><a href="#vdcCreateGroupsTab"><i class="fa fa-users"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"Groups",{name:"tr",hash:{},data:n}))+'</a></dd>\n      <dd><a href="#vdcCreateResourcesTab"><i class="fa fa-hdd-o"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"Resources",{name:"tr",hash:{},data:n}))+'</a></dd>\n    </dl>\n    <div id="vdc_create_tabs_content" class="tabs-content">\n      <div class="content active" id="vdcCreateGeneralTab">\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="name" >'+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Name that the VDC will get for description purposes.",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n            <input type="text" wizard_field="NAME" required name="name" id="name"/>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="DESCRIPTION" >'+l((e.tr||t&&t.tr||o).call(t,"Description",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Description of the VDC",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n            <textarea type="text" wizard_field="DESCRIPTION" id="DESCRIPTION" name="DESCRIPTION"/>\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-12 columns">\n            <span>'+l((e.tr||t&&t.tr||o).call(t,"Custom attributes",{name:"tr",hash:{},data:n}))+"</span>\n            <br>\n            <br>\n          </div>\n        </div>\n        ";
+return i=null!=(i=e.customTagsHTML||(null!=t?t.customTagsHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"customTagsHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n      </div>\n      <div id="vdcCreateGroupsTab" class="content">\n        ',i=null!=(i=e.groupsTableHTML||(null!=t?t.groupsTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"groupsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n      </div>\n      <div id="vdcCreateResourcesTab" class="content">\n        ',i=null!=(i=e.resourcesTabHTML||(null!=t?t.resourcesTabHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"resourcesTabHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n      </div>\n    </div>\n  </div>\n</form>"},useData:!0});return e.registerPartial("tabs/vdcs-tab/form-panels/create/wizard",a),a}),define("hbs!tabs/vdcs-tab/form-panels/create/advanced",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Advanced" class="custom creation">\n  <div class="row">\n    <div class="large-12 columns">\n      <p>'+o((e.tr||t&&t.tr||r).call(t,"Write the VDC template here",{name:"tr",hash:{},data:n}))+'</p>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <textarea id="template" rows="15" required></textarea>\n    </div>\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/vdcs-tab/form-panels/create/advanced",a),a}),define("tabs/vdcs-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","utils/tips","utils/custom-tags-table","utils/wizard-fields","tabs/groups-tab/datatable","opennebula/zone","../utils/common","utils/notifier","../utils/resources-tab","utils/template-utils","hbs!./create/wizard","hbs!./create/advanced","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=E,this.tabId=S,this.actions={create:{title:u.tr("Create Virtual Data Center"),buttonText:u.tr("Create"),resetButton:!0},update:{title:u.tr("Update Virtual Data Center"),buttonText:u.tr("Update"),resetButton:!1}},c.call(this)}function a(){var t={info:!1,select:!0,selectOptions:{multiple_choice:!0}};return this.groupsTable=new m("vdc_wizard_groups",t),this.resourcesTab=new g("create"==this.action?"vdc_create_wizard":"vdc_update_wizard"),w({formPanelId:this.formPanelId,customTagsHTML:h.html(),groupsTableHTML:this.groupsTable.dataTableHTML,resourcesTabHTML:this.resourcesTab.html()})}function n(){return T({formPanelId:this.formPanelId})}function s(t){var e=this;if(h.setup($("#vdcCreateGeneralTab",t)),this.groupsTable.initialize(),"create"==this.action){var a=[];_.list({timeout:!0,success:function(n,s){var i=$("#vdcCreateResourcesTab",t);$.each(s,function(){a.push(this.ZONE.ID),e.resourcesTab.addResourcesZone(this.ZONE.ID,this.ZONE.NAME,i)}),e.resourcesTab.setup(i),e.zone_ids=a},error:v.onError})}t.foundation(),p.setup()}function i(t){var e=this,a={};$.extend(a,f.retrieve($("#vdcCreateGeneralTab",t))),$.extend(a,h.retrieve($("#vdcCreateGeneralTab",t)));var n=this.groupsTable.retrieveResourceTableSelect();if("create"==this.action){var s=this.resourcesTab.retrieve(t);return a={vdc:a,group_ids:n,clusters:s.clusters,hosts:s.hosts,vnets:s.vnets,datastores:s.datastores},d.runAction("Vdc.create",a),!1}if("update"==this.action){var i=this.groupsTable.retrieveResourceTableSelect();$.each(i,function(t,a){-1==e.original_groups_list.indexOf(a)&&d.runAction("Vdc.add_group",e.resourceId,{group_id:a})}),$.each(e.original_groups_list,function(t,a){-1==i.indexOf(a)&&d.runAction("Vdc.del_group",e.resourceId,{group_id:a})});var r=e.resourcesTab.retrieveIndexed(t);for(var o in r){var l=e.originalSelectedResources[o];$.each(r[o].clusters,function(t,a){-1==l.clusters.indexOf(a)&&d.runAction("Vdc.add_cluster",e.resourceId,{zone_id:o,cluster_id:a})}),$.each(r[o].hosts,function(t,a){-1==l.hosts.indexOf(a)&&d.runAction("Vdc.add_host",e.resourceId,{zone_id:o,host_id:a})}),$.each(r[o].vnets,function(t,a){-1==l.vnets.indexOf(a)&&d.runAction("Vdc.add_vnet",e.resourceId,{zone_id:o,vnet_id:a})}),$.each(r[o].datastores,function(t,a){-1==l.datastores.indexOf(a)&&d.runAction("Vdc.add_datastore",e.resourceId,{zone_id:o,ds_id:a})})}for(var o in e.originalSelectedResources){var c=r[o];$.each(e.originalSelectedResources[o].clusters,function(t,a){-1==c.clusters.indexOf(a)&&d.runAction("Vdc.del_cluster",e.resourceId,{zone_id:o,cluster_id:a})}),$.each(e.originalSelectedResources[o].hosts,function(t,a){-1==c.hosts.indexOf(a)&&d.runAction("Vdc.del_host",e.resourceId,{zone_id:o,host_id:a})}),$.each(e.originalSelectedResources[o].vnets,function(t,a){-1==c.vnets.indexOf(a)&&d.runAction("Vdc.del_vnet",e.resourceId,{zone_id:o,vnet_id:a})}),$.each(e.originalSelectedResources[o].datastores,function(t,a){-1==c.datastores.indexOf(a)&&d.runAction("Vdc.del_datastore",e.resourceId,{zone_id:o,ds_id:a})})}return d.runAction("Vdc.update",e.resourceId,y.templateToString(a)),!1}}function r(t){if("create"==this.action){var e=$("textarea#template",t).val(),a={vdc:{vdc_raw:e}};return d.runAction("Vdc.create",a),!1}if("update"==this.action){var n=$("textarea#template",t).val();return d.runAction("Vdc.update",this.resourceId,n),!1}}function o(t){this.groupsTable.refreshResourceTableSelect(),this.resourcesTab.onShow(t)}function l(t,e){var a=this;this.resourceId=e.ID,$("#template",t).val(y.templateToString(e.TEMPLATE).replace(/^[\r\n]+$/g,"")),$('[wizard_field="NAME"]',t).val(y.escapeDoubleQuotes(y.htmlDecode(e.NAME))).prop("disabled",!0).prop("wizard_field_disabled",!0),f.fill($("#vdcCreateGeneralTab",t),e.TEMPLATE);var n=$("[wizard_field]",t);n.each(function(){var t=$(this),a=t.attr("wizard_field");delete e.TEMPLATE[a]}),h.fill($("#vdcCreateGeneralTab",t),e.TEMPLATE);var s=e.GROUPS.ID;"string"==typeof s&&(s=[s]),this.original_groups_list=[],s&&(this.original_groups_list=s,this.groupsTable.selectResourceTableSelect({ids:s})),this.originalSelectedResources=b.indexedVdcResources(e);var i=[];_.list({timeout:!0,success:function(e,n){var s=$("#vdcCreateResourcesTab",t);$.each(n,function(){i.push(this.ZONE.ID),a.resourcesTab.addResourcesZone(this.ZONE.ID,this.ZONE.NAME,s)}),a.resourcesTab.setup(s),a.resourcesTab.fill(s,a.originalSelectedResources),a.zone_ids=i},error:v.onError})}t("foundation.tab");var c=t("utils/form-panels/form-panel"),d=t("sunstone"),u=t("utils/locale"),p=t("utils/tips"),h=t("utils/custom-tags-table"),f=t("utils/wizard-fields"),m=t("tabs/groups-tab/datatable"),_=t("opennebula/zone"),b=t("../utils/common"),v=t("utils/notifier"),g=t("../utils/resources-tab"),y=t("utils/template-utils"),w=t("hbs!./create/wizard"),T=t("hbs!./create/advanced"),E=t("./create/formPanelId"),S=t("../tabId");return e.FORM_PANEL_ID=E,e.prototype=Object.create(c.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.htmlAdvanced=n,e.prototype.submitWizard=i,e.prototype.submitAdvanced=r,e.prototype.onShow=o,e.prototype.fill=l,e.prototype.setup=s,e}),define("tabs/vdcs-tab",["require","utils/locale","./vdcs-tab/buttons","./vdcs-tab/actions","./vdcs-tab/datatable","./vdcs-tab/tabId","./vdcs-tab/panels/info","./vdcs-tab/panels/groups","./vdcs-tab/panels/resources","./vdcs-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./vdcs-tab/buttons"),n=t("./vdcs-tab/actions"),s=t("./vdcs-tab/datatable"),i=t("./vdcs-tab/tabId"),r="dataTableVDCs",o=[],l=[t("./vdcs-tab/panels/info"),t("./vdcs-tab/panels/groups"),t("./vdcs-tab/panels/resources")],c=[t("./vdcs-tab/form-panels/create")],d={tabId:i,title:e.tr("VDCs"),tabClass:"subTab",parentTab:"system-tab",listHeader:'<i class="fa fa-fw fa-th"></i>&emsp;'+e.tr("Virtual Data Centers"),infoHeader:'<i class="fa fa-fw fa-th"></i>&emsp;'+e.tr("Virtual Data Center"),subheader:'<span>        <span class="total_vdcs"/> <small>'+e.tr("TOTAL")+"</small>      </span>",resource:"Vdc",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/acls-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Acl.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Acl.create_dialog":{type:"create_dialog",layout:"create"},"Acl.delete":{type:"confirm",text:e.tr("Delete"),layout:"del"}};return a}),define("tabs/acls-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","opennebula/user","opennebula/group","opennebula/zone","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=m,this.dataTableId=t,this.resource=h,this.xmlRoot=f,this.dataTableOptions={bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check",2,3,4,5,6,7]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:l.tabTableColumns(m)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[c.tr("ID"),c.tr("Applies to"),c.tr("Affected resources"),c.tr("Resource ID / Owned by"),c.tr("Allowed operations"),c.tr("Zone"),c.tr("ACL String")],this.selectOptions={id_index:1,name_index:1,select_resource:c.tr("Please select an ACL rule from the list"),you_selected:c.tr("You selected the following ACL rule:"),select_resource_multiple:c.tr("Please select one or more ACL rules from the list"),you_selected_multiple:c.tr("You selected the following ACL rules:")},o.call(this)}function a(t){var e=t[f],a=e.STRING,s=n(a);return['<input class="check_item" type="checkbox" id="'+h.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,s[0],s[1],s[2],s[3],c.tr(s[4].charAt(0).toUpperCase()+s[4].substring(1)),e.STRING]}function n(t){var e=t.split(" "),a=e[0],n=e[1],o=e[2],l=e[3],d=s(a),u="",p=n.split("/"),h=i(p[1]);p=p[0].split("+");for(var f=0;f<p.length;f++)switch(p[f]){case"HOST":u+=c.tr("Hosts")+", ";break;case"VM":u+=c.tr("Virtual Machines")+", ";break;case"NET":u+=c.tr("Virtual Networks")+", ";break;case"IMAGE":u+=c.tr("Images")+", ";break;case"TEMPLATE":u+=c.tr("VM Templates")+", ";break;case"USER":u+=c.tr("Users")+", ";break;case"GROUP":u+=c.tr("Groups")+", ";break;case"CLUSTER":u+=c.tr("Clusters")+", ";break;case"DATASTORE":u+=c.tr("Datastores")+", ";break;case"DOCUMENT":u+=c.tr("Documents")+", ";break;case"ZONE":u+=c.tr("Zones")+", ";break;case"SECGROUP":u+=c.tr("Security Groups")+", ";break;case"VDC":u+=c.tr("VDCs")+", "}u=u.substring(0,u.length-2);for(var m="",_=o.split("+"),f=0;f<_.length;f++)m+=_[f].toLowerCase()+", ";m=m.substring(0,m.length-2);var b=r(l);return[d,u,h,m,b]}function s(t){var e="";return"*"==t[0]?e=c.tr("All"):"#"==t[0]?(e=c.tr("User")+" ",e+=d.getName(t.substring(1))):"@"==t[0]&&(e=c.tr("Group "),e+=u.getName(t.substring(1))),e}function i(t){var e="";return"*"==t[0]?e=c.tr("All"):"#"==t[0]?(e=c.tr("ID")+" ",e+=t.substring(1)):"@"==t[0]?(e=c.tr("Group")+" ",e+=u.getName(t.substring(1))):"%"==t[0]&&(e=c.tr("Cluster ID")+" ",e+=t.substring(1)),e}function r(t){var e="";return"*"==t[0]?e=c.tr("All"):"#"==t[0]&&(e=p.getName(t.substring(1))),e}var o=t("utils/tab-datatable"),l=t("sunstone-config"),c=t("utils/locale"),d=t("opennebula/user"),u=t("opennebula/group"),p=t("opennebula/zone"),h="Acl",f="ACL",m=t("./tabId");return e.prototype=Object.create(o.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("tabs/acls-tab/actions",["require","sunstone","utils/notifier","utils/locale","./datatable","opennebula/acl","./tabId","./form-panels/create/formPanelId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=(t("utils/locale"),t("./datatable"),t("opennebula/acl")),s="Acl",i=t("./tabId"),r=t("./form-panels/create/formPanelId"),o={"Acl.create":{type:"create",call:n.create,callback:function(t,a){e.resetFormPanel(i,r),e.hideFormPanel(i),e.getDataTable(i).addElement(t,a)},error:function(t,n){e.hideFormPanelLoading(i),a.onError(t,n)},notify:!0},"Acl.create_dialog":{type:"custom",call:function(){e.showFormPanel(i,r,"create")}},"Acl.list":{type:"list",call:n.list,callback:function(t,a){e.getDataTable(i).updateView(t,a)},error:a.onError},"Acl.refresh":{type:"custom",call:function(){var t=$("#"+i);e.rightInfoVisible(t)?e.runAction(s+".show",e.rightInfoResourceId(t)):(e.getDataTable(i).waitingNodes(),e.runAction(s+".list",{force:!0}))},error:a.onError},"Acl.delete":{type:"multiple",call:n.del,callback:function(t,a){e.getDataTable(i).deleteElement(t,a)},elements:function(){return e.getDataTable(i).elements()},error:a.onError}};return o}),define("tabs/acls-tab",["require","utils/locale","./acls-tab/buttons","./acls-tab/actions","./acls-tab/datatable","./acls-tab/tabId","./acls-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./acls-tab/buttons"),n=t("./acls-tab/actions"),s=t("./acls-tab/datatable"),i=t("./acls-tab/tabId"),r="dataTableAcls",o=[],l=[],c=[t("./acls-tab/form-panels/create")],d={tabId:i,title:e.tr("ACLs"),tabClass:"subTab",parentTab:"system-tab",listHeader:'<i class="fa fa-key"></i>&emsp;'+e.tr("Access Control Lists"),subheader:"<span/><small></small>&emsp;",resource:"Acl",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!1}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/vresources-tab",["require","utils/locale"],function(t){var e=t("utils/locale"),a="vresources-tab",n={tabId:a,title:'<i class="fa fa-lg fa-fw fa-cloud"></i>&emsp;'+e.tr("Virtual Resources"),no_content:!0};return n}),define("tabs/vms-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"VM.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"VM.create_dialog":{type:"action",layout:"create",alwaysActive:!0},"VM.chown":{type:"confirm_with_select",text:e.tr("Change owner"),select:"User",layout:"user_select",tip:e.tr("Select the new owner")+":"},"VM.chgrp":{type:"confirm_with_select",text:e.tr("Change group"),select:"Group",layout:"user_select",tip:e.tr("Select the new group")+":"},"VM.deploy":{type:"action",text:e.tr("Deploy"),tip:e.tr("This will deploy the selected VMs on the chosen host"),layout:"vmsplanification_buttons",custom_classes:"state-dependent"},"VM.migrate":{type:"action",text:e.tr("Migrate"),tip:e.tr("This will migrate the selected VMs to the chosen host"),layout:"vmsplanification_buttons",custom_classes:"state-dependent"},"VM.migrate_live":{type:"action",text:e.tr("Migrate")+' <span class="label secondary radius">live</span>',tip:e.tr("This will live-migrate the selected VMs to the chosen host"),layout:"vmsplanification_buttons",custom_classes:"state-dependent"},"VM.hold":{type:"action",text:e.tr("Hold"),tip:e.tr("This will hold selected pending VMs from being deployed"),layout:"vmsplanification_buttons",custom_classes:"state-dependent"},"VM.release":{type:"action",text:e.tr("Release"),layout:"vmsplanification_buttons",tip:e.tr("This will release held machines"),custom_classes:"state-dependent"},"VM.suspend":{type:"action",text:e.tr("Suspend"),layout:"vmspause_buttons",tip:e.tr("This will suspend selected machines"),custom_classes:"state-dependent"},"VM.resume":{type:"action",text:'<i class="fa fa-play"/>',layout:"vmsplay_buttons",tip:e.tr("This will resume selected VMs"),custom_classes:"state-dependent"},"VM.stop":{type:"action",text:e.tr("Stop"),layout:"vmsstop_buttons",tip:e.tr("This will stop selected VMs"),custom_classes:"state-dependent"},"VM.reboot":{type:"action",text:e.tr("Reboot"),layout:"vmsrepeat_buttons",tip:e.tr("This will send a reboot action to running VMs"),custom_classes:"state-dependent"},"VM.reboot_hard":{type:"action",text:e.tr("Reboot")+' <span class="label secondary radius">hard</span>',layout:"vmsrepeat_buttons",tip:e.tr("This will perform a hard reboot on selected VMs"),custom_classes:"state-dependent"},"VM.poweroff":{type:"action",text:e.tr("Power Off"),layout:"vmspause_buttons",tip:e.tr("This will send a power off signal to running VMs. They can be resumed later."),custom_classes:"state-dependent"},"VM.poweroff_hard":{type:"action",text:e.tr("Power Off")+' <span class="label secondary radius">hard</span>',layout:"vmspause_buttons",tip:e.tr("This will send a forced power off signal to running VMs. They can be resumed later."),custom_classes:"state-dependent"},"VM.undeploy":{type:"action",text:e.tr("Undeploy"),layout:"vmsstop_buttons",tip:e.tr("Shuts down the given VM. The VM is saved in the system Datastore."),custom_classes:"state-dependent"},"VM.undeploy_hard":{type:"action",text:e.tr("Undeploy")+' <span class="label secondary radius">hard</span>',layout:"vmsstop_buttons",tip:e.tr("Shuts down the given VM. The VM is saved in the system Datastore."),custom_classes:"state-dependent"},"VM.shutdown":{type:"confirm",text:e.tr("Shutdown"),layout:"vmsdelete_buttons",tip:e.tr("This will initiate the shutdown process in the selected VMs"),custom_classes:"state-dependent"},"VM.shutdown_hard":{type:"confirm",text:e.tr("Shutdown")+' <span class="label secondary radius">hard</span>',layout:"vmsdelete_buttons",tip:e.tr("This will initiate the shutdown-hard (forced) process in the selected VMs"),custom_classes:"state-dependent"},"VM.delete":{type:"confirm",text:e.tr("Delete"),layout:"vmsdelete_buttons",tip:e.tr("This will delete the selected VMs from the database"),custom_classes:"state-dependent"},"VM.delete_recreate":{type:"confirm",text:e.tr("Delete")+' <span class="label secondary radius">recreate</span>',layout:"vmsrepeat_buttons",tip:e.tr("This will delete and recreate VMs to PENDING state"),custom_classes:"state-dependent"},"VM.resched":{type:"action",text:e.tr("Reschedule"),layout:"vmsplanification_buttons",tip:e.tr("This will reschedule selected VMs"),custom_classes:"state-dependent"},"VM.unresched":{type:"action",text:e.tr("Un-Reschedule"),layout:"vmsplanification_buttons",tip:e.tr("This will cancel the rescheduling for the selected VMs"),custom_classes:"state-dependent"},"VM.recover":{type:"confirm_with_select",text:e.tr("Recover"),layout:"vmsplanification_buttons",custom_select:'<select class="resource_list_select">                    <option value="2">'+e.tr("retry")+'</option>                    <option value="1">'+e.tr("success")+'</option>                    <option value="0">'+e.tr("failure")+"</option>                    </select>",tip:e.tr("Recovers a stuck VM that is waiting for a driver operation.                     The recovery may be done by failing, succeeding or retrying the current operation.                     YOU NEED TO MANUALLY CHECK THE VM STATUS ON THE HOST, to decide if the operation                     was successful or not, or if it can be retried."),custom_classes:"state-dependent"},"VM.startvnc":{type:"action",text:'<i class="fa fa-desktop" style="color: rgb(111, 111, 111)"/> '+e.tr("VNC"),custom_classes:"only-right-info vnc-right-info",tip:e.tr("VNC")},"VM.startspice":{type:"action",text:'<i class="fa fa-desktop" style="color: rgb(111, 111, 111)"/> '+e.tr("SPICE"),custom_classes:"only-right-info spice-right-info",tip:e.tr("SPICE")}};return a}),define("utils/common-actions",["require","sunstone","utils/notifier","utils/locale"],function(t){function e(t,e,a){this.openNebulaResource=t,this.tabId=a,this.resourceStr=e}function a(){var t=this;return{type:"list",call:t.openNebulaResource.list,callback:function(e,a){l.getDataTable(t.tabId).updateView(e,a)},error:c.onError}}function n(){var t=this;return{type:"single",call:t.openNebulaResource.show,callback:function(e,a){l.getDataTable(t.tabId).updateElement(e,a),l.rightInfoVisible($("#"+t.tabId))&&l.insertPanels(t.tabId,a)},error:c.onError}}function s(){var t=this;return{type:"custom",call:function(){var e=$("#"+t.tabId);l.rightInfoVisible(e)?l.runAction(t.resourceStr+".show",l.rightInfoResourceId(e)):(l.getDataTable(t.tabId).waitingNodes(),l.runAction(t.resourceStr+".list",{force:!0}))},error:c.onError}}function i(){var t=this;return{type:"multiple",call:t.openNebulaResource.del,callback:function(e,a){l.getDataTable(t.tabId).deleteElement(e,a)},elements:function(){return l.getDataTable(t.tabId).elements()},error:c.onError,notify:!0}}function r(t){var e=this;return{type:"multiple",call:e.openNebulaResource[t],callback:function(t){l.runAction(e.resourceStr+".show",t.request.data[0])},elements:function(){return l.getDataTable(e.tabId).elements()},error:c.onError,notify:!0}}function o(t){var e=this;return{type:"single",call:e.openNebulaResource[t],callback:function(t){l.runAction(e.resourceStr+".show",t.request.data[0][0])},elements:function(){return l.getDataTable(e.tabId).elements()},error:c.onError,notify:!0}}{var l=t("sunstone"),c=t("utils/notifier");t("utils/locale")}return e.prototype.list=a,e.prototype.show=n,e.prototype.refresh=s,e.prototype["delete"]=i,e.prototype.multipleAction=r,e.prototype.singleAction=o,e});var Util={},addFunc=function(t,e,a){t.prototype[e]||Object.defineProperty(t.prototype,e,{enumerable:!1,value:a})};addFunc(Array,"push8",function(t){"use strict";this.push(255&t)}),addFunc(Array,"push16",function(t){"use strict";this.push(t>>8&255,255&t)}),addFunc(Array,"push32",function(t){"use strict";this.push(t>>24&255,t>>16&255,t>>8&255,255&t)}),addFunc(Array,"map",function(t){"use strict";var e=this.length;if("function"!=typeof t)throw new TypeError;for(var a=new Array(e),n=arguments[1],s=0;e>s;s++)s in this&&(a[s]=t.call(n,this[s],s,this));return a}),addFunc(Array,"indexOf",function(t){"use strict";var e=this.length>>>0,a=Number(arguments[1])||0;for(a=0>a?Math.ceil(a):Math.floor(a),0>a&&(a+=e);e>a;a++)if(a in this&&this[a]===t)return a;return-1}),Object.keys||(Object.keys=function(){"use strict";var t=Object.prototype.hasOwnProperty,e=!{toString:null}.propertyIsEnumerable("toString"),a=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=a.length;return function(s){if("object"!=typeof s&&("function"!=typeof s||null===s))throw new TypeError("Object.keys called on non-object");var i,r,o=[];for(i in s)t.call(s,i)&&o.push(i);if(e)for(r=0;n>r;r++)t.call(s,a[r])&&o.push(a[r]);return o}}()),addFunc(Function,"bind",function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),a=this,n=function(){},s=function(){return a.apply(this instanceof n&&t?this:t,e.concat(Array.prototype.slice.call(arguments)))};return n.prototype=this.prototype,s.prototype=new n,s}),window.requestAnimFrame=function(){"use strict";return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),Util._log_level="warn",Util.init_logging=function(t){"use strict";switch("undefined"==typeof t?t=Util._log_level:Util._log_level=t,"undefined"==typeof window.console&&(window.console="undefined"!=typeof window.opera?{log:window.opera.postError,warn:window.opera.postError,error:window.opera.postError}:{log:function(){},warn:function(){},error:function(){}}),Util.Debug=Util.Info=Util.Warn=Util.Error=function(){},t){case"debug":Util.Debug=function(t){console.log(t)};case"info":Util.Info=function(t){console.log(t)};case"warn":Util.Warn=function(t){console.warn(t)};case"error":Util.Error=function(t){console.error(t)};case"none":break;default:throw new Error("invalid logging type '"+t+"'")}},Util.get_logging=function(){return Util._log_level},Util.init_logging(),Util.make_property=function(t,e,a,n){"use strict";var s;s="arr"===n?function(t){return"undefined"!=typeof t?this["_"+e][t]:this["_"+e]}:function(){return this["_"+e]};var i,r=function(t){return t?function(a,n){"undefined"!=typeof n?this["_"+e][n]=t(a):this["_"+e]=t(a)}:function(t,a){"undefined"!=typeof a?this["_"+e][a]=t:this["_"+e]=t}};if("bool"===n)i=r(function(t){return!t||t in{0:1,no:1,"false":1}?!1:!0});else if("int"===n)i=r(function(t){return parseInt(t,10)});else if("float"===n)i=r(parseFloat);else if("str"===n)i=r(String);else if("func"===n)i=r(function(t){return t?t:function(){}});else{if("arr"!==n&&"dom"!==n&&"raw"!=n)throw new Error("Unknown property type "+n);i=r()}"undefined"==typeof t["get_"+e]&&(t["get_"+e]=s),"undefined"==typeof t["set_"+e]&&("rw"===a?t["set_"+e]=i:"wo"===a&&(t["set_"+e]=function(t,a){if("undefined"!=typeof this["_"+e])throw new Error(e+" can only be set once");i.call(this,t,a)})),t["_raw_set_"+e]=function(t,e){i.call(this,t,e)}},Util.make_properties=function(t,e){"use strict";for(var a=0;a<e.length;a++)Util.make_property(t.prototype,e[a][0],e[a][1],e[a][2])},Util.set_defaults=function(t,e,a){var n,s=Object.keys(a),i=Object.keys(e),r={};for(n=0;n<s.length;n++)r[s[n]]=1;for(n=0;n<i.length;n++)r[i[n]]=1;var o=Object.keys(r);for(n=0;n<o.length;n++){var l=t["_raw_set_"+o[n]];l?o[n]in e?l.call(t,e[o[n]]):l.call(t,a[o[n]]):Util.Warn("Invalid property "+o[n])}},Util.decodeUTF8=function(t){"use strict";return decodeURIComponent(escape(t))},Util.get_include_uri=function(){return"undefined"!=typeof INCLUDE_URI?INCLUDE_URI:"include/"},Util._loading_scripts=[],Util._pending_scripts=[],Util.load_scripts=function(t){"use strict";for(var e,a=document.getElementsByTagName("head")[0],n=Util._loading_scripts,s=Util._pending_scripts,i=function(){for(;n.length>0&&("loaded"===n[0].readyState||"complete"===n[0].readyState);){var t=n.shift();a.appendChild(t)}(!this.readyState||Util.Engine.presto&&"loaded"===this.readyState||"complete"===this.readyState)&&s.indexOf(this)>=0&&(this.onload=this.onreadystatechange=null,s.splice(s.indexOf(this),1),0===s.length&&window.onscriptsload&&window.onscriptsload())},r=0;r<t.length;r++)e=document.createElement("script"),e.type="text/javascript",e.src=Util.get_include_uri()+t[r],e.onload=e.onreadystatechange=i,Util.Engine.trident?n.push(e):(e.async=!1,a.appendChild(e)),s.push(e)},Util.getPosition=function(){"use strict";function t(t,e){var a;return t.currentStyle?a=t.currentStyle[e]:window.getComputedStyle&&(a=window.getComputedStyle(t,null)[e]),a}function e(){var t=0,e=0,a=document.getElementsByTagName("html")[0];return t=a.scrollTop&&document.documentElement.scrollTop?a.scrollTop:a.scrollTop||document.documentElement.scrollTop?a.scrollTop+document.documentElement.scrollTop:document.body.scrollTop?document.body.scrollTop:0,e=a.scrollLeft&&document.documentElement.scrollLeft?a.scrollLeft:a.scrollLeft||document.documentElement.scrollLeft?a.scrollLeft+document.documentElement.scrollLeft:document.body.scrollLeft?document.body.scrollLeft:0,[e,t]}return function(a){for(var n=0,s=0,i=a,r=!1;(i=i.parentNode)&&i!=document.body;)n-=i.scrollLeft||0,s-=i.scrollTop||0,"fixed"==t(i,"position")&&(r=!0);if(r&&!window.opera){var o=e();n+=o[0],s+=o[1]}do n+=a.offsetLeft,s+=a.offsetTop;while(a=a.offsetParent);return{x:n,y:s}}}(),Util.getEventPosition=function(t,e,a){"use strict";var n,s,i,r;n=t?t:window.event,n=n.changedTouches?n.changedTouches[0]:n.touches?n.touches[0]:n,n.pageX||n.pageY?(s=n.pageX,i=n.pageY):(n.clientX||n.clientY)&&(s=n.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,i=n.clientY+document.body.scrollTop+document.documentElement.scrollTop),r=Util.getPosition(e),"undefined"==typeof a&&(a=1);var o=s-r.x,l=i-r.y,c=Math.max(Math.min(o,e.width-1),0),d=Math.max(Math.min(l,e.height-1),0);return{x:c/a,y:d/a,realx:o/a,realy:l/a}},Util.addEvent=function(t,e,a){"use strict";if(t.attachEvent){var n=t.attachEvent("on"+e,a);return n}if(t.addEventListener)return t.addEventListener(e,a,!1),!0;throw new Error("Handler could not be attached")},Util.removeEvent=function(t,e,a){"use strict";if(t.detachEvent){var n=t.detachEvent("on"+e,a);return n}if(t.removeEventListener)return t.removeEventListener(e,a,!1),!0;throw new Error("Handler could not be removed")},Util.stopEvent=function(t){"use strict";t.stopPropagation?t.stopPropagation():t.cancelBubble=!0,t.preventDefault?t.preventDefault():t.returnValue=!1},Util.Features={xpath:!!document.evaluate,air:!!window.runtime,query:!!document.querySelector},function(){"use strict";var t=function(){return!!window.opera},e=function(){return window.ActiveXObject?window.XMLHttpRequest?document.querySelectorAll?6:5:4:!1},a=function(){try{return navigator.taintEnabled?!1:Util.Features.xpath?Util.Features.query?525:420:419}catch(t){return!1}},n=function(t){var e=/WebKit\/([0-9\.]*) /,a=(navigator.userAgent.match(e)||["",t])[1];return parseFloat(a,10)},s=function(){return document.getBoxObjectFor||null!=window.mozInnerScreenX?document.getElementsByClassName?19:18:!1};Util.Engine={presto:t(),trident:e(),webkit:a(),gecko:s()},Util.Engine.webkit&&(Util.Engine.webkit=n(Util.Engine.webkit))}(),Util.Flash=function(){"use strict";var t,e;try{t=navigator.plugins["Shockwave Flash"].description}catch(a){try{t=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(n){t="0 r0"}}return e=t.match(/\d+/g),{version:parseInt(e[0]||"0."+e[1],10)||0,build:parseInt(e[2],10)||0}}(),define("vnc-util",function(t){return function(){var e;return e||t.Util}}(this));var WebUtil={},$D;window.$D||(window.$D=function(t){return document.getElementById?document.getElementById(t):document.all?document.all[t]:document.layers?document.layers[t]:void 0}),WebUtil.init_logging=function(t){"use strict";if("undefined"!=typeof t)Util._log_level=t;else{var e=document.location.href.match(/logging=([A-Za-z0-9\._\-]*)/);Util._log_level=(e||["",Util._log_level])[1]}Util.init_logging()},WebUtil.dirObj=function(t,e,a){"use strict";e||(e=2),a||(a="");var n="";for(var s in t)if(e>1&&"object"==typeof t[s])n+=WebUtil.dirObj(t[s],e-1,a+"."+s);else{var i="";i="undefined"==typeof t[s]?"undefined":t[s].toString().replace("\n"," "),i.length>30&&(i=i.substr(0,30)+"..."),n+=a+"."+s+": "+i+"\n"}return n},WebUtil.getQueryVar=function(t,e){"use strict";var a=new RegExp(".*[?&]"+t+"=([^&#]*)"),n=document.location.href.match(a);return"undefined"==typeof e&&(e=null),n?decodeURIComponent(n[1]):e},WebUtil.createCookie=function(t,e,a){"use strict";var n,s;a?(n=new Date,n.setTime(n.getTime()+24*a*60*60*1e3),s="; expires="+n.toGMTString()):s="";var i;i="https:"===document.location.protocol?"; secure":"",document.cookie=t+"="+e+s+"; path=/"+i},WebUtil.readCookie=function(t,e){"use strict";for(var a=t+"=",n=document.cookie.split(";"),s=0;s<n.length;s+=1){for(var i=n[s];" "===i.charAt(0);)i=i.substring(1,i.length);if(0===i.indexOf(a))return i.substring(a.length,i.length)}return"undefined"!=typeof e?e:null},WebUtil.eraseCookie=function(t){"use strict";WebUtil.createCookie(t,"",-1)},WebUtil.initSettings=function(t){"use strict";var e=Array.prototype.slice.call(arguments,1);window.chrome&&window.chrome.storage?window.chrome.storage.sync.get(function(a){WebUtil.settings=a,console.log(WebUtil.settings),t&&t.apply(this,e)}):t&&t.apply(this,e)},WebUtil.writeSetting=function(t,e){"use strict";window.chrome&&window.chrome.storage?WebUtil.settings[t]!==e&&(WebUtil.settings[t]=e,window.chrome.storage.sync.set(WebUtil.settings)):localStorage.setItem(t,e)},WebUtil.readSetting=function(t,e){"use strict";var a;return a=window.chrome&&window.chrome.storage?WebUtil.settings[t]:localStorage.getItem(t),"undefined"==typeof a&&(a=null),null===a&&void 0!==typeof e?e:a},WebUtil.eraseSetting=function(t){"use strict";window.chrome&&window.chrome.storage?(window.chrome.storage.sync.remove(t),delete WebUtil.settings[t]):localStorage.removeItem(t)},WebUtil.getStylesheets=function(){"use strict";for(var t=document.getElementsByTagName("link"),e=[],a=0;a<t.length;a+=1)t[a].title&&t[a].rel.toUpperCase().indexOf("STYLESHEET")>-1&&e.push(t[a]);return e},WebUtil.selectStylesheet=function(t){"use strict";"undefined"==typeof t&&(t="default");for(var e=WebUtil.getStylesheets(),a=0;a<e.length;a+=1){var n=e[a];n.title===t?(Util.Debug("Using stylesheet "+t),n.disabled=!1):n.disabled=!0}return t},define("vnc-webutil",["vnc-util"],function(){});var Base64={toBase64Table:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split(""),base64Pad:"=",encode:function(t){"use strict";for(var e="",a=Base64.toBase64Table,n=t.length,s=n%3,i=0;n-2>i;i+=3)e+=a[t[i]>>2],e+=a[((3&t[i])<<4)+(t[i+1]>>4)],e+=a[((15&t[i+1])<<2)+(t[i+2]>>6)],e+=a[63&t[i+2]];
+var r=0;return 2===s?(r=n-s,e+=a[t[r]>>2],e+=a[((3&t[r])<<4)+(t[r+1]>>4)],e+=a[(15&t[r+1])<<2],e+=a[64]):1===s&&(r=n-s,e+=a[t[r]>>2],e+=a[(3&t[r])<<4],e+=a[64],e+=a[64]),e},toBinaryTable:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],decode:function(t,e){"use strict";e="undefined"!=typeof e?e:0;var a,n,s=Base64.toBinaryTable,i=Base64.base64Pad,r=0,o=0,l=t.indexOf("=")-e;0>l&&(l=t.length-e),n=3*(l>>2)+Math.floor(l%4/1.5),a=new Array(n);for(var c=0,d=e;d<t.length;d++){var u=s[127&t.charCodeAt(d)],p=t.charAt(d)===i;-1!==u?(o=o<<6|u,r+=6,r>=8&&(r-=8,p||(a[c++]=o>>r&255),o&=(1<<r)-1)):console.error("Illegal character code "+t.charCodeAt(d)+" at position "+d)}if(r)throw err=new Error("Corrupted base64 string"),err.name="Base64-Error",err;return a}};define("vnc-base64",["vnc-util"],function(){}),window.WebSocket&&!window.WEB_SOCKET_FORCE_FLASH?Websock_native=!0:window.MozWebSocket&&!window.WEB_SOCKET_FORCE_FLASH?(Websock_native=!0,window.WebSocket=window.MozWebSocket):(Websock_native=!1,function(){window.WEB_SOCKET_SWF_LOCATION=Util.get_include_uri()+"web-socket-js/WebSocketMain.swf",Util.Engine.trident&&(Util.Debug("Forcing uncached load of WebSocketMain.swf"),window.WEB_SOCKET_SWF_LOCATION+="?"+Math.random()),Util.load_scripts(["web-socket-js/swfobject.js","web-socket-js/web_socket.js"])}()),function(){"use strict";Websock.prototype={get_sQ:function(){return this._sQ},get_rQ:function(){return this._rQ},get_rQi:function(){return this._rQi},set_rQi:function(t){this._rQi=t},rQlen:function(){return this._rQ.length-this._rQi},rQpeek8:function(){return this._rQ[this._rQi]},rQshift8:function(){return this._rQ[this._rQi++]},rQskip8:function(){this._rQi++},rQskipBytes:function(t){this._rQi+=t},rQunshift8:function(t){0===this._rQi?this._rQ.unshift(t):(this._rQi--,this._rQ[this._rQi]=t)},rQshift16:function(){return(this._rQ[this._rQi++]<<8)+this._rQ[this._rQi++]},rQshift32:function(){return(this._rQ[this._rQi++]<<24)+(this._rQ[this._rQi++]<<16)+(this._rQ[this._rQi++]<<8)+this._rQ[this._rQi++]},rQshiftStr:function(t){"undefined"==typeof t&&(t=this.rQlen());var e=this._rQ.slice(this._rQi,this._rQi+t);return this._rQi+=t,String.fromCharCode.apply(null,e)},rQshiftBytes:function(t){return"undefined"==typeof t&&(t=this.rQlen()),this._rQi+=t,this._rQ.slice(this._rQi-t,this._rQi)},rQslice:function(t,e){return e?this._rQ.slice(this._rQi+t,this._rQi+e):this._rQ.slice(this._rQi+t)},rQwait:function(t,e,a){var n=this._rQ.length-this._rQi;if(e>n){if(a){if(this._rQi<a)throw new Error("rQwait cannot backup "+a+" bytes");this._rQi-=a}return!0}return!1},flush:function(){return 0!==this._websocket.bufferedAmount&&Util.Debug("bufferedAmount: "+this._websocket.bufferedAmount),this._websocket.bufferedAmount<this.maxBufferedAmount?(this._sQ.length>0&&(this._websocket.send(this._encode_message()),this._sQ=[]),!0):(Util.Info("Delaying send, bufferedAmount: "+this._websocket.bufferedAmount),!1)},send:function(t){return this._sQ=this._sQ.concat(t),this.flush()},send_string:function(t){this.send(t.split("").map(function(t){return t.charCodeAt(0)}))},on:function(t,e){this._eventHandlers[t]=e},init:function(t,e){this._rQ=[],this._rQi=0,this._sQ=[],this._websocket=null;var a=!1;"Uint8Array"in window&&"set"in Uint8Array.prototype&&(a=!0);var n=!1;try{a&&("binaryType"in WebSocket.prototype||new WebSocket(e+"://.").binaryType)&&(Util.Info("Detected binaryType support in WebSockets"),n=!0)}catch(s){}if("undefined"==typeof t&&(t=n?["binary","base64"]:"base64"),!n){if("binary"===t)throw new Error("WebSocket binary sub-protocol requested but not supported");if("object"==typeof t){for(var i=[],r=0;r<t.length;r++)"binary"===t[r]?Util.Error("Skipping unsupported WebSocket binary sub-protocol"):i.push(t[r]);if(!(i.length>0))throw new Error("Only WebSocket binary sub-protocol was requested and is not supported.");t=i}}return t},open:function(t,e){var a=t.match(/^([a-z]+):\/\//)[1];e=this.init(e,a),this._websocket=new WebSocket(t,e),e.indexOf("binary")>=0&&(this._websocket.binaryType="arraybuffer"),this._websocket.onmessage=this._recv_message.bind(this),this._websocket.onopen=function(){Util.Debug(">> WebSock.onopen"),this._websocket.protocol?(this._mode=this._websocket.protocol,Util.Info("Server choose sub-protocol: "+this._websocket.protocol)):(this._mode="base64",Util.Error("Server select no sub-protocol!: "+this._websocket.protocol)),this._eventHandlers.open(),Util.Debug("<< WebSock.onopen")}.bind(this),this._websocket.onclose=function(t){Util.Debug(">> WebSock.onclose"),this._eventHandlers.close(t),Util.Debug("<< WebSock.onclose")}.bind(this),this._websocket.onerror=function(t){Util.Debug(">> WebSock.onerror: "+t),this._eventHandlers.error(t),Util.Debug("<< WebSock.onerror: "+t)}.bind(this)},close:function(){this._websocket&&((this._websocket.readyState===WebSocket.OPEN||this._websocket.readyState===WebSocket.CONNECTING)&&(Util.Info("Closing WebSocket connection"),this._websocket.close()),this._websocket.onmessage=function(){})},_encode_message:function(){return"binary"===this._mode?new Uint8Array(this._sQ).buffer:Base64.encode(this._sQ)},_decode_message:function(t){if("binary"===this._mode)for(var e=new Uint8Array(t),a=0;a<e.length;a++)this._rQ.push(e[a]);else this._rQ=this._rQ.concat(Base64.decode(t,0))},_recv_message:function(t){try{this._decode_message(t.data),this.rQlen()>0?(this._eventHandlers.message(),this._rQ.length>this._rQmax&&(this._rQ=this._rQ.slice(this._rQi),this._rQi=0)):Util.Debug("Ignoring empty message")}catch(e){var a="";e.name&&(a+="\n    name: "+e.name+"\n",a+="    message: "+e.message+"\n"),"undefined"!=typeof e.description&&(a+="    description: "+e.description+"\n"),"undefined"!=typeof e.stack&&(a+=e.stack),Util.Error(a.length>0?"recv_message, caught exception: "+a:"recv_message, caught exception: "+e),this._eventHandlers.error("undefined"!=typeof e.name?e.name+": "+e.message:e)}}}}(),define("vnc-websock",["vnc-util"],function(){}),define("vnc-des",["vnc-util"],function(){});var keysyms=function(){"use strict";function t(t){return t?{keysym:t,keyname:e?e[t]:t}:void 0}var e=null,a={32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,189:189,190:190,191:191,192:192,193:193,194:194,195:195,196:196,197:197,198:198,199:199,200:200,201:201,202:202,203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:960,257:992,258:451,259:483,260:417,261:433,262:454,263:486,264:710,265:742,266:709,267:741,268:456,269:488,270:463,271:495,272:464,273:496,274:938,275:954,278:972,279:1004,280:458,281:490,282:460,283:492,284:728,285:760,286:683,287:699,288:725,289:757,290:939,291:955,292:678,293:694,294:673,295:689,296:933,297:949,298:975,299:1007,300:16777516,301:16777517,302:967,303:999,304:681,305:697,308:684,309:700,310:979,311:1011,312:930,313:453,314:485,315:934,316:950,317:421,318:437,321:419,322:435,323:465,324:497,325:977,326:1009,327:466,328:498,330:957,331:959,332:978,333:1010,336:469,337:501,338:5052,339:5053,340:448,341:480,342:931,343:947,344:472,345:504,346:422,347:438,348:734,349:766,350:426,351:442,352:425,353:441,354:478,355:510,356:427,357:443,358:940,359:956,360:989,361:1021,362:990,363:1022,364:733,365:765,366:473,367:505,368:475,369:507,370:985,371:1017,372:16777588,373:16777589,374:16777590,375:16777591,376:5054,377:428,378:444,379:431,380:447,381:430,382:446,399:16777615,402:2294,415:16777631,416:16777632,417:16777633,431:16777647,432:16777648,437:16777653,438:16777654,439:16777655,466:16777681,486:16777702,487:16777703,601:16777817,629:16777845,658:16777874,711:439,728:418,729:511,731:434,733:445,901:1966,902:1953,904:1954,905:1955,906:1956,908:1959,910:1960,911:1963,912:1974,913:1985,914:1986,915:1987,916:1988,917:1989,918:1990,919:1991,920:1992,921:1993,922:1994,923:1995,924:1996,925:1997,926:1998,927:1999,928:2e3,929:2001,931:2002,932:2004,933:2005,934:2006,935:2007,936:2008,937:2009,938:1957,939:1961,940:1969,941:1970,942:1971,943:1972,944:1978,945:2017,946:2018,947:2019,948:2020,949:2021,950:2022,951:2023,952:2024,953:2025,954:2026,955:2027,956:2028,957:2029,958:2030,959:2031,960:2032,961:2033,962:2035,963:2034,964:2036,965:2037,966:2038,967:2039,968:2040,969:2041,970:1973,971:1977,972:1975,973:1976,974:1979,1025:1715,1026:1713,1027:1714,1028:1716,1029:1717,1030:1718,1031:1719,1032:1720,1033:1721,1034:1722,1035:1723,1036:1724,1038:1726,1039:1727,1040:1761,1041:1762,1042:1783,1043:1767,1044:1764,1045:1765,1046:1782,1047:1786,1048:1769,1049:1770,1050:1771,1051:1772,1052:1773,1053:1774,1054:1775,1055:1776,1056:1778,1057:1779,1058:1780,1059:1781,1060:1766,1061:1768,1062:1763,1063:1790,1064:1787,1065:1789,1066:1791,1067:1785,1068:1784,1069:1788,1070:1760,1071:1777,1072:1729,1073:1730,1074:1751,1075:1735,1076:1732,1077:1733,1078:1750,1079:1754,1080:1737,1081:1738,1082:1739,1083:1740,1084:1741,1085:1742,1086:1743,1087:1744,1088:1746,1089:1747,1090:1748,1091:1749,1092:1734,1093:1736,1094:1731,1095:1758,1096:1755,1097:1757,1098:1759,1099:1753,1100:1752,1101:1756,1102:1728,1103:1745,1105:1699,1106:1697,1107:1698,1108:1700,1109:1701,1110:1702,1111:1703,1112:1704,1113:1705,1114:1706,1115:1707,1116:1708,1118:1710,1119:1711,1168:1725,1169:1709,1170:16778386,1171:16778387,1174:16778390,1175:16778391,1178:16778394,1179:16778395,1180:16778396,1181:16778397,1186:16778402,1187:16778403,1198:16778414,1199:16778415,1200:16778416,1201:16778417,1202:16778418,1203:16778419,1206:16778422,1207:16778423,1208:16778424,1209:16778425,1210:16778426,1211:16778427,1240:16778456,1241:16778457,1250:16778466,1251:16778467,1256:16778472,1257:16778473,1262:16778478,1263:16778479,1329:16778545,1330:16778546,1331:16778547,1332:16778548,1333:16778549,1334:16778550,1335:16778551,1336:16778552,1337:16778553,1338:16778554,1339:16778555,1340:16778556,1341:16778557,1342:16778558,1343:16778559,1344:16778560,1345:16778561,1346:16778562,1347:16778563,1348:16778564,1349:16778565,1350:16778566,1351:16778567,1352:16778568,1353:16778569,1354:16778570,1355:16778571,1356:16778572,1357:16778573,1358:16778574,1359:16778575,1360:16778576,1361:16778577,1362:16778578,1363:16778579,1364:16778580,1365:16778581,1366:16778582,1370:16778586,1371:16778587,1372:16778588,1373:16778589,1374:16778590,1377:16778593,1378:16778594,1379:16778595,1380:16778596,1381:16778597,1382:16778598,1383:16778599,1384:16778600,1385:16778601,1386:16778602,1387:16778603,1388:16778604,1389:16778605,1390:16778606,1391:16778607,1392:16778608,1393:16778609,1394:16778610,1395:16778611,1396:16778612,1397:16778613,1398:16778614,1399:16778615,1400:16778616,1401:16778617,1402:16778618,1403:16778619,1404:16778620,1405:16778621,1406:16778622,1407:16778623,1408:16778624,1409:16778625,1410:16778626,1411:16778627,1412:16778628,1413:16778629,1414:16778630,1415:16778631,1417:16778633,1418:16778634,1488:3296,1489:3297,1490:3298,1491:3299,1492:3300,1493:3301,1494:3302,1495:3303,1496:3304,1497:3305,1498:3306,1499:3307,1500:3308,1501:3309,1502:3310,1503:3311,1504:3312,1505:3313,1506:3314,1507:3315,1508:3316,1509:3317,1510:3318,1511:3319,1512:3320,1513:3321,1514:3322,1548:1452,1563:1467,1567:1471,1569:1473,1570:1474,1571:1475,1572:1476,1573:1477,1574:1478,1575:1479,1576:1480,1577:1481,1578:1482,1579:1483,1580:1484,1581:1485,1582:1486,1583:1487,1584:1488,1585:1489,1586:1490,1587:1491,1588:1492,1589:1493,1590:1494,1591:1495,1592:1496,1593:1497,1594:1498,1600:1504,1601:1505,1602:1506,1603:1507,1604:1508,1605:1509,1606:1510,1607:1511,1608:1512,1609:1513,1610:1514,1611:1515,1612:1516,1613:1517,1614:1518,1615:1519,1616:1520,1617:1521,1618:1522,1619:16778835,1620:16778836,1621:16778837,1632:16778848,1633:16778849,1634:16778850,1635:16778851,1636:16778852,1637:16778853,1638:16778854,1639:16778855,1640:16778856,1641:16778857,1642:16778858,1648:16778864,1657:16778873,1662:16778878,1670:16778886,1672:16778888,1681:16778897,1688:16778904,1700:16778916,1705:16778921,1711:16778927,1722:16778938,1726:16778942,1729:16778945,1740:16778956,1746:16778962,1748:16778964,1776:16778992,1777:16778993,1778:16778994,1779:16778995,1780:16778996,1781:16778997,1782:16778998,1783:16778999,1784:16779e3,1785:16779001,3458:16780674,3459:16780675,3461:16780677,3462:16780678,3463:16780679,3464:16780680,3465:16780681,3466:16780682,3467:16780683,3468:16780684,3469:16780685,3470:16780686,3471:16780687,3472:16780688,3473:16780689,3474:16780690,3475:16780691,3476:16780692,3477:16780693,3478:16780694,3482:16780698,3483:16780699,3484:16780700,3485:16780701,3486:16780702,3487:16780703,3488:16780704,3489:16780705,3490:16780706,3491:16780707,3492:16780708,3493:16780709,3494:16780710,3495:16780711,3496:16780712,3497:16780713,3498:16780714,3499:16780715,3500:16780716,3501:16780717,3502:16780718,3503:16780719,3504:16780720,3505:16780721,3507:16780723,3508:16780724,3509:16780725,3510:16780726,3511:16780727,3512:16780728,3513:16780729,3514:16780730,3515:16780731,3517:16780733,3520:16780736,3521:16780737,3522:16780738,3523:16780739,3524:16780740,3525:16780741,3526:16780742,3530:16780746,3535:16780751,3536:16780752,3537:16780753,3538:16780754,3539:16780755,3540:16780756,3542:16780758,3544:16780760,3545:16780761,3546:16780762,3547:16780763,3548:16780764,3549:16780765,3550:16780766,3551:16780767,3570:16780786,3571:16780787,3572:16780788,3585:3489,3586:3490,3587:3491,3588:3492,3589:3493,3590:3494,3591:3495,3592:3496,3593:3497,3594:3498,3595:3499,3596:3500,3597:3501,3598:3502,3599:3503,3600:3504,3601:3505,3602:3506,3603:3507,3604:3508,3605:3509,3606:3510,3607:3511,3608:3512,3609:3513,3610:3514,3611:3515,3612:3516,3613:3517,3614:3518,3615:3519,3616:3520,3617:3521,3618:3522,3619:3523,3620:3524,3621:3525,3622:3526,3623:3527,3624:3528,3625:3529,3626:3530,3627:3531,3628:3532,3629:3533,3630:3534,3631:3535,3632:3536,3633:3537,3634:3538,3635:3539,3636:3540,3637:3541,3638:3542,3639:3543,3640:3544,3641:3545,3642:3546,3647:3551,3648:3552,3649:3553,3650:3554,3651:3555,3652:3556,3653:3557,3654:3558,3655:3559,3656:3560,3657:3561,3658:3562,3659:3563,3660:3564,3661:3565,3664:3568,3665:3569,3666:3570,3667:3571,3668:3572,3669:3573,3670:3574,3671:3575,3672:3576,3673:3577,4304:16781520,4305:16781521,4306:16781522,4307:16781523,4308:16781524,4309:16781525,4310:16781526,4311:16781527,4312:16781528,4313:16781529,4314:16781530,4315:16781531,4316:16781532,4317:16781533,4318:16781534,4319:16781535,4320:16781536,4321:16781537,4322:16781538,4323:16781539,4324:16781540,4325:16781541,4326:16781542,4327:16781543,4328:16781544,4329:16781545,4330:16781546,4331:16781547,4332:16781548,4333:16781549,4334:16781550,4335:16781551,4336:16781552,4337:16781553,4338:16781554,4339:16781555,4340:16781556,4341:16781557,4342:16781558,7682:16784898,7683:16784899,7690:16784906,7691:16784907,7710:16784926,7711:16784927,7734:16784950,7735:16784951,7744:16784960,7745:16784961,7766:16784982,7767:16784983,7776:16784992,7777:16784993,7786:16785002,7787:16785003,7808:16785024,7809:16785025,7810:16785026,7811:16785027,7812:16785028,7813:16785029,7818:16785034,7819:16785035,7840:16785056,7841:16785057,7842:16785058,7843:16785059,7844:16785060,7845:16785061,7846:16785062,7847:16785063,7848:16785064,7849:16785065,7850:16785066,7851:16785067,7852:16785068,7853:16785069,7854:16785070,7855:16785071,7856:16785072,7857:16785073,7858:16785074,7859:16785075,7860:16785076,7861:16785077,7862:16785078,7863:16785079,7864:16785080,7865:16785081,7866:16785082,7867:16785083,7868:16785084,7869:16785085,7870:16785086,7871:16785087,7872:16785088,7873:16785089,7874:16785090,7875:16785091,7876:16785092,7877:16785093,7878:16785094,7879:16785095,7880:16785096,7881:16785097,7882:16785098,7883:16785099,7884:16785100,7885:16785101,7886:16785102,7887:16785103,7888:16785104,7889:16785105,7890:16785106,7891:16785107,7892:16785108,7893:16785109,7894:16785110,7895:16785111,7896:16785112,7897:16785113,7898:16785114,7899:16785115,7900:16785116,7901:16785117,7902:16785118,7903:16785119,7904:16785120,7905:16785121,7906:16785122,7907:16785123,7908:16785124,7909:16785125,7910:16785126,7911:16785127,7912:16785128,7913:16785129,7914:16785130,7915:16785131,7916:16785132,7917:16785133,7918:16785134,7919:16785135,7920:16785136,7921:16785137,7922:16785138,7923:16785139,7924:16785140,7925:16785141,7926:16785142,7927:16785143,7928:16785144,7929:16785145,8194:2722,8195:2721,8196:2723,8197:2724,8199:2725,8200:2726,8201:2727,8202:2728,8210:2747,8211:2730,8212:2729,8213:1967,8215:3295,8216:2768,8217:2769,8218:2813,8220:2770,8221:2771,8222:2814,8224:2801,8225:2802,8226:2790,8229:2735,8230:2734,8240:2773,8242:2774,8243:2775,8248:2812,8254:1150,8304:16785520,8308:16785524,8309:16785525,8310:16785526,8311:16785527,8312:16785528,8313:16785529,8320:16785536,8321:16785537,8322:16785538,8323:16785539,8324:16785540,8325:16785541,8326:16785542,8327:16785543,8328:16785544,8329:16785545,8352:16785568,8353:16785569,8354:16785570,8355:16785571,8356:16785572,8357:16785573,8358:16785574,8359:16785575,8360:16785576,8361:3839,8362:16785578,8363:16785579,8364:8364,8453:2744,8470:1712,8471:2811,8478:2772,8482:2761,8531:2736,8532:2737,8533:2738,8534:2739,8535:2740,8536:2741,8537:2742,8538:2743,8539:2755,8540:2756,8541:2757,8542:2758,8592:2299,8593:2300,8594:2301,8595:2302,8658:2254,8660:2253,8706:2287,8709:16785925,8711:2245,8712:16785928,8713:16785929,8715:16785931,8728:3018,8730:2262,8731:16785947,8732:16785948,8733:2241,8734:2242,8743:2270,8744:2271,8745:2268,8746:2269,8747:2239,8748:16785964,8749:16785965,8756:2240,8757:16785973,8764:2248,8771:2249,8773:16785992,8775:16785991,8800:2237,8801:2255,8802:16786018,8803:16786019,8804:2236,8805:2238,8834:2266,8835:2267,8866:3068,8867:3036,8868:3010,8869:3022,8968:3027,8970:3012,8981:2810,8992:2212,8993:2213,9109:3020,9115:2219,9117:2220,9118:2221,9120:2222,9121:2215,9123:2216,9124:2217,9126:2218,9128:2223,9132:2224,9143:2209,9146:2543,9147:2544,9148:2546,9149:2547,9225:2530,9226:2533,9227:2537,9228:2531,9229:2532,9251:2732,9252:2536,9472:2211,9474:2214,9484:2210,9488:2539,9492:2541,9496:2538,9500:2548,9508:2549,9516:2551,9524:2550,9532:2542,9618:2529,9642:2791,9643:2785,9644:2779,9645:2786,9646:2783,9647:2767,9650:2792,9651:2787,9654:2781,9655:2765,9660:2793,9661:2788,9664:2780,9665:2764,9670:2528,9675:2766,9679:2782,9702:2784,9734:2789,9742:2809,9747:2762,9756:2794,9758:2795,9792:2808,9794:2807,9827:2796,9829:2798,9830:2797,9837:2806,9839:2805,10003:2803,10007:2804,10013:2777,10016:2800,10216:2748,10217:2750,10240:16787456,10241:16787457,10242:16787458,10243:16787459,10244:16787460,10245:16787461,10246:16787462,10247:16787463,10248:16787464,10249:16787465,10250:16787466,10251:16787467,10252:16787468,10253:16787469,10254:16787470,10255:16787471,10256:16787472,10257:16787473,10258:16787474,10259:16787475,10260:16787476,10261:16787477,10262:16787478,10263:16787479,10264:16787480,10265:16787481,10266:16787482,10267:16787483,10268:16787484,10269:16787485,10270:16787486,10271:16787487,10272:16787488,10273:16787489,10274:16787490,10275:16787491,10276:16787492,10277:16787493,10278:16787494,10279:16787495,10280:16787496,10281:16787497,10282:16787498,10283:16787499,10284:16787500,10285:16787501,10286:16787502,10287:16787503,10288:16787504,10289:16787505,10290:16787506,10291:16787507,10292:16787508,10293:16787509,10294:16787510,10295:16787511,10296:16787512,10297:16787513,10298:16787514,10299:16787515,10300:16787516,10301:16787517,10302:16787518,10303:16787519,10304:16787520,10305:16787521,10306:16787522,10307:16787523,10308:16787524,10309:16787525,10310:16787526,10311:16787527,10312:16787528,10313:16787529,10314:16787530,10315:16787531,10316:16787532,10317:16787533,10318:16787534,10319:16787535,10320:16787536,10321:16787537,10322:16787538,10323:16787539,10324:16787540,10325:16787541,10326:16787542,10327:16787543,10328:16787544,10329:16787545,10330:16787546,10331:16787547,10332:16787548,10333:16787549,10334:16787550,10335:16787551,10336:16787552,10337:16787553,10338:16787554,10339:16787555,10340:16787556,10341:16787557,10342:16787558,10343:16787559,10344:16787560,10345:16787561,10346:16787562,10347:16787563,10348:16787564,10349:16787565,10350:16787566,10351:16787567,10352:16787568,10353:16787569,10354:16787570,10355:16787571,10356:16787572,10357:16787573,10358:16787574,10359:16787575,10360:16787576,10361:16787577,10362:16787578,10363:16787579,10364:16787580,10365:16787581,10366:16787582,10367:16787583,10368:16787584,10369:16787585,10370:16787586,10371:16787587,10372:16787588,10373:16787589,10374:16787590,10375:16787591,10376:16787592,10377:16787593,10378:16787594,10379:16787595,10380:16787596,10381:16787597,10382:16787598,10383:16787599,10384:16787600,10385:16787601,10386:16787602,10387:16787603,10388:16787604,10389:16787605,10390:16787606,10391:16787607,10392:16787608,10393:16787609,10394:16787610,10395:16787611,10396:16787612,10397:16787613,10398:16787614,10399:16787615,10400:16787616,10401:16787617,10402:16787618,10403:16787619,10404:16787620,10405:16787621,10406:16787622,10407:16787623,10408:16787624,10409:16787625,10410:16787626,10411:16787627,10412:16787628,10413:16787629,10414:16787630,10415:16787631,10416:16787632,10417:16787633,10418:16787634,10419:16787635,10420:16787636,10421:16787637,10422:16787638,10423:16787639,10424:16787640,10425:16787641,10426:16787642,10427:16787643,10428:16787644,10429:16787645,10430:16787646,10431:16787647,10432:16787648,10433:16787649,10434:16787650,10435:16787651,10436:16787652,10437:16787653,10438:16787654,10439:16787655,10440:16787656,10441:16787657,10442:16787658,10443:16787659,10444:16787660,10445:16787661,10446:16787662,10447:16787663,10448:16787664,10449:16787665,10450:16787666,10451:16787667,10452:16787668,10453:16787669,10454:16787670,10455:16787671,10456:16787672,10457:16787673,10458:16787674,10459:16787675,10460:16787676,10461:16787677,10462:16787678,10463:16787679,10464:16787680,10465:16787681,10466:16787682,10467:16787683,10468:16787684,10469:16787685,10470:16787686,10471:16787687,10472:16787688,10473:16787689,10474:16787690,10475:16787691,10476:16787692,10477:16787693,10478:16787694,10479:16787695,10480:16787696,10481:16787697,10482:16787698,10483:16787699,10484:16787700,10485:16787701,10486:16787702,10487:16787703,10488:16787704,10489:16787705,10490:16787706,10491:16787707,10492:16787708,10493:16787709,10494:16787710,10495:16787711,12289:1188,12290:1185,12300:1186,12301:1187,12443:1246,12444:1247,12449:1191,12450:1201,12451:1192,12452:1202,12453:1193,12454:1203,12455:1194,12456:1204,12457:1195,12458:1205,12459:1206,12461:1207,12463:1208,12465:1209,12467:1210,12469:1211,12471:1212,12473:1213,12475:1214,12477:1215,12479:1216,12481:1217,12483:1199,12484:1218,12486:1219,12488:1220,12490:1221,12491:1222,12492:1223,12493:1224,12494:1225,12495:1226,12498:1227,12501:1228,12504:1229,12507:1230,12510:1231,12511:1232,12512:1233,12513:1234,12514:1235,12515:1196,12516:1236,12517:1197,12518:1237,12519:1198,12520:1238,12521:1239,12522:1240,12523:1241,12524:1242,12525:1243,12527:1244,12530:1190,12531:1245,12539:1189,12540:1200};return{fromUnicode:function(e){return t(a[e])},lookup:t}}();define("vnc-keysymdef",["vnc-util"],function(){});var kbdUtil=function(){"use strict";function t(t){var e={536:350,537:351,538:354,539:355},a=e[t];return a?a:t}function e(){return navigator&&!!/mac/i.exec(navigator.platform)}function a(){return navigator&&!!/win/i.exec(navigator.platform)}function n(){return navigator&&!!/linux/i.exec(navigator.platform)}function s(t,e){var a={};for(var n in e)parseInt(n)!==XK_Shift_L&&(a[n]=e[n]);var s=0;for(var r in e)a[r]&&++s;return i(t,a)?s>t.length:s>0}function i(t,e){if(0===t.length)return!1;for(var a=0;a<t.length;++a)if(!e[t[a]])return!1;return!0}function r(t){function r(t,e){function a(t){return{keysym:keysyms.lookup(t),type:c[t]?"keydown":"keyup"}}var n=[];return void 0!==t.ctrlKey&&t.ctrlKey!==c[XK_Control_L]&&e!==XK_Control_L&&(c[XK_Control_L]=t.ctrlKey,n.push(a(XK_Control_L))),void 0!==t.altKey&&t.altKey!==c[XK_Alt_L]&&e!==XK_Alt_L&&(c[XK_Alt_L]=t.altKey,n.push(a(XK_Alt_L))),void 0!==t.altGraphKey&&t.altGraphKey!==c[XK_ISO_Level3_Shift]&&e!==XK_ISO_Level3_Shift&&(c[XK_ISO_Level3_Shift]=t.altGraphKey,n.push(a(XK_ISO_Level3_Shift))),void 0!==t.shiftKey&&t.shiftKey!==c[XK_Shift_L]&&e!==XK_Shift_L&&(c[XK_Shift_L]=t.shiftKey,n.push(a(XK_Shift_L))),void 0!==t.metaKey&&t.metaKey!==c[XK_Meta_L]&&e!==XK_Meta_L&&(c[XK_Meta_L]=t.metaKey,n.push(a(XK_Meta_L))),n}function o(t,e){var a=l(t),n=a?a.keysym:null;return null!==n&&void 0!==c[n]&&(c[n]=e),r(t,n)}t||(t=e()?[XK_Alt_L]:a()?[XK_Alt_L,XK_Control_L]:n()?[XK_ISO_Level3_Shift]:[]);var c={};return c[XK_Control_L]=!1,c[XK_Alt_L]=!1,c[XK_ISO_Level3_Shift]=!1,c[XK_Shift_L]=!1,c[XK_Meta_L]=!1,{keydown:function(t){return o(t,!0)},keyup:function(t){return o(t,!1)},syncAny:function(t){return r(t)},hasShortcutModifier:function(){return s(t,c)},activeCharModifier:function(){return i(t,c)?t:null}}}function o(t){return"keyCode"in t&&"key"in t?t.key+":"+t.keyCode:"keyCode"in t?t.keyCode:t.key}function l(e){var a;if(e["char"]&&1===e["char"].length?a=e["char"].charCodeAt():e.charCode?a=e.charCode:e.keyCode&&"keypress"===e.type&&(a=e.keyCode),a){var n=keysyms.fromUnicode(t(a));if(n)return n}return e.keyCode?keysyms.lookup(c(e.keyCode,e.shiftKey)):e.which?keysyms.lookup(c(e.which,e.shiftKey)):null}function c(t,e){if("number"!=typeof t)return null;if(t>=48&&57>=t)return t;if(t>=65&&90>=t)return e?t:t+32;if(t>=96&&105>=t)return XK_KP_0+(t-96);switch(t){case 32:return XK_space;case 106:return XK_KP_Multiply;case 107:return XK_KP_Add;case 108:return XK_KP_Separator;case 109:return XK_KP_Subtract;case 110:return XK_KP_Decimal;case 111:return XK_KP_Divide;case 187:return XK_plus;case 188:return XK_comma;case 189:return XK_minus;case 190:return XK_period}return d({keyCode:t})}function d(t){if(!t.keyCode)return null;var e=t.keyCode;if(e>=112&&135>=e)return XK_F1+e-112;switch(e){case 8:return XK_BackSpace;case 13:return XK_Return;case 9:return XK_Tab;case 27:return XK_Escape;case 46:return XK_Delete;case 36:return XK_Home;case 35:return XK_End;case 33:return XK_Page_Up;case 34:return XK_Page_Down;case 45:return XK_Insert;case 37:return XK_Left;case 38:return XK_Up;case 39:return XK_Right;case 40:return XK_Down;case 16:return XK_Shift_L;case 17:return XK_Control_L;case 18:return XK_Alt_L;case 224:return XK_Meta_L;case 225:return XK_ISO_Level3_Shift;case 91:return XK_Super_L;case 92:return XK_Super_R;case 93:return XK_Menu;default:return null}}return{hasShortcutModifier:s,hasCharModifier:i,ModifierSync:r,getKey:o,getKeysym:l,keysymFromKeyCode:c,nonCharacterKey:d,substituteCodepoint:t}}();define("vnc-keyboard",["vnc-util"],function(){});var Keyboard,Mouse;!function(){"use strict";Keyboard=function(t){this._keyDownList=[],Util.set_defaults(this,t,{target:document,focused:!0}),this._handler=new KeyEventDecoder(kbdUtil.ModifierSync(),VerifyCharModifier(TrackKeyState(EscapeModifiers(this._handleRfbEvent.bind(this))))),this._eventHandlers={keyup:this._handleKeyUp.bind(this),keydown:this._handleKeyDown.bind(this),keypress:this._handleKeyPress.bind(this),blur:this._allKeysUp.bind(this)}},Keyboard.prototype={_handleRfbEvent:function(t){this._onKeyPress&&(Util.Debug("onKeyPress "+("keydown"==t.type?"down":"up")+", keysym: "+t.keysym.keysym+"("+t.keysym.keyname+")"),this._onKeyPress(t.keysym.keysym,"keydown"==t.type))},_handleKeyDown:function(t){return this._focused&&this._handler.keydown(t)?(Util.stopEvent(t),!1):!0},_handleKeyPress:function(t){return this._focused&&this._handler.keypress(t)?(Util.stopEvent(t),!1):!0},_handleKeyUp:function(t){return this._focused&&this._handler.keyup(t)?(Util.stopEvent(t),!1):!0},_allKeysUp:function(){Util.Debug(">> Keyboard.allKeysUp"),this._handler.releaseAll(),Util.Debug("<< Keyboard.allKeysUp")},grab:function(){var t=this._target;Util.addEvent(t,"keydown",this._eventHandlers.keydown),Util.addEvent(t,"keyup",this._eventHandlers.keyup),Util.addEvent(t,"keypress",this._eventHandlers.keypress),Util.addEvent(window,"blur",this._eventHandlers.blur)},ungrab:function(){var t=this._target;Util.removeEvent(t,"keydown",this._eventHandlers.keydown),Util.removeEvent(t,"keyup",this._eventHandlers.keyup),Util.removeEvent(t,"keypress",this._eventHandlers.keypress),Util.removeEvent(window,"blur",this._eventHandlers.blur),this._allKeysUp()},sync:function(t){this._handler.syncModifiers(t)}},Util.make_properties(Keyboard,[["target","wo","dom"],["focused","rw","bool"],["onKeyPress","rw","func"]]),Mouse=function(t){this._mouseCaptured=!1,this._doubleClickTimer=null,this._lastTouchPos=null,Util.set_defaults(this,t,{target:document,focused:!0,scale:1,touchButton:1}),this._eventHandlers={mousedown:this._handleMouseDown.bind(this),mouseup:this._handleMouseUp.bind(this),mousemove:this._handleMouseMove.bind(this),mousewheel:this._handleMouseWheel.bind(this),mousedisable:this._handleMouseDisable.bind(this)}},Mouse.prototype={_captureMouse:function(){this._target.setCapture&&this._target.setCapture(),this._mouseCaptured=!0},_releaseMouse:function(){this._target.releaseCapture&&this._target.releaseCapture(),this._mouseCaptured=!1},_resetDoubleClickTimer:function(){this._doubleClickTimer=null},_handleMouseButton:function(t,e){if(!this._focused)return!0;this._notify&&this._notify(t);var a,n=t?t:window.event,s=Util.getEventPosition(t,this._target,this._scale);if(t.touches||t.changedTouches){if(1==e){if(null===this._doubleClickTimer)this._lastTouchPos=s;else{clearTimeout(this._doubleClickTimer);var i=this._lastTouchPos.x-s.x,r=this._lastTouchPos.y-s.y,o=Math.sqrt(i*i+r*r);o<20*window.devicePixelRatio&&(s=this._lastTouchPos)}this._doubleClickTimer=setTimeout(this._resetDoubleClickTimer.bind(this),500)}a=this._touchButton}else a=n.which?1<<n.button:(1&n.button)+2*(2&n.button)+(4&n.button)/2;return this._onMouseButton&&(Util.Debug("onMouseButton "+(e?"down":"up")+", x: "+s.x+", y: "+s.y+", bmask: "+a),this._onMouseButton(s.x,s.y,e,a)),Util.stopEvent(t),!1},_handleMouseDown:function(t){this._captureMouse(),this._handleMouseButton(t,1)},_handleMouseUp:function(t){this._mouseCaptured&&(this._handleMouseButton(t,0),this._releaseMouse())},_handleMouseWheel:function(t){if(!this._focused)return!0;this._notify&&this._notify(t);var e,a=t?t:window.event,n=Util.getEventPosition(t,this._target,this._scale),s=a.detail?-1*a.detail:a.wheelDelta/40;return e=s>0?8:16,this._onMouseButton&&(this._onMouseButton(n.x,n.y,1,e),this._onMouseButton(n.x,n.y,0,e)),Util.stopEvent(t),!1},_handleMouseMove:function(t){if(!this._focused)return!0;this._notify&&this._notify(t);var e=(t?t:window.event,Util.getEventPosition(t,this._target,this._scale));return this._onMouseMove&&this._onMouseMove(e.x,e.y),Util.stopEvent(t),!1},_handleMouseDisable:function(t){if(!this._focused)return!0;var e=(t?t:window.event,Util.getEventPosition(t,this._target,this._scale));
+return e.realx>=0&&e.realy>=0&&e.realx<this._target.offsetWidth&&e.realy<this._target.offsetHeight?(Util.stopEvent(t),!1):!0},grab:function(){var t=this._target;"ontouchstart"in document.documentElement?(Util.addEvent(t,"touchstart",this._eventHandlers.mousedown),Util.addEvent(window,"touchend",this._eventHandlers.mouseup),Util.addEvent(t,"touchend",this._eventHandlers.mouseup),Util.addEvent(t,"touchmove",this._eventHandlers.mousemove)):(Util.addEvent(t,"mousedown",this._eventHandlers.mousedown),Util.addEvent(window,"mouseup",this._eventHandlers.mouseup),Util.addEvent(t,"mouseup",this._eventHandlers.mouseup),Util.addEvent(t,"mousemove",this._eventHandlers.mousemove),Util.addEvent(t,Util.Engine.gecko?"DOMMouseScroll":"mousewheel",this._eventHandlers.mousewheel)),Util.addEvent(document,"click",this._eventHandlers.mousedisable),Util.addEvent(document.body,"contextmenu",this._eventHandlers.mousedisable)},ungrab:function(){var t=this._target;"ontouchstart"in document.documentElement?(Util.removeEvent(t,"touchstart",this._eventHandlers.mousedown),Util.removeEvent(window,"touchend",this._eventHandlers.mouseup),Util.removeEvent(t,"touchend",this._eventHandlers.mouseup),Util.removeEvent(t,"touchmove",this._eventHandlers.mousemove)):(Util.removeEvent(t,"mousedown",this._eventHandlers.mousedown),Util.removeEvent(window,"mouseup",this._eventHandlers.mouseup),Util.removeEvent(t,"mouseup",this._eventHandlers.mouseup),Util.removeEvent(t,"mousemove",this._eventHandlers.mousemove),Util.removeEvent(t,Util.Engine.gecko?"DOMMouseScroll":"mousewheel",this._eventHandlers.mousewheel)),Util.removeEvent(document,"click",this._eventHandlers.mousedisable),Util.removeEvent(document.body,"contextmenu",this._eventHandlers.mousedisable)}},Util.make_properties(Mouse,[["target","ro","dom"],["notify","ro","func"],["focused","rw","bool"],["scale","rw","float"],["onMouseButton","rw","func"],["onMouseMove","rw","func"],["touchButton","rw","int"]])}(),define("vnc-input",["vnc-util"],function(){});var Display;!function(){"use strict";Display=function(t){if(this._drawCtx=null,this._c_forceCanvas=!1,this._renderQ=[],this._fb_width=0,this._fb_height=0,this._viewportLoc={x:0,y:0,w:0,h:0},this._cleanRect={x1:0,y1:0,x2:-1,y2:-1},this._prevDrawStyle="",this._tile=null,this._tile16x16=null,this._tile_x=0,this._tile_y=0,Util.set_defaults(this,t,{true_color:!0,colourMap:[],scale:1,viewport:!1,render_mode:""}),Util.Debug(">> Display.constructor"),!this._target)throw new Error("Target must be set");if("string"==typeof this._target)throw new Error("target must be a DOM element");if(!this._target.getContext)throw new Error("no getContext method");if(this._drawCtx||(this._drawCtx=this._target.getContext("2d")),Util.Debug("User Agent: "+navigator.userAgent),Util.Engine.gecko&&Util.Debug("Browser: gecko "+Util.Engine.gecko),Util.Engine.webkit&&Util.Debug("Browser: webkit "+Util.Engine.webkit),Util.Engine.trident&&Util.Debug("Browser: trident "+Util.Engine.trident),Util.Engine.presto&&Util.Debug("Browser: presto "+Util.Engine.presto),this.clear(),!("createImageData"in this._drawCtx))throw new Error("Canvas does not support createImageData");this._render_mode="canvas rendering",null===this._prefer_js&&(Util.Info("Prefering javascript operations"),this._prefer_js=!0);for(var e=[],a=0;256>a;a++)e.push(255);try{var n=this._target.style.cursor;Display.changeCursor(this._target,e,e,2,2,8,8),this._target.style.cursor?((null===this._cursor_uri||void 0===this._cursor_uri)&&(this._cursor_uri=!0),Util.Info("Data URI scheme cursor supported")):((null===this._cursor_uri||void 0===this._cursor_uri)&&(this._cursor_uri=!1),Util.Warn("Data URI scheme cursor not supported")),this._target.style.cursor=n}catch(s){Util.Error("Data URI scheme cursor test exception: "+s),this._cursor_uri=!1}Util.Debug("<< Display.constructor")},Display.prototype={viewportChange:function(t,e,a,n){var s=this._viewportLoc,i=this._cleanRect,r=this._target;if(this._viewport||(Util.Debug("Setting viewport to full display region"),t=-s.w,e=-s.h,a=this._fb_width,n=this._fb_height),"undefined"==typeof t&&(t=0),"undefined"==typeof e&&(e=0),"undefined"==typeof a&&(a=s.w),"undefined"==typeof n&&(n=s.h),a>this._fb_width&&(a=this._fb_width),n>this._fb_height&&(n=this._fb_height),s.w!==a||s.h!==n){a<s.w&&i.x2>s.x+a-1&&(i.x2=s.x+a-1),s.w=a,n<s.h&&i.y2>s.y+n-1&&(i.y2=s.y+n-1),s.h=n;var o=null;if(s.w>0&&s.h>0&&r.width>0&&r.height>0){var l=r.width<s.w?r.width:s.w,c=r.height<s.h?r.height:s.h;o=this._drawCtx.getImageData(0,0,l,c)}r.width=s.w,r.height=s.h,o&&this._drawCtx.putImageData(o,0,0)}var d=s.x+s.w-1,u=s.y+s.h-1;if(0>t&&s.x+t<0&&(t=-s.x),d+t>=this._fb_width&&(t-=d+t-this._fb_width+1),s.y+e<0&&(e=-s.y),u+e>=this._fb_height&&(e-=u+e-this._fb_height+1),0!==t||0!==e){Util.Debug("viewportChange deltaX: "+t+", deltaY: "+e),s.x+=t,d+=t,s.y+=e,u+=e,s.x>i.x1&&(i.x1=s.x),d<i.x2&&(i.x2=d),s.y>i.y1&&(i.y1=s.y),u<i.y2&&(i.y2=u);var p,h;0>t?(p=0,h=-t):(p=s.w-t,h=t);var f,m;0>e?(f=0,m=-e):(f=s.h-e,m=e);var _=this._drawCtx.fillStyle;this._drawCtx.fillStyle="rgb(255,255,255)",0!==t&&(this._drawCtx.drawImage(r,0,0,s.w,s.h,-t,0,s.w,s.h),this._drawCtx.fillRect(p,0,h,s.h)),0!==e&&(this._drawCtx.drawImage(r,0,0,s.w,s.h,0,-e,s.w,s.h),this._drawCtx.fillRect(0,f,s.w,m)),this._drawCtx.fillStyle=_}},getCleanDirtyReset:function(){var t=this._viewportLoc,e=this._cleanRect,a={x:e.x1,y:e.y1,w:e.x2-e.x1+1,h:e.y2-e.y1+1},n=[];if(e.x1>=e.x2||e.y1>=e.y2)n.push({x:t.x,y:t.y,w:t.w,h:t.h});else{var s=t.x+t.w-1,i=t.y+t.h-1;t.x<e.x1&&n.push({x:t.x,y:t.y,w:e.x1-t.x+1,h:t.h}),s>e.x2&&n.push({x:e.x2+1,y:t.y,w:s-e.x2,h:t.h}),t.y<e.y1&&n.push({x:e.x1,y:t.y,w:e.x2-e.x1+1,h:e.y1-t.y}),i>e.y2&&n.push({x:e.x1,y:e.y2+1,w:e.x2-e.x1+1,h:i-e.y2})}return this._cleanRect={x1:t.x,y1:t.y,x2:t.x+t.w-1,y2:t.y+t.h-1},{cleanBox:a,dirtyBoxes:n}},absX:function(t){return t+this._viewportLoc.x},absY:function(t){return t+this._viewportLoc.y},resize:function(t,e){this._prevDrawStyle="",this._fb_width=t,this._fb_height=e,this._rescale(this._scale),this.viewportChange()},clear:function(){this._logo?(this.resize(this._logo.width,this._logo.height),this.blitStringImage(this._logo.data,0,0)):(6===Util.Engine.trident&&this._drawCtx.clearRect(0,0,this._viewportLoc.w,this._viewportLoc.h),this.resize(240,20),this._drawCtx.clearRect(0,0,this._viewportLoc.w,this._viewportLoc.h)),this._renderQ=[]},fillRect:function(t,e,a,n,s){this._setFillColor(s),this._drawCtx.fillRect(t-this._viewportLoc.x,e-this._viewportLoc.y,a,n)},copyImage:function(t,e,a,n,s,i){var r=t-this._viewportLoc.x,o=e-this._viewportLoc.y,l=a-this._viewportLoc.x,c=n-this._viewportLoc.y;this._drawCtx.drawImage(this._target,r,o,s,i,l,c,s,i)},startTile:function(t,e,a,n,s){if(this._tile_x=t,this._tile_y=e,this._tile=16===a&&16===n?this._tile16x16:this._drawCtx.createImageData(a,n),this._prefer_js){var i;i=this._true_color?s:this._colourMap[s[0]];for(var r=i[2],o=i[1],l=i[0],c=this._tile.data,d=0;a*n*4>d;d+=4)c[d]=r,c[d+1]=o,c[d+2]=l,c[d+3]=255}else this.fillRect(t,e,a,n,s)},subTile:function(t,e,a,n,s){if(this._prefer_js){var i;i=this._true_color?s:this._colourMap[s[0]];for(var r=i[2],o=i[1],l=i[0],c=t+a,d=e+n,u=this._tile.data,p=this._tile.width,h=e;d>h;h++)for(var f=t;c>f;f++){var m=4*(f+h*p);u[m]=r,u[m+1]=o,u[m+2]=l,u[m+3]=255}}else this.fillRect(this._tile_x+t,this._tile_y+e,a,n,s)},finishTile:function(){this._prefer_js&&this._drawCtx.putImageData(this._tile,this._tile_x-this._viewportLoc.x,this._tile_y-this._viewportLoc.y)},blitImage:function(t,e,a,n,s,i){this._true_color?this._bgrxImageData(t,e,this._viewportLoc.x,this._viewportLoc.y,a,n,s,i):this._cmapImageData(t,e,this._viewportLoc.x,this._viewportLoc.y,a,n,s,i)},blitRgbImage:function(t,e,a,n,s,i){this._true_color?this._rgbImageData(t,e,this._viewportLoc.x,this._viewportLoc.y,a,n,s,i):this._cmapImageData(t,e,this._viewportLoc.x,this._viewportLoc.y,a,n,s,i)},blitStringImage:function(t,e,a){var n=new Image;return n.onload=function(){this._drawCtx.drawImage(n,e-this._viewportLoc.x,a-this._viewportLoc.y)}.bind(this),n.src=t,n},drawImage:function(t,e,a){this._drawCtx.drawImage(t,e-this._viewportLoc.x,a-this._viewportLoc.y)},renderQ_push:function(t){this._renderQ.push(t),1===this._renderQ.length&&this._scan_renderQ()},changeCursor:function(t,e,a,n,s,i){return this._cursor_uri===!1?void Util.Warn("changeCursor called but no cursor data URI support"):void(this._true_color?Display.changeCursor(this._target,t,e,a,n,s,i):Display.changeCursor(this._target,t,e,a,n,s,i,this._colourMap))},defaultCursor:function(){this._target.style.cursor="default"},get_context:function(){return this._drawCtx},set_scale:function(t){this._rescale(t)},set_width:function(t){this.resize(t,this._fb_height)},get_width:function(){return this._fb_width},set_height:function(t){this.resize(this._fb_width,t)},get_height:function(){return this._fb_height},_rescale:function(t){for(var e,a=this._target,n=["transform","WebkitTransform","MozTransform"];(e=n.shift())&&"undefined"==typeof a.style[e];);if(null===e)return void Util.Debug("No scaling support");if("undefined"==typeof t?t=this._scale:t>1?t=1:.1>t&&(t=.1),this._scale!==t){this._scale=t;var s=a.width-a.width*t,i=a.height-a.height*t;a.style[e]="scale("+this._scale+") translate(-"+s+"px, -"+i+"px)"}},_setFillColor:function(t){var e;e=this._true_color?t:this._colourMap[t[0]];var a="rgb("+e[2]+","+e[1]+","+e[0]+")";a!==this._prevDrawStyle&&(this._drawCtx.fillStyle=a,this._prevDrawStyle=a)},_rgbImageData:function(t,e,a,n,s,i,r,o){for(var l=this._drawCtx.createImageData(s,i),c=l.data,d=0,u=o;s*i*4>d;d+=4,u+=3)c[d]=r[u],c[d+1]=r[u+1],c[d+2]=r[u+2],c[d+3]=255;this._drawCtx.putImageData(l,t-a,e-n)},_bgrxImageData:function(t,e,a,n,s,i,r,o){for(var l=this._drawCtx.createImageData(s,i),c=l.data,d=0,u=o;s*i*4>d;d+=4,u+=4)c[d]=r[u+2],c[d+1]=r[u+1],c[d+2]=r[u],c[d+3]=255;this._drawCtx.putImageData(l,t-a,e-n)},_cmapImageData:function(t,e,a,n,s,i,r,o){for(var l=this._drawCtx.createImageData(s,i),c=l.data,d=this._colourMap,u=0,p=o;s*i*4>u;u+=4,p++){var h=d[r[p]];c[u]=h[2],c[u+1]=h[1],c[u+2]=h[0],c[u+3]=255}this._drawCtx.putImageData(l,t-a,e-n)},_scan_renderQ:function(){for(var t=!0;t&&this._renderQ.length>0;){var e=this._renderQ[0];switch(e.type){case"copy":this.copyImage(e.old_x,e.old_y,e.x,e.y,e.width,e.height);break;case"fill":this.fillRect(e.x,e.y,e.width,e.height,e.color);break;case"blit":this.blitImage(e.x,e.y,e.width,e.height,e.data,0);break;case"blitRgb":this.blitRgbImage(e.x,e.y,e.width,e.height,e.data,0);break;case"img":e.img.complete?this.drawImage(e.img,e.x,e.y):t=!1}t&&this._renderQ.shift()}this._renderQ.length>0&&requestAnimFrame(this._scan_renderQ.bind(this))}},Util.make_properties(Display,[["target","wo","dom"],["context","ro","raw"],["logo","rw","raw"],["true_color","rw","bool"],["colourMap","rw","arr"],["scale","rw","float"],["viewport","rw","bool"],["width","rw","int"],["height","rw","int"],["render_mode","ro","str"],["prefer_js","rw","str"],["cursor_uri","rw","raw"]]),Display.changeCursor=function(t,e,a,n,s,i,r,o){var l=i,c=r;l>c?c=l:l=c;var d=[];d.push16le=function(t){this.push(255&t,t>>8&255)},d.push32le=function(t){this.push(255&t,t>>8&255,t>>16&255,t>>24&255)};var u=40,p=l*c*4,h=Math.ceil(l*c/8),f=Math.ceil(l*c/8);d.push16le(0),d.push16le(2),d.push16le(1),d.push(l),d.push(c),d.push(0),d.push(0),d.push16le(n),d.push16le(s),d.push32le(u+p+h+f),d.push32le(22),d.push32le(u),d.push32le(l),d.push32le(2*c),d.push16le(1),d.push16le(32),d.push32le(0),d.push32le(h+f),d.push32le(0),d.push32le(0),d.push32le(0),d.push32le(0);var m,_;for(m=c-1;m>=0;m--)for(_=0;l>_;_++)if(_>=i||m>=r)d.push(0),d.push(0),d.push(0),d.push(0);else{var b=m*Math.ceil(i/8)+Math.floor(_/8),v=a[b]<<_%8&128?255:0;if(o){b=i*m+_;var g=o[e[b]];d.push(g[2]),d.push(g[1]),d.push(g[0]),d.push(v)}else b=4*(i*m+_),d.push(e[b+2]),d.push(e[b+1]),d.push(e[b]),d.push(v)}for(m=0;c>m;m++)for(_=0;_<Math.ceil(l/8);_++)d.push(0);for(m=0;c>m;m++)for(_=0;_<Math.ceil(l/8);_++)d.push(0);var y="data:image/x-icon;base64,"+Base64.encode(d);t.style.cursor="url("+y+")"+n+" "+s+", default"}}(),define("vnc-display",["vnc-util"],function(){});var tinf;define("vnc-jsunzip",["vnc-util"],function(){});var RFB;!function(){"use strict";RFB=function(t){t||(t={}),this._rfb_host="",this._rfb_port=5900,this._rfb_password="",this._rfb_path="",this._rfb_state="disconnected",this._rfb_version=0,this._rfb_max_version=3.8,this._rfb_auth_scheme="",this._rfb_tightvnc=!1,this._rfb_xvp_ver=0,this._encodings=[["COPYRECT",1],["TIGHT",7],["TIGHT_PNG",-260],["HEXTILE",5],["RRE",2],["RAW",0],["DesktopSize",-223],["Cursor",-239],["JPEG_quality_med",-26],["compress_hi",-247],["last_rect",-224],["xvp",-309]],this._encHandlers={},this._encNames={},this._encStats={},this._sock=null,this._display=null,this._keyboard=null,this._mouse=null,this._sendTimer=null,this._disconnTimer=null,this._msgTimer=null,this._FBU={rects:0,subrects:0,lines:0,tiles:0,bytes:0,x:0,y:0,width:0,height:0,encoding:0,subencoding:-1,background:null,zlib:[]},this._fb_Bpp=4,this._fb_depth=3,this._fb_width=0,this._fb_height=0,this._fb_name="",this._rre_chunk_sz=100,this._timing={last_fbu:0,fbu_total:0,fbu_total_cnt:0,full_fbu_total:0,full_fbu_cnt:0,fbu_rt_start:0,fbu_rt_total:0,fbu_rt_cnt:0,pixels:0},this._mouse_buttonMask=0,this._mouse_arr=[],this._viewportDragging=!1,this._viewportDragPos={},Util.set_defaults(this,t,{target:"null",focusContainer:document,encrypt:!1,true_color:!0,local_cursor:!1,shared:!0,view_only:!1,xvp_password_sep:"@",disconnectTimeout:3,wsProtocols:["binary","base64"],repeaterID:"",viewportDrag:!1,onUpdateState:function(){},onPasswordRequired:function(){},onClipboard:function(){},onBell:function(){},onFBUReceive:function(){},onFBUComplete:function(){},onFBResize:function(){},onDesktopName:function(){},onXvpInit:function(){}}),Util.Debug(">> RFB.constructor"),Object.keys(RFB.encodingHandlers).forEach(function(t){this._encHandlers[t]=RFB.encodingHandlers[t].bind(this)}.bind(this));for(var e=0;e<this._encodings.length;e++)this._encHandlers[this._encodings[e][1]]=this._encHandlers[this._encodings[e][0]],this._encNames[this._encodings[e][1]]=this._encodings[e][0],this._encStats[this._encodings[e][1]]=[0,0];try{this._display=new Display({target:this._target})}catch(a){Util.Error("Display exception: "+a),this._updateState("fatal","No working Display")}this._keyboard=new Keyboard({target:this._focusContainer,onKeyPress:this._handleKeyPress.bind(this)}),this._mouse=new Mouse({target:this._target,onMouseButton:this._handleMouseButton.bind(this),onMouseMove:this._handleMouseMove.bind(this),notify:this._keyboard.sync.bind(this._keyboard)}),this._sock=new Websock,this._sock.on("message",this._handle_message.bind(this)),this._sock.on("open",function(){"connect"===this._rfb_state?this._updateState("ProtocolVersion","Starting VNC handshake"):this._fail("Got unexpected WebSocket connection")}.bind(this)),this._sock.on("close",function(t){Util.Warn("WebSocket on-close event");var e="";t.code&&(e=" (code: "+t.code,t.reason&&(e+=", reason: "+t.reason),e+=")"),"disconnect"===this._rfb_state?this._updateState("disconnected","VNC disconnected"+e):"ProtocolVersion"===this._rfb_state?this._fail("Failed to connect to server"+e):this._rfb_state in{failed:1,disconnected:1}?Util.Error("Received onclose while disconnected"+e):this._fail("Server disconnected"+e)}.bind(this)),this._sock.on("error",function(){Util.Warn("WebSocket on-error event")}),this._init_vars();var n=this._display.get_render_mode();Websock_native?(Util.Info("Using native WebSockets"),this._updateState("loaded","noVNC ready: native WebSockets, "+n)):(Util.Warn("Using web-socket-js bridge.  Flash version: "+Util.Flash.version),!Util.Flash||Util.Flash.version<9?this._updateState("fatal","WebSockets or <a href='http://get.adobe.com/flashplayer'>Adobe Flash</a> is required"):"file://"===document.location.href.substr(0,7)?this._updateState("fatal","'file://' URL is incompatible with Adobe Flash"):this._updateState("loaded","noVNC ready: WebSockets emulation, "+n)),Util.Debug("<< RFB.constructor")},RFB.prototype={connect:function(t,e,a,n){return this._rfb_host=t,this._rfb_port=e,this._rfb_password=void 0!==a?a:"",this._rfb_path=void 0!==n?n:"",this._rfb_host&&this._rfb_port?void this._updateState("connect"):this._fail("Must set host and port")},disconnect:function(){this._updateState("disconnect","Disconnecting")},sendPassword:function(t){this._rfb_password=t,this._rfb_state="Authentication",setTimeout(this._init_msg.bind(this),1)},sendCtrlAltDel:function(){if("normal"!==this._rfb_state||this._view_only)return!1;Util.Info("Sending Ctrl-Alt-Del");var t=[];t=t.concat(RFB.messages.keyEvent(XK_Control_L,1)),t=t.concat(RFB.messages.keyEvent(XK_Alt_L,1)),t=t.concat(RFB.messages.keyEvent(XK_Delete,1)),t=t.concat(RFB.messages.keyEvent(XK_Delete,0)),t=t.concat(RFB.messages.keyEvent(XK_Alt_L,0)),t=t.concat(RFB.messages.keyEvent(XK_Control_L,0)),this._sock.send(t)},xvpOp:function(t,e){return this._rfb_xvp_ver<t?!1:(Util.Info("Sending XVP operation "+e+" (version "+t+")"),this._sock.send_string("ú\x00"+String.fromCharCode(t)+String.fromCharCode(e)),!0)},xvpShutdown:function(){return this.xvpOp(1,2)},xvpReboot:function(){return this.xvpOp(1,3)},xvpReset:function(){return this.xvpOp(1,4)},sendKey:function(t,e){if("normal"!==this._rfb_state||this._view_only)return!1;var a=[];"undefined"!=typeof e?(Util.Info("Sending key code ("+(e?"down":"up")+"): "+t),a=a.concat(RFB.messages.keyEvent(t,e?1:0))):(Util.Info("Sending key code (down + up): "+t),a=a.concat(RFB.messages.keyEvent(t,1)),a=a.concat(RFB.messages.keyEvent(t,0))),this._sock.send(a)},clipboardPasteFrom:function(t){"normal"===this._rfb_state&&this._sock.send(RFB.messages.clientCutText(t))},_connect:function(){Util.Debug(">> RFB.connect");var t;t="undefined"!=typeof UsingSocketIO?"http":this._encrypt?"wss":"ws",t+="://"+this._rfb_host+":"+this._rfb_port+"/"+this._rfb_path,Util.Info("connecting to "+t),this._sock.open(t,this._wsProtocols),Util.Debug("<< RFB.connect")},_init_vars:function(){this._sock.init(),this._FBU.rects=0,this._FBU.subrects=0,this._FBU.lines=0,this._FBU.tiles=0,this._FBU.zlibs=[],this._mouse_buttonMask=0,this._mouse_arr=[],this._rfb_tightvnc=!1;var t;for(t=0;t<this._encodings.length;t++)this._encStats[this._encodings[t][1]][0]=0;for(t=0;4>t;t++)this._FBU.zlibs[t]=new TINF,this._FBU.zlibs[t].init()},_print_stats:function(){Util.Info("Encoding stats for this connection:");var t,e;for(t=0;t<this._encodings.length;t++)e=this._encStats[this._encodings[t][1]],e[0]+e[1]>0&&Util.Info("    "+this._encodings[t][0]+": "+e[0]+" rects");for(Util.Info("Encoding stats since page load:"),t=0;t<this._encodings.length;t++)e=this._encStats[this._encodings[t][1]],Util.Info("    "+this._encodings[t][0]+": "+e[1]+" rects")},_updateState:function(t,e){var a=this._rfb_state;t===a&&Util.Debug("Already in state '"+t+"', ignoring"),t in{disconnected:1,loaded:1,connect:1,disconnect:1,failed:1,fatal:1}&&(this._sendTimer&&(clearInterval(this._sendTimer),this._sendTimer=null),this._msgTimer&&(clearInterval(this._msgTimer),this._msgTimer=null),this._display&&this._display.get_context()&&(this._keyboard.ungrab(),this._mouse.ungrab(),this._display.defaultCursor(),("debug"!==Util.get_logging()||"loaded"===t)&&this._display.clear()),this._sock.close()),"fatal"===a&&Util.Error("Fatal error, cannot continue");var n="undefined"!=typeof e?" Msg: "+e:"";switch("failed"===t||"fatal"===t?Util.Error(n):Util.Warn(n),this._rfb_state="failed"===a&&"disconnected"===t?"failed":t,this._disconnTimer&&"disconnect"!==this._rfb_state&&(Util.Debug("Clearing disconnect timer"),clearTimeout(this._disconnTimer),this._disconnTimer=null),t){case"normal":("disconnected"===a||"failed"===a)&&Util.Error("Invalid transition from 'disconnected' or 'failed' to 'normal'");break;case"connect":this._init_vars(),this._connect();break;case"disconnect":this._disconnTimer=setTimeout(function(){this._fail("Disconnect timeout")}.bind(this),1e3*this._disconnectTimeout),this._print_stats();break;case"failed":"disconnected"===a?Util.Error("Invalid transition from 'disconnected' to 'failed'"):"normal"===a?Util.Error("Error while connected."):"init"===a&&Util.Error("Error while initializing."),setTimeout(function(){this._updateState("disconnected")}.bind(this),50)}"failed"===a&&"disconnected"===t?this._onUpdateState(this,t,a):this._onUpdateState(this,t,a,e)},_fail:function(t){return this._updateState("failed",t),!1},_handle_message:function(){if(0===this._sock.rQlen())return void Util.Warn("handle_message called on an empty receive queue");switch(this._rfb_state){case"disconnected":case"failed":Util.Error("Got data while disconnected");break;case"normal":this._normal_msg()&&this._sock.rQlen()>0&&(null===this._msgTimer?(Util.Debug("More data to process, creating timer"),this._msgTimer=setTimeout(function(){this._msgTimer=null,this._handle_message()}.bind(this),10)):Util.Debug("More data to process, existing timer"));break;default:this._init_msg()}},_checkEvents:function(){"normal"===this._rfb_state&&!this._viewportDragging&&this._mouse_arr.length>0&&(this._sock.send(this._mouse_arr),this._mouse_arr=[])},_handleKeyPress:function(t,e){this._view_only||this._sock.send(RFB.messages.keyEvent(t,e))},_handleMouseButton:function(t,e,a,n){if(a?this._mouse_buttonMask|=n:this._mouse_buttonMask^=n,this._viewportDrag){if(a&&!this._viewportDragging)return this._viewportDragging=!0,void(this._viewportDragPos={x:t,y:e});this._viewportDragging=!1}this._view_only||(this._mouse_arr=this._mouse_arr.concat(RFB.messages.pointerEvent(this._display.absX(t),this._display.absY(e),this._mouse_buttonMask)),this._sock.send(this._mouse_arr),this._mouse_arr=[])},_handleMouseMove:function(t,e){if(this._viewportDragging){var a=this._viewportDragPos.x-t,n=this._viewportDragPos.y-e;return this._viewportDragPos={x:t,y:e},void this._display.viewportChange(a,n)}this._view_only||(this._mouse_arr=this._mouse_arr.concat(RFB.messages.pointerEvent(this._display.absX(t),this._display.absY(e),this._mouse_buttonMask)),this._checkEvents())},_negotiate_protocol_version:function(){if(this._sock.rQlen()<12)return this._fail("Incomplete protocol version");var t=this._sock.rQshiftStr(12).substr(4,7);Util.Info("Server ProtocolVersion: "+t);var e=0;switch(t){case"000.000":e=1;break;case"003.003":case"003.006":case"003.889":this._rfb_version=3.3;break;case"003.007":this._rfb_version=3.7;break;case"003.008":case"004.000":case"004.001":this._rfb_version=3.8;break;default:return this._fail("Invalid server version "+t)}if(e){for(var a=this._repeaterID;a.length<250;)a+="\x00";return this._sock.send_string(a),!0}this._rfb_version>this._rfb_max_version&&(this._rfb_version=this._rfb_max_version),this._sendTimer=setInterval(this._sock.flush.bind(this._sock),50);var n="00"+parseInt(this._rfb_version,10)+".00"+10*this._rfb_version%10;this._sock.send_string("RFB "+n+"\n"),this._updateState("Security","Sent ProtocolVersion: "+n)},_negotiate_security:function(){if(this._rfb_version>=3.7){var t=this._sock.rQshift8();if(this._sock.rQwait("security type",t,1))return!1;if(0===t){var e=this._sock.rQshift32(),a=this._sock.rQshiftStr(e);return this._fail("Security failure: "+a)}this._rfb_auth_scheme=0;var n=this._sock.rQshiftBytes(t);Util.Debug("Server security types: "+n);for(var s=0;s<n.length;s++)n[s]>this._rfb_auth_scheme&&(n[s]<=16||22==n[s])&&(this._rfb_auth_scheme=n[s]);if(0===this._rfb_auth_scheme)return this._fail("Unsupported security types: "+n);this._sock.send([this._rfb_auth_scheme])}else{if(this._sock.rQwait("security scheme",4))return!1;this._rfb_auth_scheme=this._sock.rQshift32()}return this._updateState("Authentication","Authenticating using scheme: "+this._rfb_auth_scheme),this._init_msg()},_negotiate_xvp_auth:function(){var t=this._xvp_password_sep,e=this._rfb_password.split(t);if(e.length<3)return this._updateState("password","XVP credentials required (user"+t+"target"+t+"password) -- got only "+this._rfb_password),this._onPasswordRequired(this),!1;var a=String.fromCharCode(e[0].length)+String.fromCharCode(e[1].length)+e[0]+e[1];return this._sock.send_string(a),this._rfb_password=e.slice(2).join(t),this._rfb_auth_scheme=2,this._negotiate_authentication()},_negotiate_std_vnc_auth:function(){if(0===this._rfb_password.length&&(this._updateState("password","Password Required"),this._onPasswordRequired(this)),this._sock.rQwait("auth challenge",16))return!1;var t=this._sock.rQshiftBytes(16),e=RFB.genDES(this._rfb_password,t);return this._sock.send(e),this._updateState("SecurityResult"),!0},_negotiate_tight_tunnels:function(t){for(var e={0:{vendor:"TGHT",signature:"NOTUNNEL"}},a={},n=0;t>n;n++){var s=this._sock.rQshift32(),i=this._sock.rQshiftStr(4),r=this._sock.rQshiftStr(8);a[s]={vendor:i,signature:r}}return a[0]?a[0].vendor!=e[0].vendor||a[0].signature!=e[0].signature?this._fail("Client's tunnel type had the incorrect vendor or signature"):(this._sock.send([0,0,0,0]),!1):this._fail("Server wanted tunnels, but doesn't support the notunnel type")},_negotiate_tight_auth:function(){if(!this._rfb_tightvnc){if(this._sock.rQwait("num tunnels",4))return!1;var t=this._sock.rQshift32();if(t>0&&this._sock.rQwait("tunnel capabilities",16*t,4))return!1;if(this._rfb_tightvnc=!0,t>0)return this._negotiate_tight_tunnels(t),!1}if(this._sock.rQwait("sub auth count",4))return!1;var e=this._sock.rQshift32();if(this._sock.rQwait("sub auth capabilities",16*e,4))return!1;for(var a={STDVNOAUTH__:1,STDVVNCAUTH_:2},n=[],s=0;e>s;s++){var i=(this._sock.rQshift32(),this._sock.rQshiftStr(12));n.push(i)}for(var r in a)if(-1!=n.indexOf(r))switch(this._sock.send([0,0,0,a[r]]),r){case"STDVNOAUTH__":return this._updateState("SecurityResult"),!0;case"STDVVNCAUTH_":return this._rfb_auth_scheme=2,this._init_msg();default:return this._fail("Unsupported tiny auth scheme: "+r)}this._fail("No supported sub-auth types!")},_negotiate_authentication:function(){switch(this._rfb_auth_scheme){case 0:if(this._sock.rQwait("auth reason",4))return!1;var t=this._sock.rQshift32(),e=this._sock.rQshiftStr(t);return this._fail("Auth failure: "+e);case 1:return this._rfb_version>=3.8?(this._updateState("SecurityResult"),!0):(this._updateState("ClientInitialisation","No auth required"),this._init_msg());case 22:return this._negotiate_xvp_auth();case 2:return this._negotiate_std_vnc_auth();case 16:return this._negotiate_tight_auth();default:return this._fail("Unsupported auth scheme: "+this._rfb_auth_scheme)}},_handle_security_result:function(){if(this._sock.rQwait("VNC auth response ",4))return!1;switch(this._sock.rQshift32()){case 0:return this._updateState("ClientInitialisation","Authentication OK"),this._init_msg();case 1:if(this._rfb_version>=3.8){var t=this._sock.rQshift32();if(this._sock.rQwait("SecurityResult reason",t,8))return!1;var e=this._sock.rQshiftStr(t);return this._fail(e)}return this._fail("Authentication failure");case 2:return this._fail("Too many auth attempts")}},_negotiate_server_init:function(){if(this._sock.rQwait("server initialization",24))return!1;this._fb_width=this._sock.rQshift16(),this._fb_height=this._sock.rQshift16();var t=this._sock.rQshift8(),e=this._sock.rQshift8(),a=this._sock.rQshift8(),n=this._sock.rQshift8(),s=this._sock.rQshift16(),i=this._sock.rQshift16(),r=this._sock.rQshift16(),o=this._sock.rQshift8(),l=this._sock.rQshift8(),c=this._sock.rQshift8();this._sock.rQskipBytes(3);var d=this._sock.rQshift32();if(this._sock.rQwait("server init name",d,24))return!1;if(this._fb_name=Util.decodeUTF8(this._sock.rQshiftStr(d)),this._rfb_tightvnc){if(this._sock.rQwait("TightVNC extended server init header",8,24+d))return!1;var u=this._sock.rQshift16(),p=this._sock.rQshift16(),h=this._sock.rQshift16();this._sock.rQskipBytes(2);var f=16*(u+p+h);if(this._sock.rQwait("TightVNC extended server init header",f,32+d))return!1;var m;for(m=0;u>m;m++){this._sock.rQshiftStr(16)}for(m=0;p>m;m++){this._sock.rQshiftStr(16)}for(m=0;h>m;m++){this._sock.rQshiftStr(16)}}Util.Info("Screen: "+this._fb_width+"x"+this._fb_height+", bpp: "+t+", depth: "+e+", big_endian: "+a+", true_color: "+n+", red_max: "+s+", green_max: "+i+", blue_max: "+r+", red_shift: "+o+", green_shift: "+l+", blue_shift: "+c),0!==a&&Util.Warn("Server native endian is not little endian"),16!==o&&Util.Warn("Server native red-shift is not 16"),0!==c&&Util.Warn("Server native blue-shift is not 0"),this._onDesktopName(this,this._fb_name),this._true_color&&"Intel(r) AMT KVM"===this._fb_name&&(Util.Warn("Intel AMT KVM only supports 8/16 bit depths.  Disabling true color"),this._true_color=!1),this._display.set_true_color(this._true_color),this._onFBResize(this,this._fb_width,this._fb_height),this._display.resize(this._fb_width,this._fb_height),this._keyboard.grab(),this._mouse.grab(),this._true_color?(this._fb_Bpp=4,this._fb_depth=3):(this._fb_Bpp=1,this._fb_depth=1);var _=RFB.messages.pixelFormat(this._fb_Bpp,this._fb_depth,this._true_color);_=_.concat(RFB.messages.clientEncodings(this._encodings,this._local_cursor,this._true_color)),_=_.concat(RFB.messages.fbUpdateRequests(this._display.getCleanDirtyReset(),this._fb_width,this._fb_height)),this._timing.fbu_rt_start=(new Date).getTime(),this._timing.pixels=0,this._sock.send(_),this._checkEvents(),this._encrypt?this._updateState("normal","Connected (encrypted) to: "+this._fb_name):this._updateState("normal","Connected (unencrypted) to: "+this._fb_name)},_init_msg:function(){switch(this._rfb_state){case"ProtocolVersion":return this._negotiate_protocol_version();case"Security":return this._negotiate_security();case"Authentication":return this._negotiate_authentication();case"SecurityResult":return this._handle_security_result();case"ClientInitialisation":return this._sock.send([this._shared?1:0]),this._updateState("ServerInitialisation","Authentication OK"),!0;case"ServerInitialisation":return this._negotiate_server_init()}},_handle_set_colour_map_msg:function(){Util.Debug("SetColorMapEntries"),this._sock.rQskip8();var t=this._sock.rQshift16(),e=this._sock.rQshift16();if(this._sock.rQwait("SetColorMapEntries",6*e,6))return!1;for(var a=0;e>a;a++){var n=parseInt(this._sock.rQshift16()/256,10),s=parseInt(this._sock.rQshift16()/256,10),i=parseInt(this._sock.rQshift16()/256,10);this._display.set_colourMap([i,s,n],t+a)}return Util.Debug("colourMap: "+this._display.get_colourMap()),Util.Info("Registered "+e+" colourMap entries"),!0},_handle_server_cut_text:function(){if(Util.Debug("ServerCutText"),this._sock.rQwait("ServerCutText header",7,1))return!1;this._sock.rQskipBytes(3);var t=this._sock.rQshift32();if(this._sock.rQwait("ServerCutText",t,8))return!1;var e=this._sock.rQshiftStr(t);return this._onClipboard(this,e),!0},_handle_xvp_msg:function(){if(this._sock.rQwait("XVP version and message",3,1))return!1;this._sock.rQskip8();var t=this._sock.rQshift8(),e=this._sock.rQshift8();switch(e){case 0:this._updateState(this._rfb_state,"Operation Failed");break;case 1:this._rfb_xvp_ver=t,Util.Info("XVP extensions enabled (version "+this._rfb_xvp_ver+")"),this._onXvpInit(this._rfb_xvp_ver);break;default:this._fail("Disconnected: illegal server XVP message "+e)}return!0},_normal_msg:function(){var t;switch(t=this._FBU.rects>0?0:this._sock.rQshift8()){case 0:var e=this._framebufferUpdate();return e&&this._sock.send(RFB.messages.fbUpdateRequests(this._display.getCleanDirtyReset(),this._fb_width,this._fb_height)),e;case 1:return this._handle_set_colour_map_msg();case 2:return Util.Debug("Bell"),this._onBell(this),!0;case 3:return this._handle_server_cut_text();case 250:return this._handle_xvp_msg();default:return this._fail("Disconnected: illegal server message type "+t),Util.Debug("sock.rQslice(0, 30): "+this._sock.rQslice(0,30)),!0}},_framebufferUpdate:function(){var t,e=!0;if(0===this._FBU.rects){if(this._sock.rQwait("FBU header",3,1))return!1;this._sock.rQskip8(),this._FBU.rects=this._sock.rQshift16(),this._FBU.bytes=0,this._timing.cur_fbu=0,this._timing.fbu_rt_start>0&&(t=(new Date).getTime(),Util.Info("First FBU latency: "+(t-this._timing.fbu_rt_start)))}for(;this._FBU.rects>0;){if("normal"!==this._rfb_state)return!1;if(this._sock.rQwait("FBU",this._FBU.bytes))return!1;
+if(0===this._FBU.bytes){if(this._sock.rQwait("rect header",12))return!1;var a=this._sock.rQshiftBytes(12);if(this._FBU.x=(a[0]<<8)+a[1],this._FBU.y=(a[2]<<8)+a[3],this._FBU.width=(a[4]<<8)+a[5],this._FBU.height=(a[6]<<8)+a[7],this._FBU.encoding=parseInt((a[8]<<24)+(a[9]<<16)+(a[10]<<8)+a[11],10),this._onFBUReceive(this,{x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height,encoding:this._FBU.encoding,encodingName:this._encNames[this._FBU.encoding]}),!this._encNames[this._FBU.encoding])return this._fail("Disconnected: unsupported encoding "+this._FBU.encoding),!1}if(this._timing.last_fbu=(new Date).getTime(),e=this._encHandlers[this._FBU.encoding](),t=(new Date).getTime(),this._timing.cur_fbu+=t-this._timing.last_fbu,e&&(this._encStats[this._FBU.encoding][0]++,this._encStats[this._FBU.encoding][1]++,this._timing.pixels+=this._FBU.width*this._FBU.height),this._timing.pixels>=this._fb_width*this._fb_height&&((this._FBU.width===this._fb_width&&this._FBU.height===this._fb_height||this._timing.fbu_rt_start>0)&&(this._timing.full_fbu_total+=this._timing.cur_fbu,this._timing.full_fbu_cnt++,Util.Info("Timing of full FBU, curr: "+this._timing.cur_fbu+", total: "+this._timing.full_fbu_total+", cnt: "+this._timing.full_fbu_cnt+", avg: "+this._timing.full_fbu_total/this._timing.full_fbu_cnt)),this._timing.fbu_rt_start>0)){var n=t-this._timing.fbu_rt_start;this._timing.fbu_rt_total+=n,this._timing.fbu_rt_cnt++,Util.Info("full FBU round-trip, cur: "+n+", total: "+this._timing.fbu_rt_total+", cnt: "+this._timing.fbu_rt_cnt+", avg: "+this._timing.fbu_rt_total/this._timing.fbu_rt_cnt),this._timing.fbu_rt_start=0}if(!e)return e}return this._onFBUComplete(this,{x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height,encoding:this._FBU.encoding,encodingName:this._encNames[this._FBU.encoding]}),!0}},Util.make_properties(RFB,[["target","wo","dom"],["focusContainer","wo","dom"],["encrypt","rw","bool"],["true_color","rw","bool"],["local_cursor","rw","bool"],["shared","rw","bool"],["view_only","rw","bool"],["xvp_password_sep","rw","str"],["disconnectTimeout","rw","int"],["wsProtocols","rw","arr"],["repeaterID","rw","str"],["viewportDrag","rw","bool"],["onUpdateState","rw","func"],["onPasswordRequired","rw","func"],["onClipboard","rw","func"],["onBell","rw","func"],["onFBUReceive","rw","func"],["onFBUComplete","rw","func"],["onFBResize","rw","func"],["onDesktopName","rw","func"],["onXvpInit","rw","func"]]),RFB.prototype.set_local_cursor=function(t){!t||t in{0:1,no:1,"false":1}?this._local_cursor=!1:this._display.get_cursor_uri()?this._local_cursor=!0:Util.Warn("Browser does not support local cursor")},RFB.prototype.get_display=function(){return this._display},RFB.prototype.get_keyboard=function(){return this._keyboard},RFB.prototype.get_mouse=function(){return this._mouse},RFB.messages={keyEvent:function(t,e){var a=[4];return a.push8(e),a.push16(0),a.push32(t),a},pointerEvent:function(t,e,a){var n=[5];return n.push8(a),n.push16(t),n.push16(e),n},clientCutText:function(t){var e=[6];e.push8(0),e.push8(0),e.push8(0),e.push32(t.length);for(var a=t.length,n=0;a>n;n++)e.push(t.charCodeAt(n));return e},pixelFormat:function(t,e,a){var n=[0];return n.push8(0),n.push8(0),n.push8(0),n.push8(8*t),n.push8(8*e),n.push8(0),n.push8(a?1:0),n.push16(255),n.push16(255),n.push16(255),n.push8(16),n.push8(8),n.push8(0),n.push8(0),n.push8(0),n.push8(0),n},clientEncodings:function(t,e,a){var n,s=[];for(n=0;n<t.length;n++)"Cursor"!==t[n][0]||e?"TIGHT"!==t[n][0]||a?s.push(t[n][1]):Util.Warn("Skipping tight as it is only supported with true color"):Util.Debug("Skipping Cursor pseudo-encoding");var i=[2];for(i.push8(0),i.push16(s.length),n=0;n<s.length;n++)i.push32(s[n]);return i},fbUpdateRequests:function(t,e,a){var n,s,i=[],r=t.cleanBox;r.w>0&&r.h>0&&(n="undefined"==typeof r.w?e:r.w,s="undefined"==typeof r.h?a:r.h,i=i.concat(RFB.messages.fbUpdateRequest(1,r.x,r.y,n,s)));for(var o=0;o<t.dirtyBoxes.length;o++){var l=t.dirtyBoxes[o];n="undefined"==typeof l.w?e:l.w,s="undefined"==typeof l.h?a:l.h,i=i.concat(RFB.messages.fbUpdateRequest(0,l.x,l.y,n,s))}return i},fbUpdateRequest:function(t,e,a,n,s){"undefined"==typeof e&&(e=0),"undefined"==typeof a&&(a=0);var i=[3];return i.push8(t),i.push16(e),i.push16(a),i.push16(n),i.push16(s),i}},RFB.genDES=function(t,e){for(var a=[],n=0;n<t.length;n++)a.push(t.charCodeAt(n));return new DES(a).encrypt(e)},RFB.extract_data_uri=function(t){return";base64,"+Base64.encode(t)},RFB.encodingHandlers={RAW:function(){if(0===this._FBU.lines&&(this._FBU.lines=this._FBU.height),this._FBU.bytes=this._FBU.width*this._fb_Bpp,this._sock.rQwait("RAW",this._FBU.bytes))return!1;var t=this._FBU.y+(this._FBU.height-this._FBU.lines),e=Math.min(this._FBU.lines,Math.floor(this._sock.rQlen()/(this._FBU.width*this._fb_Bpp)));return this._display.blitImage(this._FBU.x,t,this._FBU.width,e,this._sock.get_rQ(),this._sock.get_rQi()),this._sock.rQskipBytes(this._FBU.width*e*this._fb_Bpp),this._FBU.lines-=e,this._FBU.lines>0?this._FBU.bytes=this._FBU.width*this._fb_Bpp:(this._FBU.rects--,this._FBU.bytes=0),!0},COPYRECT:function(){return this._FBU.bytes=4,this._sock.rQwait("COPYRECT",4)?!1:(this._display.renderQ_push({type:"copy",old_x:this._sock.rQshift16(),old_y:this._sock.rQshift16(),x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height}),this._FBU.rects--,this._FBU.bytes=0,!0)},RRE:function(){var t;if(0===this._FBU.subrects){if(this._FBU.bytes=4+this._fb_Bpp,this._sock.rQwait("RRE",4+this._fb_Bpp))return!1;this._FBU.subrects=this._sock.rQshift32(),t=this._sock.rQshiftBytes(this._fb_Bpp),this._display.fillRect(this._FBU.x,this._FBU.y,this._FBU.width,this._FBU.height,t)}for(;this._FBU.subrects>0&&this._sock.rQlen()>=this._fb_Bpp+8;){t=this._sock.rQshiftBytes(this._fb_Bpp);var e=this._sock.rQshift16(),a=this._sock.rQshift16(),n=this._sock.rQshift16(),s=this._sock.rQshift16();this._display.fillRect(this._FBU.x+e,this._FBU.y+a,n,s,t),this._FBU.subrects--}if(this._FBU.subrects>0){var i=Math.min(this._rre_chunk_sz,this._FBU.subrects);this._FBU.bytes=(this._fb_Bpp+8)*i}else this._FBU.rects--,this._FBU.bytes=0;return!0},HEXTILE:function(){var t=this._sock.get_rQ(),e=this._sock.get_rQi();for(0===this._FBU.tiles&&(this._FBU.tiles_x=Math.ceil(this._FBU.width/16),this._FBU.tiles_y=Math.ceil(this._FBU.height/16),this._FBU.total_tiles=this._FBU.tiles_x*this._FBU.tiles_y,this._FBU.tiles=this._FBU.total_tiles);this._FBU.tiles>0;){if(this._FBU.bytes=1,this._sock.rQwait("HEXTILE subencoding",this._FBU.bytes))return!1;var a=t[e];if(a>30)return this._fail("Disconnected: illegal hextile subencoding "+a),!1;var n=0,s=this._FBU.total_tiles-this._FBU.tiles,i=s%this._FBU.tiles_x,r=Math.floor(s/this._FBU.tiles_x),o=this._FBU.x+16*i,l=this._FBU.y+16*r,c=Math.min(16,this._FBU.x+this._FBU.width-o),d=Math.min(16,this._FBU.y+this._FBU.height-l);if(1&a)this._FBU.bytes+=c*d*this._fb_Bpp;else if(2&a&&(this._FBU.bytes+=this._fb_Bpp),4&a&&(this._FBU.bytes+=this._fb_Bpp),8&a){if(this._FBU.bytes++,this._sock.rQwait("hextile subrects header",this._FBU.bytes))return!1;n=t[e+this._FBU.bytes-1],this._FBU.bytes+=16&a?n*(this._fb_Bpp+2):2*n}if(this._sock.rQwait("hextile",this._FBU.bytes))return!1;if(this._FBU.subencoding=t[e],e++,0===this._FBU.subencoding)1&this._FBU.lastsubencoding?Util.Debug("     Ignoring blank after RAW"):this._display.fillRect(o,l,c,d,this._FBU.background);else if(1&this._FBU.subencoding)this._display.blitImage(o,l,c,d,t,e),e+=this._FBU.bytes-1;else{if(2&this._FBU.subencoding&&(this._FBU.background=t.slice(e,e+this._fb_Bpp),e+=this._fb_Bpp),4&this._FBU.subencoding&&(this._FBU.foreground=t.slice(e,e+this._fb_Bpp),e+=this._fb_Bpp),this._display.startTile(o,l,c,d,this._FBU.background),8&this._FBU.subencoding){n=t[e],e++;for(var u=0;n>u;u++){var p;16&this._FBU.subencoding?(p=t.slice(e,e+this._fb_Bpp),e+=this._fb_Bpp):p=this._FBU.foreground;var h=t[e];e++;var f=h>>4,m=15&h,_=t[e];e++;var b=(_>>4)+1,v=(15&_)+1;this._display.subTile(f,m,b,v,p)}}this._display.finishTile()}this._sock.set_rQi(e),this._FBU.lastsubencoding=this._FBU.subencoding,this._FBU.bytes=0,this._FBU.tiles--}return 0===this._FBU.tiles&&this._FBU.rects--,!0},getTightCLength:function(t){var e=1,a=0;return a+=127&t[0],128&t[0]&&(e++,a+=(127&t[1])<<7,128&t[1]&&(e++,a+=t[2]<<14)),[e,a]},display_tight:function(t){if(1===this._fb_depth&&this._fail("Tight protocol handler only implements true color mode"),this._FBU.bytes=1,this._sock.rQwait("TIGHT compression-control",this._FBU.bytes))return!1;var e,a,n,s=0,i=-1,r=function(t){for(var e=0;4>e;e++)s>>e&1&&(this._FBU.zlibs[e].reset(),Util.Info("Reset zlib stream "+e));var a=this._FBU.zlibs[i].uncompress(t,0);return 0!==a.status&&Util.Error("Invalid data in zlib stream"),a.data}.bind(this),o=function(t,e,a,n,s){var i,r,o,l,c=[];if(2===e){var d=Math.floor((n+7)/8),u=Math.floor(n/8);for(r=0;s>r;r++){var p;for(i=0;u>i;i++)for(p=7;p>=0;p--)o=3*(r*n+8*i+7-p),l=3*(t[r*d+i]>>p&1),c[o]=a[l],c[o+1]=a[l+1],c[o+2]=a[l+2];for(p=7;p>=8-n%8;p--)o=3*(r*n+8*i+7-p),l=3*(t[r*d+i]>>p&1),c[o]=a[l],c[o+1]=a[l+1],c[o+2]=a[l+2]}}else for(r=0;s>r;r++)for(i=0;n>i;i++)o=3*(r*n+i),l=3*t[r*n+i],c[o]=a[l],c[o+1]=a[l+1],c[o+2]=a[l+2];return c}.bind(this),l=this._sock.get_rQ(),c=this._sock.get_rQi(),d=function(){var t=l[c+2]+1,s=t*this._fb_depth;if(this._FBU.bytes+=s,this._sock.rQwait("TIGHT palette "+e,this._FBU.bytes))return!1;var i=2>=t?1:8,d=Math.floor((this._FBU.width*i+7)/8),u=!1;if(d*this._FBU.height<12?(u=!0,a=[0,d*this._FBU.height]):a=RFB.encodingHandlers.getTightCLength(this._sock.rQslice(3+s,3+s+3)),this._FBU.bytes+=a[0]+a[1],this._sock.rQwait("TIGHT "+e,this._FBU.bytes))return!1;this._sock.rQskipBytes(3);var p=this._sock.rQshiftBytes(s);this._sock.rQskipBytes(a[0]),n=u?this._sock.rQshiftBytes(a[1]):r(this._sock.rQshiftBytes(a[1]));var h=o(n,t,p,this._FBU.width,this._FBU.height);return this._display.renderQ_push({type:"blitRgb",data:h,x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height}),!0}.bind(this),u=function(){var t=!1,s=this._FBU.width*this._FBU.height*this._fb_depth;return 12>s?(t=!0,a=[0,s]):a=RFB.encodingHandlers.getTightCLength(this._sock.rQslice(1,4)),this._FBU.bytes=1+a[0]+a[1],this._sock.rQwait("TIGHT "+e,this._FBU.bytes)?!1:(this._sock.rQshiftBytes(1+a[0]),n=t?this._sock.rQshiftBytes(a[1]):r(this._sock.rQshiftBytes(a[1])),this._display.renderQ_push({type:"blitRgb",data:n,x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height}),!0)}.bind(this),p=this._sock.rQpeek8();if(s=15&p,p>>=4,i=3&p,8===p)e="fill";else if(9===p)e="jpeg";else if(10===p)e="png";else if(4&p)e="filter";else{if(!(4>p))return this._fail("Illegal tight compression received, ctl: "+p);e="copy"}if(t&&("filter"===e||"copy"===e))return this._fail("filter/copy received in tightPNG mode");switch(e){case"fill":this._FBU.bytes+=this._fb_depth;break;case"jpeg":this._FBU.bytes+=3;break;case"png":this._FBU.bytes+=3;break;case"filter":this._FBU.bytes+=2;break;case"copy":}if(this._sock.rQwait("TIGHT "+e,this._FBU.bytes))return!1;switch(e){case"fill":this._sock.rQskip8();var h=this._sock.rQshiftBytes(this._fb_depth);this._display.renderQ_push({type:"fill",x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height,color:[h[2],h[1],h[0]]});break;case"png":case"jpeg":if(a=RFB.encodingHandlers.getTightCLength(this._sock.rQslice(1,4)),this._FBU.bytes=1+a[0]+a[1],this._sock.rQwait("TIGHT "+e,this._FBU.bytes))return!1;this._sock.rQskipBytes(1+a[0]);var f=new Image;f.src="data: image/"+e+RFB.extract_data_uri(this._sock.rQshiftBytes(a[1])),this._display.renderQ_push({type:"img",img:f,x:this._FBU.x,y:this._FBU.y}),f=null;break;case"filter":var m=l[c+1];if(1!==m)throw new Error("Unsupported tight subencoding received, filter: "+m);if(!d())return!1;break;case"copy":if(!u())return!1}return this._FBU.bytes=0,this._FBU.rects--,!0},TIGHT:function(){return this._encHandlers.display_tight(!1)},TIGHT_PNG:function(){return this._encHandlers.display_tight(!0)},last_rect:function(){return this._FBU.rects=0,!0},DesktopSize:function(){return Util.Debug(">> set_desktopsize"),this._fb_width=this._FBU.width,this._fb_height=this._FBU.height,this._onFBResize(this,this._fb_width,this._fb_height),this._display.resize(this._fb_width,this._fb_height),this._timing.fbu_rt_start=(new Date).getTime(),this._FBU.bytes=0,this._FBU.rects--,Util.Debug("<< set_desktopsize"),!0},Cursor:function(){Util.Debug(">> set_cursor");var t=this._FBU.x,e=this._FBU.y,a=this._FBU.width,n=this._FBU.height,s=a*n*this._fb_Bpp,i=Math.floor((a+7)/8)*n;return this._FBU.bytes=s+i,this._sock.rQwait("cursor encoding",this._FBU.bytes)?!1:(this._display.changeCursor(this._sock.rQshiftBytes(s),this._sock.rQshiftBytes(i),t,e,a,n),this._FBU.bytes=0,this._FBU.rects--,Util.Debug("<< set_cursor"),!0)},JPEG_quality_lo:function(){Util.Error("Server sent jpeg_quality pseudo-encoding")},compress_lo:function(){Util.Error("Server sent compress level pseudo-encoding")}}}(),define("vnc-rfb",["vnc-util"],function(){});var XK_VoidSymbol=16777215,XK_BackSpace=65288,XK_Tab=65289,XK_Linefeed=65290,XK_Clear=65291,XK_Return=65293,XK_Pause=65299,XK_Scroll_Lock=65300,XK_Sys_Req=65301,XK_Escape=65307,XK_Delete=65535,XK_Home=65360,XK_Left=65361,XK_Up=65362,XK_Right=65363,XK_Down=65364,XK_Prior=65365,XK_Page_Up=65365,XK_Next=65366,XK_Page_Down=65366,XK_End=65367,XK_Begin=65368,XK_Select=65376,XK_Print=65377,XK_Execute=65378,XK_Insert=65379,XK_Undo=65381,XK_Redo=65382,XK_Menu=65383,XK_Find=65384,XK_Cancel=65385,XK_Help=65386,XK_Break=65387,XK_Mode_switch=65406,XK_script_switch=65406,XK_Num_Lock=65407,XK_KP_Space=65408,XK_KP_Tab=65417,XK_KP_Enter=65421,XK_KP_F1=65425,XK_KP_F2=65426,XK_KP_F3=65427,XK_KP_F4=65428,XK_KP_Home=65429,XK_KP_Left=65430,XK_KP_Up=65431,XK_KP_Right=65432,XK_KP_Down=65433,XK_KP_Prior=65434,XK_KP_Page_Up=65434;XK_KP_Next=65435,XK_KP_Page_Down=65435,XK_KP_End=65436,XK_KP_Begin=65437,XK_KP_Insert=65438,XK_KP_Delete=65439,XK_KP_Equal=65469,XK_KP_Multiply=65450,XK_KP_Add=65451,XK_KP_Separator=65452,XK_KP_Subtract=65453,XK_KP_Decimal=65454,XK_KP_Divide=65455,XK_KP_0=65456,XK_KP_1=65457,XK_KP_2=65458,XK_KP_3=65459,XK_KP_4=65460,XK_KP_5=65461,XK_KP_6=65462,XK_KP_7=65463,XK_KP_8=65464,XK_KP_9=65465,XK_F1=65470,XK_F2=65471,XK_F3=65472,XK_F4=65473,XK_F5=65474,XK_F6=65475,XK_F7=65476,XK_F8=65477,XK_F9=65478,XK_F10=65479,XK_F11=65480,XK_L1=65480,XK_F12=65481,XK_L2=65481,XK_F13=65482,XK_L3=65482,XK_F14=65483,XK_L4=65483,XK_F15=65484,XK_L5=65484,XK_F16=65485,XK_L6=65485,XK_F17=65486,XK_L7=65486,XK_F18=65487,XK_L8=65487,XK_F19=65488,XK_L9=65488,XK_F20=65489,XK_L10=65489,XK_F21=65490,XK_R1=65490,XK_F22=65491,XK_R2=65491,XK_F23=65492,XK_R3=65492,XK_F24=65493,XK_R4=65493,XK_F25=65494,XK_R5=65494,XK_F26=65495,XK_R6=65495,XK_F27=65496,XK_R7=65496,XK_F28=65497,XK_R8=65497,XK_F29=65498,XK_R9=65498,XK_F30=65499,XK_R10=65499,XK_F31=65500,XK_R11=65500,XK_F32=65501,XK_R12=65501,XK_F33=65502,XK_R13=65502,XK_F34=65503,XK_R14=65503,XK_F35=65504,XK_R15=65504,XK_Shift_L=65505,XK_Shift_R=65506,XK_Control_L=65507,XK_Control_R=65508,XK_Caps_Lock=65509,XK_Shift_Lock=65510,XK_Meta_L=65511,XK_Meta_R=65512,XK_Alt_L=65513,XK_Alt_R=65514,XK_Super_L=65515,XK_Super_R=65516,XK_Hyper_L=65517,XK_Hyper_R=65518,XK_ISO_Level3_Shift=65027,XK_space=32,XK_exclam=33,XK_quotedbl=34,XK_numbersign=35,XK_dollar=36,XK_percent=37,XK_ampersand=38,XK_apostrophe=39,XK_quoteright=39,XK_parenleft=40,XK_parenright=41,XK_asterisk=42,XK_plus=43,XK_comma=44,XK_minus=45,XK_period=46,XK_slash=47,XK_0=48,XK_1=49,XK_2=50,XK_3=51,XK_4=52,XK_5=53,XK_6=54,XK_7=55,XK_8=56,XK_9=57,XK_colon=58,XK_semicolon=59,XK_less=60,XK_equal=61,XK_greater=62,XK_question=63,XK_at=64,XK_A=65,XK_B=66,XK_C=67,XK_D=68,XK_E=69,XK_F=70,XK_G=71,XK_H=72,XK_I=73,XK_J=74,XK_K=75,XK_L=76,XK_M=77,XK_N=78,XK_O=79,XK_P=80,XK_Q=81,XK_R=82,XK_S=83,XK_T=84,XK_U=85,XK_V=86,XK_W=87,XK_X=88,XK_Y=89,XK_Z=90,XK_bracketleft=91,XK_backslash=92,XK_bracketright=93,XK_asciicircum=94,XK_underscore=95,XK_grave=96,XK_quoteleft=96,XK_a=97,XK_b=98,XK_c=99,XK_d=100,XK_e=101,XK_f=102,XK_g=103,XK_h=104,XK_i=105,XK_j=106,XK_k=107,XK_l=108,XK_m=109,XK_n=110,XK_o=111,XK_p=112,XK_q=113,XK_r=114,XK_s=115,XK_t=116,XK_u=117,XK_v=118,XK_w=119,XK_x=120,XK_y=121,XK_z=122,XK_braceleft=123,XK_bar=124,XK_braceright=125,XK_asciitilde=126,XK_nobreakspace=160,XK_exclamdown=161,XK_cent=162,XK_sterling=163,XK_currency=164,XK_yen=165,XK_brokenbar=166,XK_section=167,XK_diaeresis=168,XK_copyright=169,XK_ordfeminine=170,XK_guillemotleft=171,XK_notsign=172,XK_hyphen=173,XK_registered=174,XK_macron=175,XK_degree=176,XK_plusminus=177,XK_twosuperior=178,XK_threesuperior=179,XK_acute=180,XK_mu=181,XK_paragraph=182,XK_periodcentered=183,XK_cedilla=184,XK_onesuperior=185,XK_masculine=186,XK_guillemotright=187,XK_onequarter=188,XK_onehalf=189,XK_threequarters=190,XK_questiondown=191,XK_Agrave=192,XK_Aacute=193,XK_Acircumflex=194,XK_Atilde=195,XK_Adiaeresis=196,XK_Aring=197,XK_AE=198,XK_Ccedilla=199,XK_Egrave=200,XK_Eacute=201,XK_Ecircumflex=202,XK_Ediaeresis=203,XK_Igrave=204,XK_Iacute=205,XK_Icircumflex=206,XK_Idiaeresis=207,XK_ETH=208,XK_Eth=208,XK_Ntilde=209,XK_Ograve=210,XK_Oacute=211,XK_Ocircumflex=212,XK_Otilde=213,XK_Odiaeresis=214,XK_multiply=215,XK_Oslash=216,XK_Ooblique=216,XK_Ugrave=217,XK_Uacute=218,XK_Ucircumflex=219,XK_Udiaeresis=220,XK_Yacute=221,XK_THORN=222,XK_Thorn=222,XK_ssharp=223,XK_agrave=224,XK_aacute=225,XK_acircumflex=226,XK_atilde=227,XK_adiaeresis=228,XK_aring=229,XK_ae=230,XK_ccedilla=231,XK_egrave=232,XK_eacute=233,XK_ecircumflex=234,XK_ediaeresis=235,XK_igrave=236,XK_iacute=237,XK_icircumflex=238,XK_idiaeresis=239,XK_eth=240,XK_ntilde=241,XK_ograve=242,XK_oacute=243,XK_ocircumflex=244,XK_otilde=245,XK_odiaeresis=246,XK_division=247,XK_oslash=248,XK_ooblique=248,XK_ugrave=249,XK_uacute=250,XK_ucircumflex=251,XK_udiaeresis=252,XK_yacute=253,XK_thorn=254,XK_ydiaeresis=255,define("vnc-keysym",["vnc-util"],function(){}),define("utils/vnc",["require","vnc-util","vnc-webutil","vnc-base64","vnc-websock","vnc-des","vnc-keysymdef","vnc-keyboard","vnc-input","vnc-display","vnc-jsunzip","vnc-rfb","vnc-keysym","sunstone-config"],function(t){function e(){return d}function a(){d=!0}function n(){d=!1}function s(t){l=new RFB({target:$D("VNC_canvas"),encrypt:"yes"==c.vncWSS,true_color:!0,local_cursor:!0,shared:!0,onUpdateState:o});var e=window.location.hostname,a=c.vncProxyPort,n=t.password,s=t.token,i=t.vm_name,r="?token="+s,d="vnc?";d+="host="+e,d+="&port="+a,d+="&token="+s,d+="&password="+n,d+="&encrypt="+c.vncWSS,d+="&title="+i,$("#open_in_a_new_window").attr("href",d),l.connect(e,a,n,r)}function i(){l&&l.disconnect()}function r(){l&&rfb.sendCtrlAltDel()}function o(t,e,a,n){var s,i,r;switch(s=$D("VNC_status"),i=$D("VNC_status_bar"),r=$D("sendCtrlAltDelButton"),e){case"failed":level="error";break;case"fatal":level="error";break;case"normal":level="normal";break;case"disconnected":level="normal";break;case"loaded":level="normal";break;default:level="warn"}r.disabled="normal"===e?!1:!0,"undefined"!=typeof n&&(i.setAttribute("class","noVNC_status_"+level),s.innerHTML=n)}INCLUDE_URI="bower_components/no-vnc/include/",t("vnc-util"),t("vnc-webutil"),t("vnc-base64"),t("vnc-websock"),t("vnc-des"),t("vnc-keysymdef"),t("vnc-keyboard"),t("vnc-input"),t("vnc-display"),t("vnc-jsunzip"),t("vnc-rfb"),t("vnc-keysym");var l,c=t("sunstone-config"),d=!1;return{lockStatus:e,lock:a,unlock:n,vncCallback:s,disconnect:i,sendCtrlAltDel:r}}),SpiceConn.prototype={send_hdr:function(){var t=new SpiceLinkHeader,e=new SpiceLinkMess;e.connection_id=this.connection_id,e.channel_type=this.type,e.common_caps.push(1<<SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION|1<<SPICE_COMMON_CAP_MINI_HEADER),e.channel_type==SPICE_CHANNEL_PLAYBACK?e.channel_caps.push(1<<SPICE_PLAYBACK_CAP_OPUS):e.channel_type==SPICE_CHANNEL_MAIN&&e.channel_caps.push(1<<SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS),t.size=e.buffer_size();var a=new ArrayBuffer(t.buffer_size()+e.buffer_size());t.to_buffer(a),e.to_buffer(a,t.buffer_size()),DEBUG>1&&console.log("Sending header:"),DEBUG>2&&hexdump_buffer(a),this.ws.send(a)},send_ticket:function(t){var e=new SpiceLinkAuthTicket;e.auth_mechanism=SPICE_COMMON_CAP_AUTH_SPICE,e.encrypted_data=t;var a=new ArrayBuffer(e.buffer_size());e.to_buffer(a),DEBUG>1&&console.log("Sending ticket:"),DEBUG>2&&hexdump_buffer(a),this.ws.send(a)},send_msg:function(t){var e=new ArrayBuffer(t.buffer_size());t.to_buffer(e),this.messages_sent++,DEBUG>0&&console.log(">> hdr "+this.channel_type()+" type "+t.type+" size "+e.byteLength),DEBUG>2&&hexdump_buffer(e),this.ws.send(e)},process_inbound:function(t,e){if(DEBUG>2&&console.log(this.type+": processing message of size "+t.byteLength+"; state is "+this.state),"ready"==this.state)if(void 0==e){var a=new SpiceMiniData(t);a.type>500&&alert("Something has gone very wrong; we think we have message of type "+a.type),0==a.size?(this.process_message(a),this.wire_reader.request(SpiceMiniData.prototype.buffer_size())):(this.wire_reader.request(a.size),this.wire_reader.save_header(a))}else e.data=t,this.process_message(e),this.wire_reader.request(SpiceMiniData.prototype.buffer_size()),this.wire_reader.save_header(void 0);else if("start"==this.state)if(this.reply_hdr=new SpiceLinkHeader(t),this.reply_hdr.magic!=SPICE_MAGIC){this.state="error";var n=new Error("Error: magic mismatch: "+this.reply_hdr.magic);this.report_error(n)}else this.wire_reader.request(this.reply_hdr.size),this.state="link";else if("link"==this.state)if(this.reply_link=new SpiceLinkReply(t),this.reply_link.error){this.state="error";var n=new Error("Error: reply link error "+this.reply_link.error);this.report_error(n)}else this.send_ticket(rsa_encrypt(this.reply_link.pub_key,this.password+String.fromCharCode(0))),this.state="ticket",this.wire_reader.request(SpiceLinkAuthReply.prototype.buffer_size());else if("ticket"==this.state)if(this.auth_reply=new SpiceLinkAuthReply(t),this.auth_reply.auth_code==SPICE_LINK_ERR_OK){if(DEBUG>0&&console.log(this.type+": Connected"),this.type==SPICE_CHANNEL_DISPLAY){var s=new SpiceMsgcDisplayInit,i=new SpiceMiniData;i.build_msg(SPICE_MSGC_DISPLAY_INIT,s),DEBUG>0&&console.log("Request display init"),this.send_msg(i)}this.state="ready",this.wire_reader.request(SpiceMiniData.prototype.buffer_size()),this.timeout&&(window.clearTimeout(this.timeout),delete this.timeout)}else{if(this.state="error",this.auth_reply.auth_code==SPICE_LINK_ERR_PERMISSION_DENIED)var n=new Error("Permission denied.");else var n=new Error("Unexpected link error "+this.auth_reply.auth_code);this.report_error(n)}},process_common_messages:function(t){if(t.type==SPICE_MSG_SET_ACK){var e=new SpiceMsgSetAck(t.data);this.ack_window=e.window,DEBUG>1&&console.log(this.type+": set ack to "+e.window),this.msgs_until_ack=this.ack_window;var a=new SpiceMsgcAckSync(e),n=new SpiceMiniData;return n.build_msg(SPICE_MSGC_ACK_SYNC,a),this.send_msg(n),!0}if(t.type==SPICE_MSG_PING){DEBUG>1&&console.log("ping!");var s=new SpiceMiniData;return s.type=SPICE_MSGC_PONG,t.data&&(s.data=t.data.slice(0,12)),s.size=s.buffer_size(),this.send_msg(s),!0}if(t.type==SPICE_MSG_NOTIFY){var i=new SpiceMsgNotify(t.data);return i.severity==SPICE_NOTIFY_SEVERITY_ERROR?this.log_err(i.message):i.severity==SPICE_NOTIFY_SEVERITY_WARN?this.log_warn(i.message):this.log_info(i.message),!0}return!1},process_message:function(t){var e;if(DEBUG>0&&console.log("<< hdr "+this.channel_type()+" type "+t.type+" size "+(t.data&&t.data.byteLength)),e=this.process_common_messages(t),e||(this.process_channel_message?(e=this.process_channel_message(t),e||this.log_warn(this.type+": Unknown message type "+t.type+"!")):this.log_err(this.type+": No message handlers for this channel; message "+t.type)),void 0!==this.msgs_until_ack&&this.ack_window&&(this.msgs_until_ack--,this.msgs_until_ack<=0)){this.msgs_until_ack=this.ack_window;var a=new SpiceMiniData;a.type=SPICE_MSGC_ACK,this.send_msg(a),DEBUG>1&&console.log(this.type+": sent ack")}return e},channel_type:function(){return this.type==SPICE_CHANNEL_MAIN?"main":this.type==SPICE_CHANNEL_DISPLAY?"display":this.type==SPICE_CHANNEL_INPUTS?"inputs":this.type==SPICE_CHANNEL_CURSOR?"cursor":"unknown-"+this.type},log_info:function(){var t=Array.prototype.join.call(arguments," ");if(console.log(t),this.message_id){var e=document.createElement("p");e.appendChild(document.createTextNode(t)),e.className+="spice-message-info",document.getElementById(this.message_id).appendChild(e)}},log_warn:function(){var t=Array.prototype.join.call(arguments," ");if(console.log("WARNING: "+t),this.message_id){var e=document.createElement("p");e.appendChild(document.createTextNode(t)),e.className+="spice-message-warning",document.getElementById(this.message_id).appendChild(e)}},log_err:function(){var t=Array.prototype.join.call(arguments," ");if(console.log("ERROR: "+t),this.message_id){var e=document.createElement("p");e.appendChild(document.createTextNode(t)),e.className+="spice-message-error",document.getElementById(this.message_id).appendChild(e)}},known_unimplemented:function(t,e){if(!this.warnings[t]||DEBUG>1){var a="";1>=DEBUG&&(a=" [ further notices suppressed ]"),this.log_warn("Unimplemented function "+t+"("+e+")"+a),this.warnings[t]=!0}},report_error:function(t){if(this.log_err(t.toString()),void 0==this.onerror)throw t;this.onerror(t)},report_success:function(t){void 0!=this.onsuccess&&this.onsuccess(t)},cleanup:function(){this.timeout&&(window.clearTimeout(this.timeout),delete this.timeout),this.ws&&(this.ws.close(),this.ws=void 0)},handle_timeout:function(){var t=new Error("Connection timed out.");this.report_error(t)}},define("spice-spiceconn",function(){}),ArrayBuffer.prototype.slice||(ArrayBuffer.prototype.slice=SpiceArrayBufferSlice,console.log("WARNING:  ArrayBuffer.slice() is missing; we are extending ArrayBuffer to compensate")),define("spice-spicearraybuffer",function(){});var SPICE_MAGIC="REDQ",SPICE_VERSION_MAJOR=2,SPICE_VERSION_MINOR=2,SPICE_CONNECT_TIMEOUT=3e4,SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION=0,SPICE_COMMON_CAP_AUTH_SPICE=1,SPICE_COMMON_CAP_AUTH_SASL=2,SPICE_COMMON_CAP_MINI_HEADER=3,SPICE_TICKET_KEY_PAIR_LENGTH=1024,SPICE_TICKET_PUBKEY_BYTES=SPICE_TICKET_KEY_PAIR_LENGTH/8+34,SPICE_LINK_ERR_OK=0,SPICE_LINK_ERR_ERROR=1,SPICE_LINK_ERR_INVALID_MAGIC=2,SPICE_LINK_ERR_INVALID_DATA=3,SPICE_LINK_ERR_VERSION_MISMATCH=4,SPICE_LINK_ERR_NEED_SECURED=5,SPICE_LINK_ERR_NEED_UNSECURED=6,SPICE_LINK_ERR_PERMISSION_DENIED=7,SPICE_LINK_ERR_BAD_CONNECTION_ID=8,SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE=9,SPICE_MSG_MIGRATE=1,SPICE_MSG_MIGRATE_DATA=2,SPICE_MSG_SET_ACK=3,SPICE_MSG_PING=4,SPICE_MSG_WAIT_FOR_CHANNELS=5,SPICE_MSG_DISCONNECTING=6,SPICE_MSG_NOTIFY=7,SPICE_MSG_LIST=8,SPICE_MSG_MAIN_MIGRATE_BEGIN=101,SPICE_MSG_MAIN_MIGRATE_CANCEL=102,SPICE_MSG_MAIN_INIT=103,SPICE_MSG_MAIN_CHANNELS_LIST=104,SPICE_MSG_MAIN_MOUSE_MODE=105,SPICE_MSG_MAIN_MULTI_MEDIA_TIME=106,SPICE_MSG_MAIN_AGENT_CONNECTED=107,SPICE_MSG_MAIN_AGENT_DISCONNECTED=108,SPICE_MSG_MAIN_AGENT_DATA=109,SPICE_MSG_MAIN_AGENT_TOKEN=110,SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST=111,SPICE_MSG_MAIN_MIGRATE_END=112,SPICE_MSG_MAIN_NAME=113,SPICE_MSG_MAIN_UUID=114,SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS=115,SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS=116,SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK=117,SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK=118,SPICE_MSG_END_MAIN=119,SPICE_MSGC_ACK_SYNC=1,SPICE_MSGC_ACK=2,SPICE_MSGC_PONG=3,SPICE_MSGC_MIGRATE_FLUSH_MARK=4,SPICE_MSGC_MIGRATE_DATA=5,SPICE_MSGC_DISCONNECTING=6,SPICE_MSGC_MAIN_CLIENT_INFO=101,SPICE_MSGC_MAIN_MIGRATE_CONNECTED=102,SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR=103,SPICE_MSGC_MAIN_ATTACH_CHANNELS=104,SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST=105,SPICE_MSGC_MAIN_AGENT_START=106,SPICE_MSGC_MAIN_AGENT_DATA=107,SPICE_MSGC_MAIN_AGENT_TOKEN=108,SPICE_MSGC_MAIN_MIGRATE_END=109,SPICE_MSGC_END_MAIN=110,SPICE_MSG_DISPLAY_MODE=101,SPICE_MSG_DISPLAY_MARK=102,SPICE_MSG_DISPLAY_RESET=103,SPICE_MSG_DISPLAY_COPY_BITS=104,SPICE_MSG_DISPLAY_INVAL_LIST=105,SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS=106,SPICE_MSG_DISPLAY_INVAL_PALETTE=107,SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES=108,SPICE_MSG_DISPLAY_STREAM_CREATE=122,SPICE_MSG_DISPLAY_STREAM_DATA=123,SPICE_MSG_DISPLAY_STREAM_CLIP=124,SPICE_MSG_DISPLAY_STREAM_DESTROY=125,SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL=126,SPICE_MSG_DISPLAY_DRAW_FILL=302,SPICE_MSG_DISPLAY_DRAW_OPAQUE=303,SPICE_MSG_DISPLAY_DRAW_COPY=304,SPICE_MSG_DISPLAY_DRAW_BLEND=305,SPICE_MSG_DISPLAY_DRAW_BLACKNESS=306,SPICE_MSG_DISPLAY_DRAW_WHITENESS=307,SPICE_MSG_DISPLAY_DRAW_INVERS=308,SPICE_MSG_DISPLAY_DRAW_ROP3=309,SPICE_MSG_DISPLAY_DRAW_STROKE=310,SPICE_MSG_DISPLAY_DRAW_TEXT=311,SPICE_MSG_DISPLAY_DRAW_TRANSPARENT=312,SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND=313,SPICE_MSG_DISPLAY_SURFACE_CREATE=314,SPICE_MSG_DISPLAY_SURFACE_DESTROY=315,SPICE_MSGC_DISPLAY_INIT=101,SPICE_MSG_INPUTS_INIT=101,SPICE_MSG_INPUTS_KEY_MODIFIERS=102,SPICE_MSG_INPUTS_MOUSE_MOTION_ACK=111,SPICE_MSGC_INPUTS_KEY_DOWN=101,SPICE_MSGC_INPUTS_KEY_UP=102,SPICE_MSGC_INPUTS_KEY_MODIFIERS=103,SPICE_MSGC_INPUTS_MOUSE_MOTION=111,SPICE_MSGC_INPUTS_MOUSE_POSITION=112,SPICE_MSGC_INPUTS_MOUSE_PRESS=113,SPICE_MSGC_INPUTS_MOUSE_RELEASE=114,SPICE_MSG_CURSOR_INIT=101,SPICE_MSG_CURSOR_RESET=102,SPICE_MSG_CURSOR_SET=103,SPICE_MSG_CURSOR_MOVE=104,SPICE_MSG_CURSOR_HIDE=105,SPICE_MSG_CURSOR_TRAIL=106,SPICE_MSG_CURSOR_INVAL_ONE=107,SPICE_MSG_CURSOR_INVAL_ALL=108,SPICE_MSG_PLAYBACK_DATA=101,SPICE_MSG_PLAYBACK_MODE=102,SPICE_MSG_PLAYBACK_START=103,SPICE_MSG_PLAYBACK_STOP=104,SPICE_MSG_PLAYBACK_VOLUME=105,SPICE_MSG_PLAYBACK_MUTE=106,SPICE_MSG_PLAYBACK_LATENCY=107,SPICE_PLAYBACK_CAP_CELT_0_5_1=0,SPICE_PLAYBACK_CAP_VOLUME=1,SPICE_PLAYBACK_CAP_LATENCY=2,SPICE_PLAYBACK_CAP_OPUS=3,SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE=0,SPICE_MAIN_CAP_NAME_AND_UUID=1,SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS=2,SPICE_MAIN_CAP_SEAMLESS_MIGRATE=3,SPICE_AUDIO_DATA_MODE_INVALID=0,SPICE_AUDIO_DATA_MODE_RAW=1,SPICE_AUDIO_DATA_MODE_CELT_0_5_1=2,SPICE_AUDIO_DATA_MODE_OPUS=3,SPICE_AUDIO_FMT_INVALID=0,SPICE_AUDIO_FMT_S16=1,SPICE_CHANNEL_MAIN=1,SPICE_CHANNEL_DISPLAY=2,SPICE_CHANNEL_INPUTS=3,SPICE_CHANNEL_CURSOR=4,SPICE_CHANNEL_PLAYBACK=5,SPICE_CHANNEL_RECORD=6,SPICE_CHANNEL_TUNNEL=7,SPICE_CHANNEL_SMARTCARD=8,SPICE_CHANNEL_USBREDIR=9,SPICE_SURFACE_FLAGS_PRIMARY=1,SPICE_NOTIFY_SEVERITY_INFO=0,SPICE_NOTIFY_SEVERITY_WARN=1,SPICE_NOTIFY_SEVERITY_ERROR=2,SPICE_MOUSE_MODE_SERVER=1,SPICE_MOUSE_MODE_CLIENT=2,SPICE_MOUSE_MODE_MASK=3,SPICE_CLIP_TYPE_NONE=0,SPICE_CLIP_TYPE_RECTS=1,SPICE_IMAGE_TYPE_BITMAP=0,SPICE_IMAGE_TYPE_QUIC=1,SPICE_IMAGE_TYPE_RESERVED=2,SPICE_IMAGE_TYPE_LZ_PLT=100,SPICE_IMAGE_TYPE_LZ_RGB=101,SPICE_IMAGE_TYPE_GLZ_RGB=102,SPICE_IMAGE_TYPE_FROM_CACHE=103,SPICE_IMAGE_TYPE_SURFACE=104,SPICE_IMAGE_TYPE_JPEG=105,SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS=106,SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB=107,SPICE_IMAGE_TYPE_JPEG_ALPHA=108,SPICE_IMAGE_FLAGS_CACHE_ME=1,SPICE_IMAGE_FLAGS_HIGH_BITS_SET=2,SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME=4,SPICE_BITMAP_FLAGS_PAL_CACHE_ME=1,SPICE_BITMAP_FLAGS_PAL_FROM_CACHE=2,SPICE_BITMAP_FLAGS_TOP_DOWN=4,SPICE_BITMAP_FLAGS_MASK=7,SPICE_BITMAP_FMT_INVALID=0,SPICE_BITMAP_FMT_1BIT_LE=1,SPICE_BITMAP_FMT_1BIT_BE=2,SPICE_BITMAP_FMT_4BIT_LE=3,SPICE_BITMAP_FMT_4BIT_BE=4,SPICE_BITMAP_FMT_8BIT=5,SPICE_BITMAP_FMT_16BIT=6,SPICE_BITMAP_FMT_24BIT=7,SPICE_BITMAP_FMT_32BIT=8,SPICE_BITMAP_FMT_RGBA=9,SPICE_CURSOR_FLAGS_NONE=1,SPICE_CURSOR_FLAGS_CACHE_ME=2,SPICE_CURSOR_FLAGS_FROM_CACHE=4,SPICE_CURSOR_FLAGS_MASK=7,SPICE_MOUSE_BUTTON_MASK_LEFT=1,SPICE_MOUSE_BUTTON_MASK_MIDDLE=2,SPICE_MOUSE_BUTTON_MASK_RIGHT=4,SPICE_MOUSE_BUTTON_MASK_MASK=7,SPICE_MOUSE_BUTTON_INVALID=0,SPICE_MOUSE_BUTTON_LEFT=1,SPICE_MOUSE_BUTTON_MIDDLE=2,SPICE_MOUSE_BUTTON_RIGHT=3,SPICE_MOUSE_BUTTON_UP=4,SPICE_MOUSE_BUTTON_DOWN=5,SPICE_BRUSH_TYPE_NONE=0,SPICE_BRUSH_TYPE_SOLID=1,SPICE_BRUSH_TYPE_PATTERN=2,SPICE_SURFACE_FMT_INVALID=0,SPICE_SURFACE_FMT_1_A=1,SPICE_SURFACE_FMT_8_A=8,SPICE_SURFACE_FMT_16_555=16,SPICE_SURFACE_FMT_32_xRGB=32,SPICE_SURFACE_FMT_16_565=80,SPICE_SURFACE_FMT_32_ARGB=96,SPICE_ROPD_INVERS_SRC=1,SPICE_ROPD_INVERS_BRUSH=2,SPICE_ROPD_INVERS_DEST=4,SPICE_ROPD_OP_PUT=8,SPICE_ROPD_OP_OR=16,SPICE_ROPD_OP_AND=32,SPICE_ROPD_OP_XOR=64,SPICE_ROPD_OP_BLACKNESS=128,SPICE_ROPD_OP_WHITENESS=256,SPICE_ROPD_OP_INVERS=512,SPICE_ROPD_INVERS_RES=1024,SPICE_ROPD_MASK=2047,LZ_IMAGE_TYPE_INVALID=0,LZ_IMAGE_TYPE_PLT1_LE=1,LZ_IMAGE_TYPE_PLT1_BE=2,LZ_IMAGE_TYPE_PLT4_LE=3,LZ_IMAGE_TYPE_PLT4_BE=4,LZ_IMAGE_TYPE_PLT8=5,LZ_IMAGE_TYPE_RGB16=6,LZ_IMAGE_TYPE_RGB24=7,LZ_IMAGE_TYPE_RGB32=8,LZ_IMAGE_TYPE_RGBA=9,LZ_IMAGE_TYPE_XXXA=10,QUIC_IMAGE_TYPE_INVALID=0,QUIC_IMAGE_TYPE_GRAY=1,QUIC_IMAGE_TYPE_RGB16=2,QUIC_IMAGE_TYPE_RGB24=3,QUIC_IMAGE_TYPE_RGB32=4,QUIC_IMAGE_TYPE_RGBA=5,SPICE_INPUT_MOTION_ACK_BUNCH=4,SPICE_CURSOR_TYPE_ALPHA=0,SPICE_CURSOR_TYPE_MONO=1,SPICE_CURSOR_TYPE_COLOR4=2,SPICE_CURSOR_TYPE_COLOR8=3,SPICE_CURSOR_TYPE_COLOR16=4,SPICE_CURSOR_TYPE_COLOR24=5,SPICE_CURSOR_TYPE_COLOR32=6,SPICE_VIDEO_CODEC_TYPE_MJPEG=1,VD_AGENT_PROTOCOL=1,VD_AGENT_MAX_DATA_SIZE=2048,VD_AGENT_MOUSE_STATE=1,VD_AGENT_MONITORS_CONFIG=2,VD_AGENT_REPLY=3,VD_AGENT_CLIPBOARD=4,VD_AGENT_DISPLAY_CONFIG=5,VD_AGENT_ANNOUNCE_CAPABILITIES=6,VD_AGENT_CLIPBOARD_GRAB=7,VD_AGENT_CLIPBOARD_REQUEST=8,VD_AGENT_CLIPBOARD_RELEASE=9,VD_AGENT_FILE_XFER_START=10,VD_AGENT_FILE_XFER_STATUS=11,VD_AGENT_FILE_XFER_DATA=12,VD_AGENT_CLIENT_DISCONNECTED=13,VD_AGENT_MAX_CLIPBOARD=14,VD_AGENT_CAP_MOUSE_STATE=0,VD_AGENT_CAP_MONITORS_CONFIG=1,VD_AGENT_CAP_REPLY=2,VD_AGENT_CAP_CLIPBOARD=3,VD_AGENT_CAP_DISPLAY_CONFIG=4,VD_AGENT_CAP_CLIPBOARD_BY_DEMAND=5,VD_AGENT_CAP_CLIPBOARD_SELECTION=6,VD_AGENT_CAP_SPARSE_MONITORS_CONFIG=7,VD_AGENT_CAP_GUEST_LINEEND_LF=8,VD_AGENT_CAP_GUEST_LINEEND_CRLF=9,VD_AGENT_CAP_MAX_CLIPBOARD=10,VD_AGENT_END_CAP=11,VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA=0,VD_AGENT_FILE_XFER_STATUS_CANCELLED=1,VD_AGENT_FILE_XFER_STATUS_ERROR=2,VD_AGENT_FILE_XFER_STATUS_SUCCESS=3;
+define("spice-enums",function(){});var KEY_Escape=1,KEY_1=2,KEY_2=3,KEY_3=4,KEY_4=5,KEY_5=6,KEY_6=7,KEY_7=8,KEY_8=9,KEY_9=10,KEY_0=11,KEY_Minus=12,KEY_Equal=13,KEY_BackSpace=14,KEY_Tab=15,KEY_Q=16,KEY_W=17,KEY_E=18,KEY_R=19,KEY_T=20,KEY_Y=21,KEY_U=22,KEY_I=23,KEY_O=24,KEY_P=25,KEY_LBrace=26,KEY_RBrace=27,KEY_Enter=28,KEY_LCtrl=29,KEY_A=30,KEY_S=31,KEY_D=32,KEY_F=33,KEY_G=34,KEY_H=35,KEY_J=36,KEY_K=37,KEY_L=38,KEY_SemiColon=39,KEY_Quote=40,KEY_Tilde=41,KEY_ShiftL=42,KEY_BSlash=43,KEY_Z=44,KEY_X=45,KEY_C=46,KEY_V=47,KEY_B=48,KEY_N=49,KEY_M=50,KEY_Comma=51,KEY_Period=52,KEY_Slash=53,KEY_ShiftR=54,KEY_KP_Multiply=55,KEY_Alt=56,KEY_Space=57,KEY_CapsLock=58,KEY_F1=59,KEY_F2=60,KEY_F3=61,KEY_F4=62,KEY_F5=63,KEY_F6=64,KEY_F7=65,KEY_F8=66,KEY_F9=67,KEY_F10=68,KEY_NumLock=69,KEY_ScrollLock=70,KEY_KP_7=71,KEY_KP_8=72,KEY_KP_9=73,KEY_KP_Minus=74,KEY_KP_4=75,KEY_KP_5=76,KEY_KP_6=77,KEY_KP_Plus=78,KEY_KP_1=79,KEY_KP_2=80,KEY_KP_3=81,KEY_KP_0=82,KEY_KP_Decimal=83,KEY_SysReqest=84,KEY_Less=86,KEY_F11=87,KEY_F12=88,KEY_Prefix0=96,KEY_Prefix1=97;define("spice-atKeynames",function(){});var DEBUG=0,DUMP_DRAWS=!1,DUMP_CANVASES=!1,common_scanmap=[];common_scanmap["Q".charCodeAt(0)]=KEY_Q,common_scanmap["W".charCodeAt(0)]=KEY_W,common_scanmap["E".charCodeAt(0)]=KEY_E,common_scanmap["R".charCodeAt(0)]=KEY_R,common_scanmap["T".charCodeAt(0)]=KEY_T,common_scanmap["Y".charCodeAt(0)]=KEY_Y,common_scanmap["U".charCodeAt(0)]=KEY_U,common_scanmap["I".charCodeAt(0)]=KEY_I,common_scanmap["O".charCodeAt(0)]=KEY_O,common_scanmap["P".charCodeAt(0)]=KEY_P,common_scanmap["A".charCodeAt(0)]=KEY_A,common_scanmap["S".charCodeAt(0)]=KEY_S,common_scanmap["D".charCodeAt(0)]=KEY_D,common_scanmap["F".charCodeAt(0)]=KEY_F,common_scanmap["G".charCodeAt(0)]=KEY_G,common_scanmap["H".charCodeAt(0)]=KEY_H,common_scanmap["J".charCodeAt(0)]=KEY_J,common_scanmap["K".charCodeAt(0)]=KEY_K,common_scanmap["L".charCodeAt(0)]=KEY_L,common_scanmap["Z".charCodeAt(0)]=KEY_Z,common_scanmap["X".charCodeAt(0)]=KEY_X,common_scanmap["C".charCodeAt(0)]=KEY_C,common_scanmap["V".charCodeAt(0)]=KEY_V,common_scanmap["B".charCodeAt(0)]=KEY_B,common_scanmap["N".charCodeAt(0)]=KEY_N,common_scanmap["M".charCodeAt(0)]=KEY_M,common_scanmap[" ".charCodeAt(0)]=KEY_Space,common_scanmap[13]=KEY_Enter,common_scanmap[27]=KEY_Escape,common_scanmap[8]=KEY_BackSpace,common_scanmap[9]=KEY_Tab,common_scanmap[16]=KEY_ShiftL,common_scanmap[17]=KEY_LCtrl,common_scanmap[18]=KEY_Alt,common_scanmap[20]=KEY_CapsLock,common_scanmap[144]=KEY_NumLock,common_scanmap[112]=KEY_F1,common_scanmap[113]=KEY_F2,common_scanmap[114]=KEY_F3,common_scanmap[115]=KEY_F4,common_scanmap[116]=KEY_F5,common_scanmap[117]=KEY_F6,common_scanmap[118]=KEY_F7,common_scanmap[119]=KEY_F8,common_scanmap[120]=KEY_F9,common_scanmap[121]=KEY_F10,common_scanmap[122]=KEY_F11,common_scanmap[123]=KEY_F12,common_scanmap[42]=99,common_scanmap[19]=101,common_scanmap[111]=57397,common_scanmap[106]=57399,common_scanmap[36]=57415,common_scanmap[38]=57416,common_scanmap[33]=57417,common_scanmap[37]=57419,common_scanmap[39]=57421,common_scanmap[35]=57423,common_scanmap[40]=57424,common_scanmap[34]=57425,common_scanmap[45]=57426,common_scanmap[46]=57427,common_scanmap[44]=10807,common_scanmap["1".charCodeAt(0)]=KEY_1,common_scanmap["2".charCodeAt(0)]=KEY_2,common_scanmap["3".charCodeAt(0)]=KEY_3,common_scanmap["4".charCodeAt(0)]=KEY_4,common_scanmap["5".charCodeAt(0)]=KEY_5,common_scanmap["6".charCodeAt(0)]=KEY_6,common_scanmap["7".charCodeAt(0)]=KEY_7,common_scanmap["8".charCodeAt(0)]=KEY_8,common_scanmap["9".charCodeAt(0)]=KEY_9,common_scanmap["0".charCodeAt(0)]=KEY_0,common_scanmap[145]=KEY_ScrollLock,common_scanmap[103]=KEY_KP_7,common_scanmap[104]=KEY_KP_8,common_scanmap[105]=KEY_KP_9,common_scanmap[100]=KEY_KP_4,common_scanmap[101]=KEY_KP_5,common_scanmap[102]=KEY_KP_6,common_scanmap[107]=KEY_KP_Plus,common_scanmap[97]=KEY_KP_1,common_scanmap[98]=KEY_KP_2,common_scanmap[99]=KEY_KP_3,common_scanmap[96]=KEY_KP_0,common_scanmap[110]=KEY_KP_Decimal,common_scanmap[191]=KEY_Slash,common_scanmap[190]=KEY_Period,common_scanmap[188]=KEY_Comma,common_scanmap[220]=KEY_BSlash,common_scanmap[192]=KEY_Tilde,common_scanmap[222]=KEY_Quote,common_scanmap[219]=KEY_LBrace,common_scanmap[221]=KEY_RBrace,common_scanmap[91]=57435,common_scanmap[92]=57436,common_scanmap[93]=57437;var firefox_scanmap=[];firefox_scanmap[173]=KEY_Minus,firefox_scanmap[109]=KEY_Minus,firefox_scanmap[61]=KEY_Equal,firefox_scanmap[59]=KEY_SemiColon;var DOM_scanmap=[];DOM_scanmap[189]=KEY_Minus,DOM_scanmap[187]=KEY_Equal,DOM_scanmap[186]=KEY_SemiColon,define("spice-utils",function(){});var rfc2083_crc_table=Array(256),rfc2083_crc_table_computed=0;PngIHDR.prototype={to_buffer:function(t,e){e=e||0;var a=e,n=new SpiceDataView(t);return n.setUint32(e,this.buffer_size()-12),e+=4,n.setUint8(e,"I".charCodeAt(0)),e++,n.setUint8(e,"H".charCodeAt(0)),e++,n.setUint8(e,"D".charCodeAt(0)),e++,n.setUint8(e,"R".charCodeAt(0)),e++,n.setUint32(e,this.width),e+=4,n.setUint32(e,this.height),e+=4,n.setUint8(e,this.depth),e++,n.setUint8(e,this.type),e++,n.setUint8(e,this.compression),e++,n.setUint8(e,this.filter),e++,n.setUint8(e,this.interlace),e++,n.setUint32(e,crc32(t,a+4,this.buffer_size()-8)),e+=4},buffer_size:function(){return 25}},adler.prototype.update=function(t){this.s1+=t,this.s1%=65521,this.s2+=this.s1,this.s2%=65521},PngIDAT.prototype={to_buffer:function(t,e){e=e||0;var a,n,s,i=e,r=new SpiceDataView(t),o=new adler;r.setUint32(e,this.buffer_size()-12),e+=4,r.setUint8(e,"I".charCodeAt(0)),e++,r.setUint8(e,"D".charCodeAt(0)),e++,r.setUint8(e,"A".charCodeAt(0)),e++,r.setUint8(e,"T".charCodeAt(0)),e++,r.setUint8(e,120),e++,r.setUint8(e,1),e++,r.setUint8(e,128),e++,r.setUint16(e,this.data.byteLength+this.height),e+=2,r.setUint16(e,~(this.data.byteLength+this.height)),e+=2;var l=new Uint8Array(this.data);for(s=0,n=0;n<this.height;n++)for(r.setUint8(e,0),e++,o.update(0),a=0;a<this.width&&s<this.data.byteLength;a++)o.update(l[s]),r.setUint8(e,l[s++]),e++,o.update(l[s]),r.setUint8(e,l[s++]),e++,o.update(l[s]),r.setUint8(e,l[s++]),e++,o.update(l[s]),r.setUint8(e,l[s++]),e++;return r.setUint16(e,o.s2),e+=2,r.setUint16(e,o.s1),e+=2,r.setUint32(e,crc32(t,i+4,this.buffer_size()-8)),e+=4},buffer_size:function(){return 12+this.data.byteLength+this.height+4+2+1+2+2}},PngIEND.prototype={to_buffer:function(t,e){e=e||0;var a=e,n=new SpiceDataView(t);return n.setUint32(e,this.buffer_size()-12),e+=4,n.setUint8(e,"I".charCodeAt(0)),e++,n.setUint8(e,"E".charCodeAt(0)),e++,n.setUint8(e,"N".charCodeAt(0)),e++,n.setUint8(e,"D".charCodeAt(0)),e++,n.setUint32(e,crc32(t,a+4,this.buffer_size()-8)),e+=4},buffer_size:function(){return 12}},define("spice-png",function(){}),define("spice-lz",function(){});var encoder,QUIC_IMAGE_TYPE_INVALID=0,QUIC_IMAGE_TYPE_GRAY=1,QUIC_IMAGE_TYPE_RGB16=2,QUIC_IMAGE_TYPE_RGB24=3,QUIC_IMAGE_TYPE_RGB32=4,QUIC_IMAGE_TYPE_RGBA=5,DEFevol=3,DEFwmimax=6,DEFwminext=2048,need_init=!0,DEFmaxclen=26,evol=DEFevol,wmimax=DEFwmimax,wminext=DEFwminext,family_5bpc={nGRcodewords:[0,0,0,0,0,0,0,0],notGRcwlen:[0,0,0,0,0,0,0,0],notGRprefixmask:[0,0,0,0,0,0,0,0],notGRsuffixlen:[0,0,0,0,0,0,0,0],xlatU2L:[0,0,0,0,0,0,0,0],xlatL2U:[0,0,0,0,0,0,0,0]},family_8bpc={nGRcodewords:[0,0,0,0,0,0,0,0],notGRcwlen:[0,0,0,0,0,0,0,0],notGRprefixmask:[0,0,0,0,0,0,0,0],notGRsuffixlen:[0,0,0,0,0,0,0,0],xlatU2L:[0,0,0,0,0,0,0,0],xlatL2U:[0,0,0,0,0,0,0,0]},bppmask=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215,33554431,67108863,134217727,268435455,536870911,1073741823,2147483647,4294967295],zeroLUT=[],besttrigtab=[[550,900,800,700,500,350,300,200,180,180,160],[110,550,900,800,550,400,350,250,140,160,140],[100,120,550,900,700,500,400,300,220,250,160]],J=[0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,5,5,6,6,7,7,8,9,10,11,12,13,14,15],lzeroes=[8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],tabrand_chaos=[46495042,893548311,794435923,2453991765,2077388039,894197842,1462934312,697534094,1826128012,343623392,2581292719,3811265708,459739748,2638427270,1654964626,101227083,2654850628,3668700691,572794346,2758751005,3445133904,2344099199,3367450297,898927923,3618406352,1606297603,754696453,20823118,2050458127,972590750,3990194068,3305596553,4239238564,1690498157,3015324227,2306127097,1510321853,548392192,971157512,2292288069,1611390505,4086766286,4084927083,1883326811,1891043243,113180603,1107690783,3778825955,3248980775,2443839100,2190866218,1932072870,495393613,1078522166,4051963518,1784694977,1768732442,2146763203,264646923,1474361405,2361552500,296035746,2489922759,2094565616,2409465348,1334241083,72483606,3740181004,4057920662,1734898312,4114662834,574624900,880305546,3258472262,26713132,1571648456,52557195,4043234286,2458021343,676064371,1528437109,64953873,546717185,2709319979,1947039598,2812723004,28691684,286829174,4235176970,3465707163,12526951,2154766700,3165032534,2036061161,3386656087,2301212354,2023576300,1061142336,3105452904,2743866805,3283373992,3397596080,3085489552,3196092395,3210707808,3651022684,925444321,2088074316,230011220,3223248386,533229176,523863486,3028311159,13140218,2538347282,900399636,3000796173,1526771255,3541282854,2992674461,2135722105,389334227,1225164337,3119947809,1803959919,3471171263,704170491,1407019136,1924534819,526887421,168782227,333811993,298623278,4268451686,381087740,2542899140,3266880867,2498950977,200969370,3511909096,3252303004,2268881098,2499828613,2606499854,3163208665,3790254546,1840025712,1319758833,3771674836,519421307,3512796222,1563402978,4284300462,2263719815,715250337,3178437172,2660191010,2982332026,3256309961,2709659997,3434092872,2367065591,69438718,915160508,183164069,3134331940,175242981,2680543346,1421955782,4231173251,1736652874,3990568476,1710820912,2286604440,3464587098,1261907837,1757387321,1128554270,1090050251,2429922486,1288729218,882830086,211637042,1376462063,2147615815,1737974929,798170275,4271572277,4241687072,1638524620,2760366295,1065115089,2097227717,1224023317,1625204849,3383303351,1488272307,2640186157,1649047732,819719707,2615091943,502645401,760628135,4108137983,63606742,1404337880,1865161130,4272996852,1239761976,790984678,3213322601,1917062825,4195069880,1962259360,2111002573,2311983960,1861406170,511141875,2797510619,1331661048,3130608186,147483493,3767089176,2650841450,4096523407,2574446300,1956416337,851468126,3607527519,1811658703,3642821136,832691095,2453312857,933732854,94341217,3393797730,1695907457,2405722077,2877685663,2469507058,2249636341,3988608661,4001245617,825934927,3103985967,1127151177,3691656896,1640967098,2168932645,2830550957,3998822878,3002602893,1509651465,775813869,2599574079,3791574229],rgb32_pixel_pad=3,rgb32_pixel_r=2,rgb32_pixel_g=1,rgb32_pixel_b=0,rgb32_pixel_size=4;if(QuicModel.prototype={n_buckets:0,n_buckets_ptrs:0,repfirst:0,firstsize:0,repnext:0,mulsize:0,levels:0},QuicBucket.prototype={bestcode:0,reste:function(t){this.bestcode=t,this.counters=[0,0,0,0,0,0,0,0]},update_model_8bpc:function(t,e,a){var n,s=a-1,i=this.counters[s]+=golomb_code_len_8bpc(e,s);for(n=a-2;n>=0;n--){var r=this.counters[n]+=golomb_code_len_8bpc(e,n);i>r&&(s=n,i=r)}if(this.bestcode=s,i>t.wm_trigger)for(n=0;a>n;n++)this.counters[n]=this.counters[n]>>>1}},QuicFamilyStat.prototype={fill_model_structures:function(t){var e,a=0,n=0,s=t.repfirst+1,i=t.firstsize;do{e=n?a+1:0,--s||(s=t.repnext,i*=t.mulsize),a=e+i-1,a+i>=t.levels&&(a=t.levels-1),this.buckets_buf[n]=new QuicBucket;var r;for(r=e;a>=r;r++)this.buckets_ptrs[r]=this.buckets_buf[n];n++}while(a<t.levels-1);return!0}},QuicChannel.prototype={reste:function(t){var e;if(this.correlate_row={zero:0,row:[]},8==t){for(e=0;e<this.model_8bpc.n_buckets;e++)this.family_stat_8bpc.buckets_buf[e].reste(7);this.buckets_ptrs=this.family_stat_8bpc.buckets_ptrs}else{if(5!=t)return console.log("quic: %s: bad bpc %d\n",__FUNCTION__,t),!1;for(e=0;e<this.model_5bpc.n_buckets;e++)this.family_stat_8bpc.buckets_buf[e].reste(4);this.buckets_ptrs=this.family_stat_5bpc.buckets_ptrs}return this.state.reste(),!0}},CommonState.prototype={waitcnt:0,tabrand_seed:255,wm_trigger:0,wmidx:0,wmileft:wminext,melcstate:0,melclen:0,melcorder:0,set_wm_trigger:function(){var t=this.wmidx;t>10&&(t=10),this.wm_trigger=besttrigtab[Math.floor(evol/2)][t]},reste:function(){this.waitcnt=0,this.tabrand_seed=255,this.wmidx=0,this.wmileft=wminext,this.set_wm_trigger(),this.melcstate=0,this.melclen=J[0],this.melcorder=1<<this.melclen},tabrand:function(){return this.tabrand_seed++,tabrand_chaos[255&this.tabrand_seed]}},QuicEncoder.prototype={type:0,width:0,height:0,io_idx:0,io_available_bits:0,io_word:0,io_next_word:0,io_now:0,io_end:0,rows_completed:0},QuicEncoder.prototype.reste=function(t){return this.rgb_state.reste(),this.io_now=t,this.io_end=this.io_now.length,this.io_idx=0,this.rows_completed=0,!0},QuicEncoder.prototype.read_io_word=function(){if(this.io_idx>=this.io_end)throw"quic: out of data";this.io_next_word=this.io_now[this.io_idx++]|this.io_now[this.io_idx++]<<8|this.io_now[this.io_idx++]<<16|this.io_now[this.io_idx++]<<24},QuicEncoder.prototype.decode_eatbits=function(t){this.io_word=this.io_word<<t;var e=this.io_available_bits-t;e>=0?(this.io_available_bits=e,this.io_word|=this.io_next_word>>>this.io_available_bits):(e=-1*e,this.io_word|=this.io_next_word<<e,this.read_io_word(),this.io_available_bits=32-e,this.io_word|=this.io_next_word>>>this.io_available_bits)},QuicEncoder.prototype.decode_eat32bits=function(){this.decode_eatbits(16),this.decode_eatbits(16)},QuicEncoder.prototype.reste_channels=function(t){var e;for(e=0;4>e;e++)if(!this.channels[e].reste(t))return!1;return!0},QuicEncoder.prototype.quic_decode_begin=function(t){if(!this.reste(t))return!1;this.io_idx=0,this.io_next_word=this.io_now[this.io_idx++]|this.io_now[this.io_idx++]<<8|this.io_now[this.io_idx++]<<16|this.io_now[this.io_idx++]<<24,this.io_word=this.io_next_word,this.io_available_bits=0;var e=this.io_word;if(this.decode_eat32bits(),1128879441!=e)return console.log("quic: bad magic "+e.toString(16)),!1;var a=this.io_word;if(this.decode_eat32bits(),0!=a)return console.log("quic: bad version "+a.toString(16)),!1;this.type=this.io_word,this.decode_eat32bits(),this.width=this.io_word,this.decode_eat32bits(),this.height=this.io_word,this.decode_eat32bits();var n=quic_image_bpc(this.type);return this.reste_channels(n)?!0:!1},QuicEncoder.prototype.quic_rgb32_uncompress_row0_seg=function(t,e,a,n,s,i){var r,o,l,c=3;if(t)r=t+this.rgb_state.waitcnt;else{e[rgb32_pixel_pad]=0,o=0;do l=golomb_decoding_8bpc(this.channels[o].buckets_ptrs[this.channels[o].correlate_row.zero].bestcode,this.io_word),this.channels[o].correlate_row.row[0]=l.rc,e[2-o]=255&family_8bpc.xlatL2U[l.rc],this.decode_eatbits(l.codewordlen);while(++o<c);if(this.rgb_state.waitcnt)--this.rgb_state.waitcnt;else{this.rgb_state.waitcnt=this.rgb_state.tabrand()&n,o=0;do this.channels[o].buckets_ptrs[this.channels[o].correlate_row.zero].update_model_8bpc(this.rgb_state,this.channels[o].correlate_row.row[0],s);while(++o<c)}r=++t+this.rgb_state.waitcnt}for(;a>r;){for(;r>=t;t++){e[t*rgb32_pixel_size+rgb32_pixel_pad]=0,o=0;do l=golomb_decoding_8bpc(this.channels[o].buckets_ptrs[this.channels[o].correlate_row.row[t-1]].bestcode,this.io_word),this.channels[o].correlate_row.row[t]=l.rc,e[t*rgb32_pixel_size+(2-o)]=family_8bpc.xlatL2U[l.rc]+e[(t-1)*rgb32_pixel_size+(2-o)]&i,this.decode_eatbits(l.codewordlen);while(++o<c)}o=0;do this.channels[o].buckets_ptrs[this.channels[o].correlate_row.row[r-1]].update_model_8bpc(this.rgb_state,this.channels[o].correlate_row.row[r],s);while(++o<c);r=t+(this.rgb_state.tabrand()&n)}for(;a>t;t++){e[t*rgb32_pixel_size+rgb32_pixel_pad]=0,o=0;do l=golomb_decoding_8bpc(this.channels[o].buckets_ptrs[this.channels[o].correlate_row.row[t-1]].bestcode,this.io_word),this.channels[o].correlate_row.row[t]=l.rc,e[t*rgb32_pixel_size+(2-o)]=family_8bpc.xlatL2U[l.rc]+e[(t-1)*rgb32_pixel_size+(2-o)]&i,this.decode_eatbits(l.codewordlen);while(++o<c)}this.rgb_state.waitcnt=r-a},QuicEncoder.prototype.quic_rgb32_uncompress_row0=function(t){for(var e=8,a=255,n=0,s=this.width;wmimax>this.rgb_state.wmidx&&this.rgb_state.wmileft<=s;)this.rgb_state.wmileft&&(this.quic_rgb32_uncompress_row0_seg(n,t,n+this.rgb_state.wmileft,bppmask[this.rgb_state.wmidx],e,a),n+=this.rgb_state.wmileft,s-=this.rgb_state.wmileft),this.rgb_state.wmidx++,this.rgb_state.set_wm_trigger(),this.rgb_state.wmileft=wminext;s&&(this.quic_rgb32_uncompress_row0_seg(n,t,n+s,bppmask[this.rgb_state.wmidx],e,a),wmimax>this.rgb_state.wmidx&&(this.rgb_state.wmileft-=s))},QuicEncoder.prototype.quic_rgb32_uncompress_row_seg=function(t,e,a,n,s,i){var r,o,l=3,c=bppmask[this.rgb_state.wmidx],d=0,u=0,p=0;if(a)u=a+this.rgb_state.waitcnt;else{e[rgb32_pixel_pad]=0,o=0;do r=golomb_decoding_8bpc(this.channels[o].buckets_ptrs[this.channels[o].correlate_row.zero].bestcode,this.io_word),this.channels[o].correlate_row.row[0]=r.rc,e[2-o]=family_8bpc.xlatL2U[this.channels[o].correlate_row.row[0]]+t[2-o]&i,this.decode_eatbits(r.codewordlen);while(++o<l);if(this.rgb_state.waitcnt)--this.rgb_state.waitcnt;else{this.rgb_state.waitcnt=this.rgb_state.tabrand()&c,o=0;do this.channels[o].buckets_ptrs[this.channels[o].correlate_row.zero].update_model_8bpc(this.rgb_state,this.channels[o].correlate_row.row[0],s);while(++o<l)}u=++a+this.rgb_state.waitcnt}for(;;){for(var h=0;n>u&&!h;){for(;u>=a&&!h;a++){var f=a*rgb32_pixel_size,m=(a-1)*rgb32_pixel_size,_=(a-2)*rgb32_pixel_size;if(t[m+rgb32_pixel_r]==t[f+rgb32_pixel_r]&&t[m+rgb32_pixel_g]==t[f+rgb32_pixel_g]&&t[m+rgb32_pixel_b]==t[f+rgb32_pixel_b]&&d!=a&&a>2&&e[m+rgb32_pixel_r]==e[_+rgb32_pixel_r]&&e[m+rgb32_pixel_g]==e[_+rgb32_pixel_g]&&e[m+rgb32_pixel_b]==e[_+rgb32_pixel_b]){for(this.rgb_state.waitcnt=u-a,d=a,p=a+this.decode_run(this.rgb_state);p>a;a++){var f=a*rgb32_pixel_size,m=(a-1)*rgb32_pixel_size;e[f+rgb32_pixel_pad]=0,e[f+rgb32_pixel_r]=e[m+rgb32_pixel_r],e[f+rgb32_pixel_g]=e[m+rgb32_pixel_g],e[f+rgb32_pixel_b]=e[m+rgb32_pixel_b]}if(a==n)return;u=a+this.rgb_state.waitcnt,h=1;break}o=0,e[f+rgb32_pixel_pad]=0;do{var b=this.channels[o],v=b.correlate_row;r=golomb_decoding_8bpc(b.buckets_ptrs[v.row[a-1]].bestcode,this.io_word),v.row[a]=r.rc,e[f+(2-o)]=family_8bpc.xlatL2U[r.rc]+(e[m+(2-o)]+t[f+(2-o)]>>1)&i,this.decode_eatbits(r.codewordlen)}while(++o<l)}if(h)break;o=0;do this.channels[o].buckets_ptrs[this.channels[o].correlate_row.row[u-1]].update_model_8bpc(this.rgb_state,this.channels[o].correlate_row.row[u],s);while(++o<l);u=a+(this.rgb_state.tabrand()&c)}for(;n>a&&!h;a++){var f=a*rgb32_pixel_size,m=(a-1)*rgb32_pixel_size,_=(a-2)*rgb32_pixel_size;if(t[m+rgb32_pixel_r]==t[f+rgb32_pixel_r]&&t[m+rgb32_pixel_g]==t[f+rgb32_pixel_g]&&t[m+rgb32_pixel_b]==t[f+rgb32_pixel_b]&&d!=a&&a>2&&e[m+rgb32_pixel_r]==e[_+rgb32_pixel_r]&&e[m+rgb32_pixel_g]==e[_+rgb32_pixel_g]&&e[m+rgb32_pixel_b]==e[_+rgb32_pixel_b]){for(this.rgb_state.waitcnt=u-a,d=a,p=a+this.decode_run(this.rgb_state);p>a;a++){var f=a*rgb32_pixel_size,m=(a-1)*rgb32_pixel_size;e[f+rgb32_pixel_pad]=0,e[f+rgb32_pixel_r]=e[m+rgb32_pixel_r],e[f+rgb32_pixel_g]=e[m+rgb32_pixel_g],e[f+rgb32_pixel_b]=e[m+rgb32_pixel_b]}if(a==n)return;u=a+this.rgb_state.waitcnt,h=1;break}e[f+rgb32_pixel_pad]=0,o=0;do r=golomb_decoding_8bpc(this.channels[o].buckets_ptrs[this.channels[o].correlate_row.row[a-1]].bestcode,this.io_word),this.channels[o].correlate_row.row[a]=r.rc,e[f+(2-o)]=family_8bpc.xlatL2U[r.rc]+(e[m+(2-o)]+t[f+(2-o)]>>1)&i,this.decode_eatbits(r.codewordlen);while(++o<l)}if(!h)return void(this.rgb_state.waitcnt=u-n)}},QuicEncoder.prototype.decode_run=function(t){for(var e=0;;){var a,n=~(this.io_word>>>24)>>>0&255,s=zeroLUT[n];for(a=1;s>=a;a++)e+=t.melcorder,t.melcstate<32&&(t.melclen=J[++t.melcstate],t.melcorder=1<<t.melclen);if(8!=s){this.decode_eatbits(s+1);break}this.decode_eatbits(8)}return t.melclen&&(e+=this.io_word>>>32-t.melclen,this.decode_eatbits(t.melclen)),t.melcstate&&(t.melclen=J[--t.melcstate],t.melcorder=1<<t.melclen),e},QuicEncoder.prototype.quic_rgb32_uncompress_row=function(t,e){for(var a=8,n=255,s=0,i=this.width;wmimax>this.rgb_state.wmidx&&this.rgb_state.wmileft<=i;)this.rgb_state.wmileft&&(this.quic_rgb32_uncompress_row_seg(t,e,s,s+this.rgb_state.wmileft,a,n),s+=this.rgb_state.wmileft,i-=this.rgb_state.wmileft),this.rgb_state.wmidx++,this.rgb_state.set_wm_trigger(),this.rgb_state.wmileft=wminext;i&&(this.quic_rgb32_uncompress_row_seg(t,e,s,s+i,a,n),wmimax>this.rgb_state.wmidx&&(this.rgb_state.wmileft-=i))},QuicEncoder.prototype.quic_four_uncompress_row0_seg=function(t,e,a,n,s,i,r,o){var l,c;for(0==e?(c=golomb_decoding_8bpc(t.buckets_ptrs[a.zero].bestcode,this.io_word),a.row[0]=c.rc,n[rgb32_pixel_pad]=family_8bpc.xlatL2U[c.rc],this.decode_eatbits(c.codewordlen),t.state.waitcnt?--t.state.waitcnt:(t.state.waitcnt=t.state.tabrand()&i,t.buckets_ptrs[a.zero].update_model_8bpc(t.state,a.row[0],r)),l=++e+t.state.waitcnt):l=e+t.state.waitcnt;s>l;){for(var d;l>=e;e++)d=t.buckets_ptrs[a.row[e-1]],c=golomb_decoding_8bpc(d.bestcode,this.io_word),a.row[e]=c.rc,n[e*rgb32_pixel_size+rgb32_pixel_pad]=family_8bpc.xlatL2U[c.rc]+n[(e-1)*rgb32_pixel_size+rgb32_pixel_pad]&o,this.decode_eatbits(c.codewordlen);d.update_model_8bpc(t.state,a.row[l],r),l=e+(t.state.tabrand()&i)}for(;s>e;e++)c=golomb_decoding_8bpc(t.buckets_ptrs[a.row[e-1]].bestcode,this.io_word),a.row[e]=c.rc,n[e*rgb32_pixel_size+rgb32_pixel_pad]=family_8bpc.xlatL2U[c.rc]+n[(e-1)*rgb32_pixel_size+rgb32_pixel_pad]&o,this.decode_eatbits(c.codewordlen);t.state.waitcnt=l-s},QuicEncoder.prototype.quic_four_uncompress_row0=function(t,e){for(var a=8,n=255,s=t.correlate_row,i=0,r=this.width;wmimax>t.state.wmidx&&t.state.wmileft<=r;)t.state.wmileft&&(this.quic_four_uncompress_row0_seg(t,i,s,e,i+t.state.wmileft,bppmask[t.state.wmidx],a,n),i+=t.state.wmileft,r-=t.state.wmileft),t.state.wmidx++,t.state.set_wm_trigger(),t.state.wmileft=wminext;r&&(this.quic_four_uncompress_row0_seg(t,i,s,e,i+r,bppmask[t.state.wmidx],a,n),wmimax>t.state.wmidx&&(t.state.wmileft-=r))},QuicEncoder.prototype.quic_four_uncompress_row_seg=function(t,e,a,n,s,i,r,o){var l,c,d,u=bppmask[t.state.wmidx],p=0;for(0==s?(d=golomb_decoding_8bpc(t.buckets_ptrs[e.zero].bestcode,this.io_word),e.row[0]=d.rc,n[rgb32_pixel_pad]=family_8bpc.xlatL2U[d.rc]+a[rgb32_pixel_pad]&o,this.decode_eatbits(d.codewordlen),t.state.waitcnt?--t.state.waitcnt:(t.state.waitcnt=t.state.tabrand()&u,t.buckets_ptrs[e.zero].update_model_8bpc(t.state,e.row[0],r)),l=++s+t.state.waitcnt):l=s+t.state.waitcnt;;){for(var h=0;i>l&&!h;){for(var f;l>=s&&!h;s++){var m=s*rgb32_pixel_size,_=(s-1)*rgb32_pixel_size,b=(s-2)*rgb32_pixel_size;if(a[_+rgb32_pixel_pad]==a[m+rgb32_pixel_pad]&&p!=s&&s>2&&n[_+rgb32_pixel_pad]==n[b+rgb32_pixel_pad]){for(t.state.waitcnt=l-s,p=s,c=s+this.decode_run(t.state);c>s;s++){var m=s*rgb32_pixel_size,_=(s-1)*rgb32_pixel_size;n[m+rgb32_pixel_pad]=n[_+rgb32_pixel_pad]}if(s==i)return;l=s+t.state.waitcnt,h=1;break}f=t.buckets_ptrs[e.row[s-1]],d=golomb_decoding_8bpc(f.bestcode,this.io_word),e.row[s]=d.rc,n[m+rgb32_pixel_pad]=family_8bpc.xlatL2U[d.rc]+(n[_+rgb32_pixel_pad]+a[m+rgb32_pixel_pad]>>1)&o,this.decode_eatbits(d.codewordlen)}if(h)break;f.update_model_8bpc(t.state,e.row[l],r),l=s+(t.state.tabrand()&u)}for(;i>s&&!h;s++){var m=s*rgb32_pixel_size,_=(s-1)*rgb32_pixel_size,b=(s-2)*rgb32_pixel_size;if(a[_+rgb32_pixel_pad]==a[m+rgb32_pixel_pad]&&p!=s&&s>2&&n[_+rgb32_pixel_pad]==n[b+rgb32_pixel_pad]){for(t.state.waitcnt=l-s,p=s,c=s+this.decode_run(t.state);c>s;s++){var m=s*rgb32_pixel_size,_=(s-1)*rgb32_pixel_size;n[m+rgb32_pixel_pad]=n[_+rgb32_pixel_pad]}if(s==i)return;l=s+t.state.waitcnt,h=1;break}d=golomb_decoding_8bpc(t.buckets_ptrs[e.row[s-1]].bestcode,this.io_word),e.row[s]=d.rc,n[m+rgb32_pixel_pad]=family_8bpc.xlatL2U[d.rc]+(n[_+rgb32_pixel_pad]+a[m+rgb32_pixel_pad]>>1)&o,this.decode_eatbits(d.codewordlen)}if(!h)return void(t.state.waitcnt=l-i)}},QuicEncoder.prototype.quic_four_uncompress_row=function(t,e,a){for(var n=8,s=255,i=t.correlate_row,r=0,o=this.width;wmimax>t.state.wmidx&&t.state.wmileft<=o;)t.state.wmileft&&(this.quic_four_uncompress_row_seg(t,i,e,a,r,r+t.state.wmileft,n,s),r+=t.state.wmileft,o-=t.state.wmileft),t.state.wmidx++,t.state.set_wm_trigger(),t.state.wmileft=wminext;o&&(this.quic_four_uncompress_row_seg(t,i,e,a,r,r+o,n,s),wmimax>t.state.wmidx&&(t.state.wmileft-=o))},QuicEncoder.prototype.quic_decode=function(t,e){var a;switch(this.type){case QUIC_IMAGE_TYPE_RGB32:case QUIC_IMAGE_TYPE_RGB24:for(this.channels[0].correlate_row.zero=0,this.channels[1].correlate_row.zero=0,this.channels[2].correlate_row.zero=0,this.quic_rgb32_uncompress_row0(t),this.rows_completed++,a=1;a<this.height;a++){var n=t;t=n.subarray(e),this.channels[0].correlate_row.zero=this.channels[0].correlate_row.row[0],this.channels[1].correlate_row.zero=this.channels[1].correlate_row.row[0],this.channels[2].correlate_row.zero=this.channels[2].correlate_row.row[0],this.quic_rgb32_uncompress_row(n,t),this.rows_completed++}break;case QUIC_IMAGE_TYPE_RGB16:return console.log("quic: unsupported output format\n"),!1;case QUIC_IMAGE_TYPE_RGBA:for(this.channels[0].correlate_row.zero=0,this.channels[1].correlate_row.zero=0,this.channels[2].correlate_row.zero=0,this.quic_rgb32_uncompress_row0(t),this.channels[3].correlate_row.zero=0,this.quic_four_uncompress_row0(this.channels[3],t),this.rows_completed++,a=1;a<this.height;a++){var n=t;t=n.subarray(e),this.channels[0].correlate_row.zero=this.channels[0].correlate_row.row[0],this.channels[1].correlate_row.zero=this.channels[1].correlate_row.row[0],this.channels[2].correlate_row.zero=this.channels[2].correlate_row.row[0],this.quic_rgb32_uncompress_row(n,t),this.channels[3].correlate_row.zero=this.channels[3].correlate_row.row[0],this.quic_four_uncompress_row(encoder.channels[3],n,t),this.rows_completed++}break;case QUIC_IMAGE_TYPE_GRAY:return console.log("quic: unsupported output format\n"),!1;case QUIC_IMAGE_TYPE_INVALID:default:return console.log("quic: bad image type\n"),!1}return!0},QuicEncoder.prototype.simple_quic_decode=function(t){var e=4;if(!this.quic_decode_begin(t))return void 0;if(this.type!=QUIC_IMAGE_TYPE_RGB32&&this.type!=QUIC_IMAGE_TYPE_RGB24&&this.type!=QUIC_IMAGE_TYPE_RGBA)return void 0;var a=new Uint8Array(this.width*this.height*4);return a[0]=69,this.quic_decode(a,this.width*e)?a:void 0},SpiceQuic.prototype={from_dv:function(t,e,a){if(!encoder)throw"quic: no quic encoder";this.data_size=t.getUint32(e,!0),e+=4;var n=new Uint8Array(a.slice(e));return this.outptr=encoder.simple_quic_decode(n),this.outptr&&(this.type=encoder.type,this.width=encoder.width,this.height=encoder.height),e+=n.length}},need_init){need_init=!1,family_init(family_8bpc,8,DEFmaxclen),family_init(family_5bpc,5,DEFmaxclen);var i,j,k,l;for(j=k=1,l=8,i=0;256>i;++i)zeroLUT[i]=l,--k,0==k&&(k=j,--l,j*=2);if(encoder=new QuicEncoder,!encoder)throw"quic: failed to create encoder"}define("spice-quic",function(){}),define("spice-bitmap",function(){}),SpiceDataView.prototype={getUint8:function(t){return this.u8[t]},getUint16:function(t,e){var a=1,n=0;return e&&(a=0,n=1),this.u8[t+n]<<8|this.u8[t+a]},getUint32:function(t,e){var a=2,n=0;return e&&(a=0,n=2),this.getUint16(t+n,e)<<16|this.getUint16(t+a,e)},getUint64:function(t,e){var a=4,n=0;return e&&(a=0,n=4),this.getUint32(t+n,e)<<32|this.getUint32(t+a,e)},setUint8:function(t,e){this.u8[t]=255&e},setUint16:function(t,e,a){var n=1,s=0;a&&(n=0,s=1),this.u8[t+s]=(65535&e)>>8,this.u8[t+n]=255&e},setUint32:function(t,e,a){var n=2,s=0;a&&(n=0,s=2),this.setUint16(t+s,(4294967295&e)>>16,a),this.setUint16(t+n,65535&e,a)},setUint64:function(t,e,a){var n=4,s=0;a&&(n=0,s=4),this.setUint32(t+s,(0x10000000000000000&e)>>32,a),this.setUint32(t+n,4294967295&e,a)}},define("spice-spicedataview",function(){}),SpiceChannelId.prototype={from_dv:function(t,e){return this.type=t.getUint8(e,!0),e++,this.id=t.getUint8(e,!0),e++,e}},SpiceRect.prototype={from_dv:function(t,e){return this.top=t.getUint32(e,!0),e+=4,this.left=t.getUint32(e,!0),e+=4,this.bottom=t.getUint32(e,!0),e+=4,this.right=t.getUint32(e,!0),e+=4},is_same_size:function(t){return this.bottom-this.top==t.bottom-t.top&&this.right-this.left==t.right-t.left?!0:!1}},SpiceClipRects.prototype={from_dv:function(t,e,a){var n;for(this.num_rects=t.getUint32(e,!0),e+=4,this.num_rects>0&&(this.rects=[]),n=0;n<this.num_rects;n++)this.rects[n]=new SpiceRect,e=this.rects[n].from_dv(t,e,a);return e}},SpiceClip.prototype={from_dv:function(t,e,a){return this.type=t.getUint8(e,!0),e++,this.type==SPICE_CLIP_TYPE_RECTS&&(this.rects=new SpiceClipRects,e=this.rects.from_dv(t,e,a)),e}},SpiceImageDescriptor.prototype={from_dv:function(t,e){return this.id=t.getUint64(e,!0),e+=8,this.type=t.getUint8(e,!0),e++,this.flags=t.getUint8(e,!0),e++,this.width=t.getUint32(e,!0),e+=4,this.height=t.getUint32(e,!0),e+=4}},SpicePalette.prototype={from_dv:function(t,e){var a;for(this.unique=t.getUint64(e,!0),e+=8,this.num_ents=t.getUint16(e,!0),e+=2,this.ents=[],a=0;a<this.num_ents;a++)this.ents[a]=t.getUint32(e,!0),e+=4;return e}},SpiceBitmap.prototype={from_dv:function(t,e,a){if(this.format=t.getUint8(e,!0),e++,this.flags=t.getUint8(e,!0),e++,this.x=t.getUint32(e,!0),e+=4,this.y=t.getUint32(e,!0),e+=4,this.stride=t.getUint32(e,!0),e+=4,this.flags&SPICE_BITMAP_FLAGS_PAL_FROM_CACHE)this.palette_id=t.getUint64(e,!0),e+=8;else{var n=t.getUint32(e,!0);e+=4,0==n?this.palette=null:(this.palette=new SpicePalette,this.palette.from_dv(t,n,a))}return this.data=a.slice(e),e+=this.data.byteLength}},SpiceImage.prototype={from_dv:function(t,e,a){if(this.descriptor=new SpiceImageDescriptor,e=this.descriptor.from_dv(t,e,a),this.descriptor.type==SPICE_IMAGE_TYPE_LZ_RGB){this.lz_rgb=new Object,this.lz_rgb.length=t.getUint32(e,!0),e+=4;var n=e;this.lz_rgb.magic="";for(var s=3;s>=0;s--)this.lz_rgb.magic+=String.fromCharCode(t.getUint8(e+s));e+=4,this.lz_rgb.version=t.getUint32(e),e+=4,this.lz_rgb.type=t.getUint32(e),e+=4,this.lz_rgb.width=t.getUint32(e),e+=4,this.lz_rgb.height=t.getUint32(e),e+=4,this.lz_rgb.stride=t.getUint32(e),e+=4,this.lz_rgb.top_down=t.getUint32(e),e+=4;var i=e-n;this.lz_rgb.data=a.slice(e,this.lz_rgb.length+e-i),e+=this.lz_rgb.data.byteLength}if(this.descriptor.type==SPICE_IMAGE_TYPE_BITMAP&&(this.bitmap=new SpiceBitmap,e=this.bitmap.from_dv(t,e,a)),this.descriptor.type==SPICE_IMAGE_TYPE_SURFACE&&(this.surface_id=t.getUint32(e,!0),e+=4),this.descriptor.type==SPICE_IMAGE_TYPE_JPEG&&(this.jpeg=new Object,this.jpeg.data_size=t.getUint32(e,!0),e+=4,this.jpeg.data=a.slice(e),e+=this.jpeg.data.byteLength),this.descriptor.type==SPICE_IMAGE_TYPE_JPEG_ALPHA){this.jpeg_alpha=new Object,this.jpeg_alpha.flags=t.getUint8(e,!0),e+=1,this.jpeg_alpha.jpeg_size=t.getUint32(e,!0),e+=4,this.jpeg_alpha.data_size=t.getUint32(e,!0),e+=4,this.jpeg_alpha.data=a.slice(e,this.jpeg_alpha.jpeg_size+e),e+=this.jpeg_alpha.data.byteLength,this.jpeg_alpha.alpha=new Object,this.jpeg_alpha.alpha.length=this.jpeg_alpha.data_size-this.jpeg_alpha.jpeg_size;var n=e;this.jpeg_alpha.alpha.magic="";for(var s=3;s>=0;s--)this.jpeg_alpha.alpha.magic+=String.fromCharCode(t.getUint8(e+s));e+=4,this.jpeg_alpha.alpha.version=t.getUint32(e),e+=4,this.jpeg_alpha.alpha.type=t.getUint32(e),e+=4,this.jpeg_alpha.alpha.width=t.getUint32(e),e+=4,this.jpeg_alpha.alpha.height=t.getUint32(e),e+=4,this.jpeg_alpha.alpha.stride=t.getUint32(e),e+=4,this.jpeg_alpha.alpha.top_down=t.getUint32(e),e+=4;var i=e-n;this.jpeg_alpha.alpha.data=a.slice(e,this.jpeg_alpha.alpha.length+e-i),e+=this.jpeg_alpha.alpha.data.byteLength}return this.descriptor.type==SPICE_IMAGE_TYPE_QUIC&&(this.quic=new SpiceQuic,e=this.quic.from_dv(t,e,a)),e}},SpiceQMask.prototype={from_dv:function(t,e,a){this.flags=t.getUint8(e,!0),e++,this.pos=new SpicePoint,e=this.pos.from_dv(t,e,a);
+var n=t.getUint32(e,!0);return e+=4,0==n?(this.bitmap=null,e):(this.bitmap=new SpiceImage,this.bitmap.from_dv(t,n,a))}},SpicePattern.prototype={from_dv:function(t,e,a){var n=t.getUint32(e,!0);return e+=4,0==n?this.pat=null:(this.pat=new SpiceImage,this.pat.from_dv(t,n,a)),this.pos=new SpicePoint,this.pos.from_dv(t,e,a)}},SpiceBrush.prototype={from_dv:function(t,e,a){return this.type=t.getUint8(e,!0),e++,this.type==SPICE_BRUSH_TYPE_SOLID?(this.color=t.getUint32(e,!0),e+=4):this.type==SPICE_BRUSH_TYPE_PATTERN&&(this.pattern=new SpicePattern,e=this.pattern.from_dv(t,e,a)),e}},SpiceFill.prototype={from_dv:function(t,e,a){return this.brush=new SpiceBrush,e=this.brush.from_dv(t,e,a),this.rop_descriptor=t.getUint16(e,!0),e+=2,this.mask=new SpiceQMask,this.mask.from_dv(t,e,a)}},SpiceCopy.prototype={from_dv:function(t,e,a){var n=t.getUint32(e,!0);return e+=4,0==n?this.src_bitmap=null:(this.src_bitmap=new SpiceImage,this.src_bitmap.from_dv(t,n,a)),this.src_area=new SpiceRect,e=this.src_area.from_dv(t,e,a),this.rop_descriptor=t.getUint16(e,!0),e+=2,this.scale_mode=t.getUint8(e,!0),e++,this.mask=new SpiceQMask,this.mask.from_dv(t,e,a)}},SpicePoint16.prototype={from_dv:function(t,e){return this.x=t.getUint16(e,!0),e+=2,this.y=t.getUint16(e,!0),e+=2}},SpicePoint.prototype={from_dv:function(t,e){return this.x=t.getUint32(e,!0),e+=4,this.y=t.getUint32(e,!0),e+=4}},SpiceCursorHeader.prototype={from_dv:function(t,e){return this.unique=t.getUint64(e,!0),e+=8,this.type=t.getUint8(e,!0),e++,this.width=t.getUint16(e,!0),e+=2,this.height=t.getUint16(e,!0),e+=2,this.hot_spot_x=t.getUint16(e,!0),e+=2,this.hot_spot_y=t.getUint16(e,!0),e+=2}},SpiceCursor.prototype={from_dv:function(t,e,a){return this.flags=t.getUint16(e,!0),e+=2,this.flags&SPICE_CURSOR_FLAGS_NONE?this.header=null:(this.header=new SpiceCursorHeader,e=this.header.from_dv(t,e,a),this.data=a.slice(e),e+=this.data.byteLength),e}},SpiceSurface.prototype={from_dv:function(t,e){return this.surface_id=t.getUint32(e,!0),e+=4,this.width=t.getUint32(e,!0),e+=4,this.height=t.getUint32(e,!0),e+=4,this.format=t.getUint32(e,!0),e+=4,this.flags=t.getUint32(e,!0),e+=4}},define("spice-spicetype",function(){}),SpiceLinkHeader.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.magic="";for(var n=0;4>n;n++)this.magic+=String.fromCharCode(a.getUint8(e+n));e+=4,this.major_version=a.getUint32(e,!0),e+=4,this.minor_version=a.getUint32(e,!0),e+=4,this.size=a.getUint32(e,!0),e+=4},to_buffer:function(t,e){e=e||0;for(var a=new SpiceDataView(t),n=0;4>n;n++)a.setUint8(e+n,this.magic.charCodeAt(n));e+=4,a.setUint32(e,this.major_version,!0),e+=4,a.setUint32(e,this.minor_version,!0),e+=4,a.setUint32(e,this.size,!0),e+=4},buffer_size:function(){return 16}},SpiceLinkMess.prototype={from_buffer:function(t,e){e=e||0;var a,n=e,s=new SpiceDataView(t);this.connection_id=s.getUint32(e,!0),e+=4,this.channel_type=s.getUint8(e,!0),e++,this.channel_id=s.getUint8(e,!0),e++;var i=s.getUint32(e,!0);e+=4;var r=s.getUint32(e,!0);e+=4;var o=s.getUint32(e,!0);for(e+=4,e=n+o,this.common_caps=[],a=0;i>a;a++)this.common_caps.unshift(s.getUint32(e,!0)),e+=4;for(this.channel_caps=[],a=0;r>a;a++)this.channel_caps.unshift(s.getUint32(e,!0)),e+=4},to_buffer:function(t,e){e=e||0;var a,n=e,s=new SpiceDataView(t);for(s.setUint32(e,this.connection_id,!0),e+=4,s.setUint8(e,this.channel_type,!0),e++,s.setUint8(e,this.channel_id,!0),e++,s.setUint32(e,this.common_caps.length,!0),e+=4,s.setUint32(e,this.channel_caps.length,!0),e+=4,s.setUint32(e,e-n+4,!0),e+=4,a=0;a<this.common_caps.length;a++)s.setUint32(e,this.common_caps[a],!0),e+=4;for(a=0;a<this.channel_caps.length;a++)s.setUint32(e,this.channel_caps[a],!0),e+=4},buffer_size:function(){return 18+4*this.common_caps.length+4*this.channel_caps.length}},SpiceLinkReply.prototype={from_buffer:function(t,e){e=e||0;var a,n=e,s=new SpiceDataView(t);this.error=s.getUint32(e,!0),e+=4,this.pub_key=create_rsa_from_mb(t,e),e+=SPICE_TICKET_PUBKEY_BYTES;var i=s.getUint32(e,!0);e+=4;var r=s.getUint32(e,!0);e+=4;var o=s.getUint32(e,!0);for(e+=4,e=n+o,this.common_caps=[],a=0;i>a;a++)this.common_caps.unshift(s.getUint32(e,!0)),e+=4;for(this.channel_caps=[],a=0;r>a;a++)this.channel_caps.unshift(s.getUint32(e,!0)),e+=4}},SpiceLinkAuthTicket.prototype={to_buffer:function(t,e){e=e||0;var a,n=new SpiceDataView(t);for(n.setUint32(e,this.auth_mechanism,!0),e+=4,a=0;SPICE_TICKET_KEY_PAIR_LENGTH/8>a;a++)this.encrypted_data&&a<this.encrypted_data.length?n.setUint8(e,this.encrypted_data[a],!0):n.setUint8(e,0,!0),e++},buffer_size:function(){return 4+SPICE_TICKET_KEY_PAIR_LENGTH/8}},SpiceLinkAuthReply.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.auth_code=a.getUint32(e,!0),e+=4},buffer_size:function(){return 4}},SpiceMiniData.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.type=a.getUint16(e,!0),e+=2,this.size=a.getUint32(e,!0),e+=4,t.byteLength>e&&(this.data=t.slice(e),e+=this.data.byteLength)},to_buffer:function(t,e){e=e||0;var a,n=new SpiceDataView(t);if(n.setUint16(e,this.type,!0),e+=2,n.setUint32(e,this.data?this.data.byteLength:0,!0),e+=4,this.data&&this.data.byteLength>0){var s=new Uint8Array(this.data);for(a=0;a<s.length;a++,e++)n.setUint8(e,s[a],!0)}},build_msg:function(t,e){this.type=t,this.size=e.buffer_size(),this.data=new ArrayBuffer(this.size),e.to_buffer(this.data)},buffer_size:function(){return this.data?6+this.data.byteLength:6}},SpiceMsgChannels.prototype={from_buffer:function(t,e){e=e||0;var a,n=new SpiceDataView(t);for(this.num_of_channels=n.getUint32(e,!0),e+=4,a=0;a<this.num_of_channels;a++){var s=new SpiceChannelId;e=s.from_dv(n,e,t),this.channels.push(s)}}},SpiceMsgMainInit.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.session_id=a.getUint32(e,!0),e+=4,this.display_channels_hint=a.getUint32(e,!0),e+=4,this.supported_mouse_modes=a.getUint32(e,!0),e+=4,this.current_mouse_mode=a.getUint32(e,!0),e+=4,this.agent_connected=a.getUint32(e,!0),e+=4,this.agent_tokens=a.getUint32(e,!0),e+=4,this.multi_media_time=a.getUint32(e,!0),e+=4,this.ram_hint=a.getUint32(e,!0),e+=4}},SpiceMsgMainMouseMode.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.supported_modes=a.getUint16(e,!0),e+=2,this.current_mode=a.getUint16(e,!0),e+=2}},SpiceMsgMainAgentData.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.protocol=a.getUint32(e,!0),e+=4,this.type=a.getUint32(e,!0),e+=4,this.opaque=a.getUint64(e,!0),e+=8,this.size=a.getUint32(e,!0),e+=4,t.byteLength>e&&(this.data=t.slice(e),e+=this.data.byteLength)}},SpiceMsgMainAgentTokens.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.num_tokens=a.getUint32(e,!0),e+=4}},SpiceMsgSetAck.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.generation=a.getUint32(e,!0),e+=4,this.window=a.getUint32(e,!0),e+=4}},SpiceMsgcAckSync.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);a.setUint32(e,this.generation,!0),e+=4},buffer_size:function(){return 4}},SpiceMsgcMainMouseModeRequest.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);a.setUint16(e,this.mode,!0),e+=2},buffer_size:function(){return 2}},SpiceMsgcMainAgentStart.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);a.setUint32(e,this.num_tokens,!0),e+=4},buffer_size:function(){return 4}},SpiceMsgcMainAgentData.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);a.setUint32(e,this.protocol,!0),e+=4,a.setUint32(e,this.type,!0),e+=4,a.setUint64(e,this.opaque,!0),e+=8,a.setUint32(e,this.size,!0),e+=4,this.data.to_buffer(t,e)},buffer_size:function(){return 20+this.data.buffer_size()}},VDAgentAnnounceCapabilities.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);a.setUint32(e,this.request,!0),e+=4,a.setUint32(e,this.caps,!0),e+=4},from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.request=a.getUint32(e,!0),e+=4,this.caps=a.getUint32(e,!0),e+=4},buffer_size:function(){return 8}},VDAgentMonitorsConfig.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);a.setUint32(e,this.num_mon,!0),e+=4,a.setUint32(e,this.flags,!0),e+=4,a.setUint32(e,this.height,!0),e+=4,a.setUint32(e,this.width,!0),e+=4,a.setUint32(e,this.depth,!0),e+=4,a.setUint32(e,this.x,!0),e+=4,a.setUint32(e,this.y,!0),e+=4},buffer_size:function(){return 28}},VDAgentFileXferStatusMessage.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);a.setUint32(e,this.id,!0),e+=4,a.setUint32(e,this.result,!0),e+=4},from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.id=a.getUint32(e,!0),e+=4,this.result=a.getUint32(e,!0),e+=4},buffer_size:function(){return 8}},VDAgentFileXferStartMessage.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);a.setUint32(e,this.id,!0),e+=4;for(var n=0;n<this.string.length;n++,e++)a.setUint8(e,this.string.charCodeAt(n))},buffer_size:function(){return 4+this.string.length+1}},VDAgentFileXferDataMessage.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);if(a.setUint32(e,this.id,!0),e+=4,a.setUint64(e,this.size,!0),e+=8,this.data&&this.data.byteLength>0)for(var n=new Uint8Array(this.data),s=0;s<n.length;s++,e++)a.setUint8(e,n[s])},buffer_size:function(){return 12+this.size}},SpiceMsgNotify.prototype={from_buffer:function(t,e){e=e||0;var a,n=new SpiceDataView(t);for(this.time_stamp=n.getUint64(e,!0),e+=8,this.severity=n.getUint32(e,!0),e+=4,this.visibility=n.getUint32(e,!0),e+=4,this.what=n.getUint32(e,!0),e+=4,this.message_len=n.getUint32(e,!0),e+=4,this.message="",a=0;a<this.message_len;a++){var s=n.getUint8(e,!0);e++,this.message+=String.fromCharCode(s)}}},SpiceMsgcDisplayInit.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);a.setUint8(e,this.pixmap_cache_id,!0),e++,a.setUint64(e,this.pixmap_cache_size,!0),e+=8,a.setUint8(e,this.glz_dictionary_id,!0),e++,a.setUint32(e,this.glz_dictionary_window_size,!0),e+=4},buffer_size:function(){return 14}},SpiceMsgDisplayBase.prototype={from_dv:function(t,e,a){return this.surface_id=t.getUint32(e,!0),e+=4,this.box=new SpiceRect,e=this.box.from_dv(t,e,a),this.clip=new SpiceClip,this.clip.from_dv(t,e,a)}},SpiceMsgDisplayDrawCopy.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.base=new SpiceMsgDisplayBase,e=this.base.from_dv(a,e,t),this.data=new SpiceCopy,this.data.from_dv(a,e,t)}},SpiceMsgDisplayDrawFill.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.base=new SpiceMsgDisplayBase,e=this.base.from_dv(a,e,t),this.data=new SpiceFill,this.data.from_dv(a,e,t)}},SpiceMsgDisplayCopyBits.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.base=new SpiceMsgDisplayBase,e=this.base.from_dv(a,e,t),this.src_pos=new SpicePoint,this.src_pos.from_dv(a,e,t)}},SpiceMsgSurfaceCreate.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.surface=new SpiceSurface,this.surface.from_dv(a,e,t)}},SpiceMsgSurfaceDestroy.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.surface_id=a.getUint32(e,!0),e+=4}},SpiceMsgInputsInit.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.keyboard_modifiers=a.getUint16(e,!0),e+=2}},SpiceMsgInputsKeyModifiers.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.keyboard_modifiers=a.getUint16(e,!0),e+=2}},SpiceMsgCursorInit.prototype={from_buffer:function(t,e,a){e=e||0;var n=new SpiceDataView(t);return this.position=new SpicePoint16,e=this.position.from_dv(n,e,a),this.trail_length=n.getUint16(e,!0),e+=2,this.trail_frequency=n.getUint16(e,!0),e+=2,this.visible=n.getUint8(e,!0),e++,this.cursor=new SpiceCursor,this.cursor.from_dv(n,e,t)}},SpiceMsgPlaybackData.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.time=a.getUint32(e,!0),e+=4,t.byteLength>e&&(this.data=t.slice(e),e+=this.data.byteLength),e}},SpiceMsgPlaybackMode.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.time=a.getUint32(e,!0),e+=4,this.mode=a.getUint16(e,!0),e+=2,t.byteLength>e&&(this.data=t.slice(e),e+=this.data.byteLength),e}},SpiceMsgPlaybackStart.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return this.channels=a.getUint32(e,!0),e+=4,this.format=a.getUint16(e,!0),e+=2,this.frequency=a.getUint32(e,!0),e+=4,this.time=a.getUint32(e,!0),e+=4}},SpiceMsgCursorSet.prototype={from_buffer:function(t,e,a){e=e||0;var n=new SpiceDataView(t);return this.position=new SpicePoint16,e=this.position.from_dv(n,e,a),this.visible=n.getUint8(e,!0),e++,this.cursor=new SpiceCursor,this.cursor.from_dv(n,e,t)}},SpiceMsgcMousePosition.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return a.setUint32(e,this.x,!0),e+=4,a.setUint32(e,this.y,!0),e+=4,a.setUint16(e,this.buttons_state,!0),e+=2,a.setUint8(e,this.display_id,!0),e+=1},buffer_size:function(){return 11}},SpiceMsgcMouseMotion.prototype.to_buffer=SpiceMsgcMousePosition.prototype.to_buffer,SpiceMsgcMouseMotion.prototype.buffer_size=SpiceMsgcMousePosition.prototype.buffer_size,SpiceMsgcMousePress.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return a.setUint8(e,this.button,!0),e++,a.setUint16(e,this.buttons_state,!0),e+=2},buffer_size:function(){return 3}},SpiceMsgcMouseRelease.prototype.to_buffer=SpiceMsgcMousePress.prototype.to_buffer,SpiceMsgcMouseRelease.prototype.buffer_size=SpiceMsgcMousePress.prototype.buffer_size,SpiceMsgcKeyDown.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return a.setUint32(e,this.code,!0),e+=4},buffer_size:function(){return 4}},SpiceMsgcKeyUp.prototype.to_buffer=SpiceMsgcKeyDown.prototype.to_buffer,SpiceMsgcKeyUp.prototype.buffer_size=SpiceMsgcKeyDown.prototype.buffer_size,SpiceMsgDisplayStreamCreate.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.surface_id=a.getUint32(e,!0),e+=4,this.id=a.getUint32(e,!0),e+=4,this.flags=a.getUint8(e,!0),e+=1,this.codec_type=a.getUint8(e,!0),e+=1,this.stamp=a.getUint64(e,!0),e+=8,this.stream_width=a.getUint32(e,!0),e+=4,this.stream_height=a.getUint32(e,!0),e+=4,this.src_width=a.getUint32(e,!0),e+=4,this.src_height=a.getUint32(e,!0),e+=4,this.dest=new SpiceRect,e=this.dest.from_dv(a,e,t),this.clip=new SpiceClip,this.clip.from_dv(a,e,t)}},SpiceStreamDataHeader.prototype={from_dv:function(t,e){return this.id=t.getUint32(e,!0),e+=4,this.multi_media_time=t.getUint32(e,!0),e+=4}},SpiceMsgDisplayStreamData.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.base=new SpiceStreamDataHeader,e=this.base.from_dv(a,e,t),this.data_size=a.getUint32(e,!0),e+=4,this.data=a.u8.subarray(e,e+this.data_size)}},SpiceMsgDisplayStreamClip.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.id=a.getUint32(e,!0),e+=4,this.clip=new SpiceClip,this.clip.from_dv(a,e,t)}},SpiceMsgDisplayStreamDestroy.prototype={from_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);this.id=a.getUint32(e,!0),e+=4}},SpiceMsgDisplayInvalList.prototype={from_buffer:function(t,e){var a;e=e||0;var n=new SpiceDataView(t);for(this.count=n.getUint16(e,!0),e+=2,a=0;a<this.count;a++)this.resources[a]={},this.resources[a].type=n.getUint8(e,!0),e++,this.resources[a].id=n.getUint64(e,!0),e+=8}},define("spice-spicemsg",function(){}),SpiceWireReader.prototype={inbound:function(t){if(0==this.needed)return void this.buffers.push(t);for(0==this.buffers.length&&t.byteLength>=this.needed?(t.byteLength>this.needed&&(this.buffers.push(t.slice(this.needed)),t=t.slice(0,this.needed)),this.callback.call(this.sc,t,this.saved_msg_header||void 0)):this.buffers.push(t);this.buffers.length>1&&this.buffers[0].byteLength<this.needed;){var e=this.buffers.shift(),a=this.buffers.shift();this.buffers.unshift(combine_array_buffers(e,a))}for(;this.buffers.length>0&&this.buffers[0].byteLength>=this.needed;)t=this.buffers.shift(),t.byteLength>this.needed&&(this.buffers.unshift(t.slice(this.needed)),t=t.slice(0,this.needed)),this.callback.call(this.sc,t,this.saved_msg_header||void 0)},request:function(t){this.needed=t},save_header:function(t){this.saved_msg_header=t},clear_header:function(){this.saved_msg_header=void 0}},define("spice-wire",function(){}),SpiceDisplayConn.prototype=Object.create(SpiceConn.prototype),SpiceDisplayConn.prototype.process_channel_message=function(t){if(t.type==SPICE_MSG_DISPLAY_MARK)return this.known_unimplemented(t.type,"Display Mark"),!0;if(t.type==SPICE_MSG_DISPLAY_RESET)return DEBUG>2&&console.log("Display reset"),this.surfaces[this.primary_surface].canvas.context.restore(),!0;if(t.type==SPICE_MSG_DISPLAY_DRAW_COPY){var e=new SpiceMsgDisplayDrawCopy(t.data);if(DEBUG>1&&this.log_draw("DrawCopy",e),e.base.box.is_same_size(e.data.src_area)||this.log_warn("FIXME: DrawCopy src_area is a different size than base.box; we do not handle that yet."),e.base.clip.type!=SPICE_CLIP_TYPE_NONE&&this.log_warn("FIXME: DrawCopy we don't handle clipping yet"),e.data.rop_descriptor!=SPICE_ROPD_OP_PUT&&this.log_warn("FIXME: DrawCopy we don't handle ropd type: "+e.data.rop_descriptor),e.data.mask.flags&&this.log_warn("FIXME: DrawCopy we don't handle mask flag: "+e.data.mask.flags),e.data.mask.bitmap&&this.log_warn("FIXME: DrawCopy we don't handle mask"),e.data&&e.data.src_bitmap){if(e.data.src_bitmap.descriptor.flags&&e.data.src_bitmap.descriptor.flags!=SPICE_IMAGE_FLAGS_CACHE_ME&&e.data.src_bitmap.descriptor.flags!=SPICE_IMAGE_FLAGS_HIGH_BITS_SET&&(this.log_warn("FIXME: DrawCopy unhandled image flags: "+e.data.src_bitmap.descriptor.flags),1>=DEBUG&&this.log_draw("DrawCopy",e)),e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_QUIC){var a=this.surfaces[e.base.surface_id].canvas;if(!e.data.src_bitmap.quic)return this.log_warn("FIXME: DrawCopy could not handle this QUIC file."),!1;var n=convert_spice_quic_to_web(a.context,e.data.src_bitmap.quic);return this.draw_copy_helper({base:e.base,src_area:e.data.src_area,image_data:n,tag:"copyquic."+e.data.src_bitmap.quic.type,has_alpha:e.data.src_bitmap.quic.type==QUIC_IMAGE_TYPE_RGBA?!0:!1,descriptor:e.data.src_bitmap.descriptor})}if(e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_FROM_CACHE||e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS)return this.cache&&this.cache[e.data.src_bitmap.descriptor.id]?this.draw_copy_helper({base:e.base,src_area:e.data.src_area,image_data:this.cache[e.data.src_bitmap.descriptor.id],tag:"copycache."+e.data.src_bitmap.descriptor.id,has_alpha:!0,descriptor:e.data.src_bitmap.descriptor}):(this.log_warn("FIXME: DrawCopy did not find image id "+e.data.src_bitmap.descriptor.id+" in cache."),!1);if(e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_SURFACE){var s=this.surfaces[e.data.src_bitmap.surface_id].canvas.context,n=(this.surfaces[e.base.surface_id].canvas.context,s.getImageData(e.data.src_area.left,e.data.src_area.top,e.data.src_area.right-e.data.src_area.left,e.data.src_area.bottom-e.data.src_area.top)),i=new SpiceRect;return i.top=i.left=0,i.right=n.width,i.bottom=n.height,this.draw_copy_helper({base:e.base,src_area:i,image_data:n,tag:"copysurf."+e.data.src_bitmap.surface_id,has_alpha:this.surfaces[e.data.src_bitmap.surface_id].format==SPICE_SURFACE_FMT_32_xRGB?!1:!0,descriptor:e.data.src_bitmap.descriptor})}if(e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_JPEG){if(!e.data.src_bitmap.jpeg)return this.log_warn("FIXME: DrawCopy could not handle this JPEG file."),!1;var r,o="data:image/jpeg,",l=new Image,c=new Uint8Array(e.data.src_bitmap.jpeg.data);for(r=0;r<c.length;r++)o+="%",c[r]<16&&(o+="0"),o+=c[r].toString(16);return l.o={base:e.base,tag:"jpeg."+e.data.src_bitmap.surface_id,descriptor:e.data.src_bitmap.descriptor,sc:this},l.onload=handle_draw_jpeg_onload,l.src=o,!0}if(e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_JPEG_ALPHA){if(!e.data.src_bitmap.jpeg_alpha)return this.log_warn("FIXME: DrawCopy could not handle this JPEG ALPHA file."),!1;var r,o="data:image/jpeg,",l=new Image,c=new Uint8Array(e.data.src_bitmap.jpeg_alpha.data);for(r=0;r<c.length;r++)o+="%",c[r]<16&&(o+="0"),o+=c[r].toString(16);if(l.o={base:e.base,tag:"jpeg."+e.data.src_bitmap.surface_id,descriptor:e.data.src_bitmap.descriptor,sc:this},this.surfaces[e.base.surface_id].format==SPICE_SURFACE_FMT_32_ARGB){var a=this.surfaces[e.base.surface_id].canvas;l.alpha_img=convert_spice_lz_to_web(a.context,e.data.src_bitmap.jpeg_alpha.alpha)}return l.onload=handle_draw_jpeg_onload,l.src=o,!0}if(e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_BITMAP){var a=this.surfaces[e.base.surface_id].canvas;if(!e.data.src_bitmap.bitmap)return this.log_err("null bitmap"),!1;var n=convert_spice_bitmap_to_web(a.context,e.data.src_bitmap.bitmap);return n?this.draw_copy_helper({base:e.base,src_area:e.data.src_area,image_data:n,tag:"bitmap."+e.data.src_bitmap.bitmap.format,has_alpha:e.data.src_bitmap.bitmap==SPICE_BITMAP_FMT_32BIT?!1:!0,descriptor:e.data.src_bitmap.descriptor}):(this.log_warn("FIXME: Unable to interpret bitmap of format: "+e.data.src_bitmap.bitmap.format),!1)}if(e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_LZ_RGB){var a=this.surfaces[e.base.surface_id].canvas;if(!e.data.src_bitmap.lz_rgb)return this.log_err("null lz_rgb "),!1;1!=e.data.src_bitmap.lz_rgb.top_down&&this.log_warn("FIXME: Implement non top down support for lz_rgb");var n=convert_spice_lz_to_web(a.context,e.data.src_bitmap.lz_rgb);return n?this.draw_copy_helper({base:e.base,src_area:e.data.src_area,image_data:n,tag:"lz_rgb."+e.data.src_bitmap.lz_rgb.type,has_alpha:e.data.src_bitmap.lz_rgb.type==LZ_IMAGE_TYPE_RGBA?!0:!1,descriptor:e.data.src_bitmap.descriptor}):(this.log_warn("FIXME: Unable to interpret bitmap of type: "+e.data.src_bitmap.lz_rgb.type),!1)}return this.log_warn("FIXME: DrawCopy unhandled image type: "+e.data.src_bitmap.descriptor.type),this.log_draw("DrawCopy",e),!1}return this.log_warn("FIXME: DrawCopy no src_bitmap."),!1}if(t.type==SPICE_MSG_DISPLAY_DRAW_FILL){var d=new SpiceMsgDisplayDrawFill(t.data);if(DEBUG>1&&this.log_draw("DrawFill",d),d.data.rop_descriptor!=SPICE_ROPD_OP_PUT&&this.log_warn("FIXME: DrawFill we don't handle ropd type: "+d.data.rop_descriptor),d.data.mask.flags&&this.log_warn("FIXME: DrawFill we don't handle mask flag: "+d.data.mask.flags),d.data.mask.bitmap&&this.log_warn("FIXME: DrawFill we don't handle mask"),d.data.brush.type==SPICE_BRUSH_TYPE_SOLID){var u=16777215&d.data.brush.color,p="rgb("+(u>>16)+", "+(u>>8&255)+", "+(255&u)+")";if(this.surfaces[d.base.surface_id].canvas.context.fillStyle=p,this.surfaces[d.base.surface_id].canvas.context.fillRect(d.base.box.left,d.base.box.top,d.base.box.right-d.base.box.left,d.base.box.bottom-d.base.box.top),DUMP_DRAWS&&this.parent.dump_id){var h=document.createElement("canvas");h.setAttribute("width",this.surfaces[d.base.surface_id].canvas.width),h.setAttribute("height",this.surfaces[d.base.surface_id].canvas.height),h.setAttribute("id","fillbrush."+d.base.surface_id+"."+this.surfaces[d.base.surface_id].draw_count),h.getContext("2d").fillStyle=p,h.getContext("2d").fillRect(d.base.box.left,d.base.box.top,d.base.box.right-d.base.box.left,d.base.box.bottom-d.base.box.top),document.getElementById(this.parent.dump_id).appendChild(h)}this.surfaces[d.base.surface_id].draw_count++}else this.log_warn("FIXME: DrawFill can't handle brush type: "+d.data.brush.type);return!0}if(t.type==SPICE_MSG_DISPLAY_COPY_BITS){var f=new SpiceMsgDisplayCopyBits(t.data);DEBUG>1&&this.log_draw("CopyBits",f);var m=this.surfaces[f.base.surface_id].canvas,s=m.context,_=m.width-f.src_pos.x,b=m.height-f.src_pos.y;_>f.base.box.right-f.base.box.left&&(_=f.base.box.right-f.base.box.left),b>f.base.box.bottom-f.base.box.top&&(b=f.base.box.bottom-f.base.box.top);var n=s.getImageData(f.src_pos.x,f.src_pos.y,_,b);if(putImageDataWithAlpha(s,n,f.base.box.left,f.base.box.top),DUMP_DRAWS&&this.parent.dump_id){var h=document.createElement("canvas");h.setAttribute("width",_),h.setAttribute("height",b),h.setAttribute("id","copybits"+f.base.surface_id+"."+this.surfaces[f.base.surface_id].draw_count),h.getContext("2d").putImageData(n,0,0),document.getElementById(this.parent.dump_id).appendChild(h)}return this.surfaces[f.base.surface_id].draw_count++,!0}if(t.type==SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES)return this.known_unimplemented(t.type,"Inval All Palettes"),!0;if(t.type==SPICE_MSG_DISPLAY_SURFACE_CREATE){"surfaces"in this||(this.surfaces=[]);var v=new SpiceMsgSurfaceCreate(t.data);if(DEBUG>1&&console.log(this.type+": MsgSurfaceCreate id "+v.surface.surface_id+"; "+v.surface.width+"x"+v.surface.height+"; format "+v.surface.format+"; flags "+v.surface.flags),v.surface.format!=SPICE_SURFACE_FMT_32_xRGB&&v.surface.format!=SPICE_SURFACE_FMT_32_ARGB)return this.log_warn("FIXME: cannot handle surface format "+v.surface.format+" yet."),!1;var a=document.createElement("canvas");return a.setAttribute("width",v.surface.width),a.setAttribute("height",v.surface.height),a.setAttribute("id","spice_surface_"+v.surface.surface_id),a.setAttribute("tabindex",v.surface.surface_id),a.context=a.getContext("2d"),DUMP_CANVASES&&this.parent.dump_id&&document.getElementById(this.parent.dump_id).appendChild(a),v.surface.canvas=a,v.surface.draw_count=0,this.surfaces[v.surface.surface_id]=v.surface,v.surface.flags&SPICE_SURFACE_FLAGS_PRIMARY&&(this.primary_surface=v.surface.surface_id,a.context.save(),document.getElementById(this.parent.screen_id).appendChild(a),document.getElementById(this.parent.screen_id).style.height=v.surface.height+"px",this.hook_events()),!0}if(t.type==SPICE_MSG_DISPLAY_SURFACE_DESTROY){var v=new SpiceMsgSurfaceDestroy(t.data);return DEBUG>1&&console.log(this.type+": MsgSurfaceDestroy id "+v.surface_id),this.delete_surface(v.surface_id),!0}if(t.type==SPICE_MSG_DISPLAY_STREAM_CREATE){var v=new SpiceMsgDisplayStreamCreate(t.data);return DEBUG>1&&console.log(this.type+": MsgStreamCreate id"+v.id),this.streams||(this.streams=new Array),this.streams[v.id]?console.log("Stream already exists"):this.streams[v.id]=v,v.codec_type!=SPICE_VIDEO_CODEC_TYPE_MJPEG&&console.log("Unhandled stream codec: "+v.codec_type),!0}if(t.type==SPICE_MSG_DISPLAY_STREAM_DATA){var v=new SpiceMsgDisplayStreamData(t.data);if(!this.streams[v.base.id])return console.log("no stream for data"),!1;if(this.streams[v.base.id].codec_type===SPICE_VIDEO_CODEC_TYPE_MJPEG){var r,o="data:image/jpeg,",l=new Image;for(r=0;r<v.data.length;r++)o+="%",v.data[r]<16&&(o+="0"),o+=v.data[r].toString(16);var g=new SpiceMsgDisplayBase;g.surface_id=this.streams[v.base.id].surface_id,g.box=this.streams[v.base.id].dest,g.clip=this.streams[v.base.id].clip,l.o={base:g,tag:"mjpeg."+v.base.id,descriptor:null,sc:this},l.onload=handle_draw_jpeg_onload,l.src=o}return!0}if(t.type==SPICE_MSG_DISPLAY_STREAM_CLIP){var v=new SpiceMsgDisplayStreamClip(t.data);return DEBUG>1&&console.log(this.type+": MsgStreamClip id"+v.id),this.streams[v.id].clip=v.clip,!0}if(t.type==SPICE_MSG_DISPLAY_STREAM_DESTROY){var v=new SpiceMsgDisplayStreamDestroy(t.data);return DEBUG>1&&console.log(this.type+": MsgStreamDestroy id"+v.id),this.streams[v.id]=void 0,!0}if(t.type==SPICE_MSG_DISPLAY_INVAL_LIST){var r,v=new SpiceMsgDisplayInvalList(t.data);for(DEBUG>1&&console.log(this.type+": MsgInvalList "+v.count+" items"),r=0;r<v.count;r++)void 0!=this.cache[v.resources[r].id]&&delete this.cache[v.resources[r].id];return!0}return!1},SpiceDisplayConn.prototype.delete_surface=function(t){var e=document.getElementById("spice_surface_"+t);DUMP_CANVASES&&this.parent.dump_id&&document.getElementById(this.parent.dump_id).removeChild(e),this.primary_surface==t&&(this.unhook_events(),this.primary_surface=void 0,document.getElementById(this.parent.screen_id).removeChild(e)),delete this.surfaces[t]},SpiceDisplayConn.prototype.draw_copy_helper=function(t){var e=this.surfaces[t.base.surface_id].canvas;if(t.has_alpha?this.surfaces[t.base.surface_id].format==SPICE_SURFACE_FMT_32_xRGB?(stripAlpha(t.image_data),e.context.putImageData(t.image_data,t.base.box.left,t.base.box.top)):putImageDataWithAlpha(e.context,t.image_data,t.base.box.left,t.base.box.top):e.context.putImageData(t.image_data,t.base.box.left,t.base.box.top),(t.src_area.left>0||t.src_area.top>0)&&this.log_warn("FIXME: DrawCopy not shifting draw copies just yet..."),t.descriptor&&t.descriptor.flags&SPICE_IMAGE_FLAGS_CACHE_ME&&("cache"in this||(this.cache={}),this.cache[t.descriptor.id]=t.image_data),DUMP_DRAWS&&this.parent.dump_id){var a=document.createElement("canvas");a.setAttribute("width",t.image_data.width),a.setAttribute("height",t.image_data.height),a.setAttribute("id",t.tag+"."+this.surfaces[t.base.surface_id].draw_count+"."+t.base.surface_id+"@"+t.base.box.left+"x"+t.base.box.top),a.getContext("2d").putImageData(t.image_data,0,0),document.getElementById(this.parent.dump_id).appendChild(a)}return this.surfaces[t.base.surface_id].draw_count++,!0},SpiceDisplayConn.prototype.log_draw=function(t,e){var a=t+"."+e.base.surface_id+"."+this.surfaces[e.base.surface_id].draw_count+": ";a+="base.box "+e.base.box.left+", "+e.base.box.top+" to "+e.base.box.right+", "+e.base.box.bottom,a+="; clip.type "+e.base.clip.type,e.data&&(e.data.src_area&&(a+="; src_area "+e.data.src_area.left+", "+e.data.src_area.top+" to "+e.data.src_area.right+", "+e.data.src_area.bottom),e.data.src_bitmap&&null!=e.data.src_bitmap?(a+="; src_bitmap id: "+e.data.src_bitmap.descriptor.id,a+="; src_bitmap width "+e.data.src_bitmap.descriptor.width+", height "+e.data.src_bitmap.descriptor.height,a+="; src_bitmap type "+e.data.src_bitmap.descriptor.type+", flags "+e.data.src_bitmap.descriptor.flags,void 0!==e.data.src_bitmap.surface_id&&(a+="; src_bitmap surface_id "+e.data.src_bitmap.surface_id),e.data.src_bitmap.quic&&(a+="; QUIC type "+e.data.src_bitmap.quic.type+"; width "+e.data.src_bitmap.quic.width+"; height "+e.data.src_bitmap.quic.height),e.data.src_bitmap.lz_rgb&&(a+="; LZ_RGB length "+e.data.src_bitmap.lz_rgb.length+"; magic "+e.data.src_bitmap.lz_rgb.magic+"; version 0x"+e.data.src_bitmap.lz_rgb.version.toString(16)+"; type "+e.data.src_bitmap.lz_rgb.type+"; width "+e.data.src_bitmap.lz_rgb.width+"; height "+e.data.src_bitmap.lz_rgb.height+"; stride "+e.data.src_bitmap.lz_rgb.stride+"; top down "+e.data.src_bitmap.lz_rgb.top_down)):a+="; src_bitmap is null",e.data.brush&&(e.data.brush.type==SPICE_BRUSH_TYPE_SOLID&&(a+="; brush.color 0x"+e.data.brush.color.toString(16)),e.data.brush.type==SPICE_BRUSH_TYPE_PATTERN&&(a+="; brush.pat ",a+=null!=e.data.brush.pattern.pat?"[SpiceImage]":"[null]",a+=" at "+e.data.brush.pattern.pos.x+", "+e.data.brush.pattern.pos.y)),a+="; rop_descriptor "+e.data.rop_descriptor,void 0!==e.data.scale_mode&&(a+="; scale_mode "+e.data.scale_mode),a+="; mask.flags "+e.data.mask.flags,a+="; mask.pos "+e.data.mask.pos.x+", "+e.data.mask.pos.y,null!=e.data.mask.bitmap?(a+="; mask.bitmap width "+e.data.mask.bitmap.descriptor.width+", height "+e.data.mask.bitmap.descriptor.height,a+="; mask.bitmap type "+e.data.mask.bitmap.descriptor.type+", flags "+e.data.mask.bitmap.descriptor.flags):a+="; mask.bitmap is null"),console.log(a)},SpiceDisplayConn.prototype.hook_events=function(){if(void 0!==this.primary_surface){var t=this.surfaces[this.primary_surface].canvas;t.sc=this.parent,t.addEventListener("mousemove",handle_mousemove),t.addEventListener("mousedown",handle_mousedown),t.addEventListener("contextmenu",handle_contextmenu),t.addEventListener("mouseup",handle_mouseup),t.addEventListener("keydown",handle_keydown),t.addEventListener("keyup",handle_keyup),t.addEventListener("mouseout",handle_mouseout),t.addEventListener("mouseover",handle_mouseover),t.addEventListener("wheel",handle_mousewheel),t.focus()}},SpiceDisplayConn.prototype.unhook_events=function(){if(void 0!==this.primary_surface){var t=this.surfaces[this.primary_surface].canvas;t.removeEventListener("mousemove",handle_mousemove),t.removeEventListener("mousedown",handle_mousedown),t.removeEventListener("contextmenu",handle_contextmenu),t.removeEventListener("mouseup",handle_mouseup),t.removeEventListener("keydown",handle_keydown),t.removeEventListener("keyup",handle_keyup),t.removeEventListener("mouseout",handle_mouseout),t.removeEventListener("mouseover",handle_mouseover),t.removeEventListener("wheel",handle_mousewheel)
+}},SpiceDisplayConn.prototype.destroy_surfaces=function(){for(var t in this.surfaces)this.delete_surface(this.surfaces[t].surface_id);this.surfaces=void 0},define("spice-display",["spice-spiceconn"],function(){});var Shift_state=-1,Ctrl_state=-1,Alt_state=-1,Meta_state=-1;SpiceInputsConn.prototype=Object.create(SpiceConn.prototype),SpiceInputsConn.prototype.process_channel_message=function(t){if(t.type==SPICE_MSG_INPUTS_INIT){var e=new SpiceMsgInputsInit(t.data);return this.keyboard_modifiers=e.keyboard_modifiers,DEBUG>1&&console.log("MsgInputsInit - modifier "+this.keyboard_modifiers),!0}if(t.type==SPICE_MSG_INPUTS_KEY_MODIFIERS){var a=new SpiceMsgInputsKeyModifiers(t.data);return this.keyboard_modifiers=a.keyboard_modifiers,DEBUG>1&&console.log("MsgInputsKeyModifiers - modifier "+this.keyboard_modifiers),!0}return t.type==SPICE_MSG_INPUTS_MOUSE_MOTION_ACK?(DEBUG>1&&console.log("mouse motion ack"),this.waiting_for_ack-=SPICE_INPUT_MOTION_ACK_BUNCH,!0):!1},define("spice-inputs",["spice-spiceconn"],function(){});var EBML_HEADER=[26,69,223,163],EBML_HEADER_VERSION=[66,134],EBML_HEADER_READ_VERSION=[66,247],EBML_HEADER_MAX_ID_LENGTH=[66,242],EBML_HEADER_MAX_SIZE_LENGTH=[66,243],EBML_HEADER_DOC_TYPE=[66,130],EBML_HEADER_DOC_TYPE_VERSION=[66,135],EBML_HEADER_DOC_TYPE_READ_VERSION=[66,133],WEBM_SEGMENT_HEADER=[24,83,128,103],WEBM_SEGMENT_INFORMATION=[21,73,169,102],WEBM_TIMECODE_SCALE=[42,215,177],WEBM_MUXING_APP=[77,128],WEBM_WRITING_APP=[87,65],WEBM_SEEK_HEAD=[17,77,155,116],WEBM_SEEK=[77,187],WEBM_SEEK_ID=[83,171],WEBM_SEEK_POSITION=[83,172],WEBM_TRACKS=[22,84,174,107],WEBM_TRACK_ENTRY=[174],WEBM_TRACK_NUMBER=[215],WEBM_TRACK_UID=[115,197],WEBM_TRACK_TYPE=[131],WEBM_FLAG_ENABLED=[185],WEBM_FLAG_DEFAULT=[136],WEBM_FLAG_FORCED=[85,170],WEBM_FLAG_LACING=[156],WEBM_MIN_CACHE=[109,231],WEBM_MAX_BLOCK_ADDITION_ID=[85,238],WEBM_CODEC_DECODE_ALL=[170],WEBM_SEEK_PRE_ROLL=[86,187],WEBM_CODEC_DELAY=[86,170],WEBM_CODEC_PRIVATE=[99,162],WEBM_CODEC_ID=[134],WEBM_AUDIO=[225],WEBM_SAMPLING_FREQUENCY=[181],WEBM_CHANNELS=[159],WEBM_CLUSTER=[31,67,182,117],WEBM_TIME_CODE=[231],WEBM_SIMPLE_BLOCK=[163],CLUSTER_SIMPLEBLOCK_FLAG_KEYFRAME=128,OPUS_FREQUENCY=48e3,OPUS_CHANNELS=2,SPICE_PLAYBACK_CODEC='audio/webm; codecs="opus"',MAX_CLUSTER_TIME=1e3,GAP_DETECTION_THRESHOLD=50;EBMLHeader.prototype={to_buffer:function(t,e){e=e||0;var a=new DataView(t);return e=EBML_write_array(this.id,a,e),e=EBML_write_u64_data_len(31,a,e),e=EBML_write_u8_value(EBML_HEADER_VERSION,this.Version,a,e),e=EBML_write_u8_value(EBML_HEADER_READ_VERSION,this.ReadVersion,a,e),e=EBML_write_u8_value(EBML_HEADER_MAX_ID_LENGTH,this.MaxIDLength,a,e),e=EBML_write_u8_value(EBML_HEADER_MAX_SIZE_LENGTH,this.MaxSizeLength,a,e),e=EBML_write_data(EBML_HEADER_DOC_TYPE,this.DocType,a,e),e=EBML_write_u8_value(EBML_HEADER_DOC_TYPE_VERSION,this.DocTypeVersion,a,e),e=EBML_write_u8_value(EBML_HEADER_DOC_TYPE_READ_VERSION,this.DocTypeReadVersion,a,e)},buffer_size:function(){return 39+this.id.length}},webm_Segment.prototype={to_buffer:function(t,e){e=e||0;var a=new DataView(t);return e=EBML_write_array(this.id,a,e),a.setUint8(e++,255),e},buffer_size:function(){return this.id.length+1}},webm_SegmentInformation.prototype={to_buffer:function(t,e){e=e||0;var a=new DataView(t);return e=EBML_write_array(this.id,a,e),e=EBML_write_u64_data_len(this.buffer_size()-8-this.id.length,a,e),e=EBML_write_u32_value(WEBM_TIMECODE_SCALE,this.timecode_scale,a,e),e=EBML_write_data(WEBM_MUXING_APP,this.muxing_app,a,e),e=EBML_write_data(WEBM_WRITING_APP,this.writing_app,a,e)},buffer_size:function(){return this.id.length+8+WEBM_TIMECODE_SCALE.length+1+4+WEBM_MUXING_APP.length+1+this.muxing_app.length+WEBM_WRITING_APP.length+1+this.writing_app.length}},webm_Audio.prototype={to_buffer:function(t,e){e=e||0;var a=new DataView(t);return e=EBML_write_array(this.id,a,e),e=EBML_write_u64_data_len(this.buffer_size()-8-this.id.length,a,e),e=EBML_write_u8_value(WEBM_CHANNELS,this.channels,a,e),e=EBML_write_float_value(WEBM_SAMPLING_FREQUENCY,this.sampling_frequency,a,e)},buffer_size:function(){return this.id.length+8+WEBM_SAMPLING_FREQUENCY.length+1+4+WEBM_CHANNELS.length+1+1}},webm_Seek.prototype={to_buffer:function(t,e){e=e||0;var a=new DataView(t);return e=EBML_write_array(this.id,a,e),e=EBML_write_u1_data_len(this.buffer_size()-1-this.id.length,a,e),e=EBML_write_data(WEBM_SEEK_ID,this.seekid,a,e),e=EBML_write_u16_value(WEBM_SEEK_POSITION,this.pos,a,e)},buffer_size:function(){return this.id.length+1+WEBM_SEEK_ID.length+1+this.seekid.length+WEBM_SEEK_POSITION.length+1+2}},webm_SeekHead.prototype={to_buffer:function(t,e){e=e||0;var a=new DataView(t);return e=EBML_write_array(this.id,a,e),e=EBML_write_u64_data_len(this.buffer_size()-8-this.id.length,a,e),e=this.info.to_buffer(t,e),e=this.track.to_buffer(t,e)},buffer_size:function(){return this.id.length+8+this.info.buffer_size()+this.track.buffer_size()}},webm_TrackEntry.prototype={to_buffer:function(t,e){e=e||0;var a=new DataView(t);return e=EBML_write_array(this.id,a,e),e=EBML_write_u64_data_len(this.buffer_size()-8-this.id.length,a,e),e=EBML_write_u8_value(WEBM_TRACK_NUMBER,this.number,a,e),e=EBML_write_u8_value(WEBM_TRACK_UID,this.uid,a,e),e=EBML_write_u8_value(WEBM_FLAG_ENABLED,this.flag_enabled,a,e),e=EBML_write_u8_value(WEBM_FLAG_DEFAULT,this.flag_default,a,e),e=EBML_write_u8_value(WEBM_FLAG_FORCED,this.flag_forced,a,e),e=EBML_write_u8_value(WEBM_FLAG_LACING,this.flag_lacing,a,e),e=EBML_write_data(WEBM_CODEC_ID,this.codec_id,a,e),e=EBML_write_u8_value(WEBM_MIN_CACHE,this.min_cache,a,e),e=EBML_write_u8_value(WEBM_MAX_BLOCK_ADDITION_ID,this.max_block_addition_id,a,e),e=EBML_write_u8_value(WEBM_CODEC_DECODE_ALL,this.codec_decode_all,a,e),e=EBML_write_u32_value(WEBM_CODEC_DELAY,this.codec_delay,a,e),e=EBML_write_u32_value(WEBM_SEEK_PRE_ROLL,this.seek_pre_roll,a,e),e=EBML_write_u8_value(WEBM_TRACK_TYPE,this.type,a,e),e=EBML_write_data(WEBM_CODEC_PRIVATE,this.codec_private,a,e),e=this.audio.to_buffer(t,e)},buffer_size:function(){return this.id.length+8+WEBM_TRACK_NUMBER.length+1+1+WEBM_TRACK_UID.length+1+1+WEBM_TRACK_TYPE.length+1+1+WEBM_FLAG_ENABLED.length+1+1+WEBM_FLAG_DEFAULT.length+1+1+WEBM_FLAG_FORCED.length+1+1+WEBM_FLAG_LACING.length+1+1+WEBM_MIN_CACHE.length+1+1+WEBM_MAX_BLOCK_ADDITION_ID.length+1+1+WEBM_CODEC_DECODE_ALL.length+1+1+WEBM_SEEK_PRE_ROLL.length+1+4+WEBM_CODEC_DELAY.length+1+4+WEBM_CODEC_ID.length+this.codec_id.length+1+WEBM_CODEC_PRIVATE.length+1+this.codec_private.length+this.audio.buffer_size()}},webm_Tracks.prototype={to_buffer:function(t,e){e=e||0;var a=new DataView(t);return e=EBML_write_array(this.id,a,e),e=EBML_write_u64_data_len(this.buffer_size()-8-this.id.length,a,e),e=this.track_entry.to_buffer(t,e)},buffer_size:function(){return this.id.length+8+this.track_entry.buffer_size()}},webm_Cluster.prototype={to_buffer:function(t,e){e=e||0;var a=new DataView(t);return e=EBML_write_array(this.id,a,e),a.setUint8(e++,255),e=EBML_write_u32_value(WEBM_TIME_CODE,this.timecode,a,e)},buffer_size:function(){return this.id.length+1+WEBM_TIME_CODE.length+1+4}},webm_SimpleBlock.prototype={to_buffer:function(t,e){e=e||0;var a=new DataView(t);e=EBML_write_array(this.id,a,e),e=EBML_write_u64_data_len(this.data.byteLength+4,a,e),e=EBML_write_u1_data_len(1,a,e),a.setUint16(e,this.timecode),e+=2,a.setUint8(e,this.keyframe?CLUSTER_SIMPLEBLOCK_FLAG_KEYFRAME:0),e+=1;for(var n=new Uint8Array(this.data),s=0;s<this.data.byteLength;s++)a.setUint8(e++,n[s]);return e},buffer_size:function(){return this.id.length+8+1+2+1+this.data.byteLength}},webm_Header.prototype={to_buffer:function(t,e){return e=e||0,e=this.ebml.to_buffer(t,e),e=this.segment.to_buffer(t,e),e=this.info.to_buffer(t,e),e=this.tracks.to_buffer(t,e)},buffer_size:function(){return this.ebml.buffer_size()+this.segment.buffer_size()+this.info.buffer_size()+this.tracks.buffer_size()}},define("spice-webm",function(){}),SpicePlaybackConn.prototype=Object.create(SpiceConn.prototype),SpicePlaybackConn.prototype.process_channel_message=function(t){if(!window.MediaSource)return this.log_err("MediaSource API is not available"),!1;if(t.type==SPICE_MSG_PLAYBACK_START){var e=new SpiceMsgPlaybackStart(t.data);if(DEBUG>0&&console.log("PlaybackStart; frequency "+e.frequency),e.frequency!=OPUS_FREQUENCY)return this.log_err("This player cannot handle frequency "+e.frequency),!1;if(e.channels!=OPUS_CHANNELS)return this.log_err("This player cannot handle "+e.channels+" channels"),!1;if(e.format!=SPICE_AUDIO_FMT_S16)return this.log_err("This player cannot format "+e.format),!1;if(!this.source_buffer)return this.media_source=new MediaSource,this.media_source.spiceconn=this,this.audio=document.createElement("audio"),this.audio.setAttribute("autoplay",!0),this.audio.src=window.URL.createObjectURL(this.media_source),document.getElementById(this.parent.screen_id).appendChild(this.audio),this.media_source.addEventListener("sourceopen",handle_source_open,!1),this.media_source.addEventListener("sourceended",handle_source_ended,!1),this.media_source.addEventListener("sourceclosed",handle_source_closed,!1),this.bytes_written=0,!0}if(t.type==SPICE_MSG_PLAYBACK_DATA){var a=new SpiceMsgPlaybackData(t.data);return this.last_data_time&&a.time<=this.last_data_time&&(DEBUG>1&&console.log("Hacking time of "+a.time+" to "+this.last_data_time+1),a.time=this.last_data_time+1),this.last_data_time&&a.time>=this.last_data_time+GAP_DETECTION_THRESHOLD&&(this.skip_until=a.time,this.gap_time=a.time-this.start_time-(1e3*this.source_buffer.buffered.end(this.source_buffer.buffered.end.length-1)).toFixed(0)),this.last_data_time=a.time,DEBUG>1&&console.log("PlaybackData; time "+a.time+"; length "+a.data.byteLength),this.source_buffer?(0==this.start_time?this.start_playback(a):a.time-this.cluster_time>=MAX_CLUSTER_TIME||this.skip_until>0?this.new_cluster(a):this.simple_block(a,!1),this.skip_until>0&&(this.audio.currentTime=(this.skip_until-this.start_time-this.gap_time)/1e3,this.skip_until=0),this.audio.paused&&this.audio.play(),!0):!0}if(t.type==SPICE_MSG_PLAYBACK_MODE){var n=new SpiceMsgPlaybackMode(t.data);return n.mode!=SPICE_AUDIO_DATA_MODE_OPUS&&(this.log_err("This player cannot handle mode "+n.mode),delete this.source_buffer),!0}return t.type==SPICE_MSG_PLAYBACK_STOP?!0:!1},SpicePlaybackConn.prototype.start_playback=function(t){this.start_time=t.time;var e=new webm_Header,a=new ArrayBuffer(e.buffer_size());this.bytes_written=e.to_buffer(a),this.source_buffer.addEventListener("error",handle_sourcebuffer_error,!1),this.source_buffer.addEventListener("updateend",handle_append_buffer_done,!1),playback_append_buffer(this,a),this.new_cluster(t)},SpicePlaybackConn.prototype.new_cluster=function(t){this.cluster_time=t.time;var e=new webm_Cluster(t.time-this.start_time-this.gap_time),a=new ArrayBuffer(e.buffer_size());this.bytes_written+=e.to_buffer(a),this.append_okay?playback_append_buffer(this,a):this.queue.push(a),this.simple_block(t,!0)},SpicePlaybackConn.prototype.simple_block=function(t,e){var a=new webm_SimpleBlock(t.time-this.cluster_time,t.data,e),n=new ArrayBuffer(a.buffer_size());this.bytes_written+=a.to_buffer(n),this.append_okay?playback_append_buffer(this,n):this.queue.push(n)},define("spice-playback",["spice-spiceconn"],function(){});var SpiceSimulateCursor={cursors:new Array,unknown_cursors:new Array,warned:!1,add_cursor:function(t,e){SpiceSimulateCursor.cursors[t]=e},unknown_cursor:function(t,e){SpiceSimulateCursor.warned||(SpiceSimulateCursor.warned=!0,alert("Internet Explorer does not support dynamic cursors.  This page will now simulate cursors with images, which will be imperfect.  We recommend using Chrome or Firefox instead.  \n\nIf you need to use Internet Explorer, you can create a static cursor file for each cursor your application uses.  View the console log for more information on creating static cursors for your environment.")),SpiceSimulateCursor.unknown_cursors[t]||(SpiceSimulateCursor.unknown_cursors[t]=e,console.log("Unknown cursor.  Simulation required.  To avoid simulation for this cursor, create and include a custom javascript file, and add the following line:"),console.log('SpiceCursorSimulator.add_cursor("'+t+'"), "<your filename here>.cur");'),console.log("And then run following command, redirecting output into <your filename here>.cur:"),console.log("php -r \"echo urldecode('"+e+"');\""))},simulate_cursor:function(t,e,a,n){var s=hex_sha1(n+" "+e.header.hot_spot_x+" "+e.header.hot_spot_y);if("undefined"!=typeof SpiceSimulateCursor.cursors&&"undefined"!=typeof SpiceSimulateCursor.cursors[s]){var i="url("+SpiceSimulateCursor.cursors[s]+"), default";a.style.cursor=i}"auto"==window.getComputedStyle(a,null).cursor?(SpiceSimulateCursor.unknown_cursor(s,SpiceSimulateCursor.create_icondir(e.header.width,e.header.height,e.data.byteLength,e.header.hot_spot_x,e.header.hot_spot_y)+n),document.getElementById(t.parent.screen_id).style.cursor="none",t.spice_simulated_cursor||(t.spice_simulated_cursor=document.createElement("img"),t.spice_simulated_cursor.style.position="absolute",t.spice_simulated_cursor.style.display="none",t.spice_simulated_cursor.style.overflow="hidden",t.spice_simulated_cursor.spice_screen=document.getElementById(t.parent.screen_id),t.spice_simulated_cursor.addEventListener("mousemove",SpiceSimulateCursor.handle_sim_mousemove),t.spice_simulated_cursor.spice_screen.appendChild(t.spice_simulated_cursor)),t.spice_simulated_cursor.src="data:image/png,"+n,t.spice_simulated_cursor.spice_hot_x=e.header.hot_spot_x,t.spice_simulated_cursor.spice_hot_y=e.header.hot_spot_y,t.spice_simulated_cursor.style.pointerEvents="none"):t.spice_simulated_cursor&&(t.spice_simulated_cursor.spice_screen.removeChild(t.spice_simulated_cursor),delete t.spice_simulated_cursor)},handle_sim_mousemove:function(t){var e=SpiceSimulateCursor.duplicate_mouse_event(t,this.spice_screen);return this.spice_screen.dispatchEvent(e)},duplicate_mouse_event:function(t){var e=document.createEvent("mouseevent");return e.initMouseEvent(t.type,!0,!0,t.view,t.detail,t.screenX,t.screenY,t.clientX,t.clientY,t.ctrlKey,t.altKey,t.shiftKey,t.metaKey,t.button,t.relatedTarget),e},ICONDIR:function(){},ICONDIRENTRY:function(t,e,a,n,s){this.width=t,this.height=e,this.bytes=a,this.hot_x=n,this.hot_y=s},create_icondir:function(t,e,a,n,s){var i,r=new SpiceSimulateCursor.ICONDIR,o=new SpiceSimulateCursor.ICONDIRENTRY(t,e,a,n,s),l=new ArrayBuffer(r.buffer_size()+o.buffer_size()),c=r.to_buffer(l);c=o.to_buffer(l,c);var d=new Uint8Array(l),u="";for(i=0;c>i;i++)u+="%",d[i]<16&&(u+="0"),u+=d[i].toString(16);return u}};SpiceSimulateCursor.ICONDIR.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return a.setUint16(e,0,!0),e+=2,a.setUint16(e,2,!0),e+=2,a.setUint16(e,1,!0),e+=2},buffer_size:function(){return 6}},SpiceSimulateCursor.ICONDIRENTRY.prototype={to_buffer:function(t,e){e=e||0;var a=new SpiceDataView(t);return a.setUint8(e,this.width),e++,a.setUint8(e,this.height),e++,a.setUint8(e,0),e++,a.setUint8(e,0),e++,a.setUint16(e,this.hot_x,!0),e+=2,a.setUint16(e,this.hot_y,!0),e+=2,a.setUint32(e,this.bytes,!0),e+=4,a.setUint32(e,e+4,!0),e+=4},buffer_size:function(){return 16}},define("spice-simulatecursor",function(){}),SpiceCursorConn.prototype=Object.create(SpiceConn.prototype),SpiceCursorConn.prototype.process_channel_message=function(t){if(t.type==SPICE_MSG_CURSOR_INIT){var e=new SpiceMsgCursorInit(t.data);return DEBUG>1&&console.log("SpiceMsgCursorInit"),this.parent&&this.parent.inputs&&this.parent.inputs.mouse_mode==SPICE_MOUSE_MODE_SERVER&&(this.parent.inputs.mousex=e.position.x,this.parent.inputs.mousey=e.position.y),!0}if(t.type==SPICE_MSG_CURSOR_SET){var a=new SpiceMsgCursorSet(t.data);return DEBUG>1&&console.log("SpiceMsgCursorSet"),a.flags&SPICE_CURSOR_FLAGS_NONE?(document.getElementById(this.parent.screen_id).style.cursor="none",!0):(a.flags>0&&this.log_warn("FIXME: No support for cursor flags "+a.flags),a.cursor.header.type!=SPICE_CURSOR_TYPE_ALPHA?(this.log_warn("FIXME: No support for cursor type "+a.cursor.header.type),!1):(this.set_cursor(a.cursor),!0))}return t.type==SPICE_MSG_CURSOR_HIDE?(DEBUG>1&&console.log("SpiceMsgCursorHide"),document.getElementById(this.parent.screen_id).style.cursor="none",!0):t.type==SPICE_MSG_CURSOR_RESET?(DEBUG>1&&console.log("SpiceMsgCursorReset"),document.getElementById(this.parent.screen_id).style.cursor="auto",!0):t.type==SPICE_MSG_CURSOR_INVAL_ALL?(DEBUG>1&&console.log("SpiceMsgCursorInvalAll"),!0):!1},SpiceCursorConn.prototype.set_cursor=function(t){var e=create_rgba_png(t.header.height,t.header.width,t.data),a="url(data:image/png,"+e+") "+t.header.hot_spot_x+" "+t.header.hot_spot_y+", default",n=document.getElementById(this.parent.screen_id);n.style.cursor="auto",n.style.cursor=a,"auto"==window.getComputedStyle(n,null).cursor&&SpiceSimulateCursor.simulate_cursor(this,t,n,e)},define("spice-cursor",["spice-spiceconn"],function(){});var dbits,canary=0xdeadbeefcafe,j_lm=15715070==(16777215&canary);j_lm&&"Microsoft Internet Explorer"==navigator.appName?(BigInteger.prototype.am=am2,dbits=30):j_lm&&"Netscape"!=navigator.appName?(BigInteger.prototype.am=am1,dbits=26):(BigInteger.prototype.am=am3,dbits=28),BigInteger.prototype.DB=dbits,BigInteger.prototype.DM=(1<<dbits)-1,BigInteger.prototype.DV=1<<dbits;var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP),BigInteger.prototype.F1=BI_FP-dbits,BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM="0123456789abcdefghijklmnopqrstuvwxyz",BI_RC=new Array,rr,vv;for(rr="0".charCodeAt(0),vv=0;9>=vv;++vv)BI_RC[rr++]=vv;for(rr="a".charCodeAt(0),vv=10;36>vv;++vv)BI_RC[rr++]=vv;for(rr="A".charCodeAt(0),vv=10;36>vv;++vv)BI_RC[rr++]=vv;Classic.prototype.convert=cConvert,Classic.prototype.revert=cRevert,Classic.prototype.reduce=cReduce,Classic.prototype.mulTo=cMulTo,Classic.prototype.sqrTo=cSqrTo,Montgomery.prototype.convert=montConvert,Montgomery.prototype.revert=montRevert,Montgomery.prototype.reduce=montReduce,Montgomery.prototype.mulTo=montMulTo,Montgomery.prototype.sqrTo=montSqrTo,BigInteger.prototype.copyTo=bnpCopyTo,BigInteger.prototype.fromInt=bnpFromInt,BigInteger.prototype.fromString=bnpFromString,BigInteger.prototype.clamp=bnpClamp,BigInteger.prototype.dlShiftTo=bnpDLShiftTo,BigInteger.prototype.drShiftTo=bnpDRShiftTo,BigInteger.prototype.lShiftTo=bnpLShiftTo,BigInteger.prototype.rShiftTo=bnpRShiftTo,BigInteger.prototype.subTo=bnpSubTo,BigInteger.prototype.multiplyTo=bnpMultiplyTo,BigInteger.prototype.squareTo=bnpSquareTo,BigInteger.prototype.divRemTo=bnpDivRemTo,BigInteger.prototype.invDigit=bnpInvDigit,BigInteger.prototype.isEven=bnpIsEven,BigInteger.prototype.exp=bnpExp,BigInteger.prototype.toString=bnToString,BigInteger.prototype.negate=bnNegate,BigInteger.prototype.abs=bnAbs,BigInteger.prototype.compareTo=bnCompareTo,BigInteger.prototype.bitLength=bnBitLength,BigInteger.prototype.mod=bnMod,BigInteger.prototype.modPowInt=bnModPowInt,BigInteger.ZERO=nbv(0),BigInteger.ONE=nbv(1),define("spice-jsbn",function(){}),RSAKey.prototype.doPublic=RSADoPublic,RSAKey.prototype.setPublic=RSASetPublic,RSAKey.prototype.encrypt=RSAEncrypt,define("spice-rsa",function(){}),Arcfour.prototype.init=ARC4init,Arcfour.prototype.next=ARC4next;var rng_psize=256;define("spice-prng4",function(){});var rng_state,rng_pool,rng_pptr;if(null==rng_pool){rng_pool=new Array,rng_pptr=0;var t;if("Netscape"==navigator.appName&&navigator.appVersion<"5"&&window.crypto){var z=window.crypto.random(32);for(t=0;t<z.length;++t)rng_pool[rng_pptr++]=255&z.charCodeAt(t)}for(;rng_psize>rng_pptr;)t=Math.floor(65536*Math.random()),rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t;rng_pptr=0,rng_seed_time()}SecureRandom.prototype.nextBytes=rng_get_bytes,define("spice-rng",function(){});var hexcase=0,b64pad="";define("spice-sha1",function(){});var SHA_DIGEST_LENGTH=20;define("spice-ticket",function(){}),define("spice-resize",function(){}),SpiceFileXferTask.prototype.create_progressbar=function(){var t=this,e=document.createElement("input");this.progressbar_container=document.createElement("div"),this.progressbar=document.createElement("progress"),e.type="button",e.value="Cancel",e.style["float"]="right",e.onclick=function(){t.cancelled=!0,t.remove_progressbar()},this.progressbar.setAttribute("max",this.file.size),this.progressbar.setAttribute("value",0),this.progressbar.style.width="100%",this.progressbar.style.margin="4px auto",this.progressbar.style.display="inline-block",this.progressbar_container.style.width="90%",this.progressbar_container.style.margin="auto",this.progressbar_container.style.padding="4px",this.progressbar_container.textContent=this.file.name,this.progressbar_container.appendChild(e),this.progressbar_container.appendChild(this.progressbar),document.getElementById("spice-xfer-area").appendChild(this.progressbar_container)},SpiceFileXferTask.prototype.update_progressbar=function(t){this.progressbar.setAttribute("value",t)},SpiceFileXferTask.prototype.remove_progressbar=function(){this.progressbar_container&&this.progressbar_container.parentNode&&this.progressbar_container.parentNode.removeChild(this.progressbar_container)},define("spice-filexfer",function(){}),SpiceMainConn.prototype=Object.create(SpiceConn.prototype),SpiceMainConn.prototype.process_channel_message=function(t){if(t.type==SPICE_MSG_MAIN_INIT){this.log_info("Connected to "+this.ws.url),this.report_success("Connected"),this.main_init=new SpiceMsgMainInit(t.data),this.connection_id=this.main_init.session_id,this.agent_tokens=this.main_init.agent_tokens,DEBUG>0&&this.log_info("session id "+this.main_init.session_id+" ; display_channels_hint "+this.main_init.display_channels_hint+" ; supported_mouse_modes "+this.main_init.supported_mouse_modes+" ; current_mouse_mode "+this.main_init.current_mouse_mode+" ; agent_connected "+this.main_init.agent_connected+" ; agent_tokens "+this.main_init.agent_tokens+" ; multi_media_time "+this.main_init.multi_media_time+" ; ram_hint "+this.main_init.ram_hint),this.handle_mouse_mode(this.main_init.current_mouse_mode,this.main_init.supported_mouse_modes),this.main_init.agent_connected&&this.connect_agent();var e=new SpiceMiniData;return e.type=SPICE_MSGC_MAIN_ATTACH_CHANNELS,e.size=e.buffer_size(),this.send_msg(e),!0}if(t.type==SPICE_MSG_MAIN_MOUSE_MODE){var a=new SpiceMsgMainMouseMode(t.data);return DEBUG>0&&this.log_info("Mouse supported modes "+a.supported_modes+"; current "+a.current_mode),this.handle_mouse_mode(a.current_mode,a.supported_modes),!0}if(t.type==SPICE_MSG_MAIN_CHANNELS_LIST){var n,s;for(DEBUG>0&&console.log("channels"),s=new SpiceMsgChannels(t.data),n=0;n<s.channels.length;n++){var i={uri:this.ws.url,parent:this,connection_id:this.connection_id,type:s.channels[n].type,chan_id:s.channels[n].id};s.channels[n].type==SPICE_CHANNEL_DISPLAY?this.display=new SpiceDisplayConn(i):s.channels[n].type==SPICE_CHANNEL_INPUTS?(this.inputs=new SpiceInputsConn(i),this.inputs.mouse_mode=this.mouse_mode):s.channels[n].type==SPICE_CHANNEL_CURSOR?this.cursor=new SpiceCursorConn(i):s.channels[n].type==SPICE_CHANNEL_PLAYBACK?this.cursor=new SpicePlaybackConn(i):(this.log_err("Channel type "+s.channels[n].type+" unknown."),"extra_channels"in this||(this.extra_channels=[]),this.extra_channels[n]=new SpiceConn(i))}return!0}if(t.type==SPICE_MSG_MAIN_AGENT_CONNECTED)return this.connect_agent(),!0;if(t.type==SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS){var r=new SpiceMsgMainAgentTokens(t.data);return this.agent_tokens=r.num_tokens,this.connect_agent(),!0}if(t.type==SPICE_MSG_MAIN_AGENT_TOKEN){var o,l=new SpiceMsgMainAgentTokens(t.data);for(this.agent_tokens+=l.num_tokens,this.send_agent_message_queue(),o=this.agent_tokens;o>0&&this.file_xfer_read_queue.length>0;){var c=this.file_xfer_read_queue.shift();this.file_xfer_read(c,c.read_bytes),o--}return!0}if(t.type==SPICE_MSG_MAIN_AGENT_DISCONNECTED)return this.agent_connected=!1,!0;if(t.type==SPICE_MSG_MAIN_AGENT_DATA){var d=new SpiceMsgMainAgentData(t.data);if(d.type==VD_AGENT_ANNOUNCE_CAPABILITIES){var u=new VDAgentAnnounceCapabilities(d.data);return u.request&&this.announce_agent_capabilities(0),!0}return d.type==VD_AGENT_FILE_XFER_STATUS?(this.handle_file_xfer_status(new VDAgentFileXferStatusMessage(d.data)),!0):!1}return!1},SpiceMainConn.prototype.stop=function(){if(this.state="closing",this.inputs&&(this.inputs.cleanup(),this.inputs=void 0),this.cursor&&(this.cursor.cleanup(),this.cursor=void 0),this.display&&(this.display.cleanup(),this.display.destroy_surfaces(),this.display=void 0),this.cleanup(),"extra_channels"in this)for(var t in this.extra_channels)this.extra_channels[t].cleanup();this.extra_channels=void 0},SpiceMainConn.prototype.send_agent_message_queue=function(t){if(this.agent_connected)for(t&&this.agent_msg_queue.push(t);this.agent_tokens>0&&this.agent_msg_queue.length>0;){var e=this.agent_msg_queue.shift();this.send_msg(e),this.agent_tokens--}},SpiceMainConn.prototype.send_agent_message=function(t,e){var a=new SpiceMsgcMainAgentData(t,e),n=0,s=VD_AGENT_MAX_DATA_SIZE-SpiceMiniData.prototype.buffer_size(),i=new ArrayBuffer(a.buffer_size());for(a.to_buffer(i);n<a.buffer_size();){var r=Math.min(n+s,a.buffer_size()),o=new SpiceMiniData;o.type=SPICE_MSGC_MAIN_AGENT_DATA,o.size=r-n,o.data=i.slice(n,r),this.send_agent_message_queue(o),n=r}},SpiceMainConn.prototype.announce_agent_capabilities=function(t){var e=new VDAgentAnnounceCapabilities(t,1<<VD_AGENT_CAP_MOUSE_STATE|1<<VD_AGENT_CAP_MONITORS_CONFIG|1<<VD_AGENT_CAP_REPLY);this.send_agent_message(VD_AGENT_ANNOUNCE_CAPABILITIES,e)},SpiceMainConn.prototype.resize_window=function(t,e,a,n,s,i){var r=new VDAgentMonitorsConfig(t,e,a,n,s,i);this.send_agent_message(VD_AGENT_MONITORS_CONFIG,r)},SpiceMainConn.prototype.file_xfer_start=function(t){var e,a,n;e=this.file_xfer_task_id++,n=new SpiceFileXferTask(e,t),n.create_progressbar(),this.file_xfer_tasks[e]=n,a=new VDAgentFileXferStartMessage(e,t.name,t.size),this.send_agent_message(VD_AGENT_FILE_XFER_START,a)},SpiceMainConn.prototype.handle_file_xfer_status=function(t){var e,a;if(this.file_xfer_tasks[t.id]){switch(a=this.file_xfer_tasks[t.id],t.result){case VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA:return void this.file_xfer_read(a);case VD_AGENT_FILE_XFER_STATUS_CANCELLED:e="transfer is cancelled by spice agent";break;case VD_AGENT_FILE_XFER_STATUS_ERROR:e="some errors occurred in the spice agent";break;case VD_AGENT_FILE_XFER_STATUS_SUCCESS:break;default:e="unhandled status type: "+t.result}this.file_xfer_completed(a,e)}},SpiceMainConn.prototype.file_xfer_read=function(t,e){var a,n,s,i,r=32*VD_AGENT_MAX_DATA_SIZE,o=this;if(t&&this.file_xfer_tasks[t.id]&&!(e>0&&e==t.file.size)){if(t.cancelled){var l=new VDAgentFileXferStatusMessage(t.id,VD_AGENT_FILE_XFER_STATUS_CANCELLED);return this.send_agent_message(VD_AGENT_FILE_XFER_STATUS,l),void delete this.file_xfer_tasks[t.id]}if(a=e||0,n=Math.min(a+r,t.file.size),!this.agent_tokens)return t.read_bytes=a,void this.file_xfer_read_queue.push(t);i=new FileReader,i.onload=function(e){var a=new VDAgentFileXferDataMessage(t.id,e.target.result.byteLength,e.target.result);o.send_agent_message(VD_AGENT_FILE_XFER_DATA,a),o.file_xfer_read(t,n),t.update_progressbar(n)},s=t.file.slice(a,n),i.readAsArrayBuffer(s)}},SpiceMainConn.prototype.file_xfer_completed=function(t,e){e?this.log_err(e):this.log_info("transfer of '"+t.file.name+"' was successful"),t.remove_progressbar(),delete this.file_xfer_tasks[t.id]},SpiceMainConn.prototype.connect_agent=function(){this.agent_connected=!0;var t=new SpiceMsgcMainAgentStart(-1),e=new SpiceMiniData;e.build_msg(SPICE_MSGC_MAIN_AGENT_START,t),this.send_msg(e),this.announce_agent_capabilities(1),void 0!==this.onagent&&this.onagent(this)},SpiceMainConn.prototype.handle_mouse_mode=function(t,e){if(this.mouse_mode=t,t!=SPICE_MOUSE_MODE_CLIENT&&e&SPICE_MOUSE_MODE_CLIENT){var a=new SpiceMsgcMainMouseModeRequest(SPICE_MOUSE_MODE_CLIENT),n=new SpiceMiniData;n.build_msg(SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST,a),this.send_msg(n)}this.inputs&&(this.inputs.mouse_mode=t)},define("spice-main",["spice-spiceconn","spice-spicearraybuffer","spice-enums","spice-atKeynames","spice-utils","spice-png","spice-lz","spice-quic","spice-bitmap","spice-spicedataview","spice-spicetype","spice-spicemsg","spice-wire","spice-display","spice-inputs","spice-webm","spice-playback","spice-simulatecursor","spice-cursor","spice-jsbn","spice-rsa","spice-prng4","spice-rng","spice-sha1","spice-ticket","spice-resize","spice-filexfer"],function(t){return function(){var e;return e||t.SpiceMainConn}}(this)),define("utils/spice",["require","spice-main","sunstone-config","utils/notifier"],function(t){function e(){return d}function a(){d=!0}function n(){d=!1}function s(){i()}function i(){l&&l.stop()}function r(){window.addEventListener("resize",handle_resize),window.spice_connection=this,resize_helper(this)}function o(t){var e,a,n,i,o,d,u="ws://";if(c.vncWSS&&(u="wss://"),e=window.location.hostname,a=c.vncProxyPort,n=t.password,o=t.token,d=t.vm_name,!e||!a)return void console.log("must specify host and port in URL");l&&l.stop(),i=u+e+":"+a+"?token="+o;try{l=new SpiceMainConn({uri:i,screen_id:"spice-screen",dump_id:"debug-div",message_id:"message-div",password:n,onerror:s,onagent:r})}catch(p){s(p)}var h="spice?";h+="host="+e,h+="&port="+a,h+="&token="+o,h+="&password="+n,h+="&encrypt="+config.user_config.vnc_wss,h+="&title="+d,$("#open_in_a_new_window_spice").attr("href",h)}t("spice-main");var l,c=t("sunstone-config"),d=(t("utils/notifier"),!1);return{lockStatus:e,lock:a,unlock:n,spiceCallback:o,disconnect:i}}),define("tabs/vms-tab/dialogs/deploy/dialogId",["require"],function(){return"deployVMDialog"}),define("tabs/vms-tab/dialogs/migrate/dialogId",["require"],function(){return"migrateVMDialog"}),define("tabs/vms-tab/dialogs/vnc/dialogId",["require"],function(){return"vncVMDialog"}),define("tabs/vms-tab/dialogs/spice/dialogId",["require"],function(){return"spiceVMDialog"}),define("tabs/vms-tab/actions",["require","sunstone","utils/notifier","utils/locale","opennebula/vm","utils/common-actions","utils/vnc","utils/spice","./tabId","./form-panels/create/formPanelId","./dialogs/deploy/dialogId","./dialogs/migrate/dialogId","./dialogs/vnc/dialogId","./dialogs/spice/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=t("opennebula/vm"),i=t("utils/common-actions"),r=t("utils/vnc"),o=t("utils/spice"),l=t("./tabId"),c=t("./form-panels/create/formPanelId"),d=t("./dialogs/deploy/dialogId"),u=t("./dialogs/migrate/dialogId"),p=t("./dialogs/vnc/dialogId"),h=t("./dialogs/spice/dialogId"),f="VM",m=new i(s,f,l),_={"VM.list":m.list(),"VM.show":m.show(),"VM.refresh":m.refresh(),"VM.delete":m["delete"](),"VM.chown":m.multipleAction("chown"),"VM.chgrp":m.multipleAction("chgrp"),"VM.hold":m.multipleAction("hold"),"VM.release":m.multipleAction("release"),"VM.suspend":m.multipleAction("suspend"),"VM.resume":m.multipleAction("resume"),"VM.stop":m.multipleAction("stop"),"VM.reboot_hard":m.multipleAction("reset"),"VM.delete_recreate":m.multipleAction("resubmit"),"VM.reboot":m.multipleAction("reboot"),"VM.poweroff":m.multipleAction("poweroff"),"VM.poweroff_hard":m.multipleAction("poweroff_hard"),"VM.undeploy":m.multipleAction("undeploy"),"VM.undeploy_hard":m.multipleAction("undeploy_hard"),"VM.shutdown":m.multipleAction("shutdown"),"VM.shutdown_hard":m.multipleAction("shutdown_hard"),"VM.recover":m.multipleAction("recover"),"VM.resched":m.multipleAction("resched"),"VM.unresched":m.multipleAction("unresched"),"VM.chmod":m.singleAction("chmod"),"VM.rename":m.singleAction("rename"),"VM.update_template":m.singleAction("update"),"VM.deploy_action":m.singleAction("deploy"),"VM.migrate_action":m.singleAction("migrate"),"VM.migrate_live_action":m.singleAction("livemigrate"),"VM.attachdisk":m.singleAction("attachdisk"),"VM.detachdisk":m.singleAction("detachdisk"),"VM.attachnic":m.singleAction("attachnic"),"VM.detachnic":m.singleAction("detachnic"),"VM.resize":m.singleAction("resize"),"VM.snapshot_create":m.singleAction("snapshot_create"),"VM.snapshot_revert":m.singleAction("snapshot_revert"),"VM.snapshot_delete":m.singleAction("snapshot_delete"),"VM.create_dialog":{type:"custom",call:function(){e.showFormPanel(l,c,"create")
+}},"VM.create":{type:"custom",call:function(t,a){e.runAction("Template.instantiate",[t],a),e.runAction("VM.refresh")},callback:function(t,a){e.getDataTable(l).addElement(t,a)},error:a.onError},"VM.deploy":{type:"custom",call:function(){e.getDialog(d).show()}},"VM.silent_deploy_action":{type:"single",call:s.deploy,error:a.onError},"VM.migrate":{type:"custom",call:function(){var t=e.getDialog(u);t.setLive(!1),t.show()}},"VM.migrate_live":{type:"custom",call:function(){var t=e.getDialog(u);t.setLive(!0),t.show()}},"VM.startvnc":{type:"custom",call:function(){$.each(e.getDataTable(l).elements(),function(t,s){return r.lockStatus()?(a.notifyError(n.tr("VNC Connection in progress")),!1):(r.lock(),void e.runAction("VM.startvnc_action",s))})}},"VM.startvnc_action":{type:"single",call:s.vnc,callback:function(t,a){var n=e.getDialog(p);n.setElement(a),n.show()},error:function(t,e){a.onError(t,e),r.unlock()},notify:!0},"VM.startspice":{type:"custom",call:function(){$.each(e.getDataTable(l).elements(),function(t,s){return o.lockStatus()?(a.notifyError(n.tr("VNC Connection in progress")),!1):(o.lock(),void e.runAction("VM.startspice_action",s))})}},"VM.startspice_action":{type:"single",call:s.vnc,callback:function(t,a){var n=e.getDialog(h);n.setElement(a),n.show()},error:function(t,e){a.onError(t,e),o.unlock()},notify:!0}};return _}),define("tabs/vms-tab/utils/datatable-common",["require","opennebula/vm","utils/locale","utils/humanize","utils/template-utils"],function(t){function e(t){var e=t[l],a=n.stateStr(e.STATE);"ACTIVE"==a&&(a=n.shortLcmStateStr(e.LCM_STATE));var s;return s=n.isVNCSupported(e)?'<a class="vnc" href="#" vm_id="'+e.ID+'"><i class="fa fa-desktop"/></a>':n.isSPICESupported(e)?'<a class="spice" href="#" vm_id="'+e.ID+'"><i class="fa fa-desktop"/></a>':"",['<input class="check_item" type="checkbox" id="'+o.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.UNAME,e.GNAME,e.NAME,a,e.CPU,i.size(e.MEMORY),n.hostnameStr(e),n.ipsStr(e),i.prettyTime(e.STIME),s,r.templateToString(e)]}function a(t){return['<input class="check_item" type="checkbox" id="'+o.toLowerCase()+"_"+t+'" name="selected_items" value="'+t+'"/>',t,"","","","","","","","","","",""]}var n=t("opennebula/vm"),s=t("utils/locale"),i=t("utils/humanize"),r=t("utils/template-utils"),o="VM",l="VM",c=[s.tr("ID"),s.tr("Owner"),s.tr("Group"),s.tr("Name"),s.tr("Status"),s.tr("Used CPU"),s.tr("Used Memory"),s.tr("Host"),s.tr("IPs"),s.tr("Start Time"),s.tr(""),s.tr("Hidden Template")];return{elementArray:e,emptyElementArray:a,columns:c}}),define("tabs/vms-tab/utils/state-actions",["require","opennebula/vm"],function(t){function e(){$(".state-dependent").prop("disabled",!0).removeClass("vm-action-enabled").addClass("vm-action-disabled").on("click.stateaction",function(){return!1})}function a(){$(".state-dependent").addClass("vm-action-enabled").removeClass("vm-action-disabled").off("click.stateaction")}function n(t){$(".state-dependent[href='"+t+"']").removeAttr("disabled").addClass("vm-action-enabled").removeClass("vm-action-disabled").off("click.stateaction")}function s(t,e){var t=parseInt(t),e=parseInt(e);$.each(o[t],function(t,e){n(e)}),t==r.state.ACTIVE&&$.each(l[e],function(t,e){n(e)})}function i(t,e,a){var e=parseInt(e),a=parseInt(a);return-1!=o[e].indexOf(t)||e==r.state.ACTIVE&&-1!=l[a].indexOf(t)}var r=t("opennebula/vm"),o={0:["VM.delete","VM.delete_recreate","VM.resize"],1:["VM.delete","VM.delete_recreate","VM.hold","VM.deploy"],2:["VM.delete","VM.delete_recreate","VM.release","VM.deploy"],3:["VM.delete","VM.delete_recreate","VM.recover"],4:["VM.delete","VM.delete_recreate","VM.resume","VM.deploy"],5:["VM.delete","VM.resume","VM.saveas","VM.disk_snapshot_cancel","VM.stop","VM.shutdown_hard"],6:[],7:["VM.delete","VM.delete_recreate","VM.resize"],8:["VM.delete","VM.resume","VM.resize","VM.attachdisk","VM.detachdisk","VM.attachnic","VM.detachnic","VM.saveas","VM.disk_snapshot_cancel","VM.migrate","VM.undeploy","VM.undeploy_hard","VM.shutdown_hard"],9:["VM.delete","VM.delete_recreate","VM.resume","VM.resize","VM.deploy"]},l={0:[],1:[],2:[],3:["VM.shutdown","VM.shutdown_hard","VM.stop","VM.suspend","VM.reboot","VM.reboot_hard","VM.resched","VM.unresched","VM.poweroff","VM.poweroff_hard","VM.undeploy","VM.undeploy_hard","VM.migrate","VM.migrate_live","VM.attachdisk","VM.detachdisk","VM.attachnic","VM.detachnic","VM.saveas","VM.disk_snapshot_cancel"],4:[],5:[],6:[],7:[],8:[],9:[],10:[],11:[],12:[],13:[],14:[],15:[],16:["VM.shutdown","VM.shutdown_hard","VM.resched","VM.unresched","VM.poweroff","VM.poweroff_hard","VM.undeploy","VM.undeploy_hard","VM.migrate","VM.migrate_live","VM.disk_snapshot_cancel","VM.resume"],17:[],18:[],19:[],20:[],21:[],22:[],23:[],24:[],25:[],26:[],27:[],28:[],29:[],30:[],31:[],32:[],33:[],34:[],35:[],36:[],37:[],38:[],39:[],40:[],41:[],42:[],43:[],44:[],45:[],46:[],47:[],48:[],49:[],50:[]};return{disableAllStateActions:e,resetStateButtons:a,enableStateButton:n,enableStateActions:s,enabledStateAction:i}}),define("tabs/vms-tab/datatable",["require","utils/tab-datatable","./utils/datatable-common","opennebula/vm","sunstone-config","utils/locale","./utils/state-actions","sunstone","utils/vnc","utils/spice","utils/notifier","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=v,this.dataTableId=t,this.resource=_,this.xmlRoot=b,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check",6,7,11]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:c.tabTableColumns(v)},{bVisible:!1,aTargets:["_all"]}]},this.columns=o.columns,this.selectOptions={id_index:1,name_index:4,select_resource:d.tr("Please select a VM from the list"),you_selected:d.tr("You selected the following VM:"),select_resource_multiple:d.tr("Please select one or more VMs from the list"),you_selected_multiple:d.tr("You selected the following VMs:")},this.totalVms=0,this.activeVms=0,this.pendingVms=0,this.failedVms=0,this.offVms=0,r.call(this)}function a(t){var e=t[b],a=l.stateStr(e.STATE);switch(this.totalVms++,a){case"INIT":case"PENDING":case"HOLD":this.pendingVms++;break;case"FAILED":this.failedVms++;break;case"ACTIVE":this.activeVms++;break;case"STOPPED":case"SUSPENDED":case"POWEROFF":this.offVms++}return o.elementArray(t)}function n(){u.resetStateButtons(),this.totalVms=0,this.activeVms=0,this.pendingVms=0,this.failedVms=0,this.offVms=0}function s(){$(".total_vms").text(this.totalVms),$(".active_vms").text(this.activeVms),$(".pending_vms").text(this.pendingVms),$(".failed_vms").text(this.failedVms),$(".off_vms").text(this.offVms)}function i(t){r.prototype.initialize.call(this,t),$("#"+this.dataTableId).on("click",".vnc",function(){var t=$(this).attr("vm_id");return h.lockStatus()?m.notifyError(tr("VNC Connection in progress")):(f.lock(),p.runAction("VM.startvnc_action",t)),!1}),$("#"+this.dataTableId).on("click",".spice",function(){var t=$(this).attr("vm_id");return f.lockStatus()?m.notifyError(tr("SPICE Connection in progress")):(f.lock(),p.runAction("VM.startspice_action",t)),!1})}var r=t("utils/tab-datatable"),o=t("./utils/datatable-common"),l=t("opennebula/vm"),c=t("sunstone-config"),d=t("utils/locale"),u=t("./utils/state-actions"),p=t("sunstone"),h=t("utils/vnc"),f=t("utils/spice"),m=t("utils/notifier"),_="VM",b="VM",v=t("./tabId");return e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e.prototype.initialize=i,e.prototype.preUpdateView=n,e.prototype.postUpdateView=s,e}),define("hbs!tabs/vms-tab/dialogs/deploy/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/advancedSection"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='        <div class="row">\n          <div class="large-6 columns">\n            <input type="checkbox" name="enforce" id="enforce"/>\n            <label for="enforce">\n              '+o((e.tr||t&&t.tr||r).call(t,"Enforce",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">\n                '+o((e.tr||t&&t.tr||r).call(t,"If it is set to true, the host capacity will be checked. This will only affect oneadmin requests, regular users resize requests will always be enforced",{name:"tr",hash:{},data:n}))+"\n              </span>\n            </label>\n          </div>\n        </div>\n        <br>\n        <fieldset>\n          <legend>"+o((e.tr||t&&t.tr||r).call(t,"Select a datastore",{name:"tr",hash:{},data:n}))+"</legend>\n          ";return i=null!=(i=e.datastoresTableHTML||(null!=t?t.datastoresTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"datastoresTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n        </fieldset>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large" role="dialog" data-reveal >\n  <div class="row">\n    <div class="large-12 columns">\n      <h3 id="deploy_vm_header" class="subheader">'+l((e.tr||t&&t.tr||o).call(t,"Deploy Virtual Machine",{name:"tr",hash:{},data:n}))+'</h3>\n    </div>\n  </div>\n  <div class="reveal-body">\n    <form id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'Form" action="">\n      <div class="row">\n        <fieldset>\n          <legend>'+l((e.tr||t&&t.tr||o).call(t,"Select a Host",{name:"tr",hash:{},data:n}))+"</legend>\n          ";return i=null!=(i=e.hostsTableHTML||(null!=t?t.hostsTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"hostsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+="\n        </fieldset>\n      </div>\n",s=(e.advancedSection||t&&t.advancedSection||o).call(t,(e.tr||t&&t.tr||o).call(t,"Advanced Options",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+'      <div class="form_buttons reveal-footer">\n        <div class="form_buttons">\n          <button class="button radius right success" id="deploy_vm_proceed" value="VM.deploy">'+l((e.tr||t&&t.tr||o).call(t,"Deploy",{name:"tr",hash:{},data:n}))+'</button>\n        </div>\n      </div>\n      <a class="close-reveal-modal">&#215;</a>\n    </form>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/vms-tab/dialogs/deploy/html",a),a}),define("tabs/vms-tab/dialogs/deploy",["require","utils/dialogs/dialog","hbs!./deploy/html","sunstone","tabs/datastores-tab/datatable","tabs/hosts-tab/datatable","utils/notifier","utils/tips","./deploy/dialogId","../tabId"],function(t){function e(){this.dialogId=p,this.hostsTable=new c("deploy_vm",{select:!0}),this.datastoresTable=new l("deploy_vm_ds",{select:!0,selectOptions:{filter_fn:function(t){return 1==t.TYPE}}}),i.call(this)}function a(){return r({dialogId:this.dialogId,hostsTableHTML:this.hostsTable.dataTableHTML,datastoresTableHTML:this.datastoresTable.dataTableHTML})}function n(t){var e=this;return e.hostsTable.initialize(),e.datastoresTable.initialize(),u.setup(t),$("#"+p+"Form",t).submit(function(){var e={};return $("#selected_resource_id_deploy_vm",t).val()?(e.host_id=$("#selected_resource_id_deploy_vm",t).val(),e.ds_id=$("#selected_resource_id_deploy_vm_ds",t).val()||-1,e.enforce=$("#enforce",this).is(":checked")?!0:!1,$.each(o.getDataTable(h).elements(),function(t,a){o.runAction("VM.deploy_action",a,e)}),o.getDialog(p).hide(),o.getDialog(p).reset(),!1):(d.notifyError(tr("You have not selected a host")),!1)}),!1}function s(){return this.datastoresTable.resetResourceTableSelect(),this.hostsTable.resetResourceTableSelect(),!1}var i=t("utils/dialogs/dialog"),r=t("hbs!./deploy/html"),o=t("sunstone"),l=t("tabs/datastores-tab/datatable"),c=t("tabs/hosts-tab/datatable"),d=t("utils/notifier"),u=t("utils/tips"),p=t("./deploy/dialogId"),h=t("../tabId");return e.DIALOG_ID=p,e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e}),define("hbs!tabs/vms-tab/dialogs/migrate/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/advancedSection"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='        <div class="row">\n          <div class="large-6 columns">\n            <input type="checkbox" name="enforce" id="enforce"/>\n            <label for="vm_id">\n              '+o((e.tr||t&&t.tr||r).call(t,"Enforce",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">\n                '+o((e.tr||t&&t.tr||r).call(t,"If it is set to true, the host capacity will be checked. This will only affect oneadmin requests, regular users resize requests will always be enforced",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n          </div>\n        </div>\n        <br>\n        <fieldset class="migrate_vm_ds_selection">\n          <legend>'+o((e.tr||t&&t.tr||r).call(t,"Select a datastore",{name:"tr",hash:{},data:n}))+"</legend>\n          ";return i=null!=(i=e.datastoresTableHTML||(null!=t?t.datastoresTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"datastoresTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n        </fieldset>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large" role="dialog" data-reveal >\n  <div class="row">\n    <div class="large-12 columns">\n      <h3 id="migrate_vm_header" class="subheader">'+l((e.tr||t&&t.tr||o).call(t,"Migrate Virtual Machine",{name:"tr",hash:{},data:n}))+'</h3>\n    </div>\n  </div>\n  <div class="reveal-body">\n    <form id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'Form" action="">\n      <div id="current_hosts_of_vms" class="row"></div>\n      <br>\n      <br>\n      <div class="row">\n        <fieldset>\n          <legend>'+l((e.tr||t&&t.tr||o).call(t,"Select a Host",{name:"tr",hash:{},data:n}))+"</legend>\n          ";return i=null!=(i=e.hostsTableHTML||(null!=t?t.hostsTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"hostsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+="\n        </fieldset>\n",s=(e.advancedSection||t&&t.advancedSection||o).call(t,(e.tr||t&&t.tr||o).call(t,"Advanced Options",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+'        <div class="form_buttons reveal-footer">\n          <div class="form_buttons">\n            <button class="button radius right success" id="migrate_vm_proceed" value="VM.migrate">'+l((e.tr||t&&t.tr||o).call(t,"Migrate",{name:"tr",hash:{},data:n}))+'</button>\n          </div>\n        </div>\n        <a class="close-reveal-modal">&#215;</a>\n      </form>\n    </div>\n  </div>'},useData:!0});return e.registerPartial("tabs/vms-tab/dialogs/migrate/html",a),a}),define("tabs/vms-tab/dialogs/migrate",["require","utils/dialogs/dialog","hbs!./migrate/html","sunstone","tabs/datastores-tab/datatable","tabs/hosts-tab/datatable","utils/notifier","utils/tips","utils/locale","opennebula/vm","./migrate/dialogId","../tabId"],function(t){function e(){this.dialogId=f,this.hostsTable=new d("migrate_vm",{select:!0}),this.datastoresTable=new c("migrate_vm_ds",{select:!0,selectOptions:{filter_fn:function(t){return 1==t.TYPE}}}),r.call(this)}function a(){return o({dialogId:this.dialogId,hostsTableHTML:this.hostsTable.dataTableHTML,datastoresTableHTML:this.datastoresTable.dataTableHTML})}function n(t){var e=this;return e.hostsTable.initialize(),e.datastoresTable.initialize(),u.setup(t),$("#"+f+"Form",t).submit(function(){var a={};return $("#selected_resource_id_migrate_vm",t).val()?(a.host_id=$("#selected_resource_id_migrate_vm",t).val(),a.ds_id=$("#selected_resource_id_migrate_vm_ds",t).val()||-1,a.enforce=$("#enforce",t).is(":checked"),$.each(l.getDataTable(m).elements(),function(t,n){e.live?l.runAction("VM.migrate_live_action",n,a):l.runAction("VM.migrate_action",n,a)}),l.getDialog(f).hide(),l.getDialog(f).reset(),!1):(notifyError(tr("You have not selected a host")),!1)}),!1}function s(t){return this.datastoresTable.resetResourceTableSelect(),this.hostsTable.resetResourceTableSelect(),this.live&&$(".migrate_vm_ds_selection",t).hide(),$.each(l.getDataTable(m).elements(),function(){var t=""+this;h.show({data:{id:t},timeout:!0,success:function(t,e){var a=e.VM,n=h.hostnameStr(a);$("#current_hosts_of_vms").append('<span class="radius secondary label">'+p.tr("VM")+" ["+a.ID+"] "+p.tr("is currently running on Host")+" ["+n+"]</span><br>")}})}),!1}function i(t){this.live=t}var r=t("utils/dialogs/dialog"),o=t("hbs!./migrate/html"),l=t("sunstone"),c=t("tabs/datastores-tab/datatable"),d=t("tabs/hosts-tab/datatable"),u=(t("utils/notifier"),t("utils/tips")),p=t("utils/locale"),h=t("opennebula/vm"),f=t("./migrate/dialogId"),m=t("../tabId");return e.DIALOG_ID=f,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e.prototype.setLive=i,e}),define("hbs!tabs/vms-tab/dialogs/resize/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large" role="dialog" data-reveal >\n<div class="row">\n  <div class="large-12 columns">\n    <h3 class="subheader" id="">'+l((e.tr||t&&t.tr||o).call(t,"Resize VM capacity",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n</div>\n<div class="reveal-body">\n  <form id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'Form" action="">\n    <div class="row centered">\n      <div class="large-6 columns">\n        <label for="vm_id">'+l((e.tr||t&&t.tr||o).call(t,"Virtual Machine ID",{name:"tr",hash:{},data:n}))+':</label>\n        <label style="border-style: inset; background-color: lightgrey" type="text" name="vm_id" id="vm_id" disabled/>\n      </div>\n      <div class="large-6 columns">\n        <input type="checkbox" name="enforce" id="enforce"/>\n        <label class="inline" for="vm_id">\n          '+l((e.tr||t&&t.tr||o).call(t,"Enforce",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+l((e.tr||t&&t.tr||o).call(t,"If it is set to true, the host capacity will be checked. This will only affect oneadmin requests, regular users resize requests will always be enforced",{name:"tr",hash:{},data:n}))+"\n          </span>\n        </label>\n      </div>\n    </div>\n    ";return i=null!=(i=e.capacityInputsHTML||(null!=t?t.capacityInputsHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"capacityInputsHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n    <div class="reveal-footer">\n      <div class="form_buttons">\n        <button class="button radius right success" id="resize_capacity_button" type="submit" value="VM.resize">'+l((e.tr||t&&t.tr||o).call(t,"Resize",{name:"tr",hash:{},data:n}))+'</button>\n      </div>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>\n</div>'},useData:!0});return e.registerPartial("tabs/vms-tab/dialogs/resize/html",a),a}),function(t){t.fn.noUiSlider=function(e,a){function n(t,e,a){var n=e.data("setup"),s=n.handles;return e=n.settings,n=n.pos,t=0>t?0:t>100?100:t,2==e.handles&&(a.is(":first-child")?(a=parseFloat(s[1][0].style[n])-e.margin,t=t>a?a:t):(a=parseFloat(s[0][0].style[n])+e.margin,t=a>t?a:t)),e.step&&(a=o.from(e.range,e.step),t=Math.round(t/a)*a),t}function s(t){return[t.clientX||t.originalEvent.clientX||t.originalEvent.touches[0].clientX,t.clientY||t.originalEvent.clientY||t.originalEvent.touches[0].clientY]}var i=jQuery.fn.val;jQuery.fn.val=function(){return this.data("_isnS_")?methods.val.call(this,arguments[0]):i.apply(this,arguments)};var r=window.navigator.msPointerEnabled?2:"ontouchstart"in document.documentElement?3:1,o={to:function(t,e){return e=0>t[0]?e+Math.abs(t[0]):e-t[0],100*e/this._length(t)},from:function(t,e){return 100*e/this._length(t)},is:function(t,e){return e*this._length(t)/100+t[0]},_length:function(t){return t[0]>t[1]?t[0]-t[1]:t[1]-t[0]}},l={handles:2,serialization:{to:["",""],resolution:.01}};return methods={create:function(){return this.each(function(){var a,i,c=t.extend(l,e),d=t(this).data("_isnS_",!0),u=[],p="",h=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},f=(c.serialization.resolution=c.serialization.resolution||.01).toString().split("."),m=1==f[0]?0:f[1].length;for(c.start=h(c.start)?[c.start,0]:c.start,t.each(c,function(t,e){h(e)&&(c[t]=parseFloat(e));var a=!1;switch(t){case"range":case"start":a=2!=e.length||!h(e[0])||!h(e[1]);break;case"handles":a=1>e||e>2||!h(e);break;case"connect":a="lower"!=e&&"upper"!=e&&"boolean"!=typeof e;break;case"orientation":a="vertical"!=e&&"horizontal"!=e;break;case"margin":case"step":a="undefined"!=typeof e&&!h(e);break;case"serialization":a="object"!=typeof e||!h(e.resolution)||"object"==typeof e.to&&e.to.length<c.handles;break;case"slide":a="function"!=typeof e}a&&console&&console.error("Bad input for "+t+" on slider:",d)}),c.margin=c.margin?o.from(c.range,c.margin):0,(c.serialization.to instanceof jQuery||"string"==typeof c.serialization.to||!1===c.serialization.to)&&(c.serialization.to=[c.serialization.to]),"vertical"==c.orientation?(p+="vertical",a="top",i=1):(p+="horizontal",a="left",i=0),p+=c.connect?"lower"==c.connect?" connect lower":" connect":"",d.addClass(p),p=0;p<c.handles;p++){u[p]=d.append("<a><div></div></a>").children(":last"),u[p].css(a,o.to(c.range,c.start[p])+"%");var f=(1===r?"mousedown":2===r?"MSPointerDown":"touchstart")+".noUiSliderX",_=(1===r?"mousemove":2===r?"MSPointerMove":"touchmove")+".noUiSlider",b=(1===r?"mouseup":2===r?"MSPointerUp":"touchend")+".noUiSlider";u[p].find("div").on(f,function(e){if(t("body").bind("selectstart.noUiSlider",function(){return!1}),!d.hasClass("disabled")){var r=t(this).addClass("active").parent();t("body").addClass("TOUCH");var l=r.add(t(document)).add("body"),p=parseFloat(r[0].style[a]),h=s(e),f=h,v=!1;t(document).on(_,function(t){t.preventDefault(),t=s(t),t[0]-=h[0],t[1]-=h[1];var e=[f[0]!=t[0],f[1]!=t[1]],l=p+100*t[i]/(i?d.height():d.width()),l=n(l,d,r);if(e[i]&&l!=v){r.css(a,l+"%").data("input").val(o.is(c.range,l).toFixed(m));var e=c.slide,_=d.data("_n",!0);"function"==typeof e&&e.call(_,void 0),v=l,r.css("z-index",2==u.length&&100==l&&r.is(":first-child")?2:1)}f=t}),t(document).on(b+" mouseLeave.noUiSlider",function(){l.off(".noUiSlider"),t("body").removeClass("TOUCH"),d.find(".active").removeClass("active"),d.data("_n")&&d.data("_n",!1).change()})}}).on("click",function(t){t.stopPropagation()})}for(1==r&&d.on("click",function(t){if(!d.hasClass("disabled")){var e=s(t);t=100*(e[i]-d.offset()[a])/(i?d.height():d.width()),e=1<u.length?e[i]<(u[0].offset()[a]+u[1].offset()[a])/2?u[0]:u[1]:u[0],t=n(t,d,e),e.css(a,t+"%").data("input").val(o.is(c.range,t).toFixed(m)),t=c.slide,"function"==typeof t&&t.call(d,void 0),d.change()}}),p=0;p<u.length;p++)f=o.is(c.range,parseFloat(u[p][0].style[a])).toFixed(m),"string"==typeof c.serialization.to[p]?u[p].data("input",d.append('<input type="hidden" name="'+c.serialization.to[p]+'">').find("input:last").val(f).change(function(t){t.stopPropagation()})):0==c.serialization.to[p]?u[p].data("input",{val:function(t){return"undefined"==typeof t?this.handle.data("noUiVal"):void this.handle.data("noUiVal",t)},handle:u[p]}):u[p].data("input",c.serialization.to[p].data("handleNR",p).val(f).change(function(){var e=[null,null];e[t(this).data("handleNR")]=t(this).val(),d.val(e)}));t(this).data("setup",{settings:c,handles:u,pos:a,res:m})})},val:function(e){if(e){var a="number"==typeof e?[e]:e;return this.each(function(){for(var e=t(this).data("setup"),s=0;s<e.handles.length;s++)if(null!=a[s]){var i=n(o.to(e.settings.range,a[s]),t(this),e.handles[s]);e.handles[s].css(e.pos,i+"%").data("input").val(o.is(e.settings.range,i).toFixed(e.res))}})}e=t(this).data("setup").handles;for(var s=[],i=0;i<e.length;i++)s.push(parseFloat(e[i].data("input").val()));return 1==s.length?s[0]:s},disabled:function(){return a?t(this).addClass("disabled"):t(this).removeClass("disabled")}},"disabled"==e?methods.disabled.apply(this):methods.create.apply(this)}}(jQuery),define("nouislider",["jquery"],function(){}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/isFeatureEnabled"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'  <div class="large-2 columns">\n    <label  for="MEMORY_COST">\n      '+i((e.tr||t&&t.tr||s).call(t,"Cost",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Cost of each MB per hour",{name:"tr",hash:{},data:n}))+'</span>\n    </label>\n    <input type="text" wizard_field="MEMORY_COST" id="MEMORY_COST" name="name"/>\n  </div>\n  <div class="large-3 columns"></div>\n'},3:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'  <div class="large-2 columns">\n    <label  for="CPU_COST">\n      '+i((e.tr||t&&t.tr||s).call(t,"Cost",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Cost of each CPU per hour",{name:"tr",hash:{},data:n}))+'</span>\n\n    </label>\n    <input type="text" wizard_field="CPU_COST" id="CPU_COST" name="name"/>\n  </div>\n  <div class="large-3 columns"></div>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div class="">\n  <input type="hidden" wizard_field="MEMORY" id="MEMORY" name="memory" />\n</div>\n<div class="row">\n  <div class="large-7 columns">\n    <label class="" for="MEMORY">\n      '+r((e.tr||t&&t.tr||i).call(t,"Memory",{name:"tr",hash:{},data:n}))+'\n      <span class="tip ">'+r((e.tr||t&&t.tr||i).call(t,"Amount of RAM required for the VM, in Megabytes.",{name:"tr",hash:{},data:n}))+'</span>\n\n    </label>\n    <div class="large-8 columns">\n      <div id="memory_slider" class="large-7 columns"></div>\n    </div>\n    <div class="large-2 columns">\n      <input type="text" id="MEMORY_TMP" name="memory_tmp" size="4" />\n    </div>\n    <div class="large-2 columns">\n      <select id="memory_unit" name="MEMORY_UNIT">\n        <option value="MB">'+r((e.tr||t&&t.tr||i).call(t,"MB",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="GB">'+r((e.tr||t&&t.tr||i).call(t,"GB",{name:"tr",hash:{},data:n}))+"</option>\n      </select>\n    </div>\n  </div>\n";return s=(e.isFeatureEnabled||t&&t.isFeatureEnabled||i).call(t,"showback",{name:"isFeatureEnabled",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+='</div>\n<div class="row">\n  <div class="large-7 columns">\n    <label class="" for="CPU">\n      '+r((e.tr||t&&t.tr||i).call(t,"CPU",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">\n        '+r((e.tr||t&&t.tr||i).call(t,"Percentage of CPU divided by 100 required for the Virtual Machine. Half a processor is written 0.5.",{name:"tr",hash:{},data:n}))+'\n      </span>\n    </label>\n    <div class="large-10 columns">\n      <div id="cpu_slider"></div>\n    </div>\n    <div class="large-2 columns">\n      <input type="text" wizard_field="CPU" id="CPU" name="cpu"/>\n    </div>\n  </div>\n',s=(e.isFeatureEnabled||t&&t.isFeatureEnabled||i).call(t,"showback",{name:"isFeatureEnabled",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+'</div>\n<div class="row">\n  <div class="large-7 columns">\n    <label class="" for="VCPU">\n      '+r((e.tr||t&&t.tr||i).call(t,"VCPU",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">\n        '+r((e.tr||t&&t.tr||i).call(t,"Number of virtual cpus. This value is optional, the default hypervisor behavior is used, usually one virtual CPU.",{name:"tr",hash:{},data:n}))+'\n      </span>\n    </label>\n    <div class="large-10 columns">\n      <div id="vcpu_slider"></div>\n    </div>\n    <div class="large-2 columns">\n      <input type="text" wizard_field="VCPU" id="VCPU" name="vcpu"/>\n    </div>\n  </div>\n  <div class="large-5 columns"></div>\n</div>'},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs",["require","nouislider","utils/locale","utils/tips","hbs!./capacity-inputs/html"],function(t){function e(){return s()}function a(t){n.setup(t);var e=$("#CPU",t),a=$("#cpu_slider",t).noUiSlider({handles:1,connect:"lower",range:[0,1600],step:50,start:1,slide:function(t){if("move"!=t){var a=$(this).val();e.val(a/100)}}});a.addClass("noUiSlider"),e.change(function(){a.val(100*this.value)}),e.val(1),a.val(100);var s=$("#MEMORY",t),i=$("#MEMORY_TMP",t),r=$("#memory_unit",t),o=r.val(),l=function(){s.val("MB"==o?Math.floor(i.val()):Math.floor(1024*i.val()))},c=function(t){if("move"!=t){var e=$(this).val();i.val(e/100),l()}},d=$("#memory_slider",t).noUiSlider({handles:1,connect:"lower",range:[0,409600],step:12800,start:51200,value:512,slide:c});d.addClass("noUiSlider"),i.change(function(){d.val(100*this.value),l()}),s.change(function(){d.val(100*this.value),i.val(Math.floor(s.val()))}),r.change(function(){var e=$("#memory_unit :selected",t).val();if(o!=e){if(o=e,"GB"==e){d.empty().noUiSlider({handles:1,connect:"lower",range:[0,1600],start:1,step:50,value:51200,slide:c});var a=i.val()/1024;i.val(a),d.val(100*a)}else if("MB"==e){d.empty().noUiSlider({handles:1,connect:"lower",range:[0,409600],start:1,value:51200,step:12800,slide:c});var a=Math.floor(1024*i.val());i.val(a),d.val(100*a)}l()}}),i.val(512).change();var u=$("#VCPU",t),p=$("#vcpu_slider",t).noUiSlider({handles:1,connect:"lower",range:[1,16],start:1,step:1,slide:function(t){if("move"!=t){var e=$(this).val();u.val(e)}}});p.addClass("noUiSlider"),u.change(function(){p.val(this.value)}),p.val(0)}t("nouislider");var n=(t("utils/locale"),t("utils/tips")),s=t("hbs!./capacity-inputs/html");return{html:e,setup:a}}),define("tabs/vms-tab/dialogs/resize/dialogId",["require"],function(){return"resizeVMDialog"}),define("tabs/vms-tab/dialogs/resize",["require","utils/dialogs/dialog","hbs!./resize/html","sunstone","utils/notifier","utils/tips","tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs","utils/wizard-fields","./resize/dialogId","../tabId"],function(t){function e(){this.dialogId=p,r.call(this)}function a(){return o({dialogId:this.dialogId,capacityInputsHTML:d.html()})}function n(t){var e=this;return d.setup(),c.setup(t),$("#"+p+"Form",t).submit(function(){var a=u.retrieve(t);a.CPU==e.element.TEMPLATE.CPU&&delete a.CPU,a.MEMORY==e.element.TEMPLATE.MEMORY&&delete a.MEMORY,a.VCPU==e.element.TEMPLATE.VCPU&&delete a.VCPU;var n=$("#enforce",this).is(":checked"),s={vm_template:a,enforce:n};return l.runAction("VM.resize",e.element.ID,s),l.getDialog(p).hide(),l.getDialog(p).reset(),!1}),!1}function s(t){var e=this;return $("#vm_id",t).text(e.element.ID),$("#CPU",t).val(e.element.TEMPLATE.CPU),$("#MEMORY_TMP",t).val(e.element.TEMPLATE.MEMORY),e.element.VCPU&&$("#VCPU",t).val(e.element.TEMPLATE.VCPU),!1}function i(t){this.element=t}{var r=t("utils/dialogs/dialog"),o=t("hbs!./resize/html"),l=t("sunstone"),c=(t("utils/notifier"),t("utils/tips")),d=t("tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs"),u=t("utils/wizard-fields"),p=t("./resize/dialogId");t("../tabId")}return e.DIALOG_ID=p,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e.prototype.setElement=i,e
+}),define("hbs!tabs/vms-tab/dialogs/attach-disk/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large" role="dialog" data-reveal >\n  <div class="row">\n    <div class="large-12 columns">\n      <h3 class="subheader" id="">'+l((e.tr||t&&t.tr||o).call(t,"Attach new disk",{name:"tr",hash:{},data:n}))+'</h3>\n    </div>\n  </div>\n  <div class="reveal-body">\n    <form id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'Form" action="">\n      <div class="row">\n        <div class="large-6 columns">\n          <label for="vm_id">'+l((e.tr||t&&t.tr||o).call(t,"Virtual Machine ID",{name:"tr",hash:{},data:n}))+':</label>\n          <input style="border-style: inset; background-color: lightgrey" type="text" name="vm_id" id="vm_id" disabled/>\n        </div>\n      </div>\n      ';return i=null!=(i=e.diskTabHTML||(null!=t?t.diskTabHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"diskTabHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n      <div class="reveal-footer">\n        <div class="form_buttons">\n          <button class="button radius right success" id="attach_disk_button" type="submit" value="VM.attachdisk">'+l((e.tr||t&&t.tr||o).call(t,"Attach",{name:"tr",hash:{},data:n}))+'</button>\n        </div>\n      </div>\n      <a class="close-reveal-modal">&#215;</a>\n    </form>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/vms-tab/dialogs/attach-disk/html",a),a}),define("tabs/images-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","utils/humanize","utils/notifier","opennebula/image","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=p,this.dataTableId=t,this.resource=d,this.xmlRoot=u,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:r.tabTableColumns(p)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[o.tr("ID"),o.tr("Owner"),o.tr("Group"),o.tr("Name"),o.tr("Datastore"),o.tr("Size"),o.tr("Type"),o.tr("Registration time"),o.tr("Persistent"),o.tr("Status"),o.tr("#VMS"),o.tr("Target")],this.selectOptions={id_index:1,name_index:4,uname_index:2,select_resource:o.tr("Please select an image from the list"),you_selected:o.tr("You selected the following image:"),select_resource_multiple:o.tr("Please select one or more images from the list"),you_selected_multiple:o.tr("You selected the following images:")},this.totalImages=0,this.sizeImages=0,i.call(this)}function a(t){var e=t.IMAGE;return"3"==e.TYPE||"4"==e.TYPE||"5"==e.TYPE?!1:(this.sizeImages=this.sizeImages+parseInt(e.SIZE),this.totalImages++,['<input class="check_item" type="checkbox" id="image_'+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.UNAME,e.GNAME,e.NAME,e.DATASTORE,e.SIZE,c.typeStr(e.TYPE),l.prettyTime(e.REGTIME),parseInt(e.PERSISTENT)?"yes":"no",c.stateStr(e.STATE),e.RUNNING_VMS,e.TEMPLATE.TARGET?e.TEMPLATE.TARGET:"--"])}function n(){this.totalImages=0,this.sizeImages=0}function s(){var t=l.sizeFromMB(this.sizeImages);$(".total_images").text(this.totalImages),$(".size_images").text(t)}var i=t("utils/tab-datatable"),r=t("sunstone-config"),o=t("utils/locale"),l=t("utils/humanize"),c=(t("utils/notifier"),t("opennebula/image")),d="Image",u="IMAGE",p=t("./tabId"),h={DATASTORE:5};return e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e.prototype.preUpdateView=n,e.prototype.postUpdateView=s,e.COLUMN_IDS=h,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/advancedSection"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return"  <fieldset>\n    <legend>"+i((e.tr||t&&t.tr||s).call(t,"Image",{name:"tr",hash:{},data:n}))+'</legend>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="IMAGE_ID">\n          '+i((e.tr||t&&t.tr||s).call(t,"ID",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Image ID to be used in the Virtual Image disk.",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" wizard_field="IMAGE_ID" id="IMAGE_ID" name="IMAGE_ID"/>\n      </div>\n      <div class="large-6 columns">\n        <label for="IMAGE">\n          '+i((e.tr||t&&t.tr||s).call(t,"Name",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+i((e.tr||t&&t.tr||s).call(t,"Name of the image to be used in the Virtual Image disk.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="IMAGE" id="IMAGE" name="IMAGE"/>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="IMAGE_UID">\n          '+i((e.tr||t&&t.tr||s).call(t,"User ID",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+i((e.tr||t&&t.tr||s).call(t,"Identifier of the user owner of the image to reduce ambiguity.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="IMAGE_UID" id="IMAGE_UID" name="IMAGE_UID"/>\n      </div>\n      <div class="large-6 columns">\n        <label for="IMAGE_UNAME">\n          '+i((e.tr||t&&t.tr||s).call(t,"User Name",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+i((e.tr||t&&t.tr||s).call(t,"Name of the user owner of the image to reduce ambiguity.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="IMAGE_UNAME" id="IMAGE_UNAME" name="IMAGE_UNAME"/>\n      </div>\n    </div>\n  </fieldset>\n  <div class="row">\n    <div class="large-6 columns">\n      <label for="TARGET">\n        '+i((e.tr||t&&t.tr||s).call(t,"Target",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"Device to map image disk. If set, it will overwrite the default device mapping",{name:"tr",hash:{},data:n}))+"\n          <br>\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"Xen: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"KVM: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>"+i((e.tr||t&&t.tr||s).call(t,"VMWare: Optional",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <input type="text" wizard_field="TARGET" id="TARGET" name="target"/>\n    </div>\n    <div class="large-6 columns hypervisor only_xen only_kvm">\n      <label for="DRIVER">\n        '+i((e.tr||t&&t.tr||s).call(t,"Driver",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"Specific image mapping driver",{name:"tr",hash:{},data:n}))+"\n          <br>\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"Xen: Optional (tap:aio:, file:)",{name:"tr",hash:{},data:n}))+"\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"KVM: Optional (raw, qcow2)",{name:"tr",hash:{},data:n}))+"\n          <br>"+i((e.tr||t&&t.tr||s).call(t,"VMWare: Not supported",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <input type="text" wizard_field="DRIVER" id="DRIVER" name="driver" />\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-6 columns">\n      <label for="DEV_PREFIX">\n        '+i((e.tr||t&&t.tr||s).call(t,"Device Prefix",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"Prefix for the emulated device this image will be mounted at. For instance, “hd”, “sd”, or “vd” for KVM virtio. If omitted, the dev_prefix attribute of the Image will be used",{name:"tr",hash:{},data:n}))+"\n          <br>\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"Xen: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"KVM: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>"+i((e.tr||t&&t.tr||s).call(t,"VMWare: Optional",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <input type="text" wizard_field="DEV_PREFIX" id="DEV_PREFIX" name="DEV_PREFIX"/>\n    </div>\n    <div class="large-6 columns">\n      <label for="READONLY">\n        '+i((e.tr||t&&t.tr||s).call(t,"Read Only",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"Set how the image is exposed by the hypervisor",{name:"tr",hash:{},data:n}))+"\n          <br>\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"Xen: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"KVM: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>"+i((e.tr||t&&t.tr||s).call(t,"VMWare: Optional",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <select wizard_field="READONLY" id="READONLY" name="READONLY">\n        <option value=""></option>\n        <option value="yes">'+i((e.tr||t&&t.tr||s).call(t,"yes",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="no">'+i((e.tr||t&&t.tr||s).call(t,"no",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n  </div>\n  <div class="row vm_param">\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="CACHE">\n        '+i((e.tr||t&&t.tr||s).call(t,"Cache",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Selects the cache mechanism for the disk.",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <select wizard_field="CACHE" id="CACHE" name="CACHE">\n        <option value=""></option>\n        <option value="default">'+i((e.tr||t&&t.tr||s).call(t,"default",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="none">'+i((e.tr||t&&t.tr||s).call(t,"none",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="writethrough">'+i((e.tr||t&&t.tr||s).call(t,"writethrough",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="writeback">'+i((e.tr||t&&t.tr||s).call(t,"writeback",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="directsync">'+i((e.tr||t&&t.tr||s).call(t,"directsync",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="unsafe">'+i((e.tr||t&&t.tr||s).call(t,"unsafe",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="IO">\n        '+i((e.tr||t&&t.tr||s).call(t,"IO",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Set IO policy.",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <select wizard_field="IO" id="IO" name="IO">\n        <option value=""></option>\n        <option value="threads">'+i((e.tr||t&&t.tr||s).call(t,"threads",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="native">'+i((e.tr||t&&t.tr||s).call(t,"native",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="TOTAL_BYTES_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Total Bytes Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="TOTAL_BYTES_SEC" type="text" id="TOTAL_BYTES_SEC" name="TOTAL_BYTES_SEC" />\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="READ_BYTES_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Read Bytes Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="READ_BYTES_SEC" type="text" id="READ_BYTES_SEC" name="READ_BYTES_SEC" />\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="WRITE_BYTES_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Write Bytes Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="WRITE_BYTES_SEC" type="text" id="WRITE_BYTES_SEC" name="WRITE_BYTES_SEC" />\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="TOTAL_IOPS_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Total IOPS Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="TOTAL_IOPS_SEC" type="text" id="TOTAL_IOPS_SEC" name="TOTAL_IOPS_SEC" />\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="READ_IOPS_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Read IOPS Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="READ_IOPS_SEC" type="text" id="READ_IOPS_SEC" name="READ_IOPS_SEC" />\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="WRITE_IOPS_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Write IOPS Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="WRITE_IOPS_SEC" type="text" id="WRITE_IOPS_SEC" name="WRITE_IOPS_SEC" />\n    </div>\n  </div>\n'},3:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'  <div class="row">\n    <div class="large-6 columns">\n      <label for="TARGET">\n        '+i((e.tr||t&&t.tr||s).call(t,"Target",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"Device to map image disk. If set, it will overwrite the default device mapping",{name:"tr",hash:{},data:n}))+"\n          <br>\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"Xen: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"KVM: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>"+i((e.tr||t&&t.tr||s).call(t,"VMWare: Optional",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <input wizard_field="TARGET" type="text"  id="TARGET" name="target"/>\n    </div>\n    <div class="large-6 columns hypervisor only_xen only_kvm">\n      <label for="DRIVER">\n        '+i((e.tr||t&&t.tr||s).call(t,"Driver",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"Specific image mapping driver",{name:"tr",hash:{},data:n}))+"\n          <br>\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"Xen: Optional (tap:aio:, file:)",{name:"tr",hash:{},data:n}))+"\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"KVM: Optional (raw, qcow2)",{name:"tr",hash:{},data:n}))+"\n          <br>"+i((e.tr||t&&t.tr||s).call(t,"VMWare: Not supported",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <input wizard_field="DRIVER" type="text" id="DRIVER" name="driver" />\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-6 columns">\n      <label for="DEV_PREFIX">\n        '+i((e.tr||t&&t.tr||s).call(t,"Device Prefix",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"Prefix for the emulated device this image will be mounted at. For instance, “hd”, “sd”, or “vd” for KVM virtio. If omitted, the dev_prefix attribute of the Image will be used",{name:"tr",hash:{},data:n}))+"\n          <br>\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"Xen: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"KVM: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>"+i((e.tr||t&&t.tr||s).call(t,"VMWare: Optional",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <input wizard_field="DEV_PREFIX" type="text" id="DEV_PREFIX" name="DEV_PREFIX"/>\n    </div>\n    <div class="large-6 columns">\n      <label for="READONLY">\n        '+i((e.tr||t&&t.tr||s).call(t,"Read Only",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"Set how the image is exposed by the hypervisor",{name:"tr",hash:{},data:n}))+"\n          <br>\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"Xen: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>\n          "+i((e.tr||t&&t.tr||s).call(t,"KVM: Optional",{name:"tr",hash:{},data:n}))+"\n          <br>"+i((e.tr||t&&t.tr||s).call(t,"VMWare: Optional",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <select wizard_field="READONLY" id="READONLY" name="READONLY">\n        <option value=""></option>\n        <option value="yes">'+i((e.tr||t&&t.tr||s).call(t,"yes",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="no">'+i((e.tr||t&&t.tr||s).call(t,"no",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n  </div>\n  <div class="row  vm_param">\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="CACHE">\n        '+i((e.tr||t&&t.tr||s).call(t,"Cache",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Selects the cache mechanism for the disk.",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <select wizard_field="CACHE" id="CACHE" name="CACHE">\n        <option value=""></option>\n        <option value="default">'+i((e.tr||t&&t.tr||s).call(t,"default",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="none">'+i((e.tr||t&&t.tr||s).call(t,"none",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="writethrough">'+i((e.tr||t&&t.tr||s).call(t,"writethrough",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="writeback">'+i((e.tr||t&&t.tr||s).call(t,"writeback",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="directsync">'+i((e.tr||t&&t.tr||s).call(t,"directsync",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="unsafe">'+i((e.tr||t&&t.tr||s).call(t,"unsafe",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="IO">\n        '+i((e.tr||t&&t.tr||s).call(t,"IO",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Set IO policy.",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <select wizard_field="IO" id="IO" name="IO">\n        <option value=""></option>\n        <option value="threads">'+i((e.tr||t&&t.tr||s).call(t,"threads",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="native">'+i((e.tr||t&&t.tr||s).call(t,"native",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="TOTAL_BYTES_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Total Bytes Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="TOTAL_BYTES_SEC" type="text" id="TOTAL_BYTES_SEC" name="TOTAL_BYTES_SEC" />\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="READ_BYTES_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Read Bytes Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="READ_BYTES_SEC" type="text" id="READ_BYTES_SEC" name="READ_BYTES_SEC" />\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="WRITE_BYTES_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Write Bytes Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="WRITE_BYTES_SEC" type="text" id="WRITE_BYTES_SEC" name="WRITE_BYTES_SEC" />\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="TOTAL_IOPS_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Total IOPS Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="TOTAL_IOPS_SEC" type="text" id="TOTAL_IOPS_SEC" name="TOTAL_IOPS_SEC" />\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="READ_IOPS_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Read IOPS Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="READ_IOPS_SEC" type="text" id="READ_IOPS_SEC" name="READ_IOPS_SEC" />\n    </div>\n    <div class="large-6 columns hypervisor only_kvm">\n      <label for="WRITE_IOPS_SEC">\n        '+i((e.tr||t&&t.tr||s).call(t,"Write IOPS Sec",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+i((e.tr||t&&t.tr||s).call(t,"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input wizard_field="WRITE_IOPS_SEC" type="text" id="WRITE_IOPS_SEC" name="WRITE_IOPS_SEC" />\n    </div>\n  </div>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div class="row">\n  <div class="large-12 columns">\n    <input id="'+l((i=null!=(i=e.diskTabId||(null!=t?t.diskTabId:t))?i:o,typeof i===r?i.call(t,{name:"diskTabId",hash:{},data:n}):i))+'radioImage" type="radio" name="'+l((i=null!=(i=e.diskTabId||(null!=t?t.diskTabId:t))?i:o,typeof i===r?i.call(t,{name:"diskTabId",hash:{},data:n}):i))+'" value="image" checked>\n    <label for="'+l((i=null!=(i=e.diskTabId||(null!=t?t.diskTabId:t))?i:o,typeof i===r?i.call(t,{name:"diskTabId",hash:{},data:n}):i))+'radioImage">'+l((e.tr||t&&t.tr||o).call(t,"Image",{name:"tr",hash:{},data:n}))+'</label>\n    <input id="'+l((i=null!=(i=e.diskTabId||(null!=t?t.diskTabId:t))?i:o,typeof i===r?i.call(t,{name:"diskTabId",hash:{},data:n}):i))+'radioVolatile" type="radio" name="'+l((i=null!=(i=e.diskTabId||(null!=t?t.diskTabId:t))?i:o,typeof i===r?i.call(t,{name:"diskTabId",hash:{},data:n}):i))+'" value="volatile">\n    <label for="'+l((i=null!=(i=e.diskTabId||(null!=t?t.diskTabId:t))?i:o,typeof i===r?i.call(t,{name:"diskTabId",hash:{},data:n}):i))+'radioVolatile">'+l((e.tr||t&&t.tr||o).call(t,"Volatile Disk",{name:"tr",hash:{},data:n}))+'</label>\n  </div>\n</div>\n<div id="disk_type" class="image">\n  ';return i=null!=(i=e.imageTableSelectHTML||(null!=t?t.imageTableSelectHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"imageTableSelectHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+="\n  <br>\n",s=(e.advancedSection||t&&t.advancedSection||o).call(t,(e.tr||t&&t.tr||o).call(t,"Advanced Options",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='</div>\n<div id="disk_type" class="volatile" style="display: none;">\n  <div>\n    <input wizard_field="SIZE" type="hidden" id="SIZE" name="size" />\n  </div>\n  <div class="row">\n    <div class="large-2 columns">\n      <label class="inline" for="SIZE_TMP">\n        '+l((e.tr||t&&t.tr||o).call(t,"Size",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Size of the new disk",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n    </div>\n    <div class="large-6 columns">\n      <div id="size_slider" class="large-7 columns"></div>\n    </div>\n    <div class="large-2 columns">\n      <input type="text" id="SIZE_TMP" name="size_tmp" size="4" />\n    </div>\n    <div class="large-2 columns">\n      <select id="size_unit" name="SIZE_UNIT">\n        <option value="GB">'+l((e.tr||t&&t.tr||o).call(t,"GB",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="MB">'+l((e.tr||t&&t.tr||o).call(t,"MB",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-6 columns">\n      <label for="TYPE">\n        '+l((e.tr||t&&t.tr||o).call(t,"Type",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Disk type",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <select wizard_field="TYPE" id="TYPE" name="type">\n        <option value="fs">'+l((e.tr||t&&t.tr||o).call(t,"FS",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="swap">'+l((e.tr||t&&t.tr||o).call(t,"Swap",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n    <div class="large-6 columns">\n      <label for="FORMAT">\n        '+l((e.tr||t&&t.tr||o).call(t,"Format",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Filesystem type for the fs images",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <input wizard_field="FORMAT" type="text" id="FORMAT" name="format" />\n    </div>\n  </div>\n  <br>\n',s=(e.advancedSection||t&&t.advancedSection||o).call(t,(e.tr||t&&t.tr||o).call(t,"Advanced Options",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+"</div>"},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab",["require","nouislider","sunstone-config","utils/locale","utils/tips","tabs/images-tab/datatable","utils/wizard-fields","hbs!./disk-tab/html"],function(t){function e(t){this.diskTabId="diskTab"+t,this.imageTable=new l(this.diskTabId+"Table",{select:!0})}function a(){return d({diskTabId:this.diskTabId,imageTableSelectHTML:this.imageTable.dataTableHTML})}function n(){this.imageTable.refreshResourceTableSelect()}function s(t){var e=this;o.setup(t),e.imageTable.initialize({selectOptions:{select_callback:function(e,a){$("#IMAGE_ID",t).val()!=e[a.id_index]&&($("#IMAGE_ID",t).val(""),$("#IMAGE",t).val(e[a.name_index]),$("#IMAGE_UNAME",t).val(e[a.uname_index]),$("#IMAGE_UID",t).val(""))}}}),e.imageTable.refreshResourceTableSelect();var a=$("div.image",t),n=$("div.volatile",t);$("input[name='"+e.diskTabId+"']",t).change(function(){"image"==$("input[name='"+e.diskTabId+"']:checked",t).val()?(a.toggle(),n.hide(),$("[wizard_field]",a).prop("wizard_field_disabled",!1),$("[wizard_field]",n).prop("wizard_field_disabled",!0)):(a.hide(),n.toggle(),$("[wizard_field]",n).prop("wizard_field_disabled",!1),$("[wizard_field]",a).prop("wizard_field_disabled",!0))}),$("[wizard_field]",a).prop("wizard_field_disabled",!1),$("[wizard_field]",n).prop("wizard_field_disabled",!0);var s=$("#SIZE",t),i=$("#SIZE_TMP",t),r=$("#size_unit",t),l=r.val(),c=function(){s.val("MB"==l?Math.floor(i.val()):Math.floor(1024*i.val()))},d=function(t){if("move"!=t){var e=$(this).val();i.val(e/100),c()}},u=$("#size_slider",t).noUiSlider({handles:1,connect:"lower",range:[0,5e3],start:1,step:50,slide:d});u.addClass("noUiSlider"),i.change(function(){u.val(100*this.value),c()}),i.val(10),c(),u.val(1e3),r.change(function(){var e=$("#size_unit :selected",t).val();if(l!=e){if(l=e,"GB"==e){u.empty().noUiSlider({handles:1,connect:"lower",range:[0,5e3],start:1,step:50,slide:d});var a=i.val()/1024;i.val(a),u.val(100*a)}else if("MB"==e){u.empty().noUiSlider({handles:1,connect:"lower",range:[0,204800],start:1,step:12800,slide:d});var a=Math.round(1024*i.val());i.val(a),u.val(100*a)}c()}})}function i(t){return c.retrieve(t)}function r(t,e){if(e.IMAGE_ID||e.IMAGE){if($("input#"+this.diskTabId+"radioImage",t).click(),void 0!=e.IMAGE_ID){var a={ids:e.IMAGE_ID};this.imageTable.selectResourceTableSelect(a)}else if(void 0!=e.IMAGE&&void 0!=e.IMAGE_UNAME){var a={names:{name:e.IMAGE,uname:e.IMAGE_UNAME}};this.imageTable.selectResourceTableSelect(a)}c.fill($(".image",t),e)}else $("input#"+this.diskTabId+"radioVolatile",t).click(),e.SIZE&&$("#SIZE_TMP",t).val(e.SIZE/1024),c.fill($(".volatile",t),e)
+}t("nouislider");var o=(t("sunstone-config"),t("utils/locale"),t("utils/tips")),l=t("tabs/images-tab/datatable"),c=t("utils/wizard-fields"),d=t("hbs!./disk-tab/html");return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.fill=r,e}),define("tabs/vms-tab/dialogs/attach-disk/dialogId",["require"],function(){return"attachDiskVMDialog"}),define("tabs/vms-tab/dialogs/attach-disk",["require","utils/dialogs/dialog","hbs!./attach-disk/html","sunstone","utils/notifier","utils/tips","tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab","utils/wizard-fields","./attach-disk/dialogId","../tabId"],function(t){function e(){this.dialogId=u,this.diskTab=new d(u+"DiskTab"),r.call(this)}function a(){return o({dialogId:this.dialogId,diskTabHTML:this.diskTab.html()})}function n(t){var e=this;return e.diskTab.setup(),c.setup(t),$("#"+u+"Form",t).submit(function(){var a=e.diskTab.retrieve(t),n={DISK:a};return l.runAction("VM.attachdisk",e.element.ID,n),l.getDialog(u).hide(),l.getDialog(u).reset(),!1}),!1}function s(t){return this.diskTab.onShow(t),$("#vm_id",t).val(this.element.ID),!1}function i(t){this.element=t}{var r=t("utils/dialogs/dialog"),o=t("hbs!./attach-disk/html"),l=t("sunstone"),c=(t("utils/notifier"),t("utils/tips")),d=t("tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab"),u=(t("utils/wizard-fields"),t("./attach-disk/dialogId"));t("../tabId")}return e.DIALOG_ID=u,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e.prototype.setElement=i,e}),define("hbs!tabs/vms-tab/dialogs/attach-nic/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large" role="dialog" data-reveal >\n  <div class="row">\n    <div class="large-12 columns">\n      <h3 class="subheader" id="">'+l((e.tr||t&&t.tr||o).call(t,"Attach new nic",{name:"tr",hash:{},data:n}))+'</h3>\n    </div>\n  </div>\n  <div class="reveal-body">\n    <form id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'Form" action="">\n      <div class="row">\n        <div class="large-6 columns">\n          <label for="vm_id">'+l((e.tr||t&&t.tr||o).call(t,"Virtual Machine ID",{name:"tr",hash:{},data:n}))+':</label>\n          <input style="border-style: inset; background-color: lightgrey" type="text" name="vm_id" id="vm_id" disabled/>\n        </div>\n      </div>\n      ';return i=null!=(i=e.nicTabHTML||(null!=t?t.nicTabHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"nicTabHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n      <div class="reveal-footer">\n        <div class="form_buttons">\n          <button class="button radius right success" id="attach_nic_button" type="submit" value="VM.attachdisk">'+l((e.tr||t&&t.tr||o).call(t,"Attach",{name:"tr",hash:{},data:n}))+'</button>\n        </div>\n      </div>\n      <a class="close-reveal-modal">&#215;</a>\n    </form>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/vms-tab/dialogs/attach-nic/html",a),a}),define("tabs/secgroups-tab/tabId",["require"],function(){return"secgroups-tab"}),define("tabs/secgroups-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=l,this.dataTableId=t,this.resource=r,this.xmlRoot=o,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:s.tabTableColumns(l)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[i.tr("ID"),i.tr("Owner"),i.tr("Group"),i.tr("Name")],this.selectOptions={id_index:1,name_index:4,select_resource:i.tr("Please select a security group from the list"),you_selected:i.tr("You selected the following security group:"),select_resource_multiple:i.tr("Please select one or more security groups from the list"),you_selected_multiple:i.tr("You selected the following security groups:")},n.call(this)}function a(t){var e=t[o];return['<input class="check_item" type="checkbox" id="'+r.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.UNAME,e.GNAME,e.NAME]}var n=t("utils/tab-datatable"),s=t("sunstone-config"),i=t("utils/locale"),r="SecurityGroup",o="SECURITY_GROUP",l=t("./tabId");return e.prototype=Object.create(n.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab/html",["hbs","hbs/handlebars","templates/helpers/advancedSection","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c="  <fieldset>\n    <legend>"+o((e.tr||t&&t.tr||r).call(t,"Choose Network",{name:"tr",hash:{},data:n}))+'</legend>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="NETWORK_ID">\n          '+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Identifier of the virtual network from which to lease an IP and MAC address to this Virtual Machine network interface.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="NETWORK_ID" id="NETWORK_ID" name="NETWORK_ID"/>\n      </div>\n      <div class="large-6 columns">\n        <label for="NETWORK">\n          '+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Name of the virtual network from which to lease an IP and MAC address to this Virtual Machine network interface.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="NETWORK" id="NETWORK" name="NETWORK" />\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="NETWORK_UID">\n          '+o((e.tr||t&&t.tr||r).call(t,"User ID",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Identifier of the user owner of the virtual network from which to lease an IP and MAC address to this Virtual Machine network interface.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="NETWORK_UID" id="NETWORK_UID" name="NETWORK_UID"/>\n      </div>\n      <div class="large-6 columns">\n        <label for="NETWORK_UNAME">\n          '+o((e.tr||t&&t.tr||r).call(t,"User Name",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Name of the user owner of the virtual network from which to lease an IP and MAC address to this Virtual Machine network interface.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="NETWORK_UNAME" id="NETWORK_UNAME" name="NETWORK_UNAME"/>\n      </div>\n    </div>\n  </fieldset>\n  <fieldset>\n    <legend>'+o((e.tr||t&&t.tr||r).call(t,"Override Network Values IPv4",{name:"tr",hash:{},data:n}))+'</legend>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="IP">\n          '+o((e.tr||t&&t.tr||r).call(t,"IP",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Request an specific IP from the Network",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" wizard_field="IP" id="IP" name="IP" size="3" />\n      </div>\n      <div class="large-6 columns">\n        <label for="MAC">\n          '+o((e.tr||t&&t.tr||r).call(t,"MAC",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Set a specific MAC to the NIC",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" wizard_field="MAC" id="MAC" name="MAC"/>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="NETWORK_MASK">\n          '+o((e.tr||t&&t.tr||r).call(t,"Network Mask",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Override the network mask of the network. For example, 255.255.255.0",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="NETWORK_MASK" id="NETWORK_MASK" name="NETWORK_MASK"/>\n      </div>\n      <div class="large-6 columns">\n        <label for="NETWORK_ADDRESS">\n          '+o((e.tr||t&&t.tr||r).call(t,"Network Address",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Override the base network address. For example, 192.168.1.0",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="NETWORK_ADDRESS" id="NETWORK_ADDRESS" name="NETWORK_ADDRESS"/>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="GATEWAY">\n          '+o((e.tr||t&&t.tr||r).call(t,"Gateway",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Override the Router of the network.",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" wizard_field="GATEWAY" id="GATEWAY" name="GATEWAY"/>\n      </div>\n      <div class="large-6 columns">\n        <label for="DNS">\n          '+o((e.tr||t&&t.tr||r).call(t,"DNS",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Override the specific DNS for this network",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" wizard_field="DNS" id="DNS" name="DNS"/>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="SEARCH_DOMAIN">\n          '+o((e.tr||t&&t.tr||r).call(t,"Search Domain",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Override the Search Domain for this network.",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" wizard_field="SEARCH_DOMAIN" id="SEARCH_DOMAIN" name="SEARCH_DOMAIN"/>\n      </div>\n    </div>\n  </fieldset>\n  <fieldset>\n    <legend>'+o((e.tr||t&&t.tr||r).call(t,"Override Network Values IPv6",{name:"tr",hash:{},data:n}))+'</legend>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="IP6_GLOBAL">\n          '+o((e.tr||t&&t.tr||r).call(t,"IP6 Global",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Request an specific IP from the IPv6 Network",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" wizard_field="IP6_GLOBAL" id="IP6_GLOBAL" name="IP6_GLOBAL" size="3" />\n      </div>\n      <div class="large-6 columns">\n        <label for="GATEWAY6">\n          '+o((e.tr||t&&t.tr||r).call(t,"GATEWAY6",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Override the Router of the IPv6 network.",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" wizard_field="GATEWAY6" id="GATEWAY6" name="GATEWAY6"/>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="CONTEXT_FORCE_IPV4">\n          '+o((e.tr||t&&t.tr||r).call(t,"Network Mask",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Override force IPv4 for this IPv6 network. Values: Yes or No.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="CONTEXT_FORCE_IPV4" id="CONTEXT_FORCE_IPV4" name="CONTEXT_FORCE_IPV4"/>\n      </div>\n    </div>\n  </fieldset>\n  <fieldset>\n    <legend>'+o((e.tr||t&&t.tr||r).call(t,"Harware",{name:"tr",hash:{},data:n}))+'</legend>\n    <div class="row">\n      <div class="large-6 columns">\n        <label for="MODEL">\n          '+o((e.tr||t&&t.tr||r).call(t,"Model",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Hardware that will emulate this network interface. With Xen this is the type attribute of the vif.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="MODEL" id="MODEL" name="MODEL" />\n      </div>\n    </div>\n  </fieldset>\n  <br>\n  <fieldset>\n    <legend>'+o((e.tr||t&&t.tr||r).call(t,"Security Groups",{name:"tr",hash:{},data:n}))+'</legend>\n    <div name="str_nic_tab_id" str_nic_tab_id="'+o((i=null!=(i=e.nicTabId||(null!=t?t.nicTabId:t))?i:r,typeof i===l?i.call(t,{name:"nicTabId",hash:{},data:n}):i))+'">\n      ';return i=null!=(i=e.secgroupsTableSelectHTML||(null!=t?t.secgroupsTableSelectHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"secgroupsTableSelectHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n    </div>\n  </fieldset>\n  <div style="display: none;">\n    <fieldset>\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"TCP Firewall",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-12 columns text-center">\n          <input type="radio" class="tcp_type" name="tcp_type" id="'+o((i=null!=(i=e.nicTabId||(null!=t?t.nicTabId:t))?i:r,typeof i===l?i.call(t,{name:"nicTabId",hash:{},data:n}):i))+'white_tcp_type" value="WHITE_PORTS_TCP">\n          <label for="'+o((i=null!=(i=e.nicTabId||(null!=t?t.nicTabId:t))?i:r,typeof i===l?i.call(t,{name:"nicTabId",hash:{},data:n}):i))+'white_tcp_type">'+o((e.tr||t&&t.tr||r).call(t,"Whitelist",{name:"tr",hash:{},data:n}))+'</label>\n          <input type="radio" class="tcp_type" name="tcp_type" id="'+o((i=null!=(i=e.nicTabId||(null!=t?t.nicTabId:t))?i:r,typeof i===l?i.call(t,{name:"nicTabId",hash:{},data:n}):i))+'black_tcp_type" value="BLACK_PORTS_TCP">\n          <label for="'+o((i=null!=(i=e.nicTabId||(null!=t?t.nicTabId:t))?i:r,typeof i===l?i.call(t,{name:"nicTabId",hash:{},data:n}):i))+'black_tcp_type">'+o((e.tr||t&&t.tr||r).call(t,"Blacklist",{name:"tr",hash:{},data:n}))+'</label>\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-12 columns">\n          <label for="TCP_PORTS">\n            '+o((e.tr||t&&t.tr||r).call(t,"PORTS",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"A list of ports separated by commas or a ranges separated by semicolons, e.g.: 22,80,5900:6000",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n          <input type="text" id="TCP_PORTS" name="ports" />\n        </div>\n      </div>\n    </fieldset>\n    <fieldset>\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"UDP Firewall",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-12 columns text-center">\n          <input type="radio" class="udp_type" name="udp_type" id="'+o((i=null!=(i=e.nicTabId||(null!=t?t.nicTabId:t))?i:r,typeof i===l?i.call(t,{name:"nicTabId",hash:{},data:n}):i))+'white_udp_type" value="WHITE_PORTS_UDP">\n          <label for="'+o((i=null!=(i=e.nicTabId||(null!=t?t.nicTabId:t))?i:r,typeof i===l?i.call(t,{name:"nicTabId",hash:{},data:n}):i))+'white_udp_type">'+o((e.tr||t&&t.tr||r).call(t,"Whitelist",{name:"tr",hash:{},data:n}))+'</label>\n          <input type="radio" class="udp_type" name="udp_type" id="'+o((i=null!=(i=e.nicTabId||(null!=t?t.nicTabId:t))?i:r,typeof i===l?i.call(t,{name:"nicTabId",hash:{},data:n}):i))+'black_udp_type" value="BLACK_PORTS_UDP">\n          <label for="'+o((i=null!=(i=e.nicTabId||(null!=t?t.nicTabId:t))?i:r,typeof i===l?i.call(t,{name:"nicTabId",hash:{},data:n}):i))+'black_udp_type">'+o((e.tr||t&&t.tr||r).call(t,"Blacklist",{name:"tr",hash:{},data:n}))+'</label>\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-12 columns">\n          <label for="UDP_PORTS">\n            '+o((e.tr||t&&t.tr||r).call(t,"PORTS",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"A list of ports separated by commas or a ranges separated by semicolons, e.g.: 22,80,5900:6000",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n          <input type="text" id="UDP_PORTS" name="ports" />\n        </div>\n      </div>\n    </fieldset>\n    <fieldset>\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"ICMP",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-12 columns">\n          <label>\n            <input type="checkbox" name="icmp_type" value="ICMP" id="icmp_type">'+o((e.tr||t&&t.tr||r).call(t,"Drop",{name:"tr",hash:{},data:n}))+"</label>\n        </div>\n      </div>\n    </fieldset>\n  </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l='<div class="row">\n  ';return i=null!=(i=e.vnetsTableSelectHTML||(null!=t?t.vnetsTableSelectHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"vnetsTableSelectHTML",hash:{},data:n}):i,null!=s&&(l+=s),l+="\n  <br>\n",s=(e.advancedSection||t&&t.advancedSection||o).call(t,(e.tr||t&&t.tr||o).call(t,"Advanced Options",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(l+=s),l+"</div>"},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab",["require","nouislider","sunstone-config","utils/locale","utils/tips","tabs/vnets-tab/datatable","tabs/secgroups-tab/datatable","utils/wizard-fields","hbs!./nic-tab/html"],function(t){function e(t){this.nicTabId="nicTab"+t,this.vnetsTable=new l(this.nicTabId+"Table",{select:!0});var e={select:!0,selectOptions:{multiple_choice:!0}};this.secgroupsTable=new c(this.nicTabId+"SGTable",e)}function a(){return u({nicTabId:this.nicTabId,vnetsTableSelectHTML:this.vnetsTable.dataTableHTML,secgroupsTableSelectHTML:this.secgroupsTable.dataTableHTML})}function n(){this.vnetsTable.refreshResourceTableSelect()}function s(t){var e=this;o.setup(t),e.vnetsTable.initialize({selectOptions:{select_callback:function(e,a){$("#NETWORK_ID",t).val()!=e[a.id_index]&&($("#NETWORK_ID",t).val(""),$("#NETWORK",t).val(e[a.name_index]),$("#NETWORK_UNAME",t).val(e[a.uname_index]),$("#NETWORK_UID",t).val(""))}}}),e.vnetsTable.refreshResourceTableSelect(),e.secgroupsTable.initialize(),e.secgroupsTable.refreshResourceTableSelect()}function i(t){var e=d.retrieve(t),a=$("input.tcp_type:checked",t).val();a&&(e[a]=$("#TCP_PORTS",t).val());var n=$("input.udp_type:checked",t).val();n&&(e[n]=$("#UDP_PORTS",t).val()),$("#icmp_type",t).is(":checked")&&(e.ICMP="drop");var s=this.secgroupsTable.retrieveResourceTableSelect();return void 0!=s&&0!=s.length&&(e.SECURITY_GROUPS=s.join(",")),e}function r(t,e){if(void 0!=e.NETWORK_ID){var a={ids:e.NETWORK_ID};this.vnetsTable.selectResourceTableSelect(a)}else if(void 0!=e.NETWORK&&void 0!=e.NETWORK_UNAME){var a={names:{name:e.NETWORK,uname:e.NETWORK_UNAME}};this.vnetsTable.selectResourceTableSelect(a)}if(e.WHITE_PORTS_TCP){var n=$("input.tcp_type[value='WHITE_PORTS_TCP']",t);n.click(),$("#TCP_PORTS",t).val(e.WHITE_PORTS_TCP)}else if(e.BLACK_PORTS_TCP){var n=$("input.tcp_type[value='BLACK_PORTS_TCP']",t);n.click(),$("#TCP_PORTS",t).val(e.BLACK_PORTS_TCP)}if(e.WHITE_PORTS_UDP){var n=$("input.udp_type[value='WHITE_PORTS_UDP']",t);n.click(),$("#UDP_PORTS",t).val(e.WHITE_PORTS_UDP)}else if(e.BLACK_PORTS_UDP){var n=$("input.udp_type[value='BLACK_PORTS_UDP']",t);n.click(),$("#UDP_PORTS",t).val(e.BLACK_PORTS_UDP)}if(e.ICMP){var n=$("#icmp_type",t);$("#icmp_type",t).attr("checked","checked")}if(void 0!=e.SECURITY_GROUPS&&0!=e.SECURITY_GROUPS.length){var a={ids:e.SECURITY_GROUPS.split(",")};this.secgroupsTable.selectResourceTableSelect(a)}else this.secgroupsTable.refreshResourceTableSelect();d.fill(t,e)}t("nouislider");var o=(t("sunstone-config"),t("utils/locale"),t("utils/tips")),l=t("tabs/vnets-tab/datatable"),c=t("tabs/secgroups-tab/datatable"),d=t("utils/wizard-fields"),u=t("hbs!./nic-tab/html");return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.fill=r,e}),define("tabs/vms-tab/dialogs/attach-nic/dialogId",["require"],function(){return"attachNICVMDialog"}),define("tabs/vms-tab/dialogs/attach-nic",["require","utils/dialogs/dialog","hbs!./attach-nic/html","sunstone","utils/notifier","utils/tips","tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab","utils/wizard-fields","./attach-nic/dialogId","../tabId"],function(t){function e(){this.dialogId=u,this.nicTab=new d(u+"NickTab"),r.call(this)}function a(){return o({dialogId:this.dialogId,nicTabHTML:this.nicTab.html()})}function n(t){var e=this;return e.nicTab.setup(),c.setup(t),$("#"+u+"Form",t).submit(function(){var a=e.nicTab.retrieve(t),n={NIC:a};return l.runAction("VM.attachnic",e.element.ID,n),l.getDialog(u).hide(),l.getDialog(u).reset(),!1}),!1}function s(t){return this.nicTab.onShow(t),$("#vm_id",t).val(this.element.ID),!1}function i(t){this.element=t}{var r=t("utils/dialogs/dialog"),o=t("hbs!./attach-nic/html"),l=t("sunstone"),c=(t("utils/notifier"),t("utils/tips")),d=t("tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab"),u=(t("utils/wizard-fields"),t("./attach-nic/dialogId"));t("../tabId")}return e.DIALOG_ID=u,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e.prototype.setElement=i,e}),define("hbs!tabs/vms-tab/dialogs/snapshot/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal small" role="dialog" data-reveal >\n  <div class="row">\n    <div class="large-12 columns">\n      <h3 class="subheader" id="">'+o((e.tr||t&&t.tr||r).call(t,"Snapshot",{name:"tr",hash:{},data:n}))+'</h3>\n    </div>\n  </div>\n  <div class="reveal-body">\n    <form id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'Form" action="">\n      <div class="row">\n        <div class="large-6 columns">\n          <label for="vm_id">'+o((e.tr||t&&t.tr||r).call(t,"Virtual Machine ID",{name:"tr",hash:{},data:n}))+':</label>\n          <input style="border-style: inset; background-color: lightgrey" type="text" name="vm_id" id="vm_id" disabled/>\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-12 columns">\n          <label for="snapshot_name">'+o((e.tr||t&&t.tr||r).call(t,"Snapshot name",{name:"tr",hash:{},data:n}))+':</label>\n          <input type="text" name="snapshot_name" id="snapshot_name" />\n        </div>\n      </div>\n      <div class="form_buttons">\n        <button class="button radius right success" id="snapshot_live_button" type="submit" value="VM.saveas">'+o((e.tr||t&&t.tr||r).call(t,"Take snapshot",{name:"tr",hash:{},data:n}))+'</button>\n      </div>\n      <a class="close-reveal-modal">&#215;</a>\n    </form>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/vms-tab/dialogs/snapshot/html",a),a}),define("tabs/vms-tab/dialogs/snapshot/dialogId",["require"],function(){return"snapshotVMDialog"}),define("tabs/vms-tab/dialogs/snapshot",["require","utils/dialogs/dialog","hbs!./snapshot/html","sunstone","utils/tips","./snapshot/dialogId","../tabId"],function(t){function e(){this.dialogId=d,r.call(this)}function a(){return o({dialogId:this.dialogId})}function n(t){var e=this;return c.setup(t),$("#"+d+"Form",t).submit(function(){var t=$("#snapshot_name",this).val(),a={snapshot_name:t};return l.runAction("VM.snapshot_create",e.element.ID,a),l.getDialog(d).hide(),l.getDialog(d).reset(),!1}),!1}function s(t){return $("#vm_id",t).val(this.element.ID),$("#snapshot_name",t).focus(),!1}function i(t){this.element=t}{var r=t("utils/dialogs/dialog"),o=t("hbs!./snapshot/html"),l=t("sunstone"),c=t("utils/tips"),d=t("./snapshot/dialogId");t("../tabId")}return e.DIALOG_ID=d,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e.prototype.setElement=i,e}),define("hbs!tabs/vms-tab/dialogs/vnc/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal large max-height" style="width:auto; max-width:70%" data-reveal >\n  <div class="row">\n    <div class="large-12 columns">\n      <h3 class="subheader" id="vnc_dialog">\n        '+o((e.tr||t&&t.tr||r).call(t,"VNC",{name:"tr",hash:{},data:n}))+'\n        <span id="VNC_status">'+o((e.tr||t&&t.tr||r).call(t,"Loading",{name:"tr",hash:{},data:n}))+'</span>\n        <a id="open_in_a_new_window" href="" target="_blank" title="'+o((e.tr||t&&t.tr||r).call(t,"Open in a new window",{name:"tr",hash:{},data:n}))+'"> <i class="fa fa-external-link detach-vnc-icon"/></a>\n        <span id="VNC_buttons" class="right">\n          <input type="button" value="Send CtrlAltDel" id="sendCtrlAltDelButton"></span>\n      </h3>\n    </div>\n  </div>\n  <div class="reveal-body" style="width:100%; overflow-x:overlay">\n    <canvas id="VNC_canvas" width="640px">'+o((e.tr||t&&t.tr||r).call(t,"Canvas not supported.",{name:"tr",hash:{},data:n}))+'</canvas>\n    <div id="VNC_status_bar" class="VNC_status_bar"></div>\n  </div>\n  <a class="close-reveal-modal">&#215;</a>\n</div>'},useData:!0});return e.registerPartial("tabs/vms-tab/dialogs/vnc/html",a),a}),define("tabs/vms-tab/dialogs/vnc",["require","utils/dialogs/dialog","hbs!./vnc/html","sunstone","utils/vnc","./vnc/dialogId","../tabId"],function(t){function e(){this.dialogId=u,o.call(this)}function a(){return l({dialogId:this.dialogId})}function n(t){return $("#open_in_a_new_window",t).on("click",function(){var t=c.getDialog(u);t.hide()}),$("#sendCtrlAltDelButton",t).click(function(){return d.sendCtrlAltDel(),!1}),!1}function s(){return d.vncCallback(this.element),!1}function i(){return d.disconnect(),d.unlock(),!1}function r(t){this.element=t}{var o=t("utils/dialogs/dialog"),l=t("hbs!./vnc/html"),c=t("sunstone"),d=t("utils/vnc"),u=t("./vnc/dialogId");t("../tabId")}return e.DIALOG_ID=u,e.prototype=Object.create(o.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.onClose=i,e.prototype.setup=n,e.prototype.setElement=r,e}),define("hbs!tabs/vms-tab/dialogs/spice/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal large max-height" style="width:auto; max-width:70%" data-reveal >\n  <div class="row">\n    <div class="large-12 columns">\n      <h3 class="subheader" id="spice_dialog">\n        '+o((e.tr||t&&t.tr||r).call(t,"SPICE",{name:"tr",hash:{},data:n}))+'\n        <span id="vnc_buttons">\n          <a id="open_in_a_new_window_spice" href="" target="_blank" title="'+o((e.tr||t&&t.tr||r).call(t,"Open in a new window",{name:"tr",hash:{},data:n}))+'"> <i class="fa fa-external-link detach-spice-icon"/></a>\n        </span>\n      </h3>\n    </div>\n  </div>\n  <div class="reveal-body" style="width:100%; overflow-x:overlay">\n    <div id="spice-area">\n      <div id="spice-screen" class="spice-screen"></div>\n    </div>\n  </div>\n  <div id="message-div" class="spice-message"></div>\n  <a class="close-reveal-modal">&#215;</a>\n</div>'},useData:!0});return e.registerPartial("tabs/vms-tab/dialogs/spice/html",a),a}),define("tabs/vms-tab/dialogs/spice",["require","utils/dialogs/dialog","hbs!./spice/html","sunstone","utils/spice","./spice/dialogId","../tabId"],function(t){function e(){this.dialogId=u,o.call(this)}function a(){return l({dialogId:this.dialogId})}function n(t){return $("#open_in_a_new_window_spice",t).on("click",function(){var t=c.getDialog(u);t.hide()}),!1}function s(){return d.spiceCallback(this.element),!1}function i(){return d.disconnect(),d.unlock(),!1}function r(t){this.element=t}{var o=t("utils/dialogs/dialog"),l=t("hbs!./spice/html"),c=t("sunstone"),d=t("utils/spice"),u=t("./spice/dialogId");t("../tabId")}return e.DIALOG_ID=u,e.prototype=Object.create(o.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.onClose=i,e.prototype.setup=n,e.prototype.setElement=r,e}),define("hbs!utils/panel/permissions-table/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<table  class="'+l((i=null!=(i=e.resourceType||(null!=t?t.resourceType:t))?i:o,typeof i===r?i.call(t,{name:"resourceType",hash:{},data:n}):i))+'_permissions_table dataTable extended_table">\n  ';return i=null!=(i=e.permissionsHTML||(null!=t?t.permissionsHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"permissionsHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n  <thead>\n    <tr>\n      <th colspan="4" style="width:130px">'+l((e.tr||t&&t.tr||o).call(t,"Ownership",{name:"tr",hash:{},data:n}))+"</th>\n    </tr>\n  </thead>\n  ",i=null!=(i=e.ownerHTML||(null!=t?t.ownerHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"ownerHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+="\n  ",i=null!=(i=e.groupHTML||(null!=t?t.groupHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"groupHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n</table>"},useData:!0});return e.registerPartial("utils/panel/permissions-table/html",a),a}),define("hbs!utils/panel/permissions-table/permissions",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<thead>\n  <tr>\n    <th style="width:130px">'+i((e.tr||t&&t.tr||s).call(t,"Permissions",{name:"tr",hash:{},data:n}))+':</th>\n    <th style="width:40px;text-align:center;">'+i((e.tr||t&&t.tr||s).call(t,"Use",{name:"tr",hash:{},data:n}))+'</th>\n    <th style="width:40px;text-align:center;">'+i((e.tr||t&&t.tr||s).call(t,"Manage",{name:"tr",hash:{},data:n}))+'</th>\n    <th style="width:40px;text-align:center;">'+i((e.tr||t&&t.tr||s).call(t,"Admin",{name:"tr",hash:{},data:n}))+'</th>\n  </tr>\n</thead>\n<tr>\n  <td class="key_td">'+i((e.tr||t&&t.tr||s).call(t,"Owner",{name:"tr",hash:{},data:n}))+'</td>\n  <td style="text-align:center">\n    <input type="checkbox" class="permission_check owner_u" />\n  </td>\n  <td style="text-align:center">\n    <input type="checkbox" class="permission_check owner_m" />\n  </td>\n  <td style="text-align:center">\n    <input type="checkbox" class="permission_check owner_a" />\n  </td>\n</tr>\n<tr>\n  <td class="key_td">'+i((e.tr||t&&t.tr||s).call(t,"Group",{name:"tr",hash:{},data:n}))+'</td>\n  <td style="text-align:center">\n    <input type="checkbox" class="permission_check group_u" />\n  </td>\n  <td style="text-align:center">\n    <input type="checkbox" class="permission_check group_m" />\n  </td>\n  <td style="text-align:center">\n    <input type="checkbox" class="permission_check group_a" />\n  </td>\n</tr>\n<tr>\n  <td class="key_td">'+i((e.tr||t&&t.tr||s).call(t,"Other",{name:"tr",hash:{},data:n}))+'</td>\n  <td style="text-align:center">\n    <input type="checkbox" class="permission_check other_u" />\n  </td>\n  <td style="text-align:center">\n    <input type="checkbox" class="permission_check other_m" />\n  </td>\n  <td style="text-align:center">\n    <input type="checkbox" class="permission_check other_a" />\n  </td>\n</tr>'
+},useData:!0});return e.registerPartial("utils/panel/permissions-table/permissions",a),a}),define("hbs!utils/panel/permissions-table/owner",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o=this.lambda;return'<tr>\n  <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"Owner",{name:"tr",hash:{},data:n}))+'</td>\n  <td colspan="2" id="value_td_owner">'+r(o(null!=(s=null!=t?t.element:t)?s.UNAME:s,t))+'</td>\n  <td>\n    <div id="div_edit_chg_owner">\n      <a id="div_edit_chg_owner_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n    </div>\n  </td>\n</tr>'},useData:!0});return e.registerPartial("utils/panel/permissions-table/owner",a),a}),define("hbs!utils/panel/permissions-table/group",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o=this.lambda;return'<tr>\n  <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"Group",{name:"tr",hash:{},data:n}))+'</td>\n  <td colspan="2" id="value_td_group">'+r(o(null!=(s=null!=t?t.element:t)?s.GNAME:s,t))+'</td>\n  <td>\n    <div id="div_edit_chg_group">\n      <a id="div_edit_chg_group_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n    </div>\n  </td>\n</tr>'},useData:!0});return e.registerPartial("utils/panel/permissions-table/group",a),a}),define("utils/panel/permissions-table",["require","hbs!./permissions-table/html","hbs!./permissions-table/permissions","hbs!./permissions-table/owner","hbs!./permissions-table/group","utils/resource-select","sunstone","sunstone-config"],function(t){var e=t("hbs!./permissions-table/html"),a=t("hbs!./permissions-table/permissions"),n=t("hbs!./permissions-table/owner"),s=t("hbs!./permissions-table/group"),i=t("utils/resource-select"),r=t("sunstone"),o=t("sunstone-config"),l=function(t,i,r){var l="";o.isTabActionEnabled(t,i+".chmod")&&(l=a({element:r}));var c="";o.isTabActionEnabled(t,i+".chown")&&(c=n({element:r}));var d="";o.isTabActionEnabled(t,i+".chgrp")&&(d=s({element:r}));var u=e({resourceType:i.toLowerCase(),permissionsHTML:l,ownerHTML:c,groupHTML:d});return u},c=function(t,e,a,n){var s=a.ID;return o.isTabActionEnabled(t,e+".chmod")&&(y(a,n),n.off("change",".permission_check"),n.on("change",".permission_check",function(){var t={octet:d(n)};r.runAction(e+".chmod",s,t)})),o.isTabActionEnabled(t,e+".chown")&&(n.off("click","#div_edit_chg_owner_link"),n.on("click","#div_edit_chg_owner_link",function(){$(this).parents("tr");i.insert("#value_td_owner",n,"User",a.UID,!1)}),n.off("change","#value_td_owner .resource_list_select"),n.on("change","#value_td_owner .resource_list_select",function(){var t=$(this).val();""!=t&&r.runAction(e+".chown",[s],t)})),o.isTabActionEnabled(t,e+".chgrp")&&(n.off("click","#div_edit_chg_group_link"),n.on("click","#div_edit_chg_group_link",function(){i.insert("#value_td_group",n,"Group",a.GID,!1)}),n.off("change","#value_td_group .resource_list_select"),n.on("change","#value_td_group .resource_list_select",function(){var t=$(this).val();""!=t&&r.runAction(e+".chgrp",[s],t)})),!1},d=function(t){var e=0,a=0,n=0;return $(".owner_u",t).is(":checked")&&(e+=4),$(".owner_m",t).is(":checked")&&(e+=2),$(".owner_a",t).is(":checked")&&(e+=1),$(".group_u",t).is(":checked")&&(a+=4),$(".group_m",t).is(":checked")&&(a+=2),$(".group_a",t).is(":checked")&&(a+=1),$(".other_u",t).is(":checked")&&(n+=4),$(".other_m",t).is(":checked")&&(n+=2),$(".other_a",t).is(":checked")&&(n+=1),""+e+a+n},u=function(t){return parseInt(t.PERMISSIONS.OWNER_U)},p=function(t){return parseInt(t.PERMISSIONS.OWNER_M)},h=function(t){return parseInt(t.PERMISSIONS.OWNER_A)},f=function(t){return parseInt(t.PERMISSIONS.GROUP_U)},m=function(t){return parseInt(t.PERMISSIONS.GROUP_M)},_=function(t){return parseInt(t.PERMISSIONS.GROUP_A)},b=function(t){return parseInt(t.PERMISSIONS.OTHER_U)},v=function(t){return parseInt(t.PERMISSIONS.OTHER_M)},g=function(t){return parseInt(t.PERMISSIONS.OTHER_A)},y=function(t,e){u(t)&&$(".owner_u",e).attr("checked","checked"),p(t)&&$(".owner_m",e).attr("checked","checked"),h(t)&&$(".owner_a",e).attr("checked","checked"),f(t)&&$(".group_u",e).attr("checked","checked"),m(t)&&$(".group_m",e).attr("checked","checked"),_(t)&&$(".group_a",e).attr("checked","checked"),b(t)&&$(".other_u",e).attr("checked","checked"),v(t)&&$(".other_m",e).attr("checked","checked"),g(t)&&$(".other_a",e).attr("checked","checked")};return{html:l,setup:c}}),define("hbs!tabs/vms-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n        </tr>\n        ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"State",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.stateStr||(null!=t?t.stateStr:t))?i:r,typeof i===c?i.call(t,{name:"stateStr",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"LCM State",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.lcmStateStr||(null!=t?t.lcmStateStr:t))?i:r,typeof i===c?i.call(t,{name:"lcmStateStr",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Host",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.hostname||(null!=t?t.hostname:t))?i:r,typeof i===c?i.call(t,{name:"hostname",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Start time",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.prettyStartTime||(null!=t?t.prettyStartTime:t))?i:r,typeof i===c?i.call(t,{name:"prettyStartTime",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Deploy ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.deployId||(null!=t?t.deployId:t))?i:r,typeof i===c?i.call(t,{name:"deployId",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Reschedule",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.resched||(null!=t?t.resched:t))?i:r,typeof i===c?i.call(t,{name:"resched",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n      </tr>\n    </tbody>\n  </table>\n</div>\n<div class="large-6 columns">',i=null!=(i=e.permissionsTableHTML||(null!=t?t.permissionsTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"permissionsTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='</div>\n</div>\n<div class="row">\n<div class="large-9 columns">',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"</div>\n</div>"},useData:!0});return e.registerPartial("tabs/vms-tab/panels/info/html",a),a}),define("tabs/vms-tab/panels/info/panelId",["require"],function(){return"vm_info_tab"}),define("tabs/vms-tab/panels/info",["require","utils/locale","utils/humanize","utils/panel/rename-tr","utils/panel/permissions-table","utils/panel/template-table","opennebula/vm","../utils/state-actions","hbs!./info/html","../tabId","./info/panelId"],function(t){function e(t){return this.title=s.tr("Info"),this.icon="fa-info-circle",this.element=t[m],this}function a(){var t=r.html(f,this.element.NAME),e=o.html(p,f,this.element),a=i.prettyTime(this.element.STIME),n=c.stateStr(this.element.STATE),d=c.lcmStateStr(this.element.LCM_STATE),h=c.hostnameStr(this.element),m="object"==typeof this.element.DEPLOY_ID?"-":this.element.DEPLOY_ID,_=s.tr(parseInt(this.element.RESCHED)?"yes":"no"),b=l.html(this.element.USER_TEMPLATE,f,s.tr("Attributes"));return u({element:this.element,renameTrHTML:t,stateStr:n,lcmStateStr:d,hostname:h,prettyStartTime:a,deployId:m,resched:_,permissionsTableHTML:e,templateTableHTML:b,renameTrHTML:t})}function n(t){d.disableAllStateActions(),d.enableStateActions(this.element.STATE,this.element.LCM_STATE),c.isVNCSupported(this.element)?$(".vnc-right-info").show():$(".vnc-right-info").hide(),c.isSPICESupported(this.element)?$(".spice-right-info").show():$(".spice-right-info").hide(),r.setup(f,this.element.ID,t),o.setup(p,f,this.element,t);var e=this,a={},n={};$.each(e.element.USER_TEMPLATE,function(t,e){t.match(/^SCHED_*/)?n[t]=e:a[t]=e}),l.setup(a,f,this.element.ID,t,n)}var s=t("utils/locale"),i=t("utils/humanize"),r=t("utils/panel/rename-tr"),o=t("utils/panel/permissions-table"),l=t("utils/panel/template-table"),c=t("opennebula/vm"),d=t("../utils/state-actions"),u=t("hbs!./info/html"),p=t("../tabId"),h=t("./info/panelId"),f="VM",m="VM";return e.PANEL_ID=h,e.prototype.html=a,e.prototype.setup=n,e}),define("templates/helpers/humanizeSize",["require","hbs/handlebars","utils/humanize"],function(t){var e=t("hbs/handlebars"),a=t("utils/humanize"),n=function(t,e){switch(t.toUpperCase()){case"B":return a.sizeFromB(e);case"K":case"KB":return a.sizeFromKB(e);case"M":case"MB":return a.sizeFromMB(e);default:return e}};return e.registerHelper("humanizeSize",n),n}),define("hbs!tabs/vms-tab/panels/capacity/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/valOrDefault","templates/helpers/humanizeSize","templates/helpers/isTabActionEnabled"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i="";return s=e["if"].call(t,null!=t?t.resizeStateEnabled:t,{name:"if",hash:{},fn:this.program(2,n),inverse:this.program(4,n),data:n}),null!=s&&(i+=s),i},2:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'            <button id="resize_capacity" class="button tiny success right radius" >'+i((e.tr||t&&t.tr||s).call(t,"Resize",{name:"tr",hash:{},data:n}))+"</button>\n"},4:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'            <button id="resize_capacity" class="button tiny success right radius" disabled="disabled">'+i((e.tr||t&&t.tr||s).call(t,"Resize",{name:"tr",hash:{},data:n}))+"</button>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div class="row">\n  <div class="large-9 columns">\n    <table class="info_table dataTable extended_table">\n      <thead>\n        <tr>\n          <th>'+r((e.tr||t&&t.tr||i).call(t,"CPU",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+r((e.tr||t&&t.tr||i).call(t,"VCPU",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+r((e.tr||t&&t.tr||i).call(t,"MEMORY",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+r((e.tr||t&&t.tr||i).call(t,"Cost / CPU",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+r((e.tr||t&&t.tr||i).call(t,"Cost / MByte",{name:"tr",hash:{},data:n}))+'</th>\n          <th></th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td id="cpu_info">'+r((e.valOrDefault||t&&t.valOrDefault||i).call(t,null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.CPU:s,"-",{name:"valOrDefault",hash:{},data:n}))+'</td>\n          <td id="vcpu_info">'+r((e.valOrDefault||t&&t.valOrDefault||i).call(t,null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.VCPU:s,"-",{name:"valOrDefault",hash:{},data:n}))+'</td>\n          <td id="memory_info">'+r((e.humanizeSize||t&&t.humanizeSize||i).call(t,"MB",null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.MEMORY:s,{name:"humanizeSize",hash:{},data:n}))+'</td>\n          <td id="cpu_cost_info">'+r((e.valOrDefault||t&&t.valOrDefault||i).call(t,null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.CPU_COST:s,"-",{name:"valOrDefault",hash:{},data:n}))+'</td>\n          <td id="memory_cost_info" >'+r((e.valOrDefault||t&&t.valOrDefault||i).call(t,null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.MEMORY_COST:s,"-",{name:"valOrDefault",hash:{},data:n}))+"</td>\n          <td>\n";return s=(e.isTabActionEnabled||t&&t.isTabActionEnabled||i).call(t,"vms-tab","VM.resize",{name:"isTabActionEnabled",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+'          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n<div class="row">\n  <div class="large-6 columns">\n    <div class="row text-center">\n      <div class="large-12 columns">\n        <h3 class="subheader">\n          <small>'+r((e.tr||t&&t.tr||i).call(t,"REAL CPU",{name:"tr",hash:{},data:n}))+'</small>\n        </h3>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <div class="large-12 columns centered graph vm_cpu_graph text-center" style="height: 100px;">\n          <span  id="provision_dashboard_total" style="font-size:80px">\n            <i class="fa fa-spinner fa-spin"></i>\n          </span>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class="large-6 columns">\n    <div class="row text-center">\n      <h3 class="subheader">\n        <small>'+r((e.tr||t&&t.tr||i).call(t,"REAL MEMORY",{name:"tr",hash:{},data:n}))+'</small>\n      </h3>\n    </div>\n    <div class="row">\n      <div class="large-12 columns centered graph vm_memory_graph text-center" style="height: 100px;">\n        <span  id="provision_dashboard_total" style="font-size:80px">\n          <i class="fa fa-spinner fa-spin"></i>\n        </span>\n      </div>\n    </div>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/vms-tab/panels/capacity/html",a),a}),define("tabs/vms-tab/panels/capacity/panelId",["require"],function(){return"vm_capacity_tab"}),define("tabs/vms-tab/panels/capacity",["require","utils/locale","sunstone-config","sunstone","opennebula/vm","utils/notifier","utils/graphs","hbs!./capacity/html","../tabId","./capacity/panelId","../dialogs/resize/dialogId"],function(t){function e(t){return this.panelId=p,this.title=i.tr("Capacity"),this.icon="fa-laptop",this.element=t[f],this}function a(){var t=m.indexOf(this.element.STATE)>-1;return u({element:this.element,resizeStateEnabled:t})}function n(t){var e=this;r.isTabActionEnabled("vms-tab","VM.resize")&&(t.off("click","#resize_capacity"),t.on("click","#resize_capacity",function(){var t=o.getDialog(h);return t.setElement(e.element),t.show(),!1}))}function s(){var t=this;l.monitor({data:{id:t.element.ID,monitor:{monitor_resources:"CPU,MEMORY"}},success:function(t,e){for(var a=[{monitor_resources:"CPU",labels:i.tr("Real CPU"),humanize_figures:!1,div_graph:$(".vm_cpu_graph")},{monitor_resources:"MEMORY",labels:i.tr("Real MEM"),humanize_figures:!0,div_graph:$(".vm_memory_graph")}],n=0;n<a.length;n++)d.plot(e,a[n])},error:c.onError})}var i=t("utils/locale"),r=t("sunstone-config"),o=t("sunstone"),l=t("opennebula/vm"),c=t("utils/notifier"),d=t("utils/graphs"),u=t("hbs!./capacity/html"),p=(t("../tabId"),t("./capacity/panelId")),h=t("../dialogs/resize/dialogId"),f="VM",m=["0","1","2","7","8","9"];return e.PANEL_ID=p,e.prototype.html=a,e.prototype.setup=n,e.prototype.onShow=s,e}),define("tabs/vms-tab/panels/storage/panelId",["require"],function(){return"vm_hotplugging_tab"}),define("tabs/vms-tab/panels/storage",["require","utils/locale","sunstone-config","sunstone","utils/humanize","../utils/state-actions","../tabId","./storage/panelId","../dialogs/attach-disk/dialogId"],function(t){function e(t){return this.panelId=c,this.title=s.tr("Storage"),this.icon="fa-tasks",this.element=t[u],this}function a(){var t=this,e='<form id="hotplugging_form" vmid="'+t.element.ID+'" >       <div class="row">       <div class="large-12 columns">          <table class="info_table dataTable extended_table">            <thead>              <tr>                 <th>'+s.tr("ID")+"</th>                 <th>"+s.tr("Target")+"</th>                 <th>"+s.tr("Image / Format-Size")+"</th>                 <th>"+s.tr("Persistent")+"</th>                 <th>"+s.tr("Save as")+'</th>                 <th colspan="">'+s.tr("Actions")+"</th>                 <th>";i.isTabActionEnabled("vms-tab","VM.attachdisk")&&(e+=l.enabledStateAction("VM.attachdisk",t.element.STATE,t.element.LCM_STATE)?'            <button id="attach_disk" class="button tiny success right radius" >'+s.tr("Attach disk")+"</button>":'            <button id="attach_disk" class="button tiny success right radius" disabled="disabled">'+s.tr("Attach disk")+"</button>"),e+="</th>               </tr>            </thead>            <tbody>";var a=[];if($.isArray(t.element.TEMPLATE.DISK)?a=t.element.TEMPLATE.DISK:$.isEmptyObject(t.element.TEMPLATE.DISK)||(a=[t.element.TEMPLATE.DISK]),!$.isEmptyObject(t.element.TEMPLATE.CONTEXT)){var n=t.element.TEMPLATE.CONTEXT;n.IMAGE=s.tr("Context"),n.CONTEXT=!0,a.push(n)}if(a.length)for(var r=0;r<a.length;r++){var c,d=a[r];"3"!=t.element.STATE||"26"!=t.element.LCM_STATE&&"27"!=t.element.LCM_STATE&&"28"!=t.element.LCM_STATE||"YES"!=d.SAVE_AS_ACTIVE?"3"!=t.element.STATE||"26"!=t.element.LCM_STATE&&"27"!=t.element.LCM_STATE&&"28"!=t.element.LCM_STATE||"YES"!=d.HOTPLUG_SAVE_AS_ACTIVE?"3"==t.element.STATE&&"17"==t.element.LCM_STATE&&(d.ATTACH="YES")?(c=d.SAVE_AS?d.SAVE_AS:"-",actions=s.tr("attach/detach in progress")):(c=d.SAVE_AS?d.SAVE_AS:"-",actions="","YES"==d.SAVE,i.isTabActionEnabled("vms-tab","VM.detachdisk")&&l.enabledStateAction("VM.detachdisk",t.element.STATE,t.element.LCM_STATE)&&!d.CONTEXT&&(actions+='<a href="VM.detachdisk" class="detachdisk" ><i class="fa fa-times"/>'+s.tr("Detach")+"</a>")):(c=d.SAVE_AS?d.SAVE_AS:"-",actions=s.tr("hot snapshot in progress")):(c=s.tr("in progress"),actions=s.tr("deferred snapshot in progress")),e+='               <tr disk_id="'+d.DISK_ID+'">                 <td>'+d.DISK_ID+"</td>                 <td>"+d.TARGET+"</td>                 <td>"+(d.IMAGE?d.IMAGE:o.sizeFromMB(d.SIZE)+(d.FORMAT?" - "+d.FORMAT:""))+"</td>                 <td>"+s.tr(d.SAVE&&"YES"==d.SAVE?"YES":"NO")+"</td>                 <td>"+c+"</td>                 <td>"+actions+"</td>             </tr>"}else e+='           <tr id="no_disks_tr">             <td colspan="6">'+s.tr("No disks to show")+"</td>           </tr>";return e+="               </tbody>             </table>           </div>         </div>       </form>"}function n(t){var e=this;i.isTabActionEnabled("vms-tab","VM.attachdisk")&&(t.off("click","#attach_disk"),t.on("click","#attach_disk",function(){var t=r.getDialog(d);return t.setElement(e.element),t.show(),!1})),i.isTabActionEnabled("vms-tab","VM.detachdisk")&&(t.off("click",".detachdisk"),t.on("click",".detachdisk",function(){var t=$(this).parents("tr").attr("disk_id");return r.runAction("VM.detachdisk",e.element.ID,t),!1}))}var s=t("utils/locale"),i=t("sunstone-config"),r=t("sunstone"),o=t("utils/humanize"),l=t("../utils/state-actions"),c=(t("../tabId"),t("./storage/panelId")),d=t("../dialogs/attach-disk/dialogId"),u="VM";return e.PANEL_ID=c,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/secgroups-tab/utils/common",["require","utils/locale"],function(t){function e(t){var e={};if(void 0!=t.PROTOCOL)switch(t.PROTOCOL.toUpperCase()){case"TCP":e.PROTOCOL=s.tr("TCP");break;case"UDP":e.PROTOCOL=s.tr("UDP");break;case"ICMP":e.PROTOCOL=s.tr("ICMP");break;case"IPSEC":e.PROTOCOL=s.tr("IPsec");break;case"ALL":e.PROTOCOL=s.tr("All");break;default:e.PROTOCOL=""}else e.PROTOCOL="";if(void 0!=t.RULE_TYPE)switch(t.RULE_TYPE.toUpperCase()){case"OUTBOUND":e.RULE_TYPE=s.tr("Outbound");break;case"INBOUND":e.RULE_TYPE=s.tr("Inbound");break;default:e.RULE_TYPE=""}else e.RULE_TYPE="";e.ICMP_TYPE=void 0!=t.ICMP_TYPE?a(t.ICMP_TYPE):"",e.RANGE=void 0!=t.RANGE&&""!=t.RANGE?t.RANGE:s.tr("All");var n="";return void 0!=t.NETWORK_ID&&""!=t.NETWORK_ID&&(n+=s.tr("Virtual Network")+" "+t.NETWORK_ID),void 0!=t.SIZE&&""!=t.SIZE&&(""!=n&&(n+=":<br>"),void 0!=t.IP&&""!=t.IP?n+=s.tr("Start")+": "+t.IP+", ":void 0!=t.MAC&&""!=t.MAC&&(n+=s.tr("Start")+": "+t.MAC+", "),n+=s.tr("Size")+": "+t.SIZE),""==n&&(n=s.tr("Any")),e.NETWORK=n,e}function a(t){switch(t){case"":return tr("All");case"0":return"0: Echo Reply";case"3":return"3: Destination Unreachable";case"4":return"4: Source Quench";case"5":return"5: Redirect";case"6":return"6: Alternate Host Address";case"8":return"8: Echo";case"9":return"9: Router Advertisement";case"10":return"10: Router Solicitation";case"11":return"11: Time Exceeded";case"12":return"12: Parameter Problem";case"13":return"13: Timestamp";case"14":return"14: Timestamp Reply";case"15":return"15: Information Request";case"16":return"16: Information Reply";case"17":return"17: Address Mask Request";case"18":return"18: Address Mask Reply";case"30":return"30: Traceroute";case"31":return"31: Datagram Conversion Error";case"32":return"32: Mobile Host Redirect";case"33":return"33: IPv6 Where-Are-You";case"34":return"34: IPv6 I-Am-Here";case"35":return"35: Mobile Registration Request";case"36":return"36: Mobile Registration Reply";case"37":return"37: Domain Name Request";case"38":return"38: Domain Name Reply";case"39":return"39: SKIP";case"40":return"40: Photuris";case"41":return"41: ICMP messages utilized by experimental mobility protocols such as Seamoby";case"253":return"253: RFC3692-style Experiment 1";case"254":return"254: RFC3692-style Experiment 2";default:return""+t}}function n(t){var e=t.TEMPLATE.RULE;return e?e.constructor!=Array&&(e=[e]):e=[],e}var s=t("utils/locale");return{sgRuleToSt:e,getRules:n}}),define("tabs/vms-tab/panels/network/panelId",["require"],function(){return"vm_network_tab"}),define("tabs/vms-tab/panels/network",["require","utils/locale","sunstone-config","sunstone","utils/humanize","utils/notifier","utils/graphs","../utils/state-actions","opennebula/vm","tabs/secgroups-tab/utils/common","../tabId","./network/panelId","../dialogs/attach-nic/dialogId"],function(t){function e(t){return this.panelId=h,this.title=i.tr("Network"),this.icon="fa-globe",this.element=t[m],this}function a(){var t=this,e='<form id="tab_network_form" vmid="'+t.element.ID+'" >        <div class="row">        <div class="large-12 columns">           <table class="nics_table no-hover info_table dataTable extended_table">             <thead>               <tr>                  <th></th>                  <th>'+i.tr("ID")+"</th>                  <th>"+i.tr("Network")+"</th>                  <th>"+i.tr("IP")+"</th>                  <th>"+i.tr("MAC")+"</th>                  <th>"+i.tr("IPv6 ULA")+"</th>                  <th>"+i.tr("IPv6 Global")+'</th>                  <th colspan="">'+i.tr("Actions")+"</th>                  <th>";r.isTabActionEnabled("vms-tab","VM.attachnic")&&(e+=d.enabledStateAction("VM.attachnic",t.element.STATE,t.element.LCM_STATE)&&u.isNICAttachSupported(t.element)?'             <button id="attach_nic" class="button tiny success right radius" >'+i.tr("Attach nic")+"</button>":'             <button id="attach_nic" class="button tiny success right radius" disabled="disabled">'+i.tr("Attach nic")+"</button>"),e+="</th>                </tr>             </thead>             <tbody>             </tbody>            </table>          </div>        </div>";var a=u.retrieveExternalNetworkAttrs(t.element);return $.isEmptyObject(a)||(e+='<div class="row"><div class="large-12 columns"><table class="dataTable extended_table"><thead><tr><th colspan=2>'+i.tr("Network Monitoring Attributes")+"</th></tr></thead><tbody>",$.each(a,function(t,a){e+="<tr><td>"+t+"</td><td>"+a+"</td></tr>"}),e+="</tbody></table></div></div>"),u.isNICGraphsSupported(t.element)&&(e+='          <div class="row">              <div class="large-6 columns">                <div class="row text-center">                  <h3 class="subheader"><small>'+i.tr("NET RX")+'</small></h3>                </div>                <div class="row">                  <div class="large-12 columns centered graph text-center" id="vm_net_rx_graph" style="height: 100px;">                    <span  id="provision_dashboard_total" style="font-size:80px">                      <i class="fa fa-spinner fa-spin"></i>                    </span>                  </div>                </div>                <div class="row graph_legend">                  <div class="large-12 columns centered" id="vm_net_rx_legend">                  </div>                </div>              </div>              <div class="large-6 columns">                <div class="row text-center">                  <h3 class="subheader"><small>'+i.tr("NET TX")+'</small></h3>                </div>                <div class="row">                  <div class="large-12 columns centered graph text-center" id="vm_net_tx_graph" style="height: 100px;">                    <span  id="provision_dashboard_total" style="font-size:80px">                      <i class="fa fa-spinner fa-spin"></i>                    </span>                  </div>                </div>                <div class="row graph_legend">                  <div class="large-12 columns centered" id="vm_net_tx_legend">                  </div>                </div>              </div>              <div class="large-6 columns">                <div class="row text-center">                  <h3 class="subheader"><small>'+i.tr("NET DOWNLOAD SPEED")+'</small></h3>                </div>                <div class="row">                  <div class="large-12 columns centered graph text-center" id="vm_net_rx_speed_graph" style="height: 100px;">                    <span  id="provision_dashboard_total" style="font-size:80px">                      <i class="fa fa-spinner fa-spin"></i>                    </span>                  </div>                </div>                <div class="row graph_legend">                  <div class="large-12 columns centered" id="vm_net_rx_speed_legend">                  </div>                </div>              </div>              <div class="large-6 columns">                <div class="row text-center">                  <h3 class="subheader"><small>'+i.tr("NET UPLOAD SPEED")+'</small></h3>                </div>                <div class="row">                  <div class="large-12 columns centered graph text-center" id="vm_net_tx_speed_graph" style="height: 100px;">                    <span  id="provision_dashboard_total" style="font-size:80px">                      <i class="fa fa-spinner fa-spin"></i>                    </span>                  </div>                </div>                <div class="row graph_legend">                  <div class="large-12 columns centered" id="vm_net_tx_speed_legend">                  </div>                </div>              </div>          </div>        </form>'),e}function n(t){var e=this,a=[];$.isArray(e.element.TEMPLATE.NIC)?a=e.element.TEMPLATE.NIC:$.isEmptyObject(e.element.TEMPLATE.NIC)||(a=[e.element.TEMPLATE.NIC]);var n=[];if(a.length)for(var n=[],s=0;s<a.length;s++){var l,c=a[s];"3"==e.element.STATE&&"25"==e.element.LCM_STATE&&"YES"==c.ATTACH?l=i.tr("attach/detach in progress"):(l="",r.isTabActionEnabled("vms-tab","VM.detachnic")&&d.enabledStateAction("VM.detachnic",e.element.STATE,e.element.LCM_STATE)&&(l+='<a href="VM.detachnic" class="detachnic" ><i class="fa fa-times"/>'+i.tr("Detach")+"</a>"));var u=[],h={};void 0!=c.SECURITY_GROUPS&&$.each(c.SECURITY_GROUPS.split(","),function(){h[this]=!0}),void 0!=e.element.TEMPLATE.SECURITY_GROUP_RULE&&$.each(e.element.TEMPLATE.SECURITY_GROUP_RULE,function(){h[this.SECURITY_GROUP_ID]&&u.push(this)}),n.push({NIC_ID:c.NIC_ID,NETWORK:c.NETWORK,IP:c.IP?c.IP:"--",MAC:c.MAC,IP6_ULA:c.IP6_ULA?c.IP6_ULA:"--",IP6_GLOBAL:c.IP6_GLOBAL?c.IP6_GLOBAL:"--",ACTIONS:l,SECURITY_GROUP_RULES:u})}$("#tab_network_form .nics_table",t).DataTable({bDeferRender:!0,data:n,columns:[{"class":"open-control",orderable:!1,data:null,defaultContent:'<span class="fa fa-fw fa-chevron-down"></span>'},{data:"NIC_ID",defaultContent:""},{data:"NETWORK",defaultContent:""},{data:"IP",defaultContent:""},{data:"MAC",defaultContent:""},{data:"IP6_ULA",defaultContent:""},{data:"IP6_GLOBAL",defaultContent:""},{data:"ACTIONS",defaultContent:""},{defaultContent:""}],fnRowCallback:function(t,e){(void 0==e.SECURITY_GROUP_RULES||0==e.SECURITY_GROUP_RULES.length)&&$("td.open-control",t).html("").removeClass("open-control"),$(t).attr("nic_id",e.NIC_ID)}});$("#tab_network_form .nics_table",t).dataTable().fnSort([[1,"asc"]]),t.off("click","#tab_network_form .nics_table td.open-control"),t.on("click","#tab_network_form .nics_table td.open-control",function(){var t=$(this).closest("table").DataTable().row($(this).closest("tr"));if(t.child.isShown())t.child.hide(),$(this).children("span").addClass("fa-chevron-down"),$(this).children("span").removeClass("fa-chevron-up");else{var e='<div style="padding-left: 30px;">              <table class="extended_table dataTable">                <thead>                  <tr>                    <th colspan="2">'+i.tr("Security Group")+"</th>                    <th>"+i.tr("Protocol")+"</th>                    <th>"+i.tr("Type")+"</th>                    <th>"+i.tr("Range")+"</th>                    <th>"+i.tr("Network")+"</th>                    <th>"+i.tr("ICMP Type")+"</th>                  </tr>                <thead>                <tbody>";$.each(t.data().SECURITY_GROUP_RULES,function(){var t=p.sgRuleToSt(this),a="<tr>                  <td>"+this.SECURITY_GROUP_ID+"</td>                  <td>"+this.SECURITY_GROUP_NAME+"</td>                  <td>"+t.PROTOCOL+"</td>                  <td>"+t.RULE_TYPE+"</td>                  <td>"+t.RANGE+"</td>                  <td>"+t.NETWORK+"</td>                  <td>"+t.ICMP_TYPE+"</td>                </tr>";e+=a}),t.child(e).show(),$(this).children("span").removeClass("fa-chevron-down"),$(this).children("span").addClass("fa-chevron-up")}}),r.isTabActionEnabled("vms-tab","VM.attachnic")&&(t.off("click","#attach_nic"),t.on("click","#attach_nic",function(){var t=o.getDialog(f);return t.setElement(e.element),t.show(),!1})),r.isTabActionEnabled("vms-tab","VM.detachnic")&&(t.off("click",".detachnic"),t.on("click",".detachnic",function(){var t=$(this).parents("tr").attr("nic_id");return o.runAction("VM.detachnic",e.element.ID,t),!1}))}function s(){var t=this;u.isNICGraphsSupported(t.element)&&u.monitor({data:{id:t.element.ID,monitor:{monitor_resources:"NET_TX,NET_RX"}},success:function(t,e){for(var a=[{labels:i.tr("Network reception"),monitor_resources:"NET_RX",humanize_figures:!0,convert_from_bytes:!0,div_graph:$("#vm_net_rx_graph")},{labels:i.tr("Network transmission"),monitor_resources:"NET_TX",humanize_figures:!0,convert_from_bytes:!0,div_graph:$("#vm_net_tx_graph")},{labels:i.tr("Network reception speed"),monitor_resources:"NET_RX",humanize_figures:!0,convert_from_bytes:!0,y_sufix:"B/s",derivative:!0,div_graph:$("#vm_net_rx_speed_graph")},{labels:i.tr("Network transmission speed"),monitor_resources:"NET_TX",humanize_figures:!0,convert_from_bytes:!0,y_sufix:"B/s",derivative:!0,div_graph:$("#vm_net_tx_speed_graph")}],n=0;n<a.length;n++)c.plot(e,a[n])},error:l.onError})}var i=t("utils/locale"),r=t("sunstone-config"),o=t("sunstone"),l=(t("utils/humanize"),t("utils/notifier")),c=t("utils/graphs"),d=t("../utils/state-actions"),u=t("opennebula/vm"),p=t("tabs/secgroups-tab/utils/common"),h=(t("../tabId"),t("./network/panelId")),f=t("../dialogs/attach-nic/dialogId"),m="VM";
+return e.PANEL_ID=h,e.prototype.html=a,e.prototype.setup=n,e.prototype.onShow=s,e}),define("tabs/vms-tab/panels/snapshots/panelId",["require"],function(){return"vm_snapshot_tab"}),define("tabs/vms-tab/panels/snapshots",["require","utils/locale","sunstone-config","sunstone","utils/humanize","utils/notifier","../tabId","./snapshots/panelId","../dialogs/snapshot/dialogId"],function(t){function e(t){return this.panelId=l,this.title=s.tr("Snapshots"),this.icon="fa-laptop",this.element=t[d],this}function a(){var t=this,e='<form id="snapshot_form" vmid="'+t.element.ID+'" >      <div class="row">      <div class="large-12 columns">         <table class="info_table dataTable extended_table">           <thead>             <tr>                <th>'+s.tr("ID")+"</th>                <th>"+s.tr("Name")+"</th>                <th>"+s.tr("Timestamp")+"</th>                <th>"+s.tr("Actions")+"</th>                <th>";i.isTabActionEnabled("vms-tab","VM.snapshot_create")&&(e+="3"==t.element.STATE&&"3"==t.element.LCM_STATE?'           <button id="take_snapshot" class="button tiny success right radius" >'+s.tr("Take snapshot")+"</button>":'           <button id="take_snapshot" class="button tiny success right radius" disabled="disabled">'+s.tr("Take snapshot")+"</button>"),e+="</th>              </tr>           </thead>           <tbody>";var a=[];if($.isArray(t.element.TEMPLATE.SNAPSHOT)?a=t.element.TEMPLATE.SNAPSHOT:$.isEmptyObject(t.element.TEMPLATE.SNAPSHOT)||(a=[t.element.TEMPLATE.SNAPSHOT]),a.length)for(var n=0;n<a.length;n++){var r=a[n];"3"==t.element.STATE&&"24"==t.element.LCM_STATE?actions="snapshot in progress":(actions="","3"==t.element.STATE&&"3"==t.element.LCM_STATE&&(i.isTabActionEnabled("vms-tab","VM.snapshot_revert")&&(actions+='<a href="VM.snapshot_revert" class="snapshot_revert" ><i class="fa fa-reply"/>'+s.tr("Revert")+"</a> &emsp;"),i.isTabActionEnabled("vms-tab","VM.snapshot_delete")&&(actions+='<a href="VM.snapshot_delete" class="snapshot_delete" ><i class="fa fa-times"/>'+s.tr("Delete")+"</a>"))),e+='              <tr snapshot_id="'+r.SNAPSHOT_ID+'">                <td>'+r.SNAPSHOT_ID+"</td>                <td>"+r.NAME+"</td>                <td>"+o.prettyTime(r.TIME)+"</td>                <td>"+actions+"</td>            </tr>"}else e+='          <tr id="no_snapshots_tr">            <td colspan="6">'+s.tr("No snapshots to show")+"</td>          </tr>";return e+="            </tbody>          </table>        </div>        </div>      </form>"}function n(t){var e=this;i.isTabActionEnabled("vms-tab","VM.snapshot_create")&&(t.off("click","#take_snapshot"),t.on("click","#take_snapshot",function(){var t=r.getDialog(c);return t.setElement(e.element),t.show(),!1})),i.isTabActionEnabled("vms-tab","VM.snapshot_revert")&&(t.off("click",".snapshot_revert"),t.on("click",".snapshot_revert",function(){var t=$(this).parents("tr").attr("snapshot_id");return r.runAction("VM.snapshot_revert",e.element.ID,{snapshot_id:t}),!1})),i.isTabActionEnabled("vms-tab","VM.snapshot_delete")&&(t.off("click",".snapshot_delete"),t.on("click",".snapshot_delete",function(){var t=$(this).parents("tr").attr("snapshot_id");return r.runAction("VM.snapshot_delete",e.element.ID,{snapshot_id:t}),!1}))}var s=t("utils/locale"),i=t("sunstone-config"),r=t("sunstone"),o=t("utils/humanize"),l=(t("utils/notifier"),t("../tabId"),t("./snapshots/panelId")),c=t("../dialogs/snapshot/dialogId"),d="VM";return e.PANEL_ID=l,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/vms-tab/panels/placement/panelId",["require"],function(){return"vm_placement_tab"}),define("tabs/vms-tab/panels/placement",["require","utils/locale","utils/humanize","opennebula/vm","../tabId","./placement/panelId"],function(t){function e(t){return this.panelId=o,this.title=s.tr("Placement"),this.icon="fa-sitemap",this.element=t[l],this}function a(){var t=this,e='<div class="row"><div class="large-12 columns">           <table id="vm_history_table" class="extended_table dataTable">                    <thead>                      <tr>                          <th>'+s.tr("#")+"</th>                          <th>"+s.tr("Host")+"</th>                          <th>"+s.tr("Datastore")+"</th>                          <th>"+s.tr("Action")+"</th>                          <th>"+s.tr("Reason")+"</th>                          <th>"+s.tr("Chg time")+"</th>                          <th>"+s.tr("Total time")+'</th>                          <th colspan="2">'+s.tr("Prolog time")+"</th>                      </tr>                    </thead>                    <tbody>",a=[];t.element.HISTORY_RECORDS.HISTORY?$.isArray(t.element.HISTORY_RECORDS.HISTORY)?a=t.element.HISTORY_RECORDS.HISTORY:t.element.HISTORY_RECORDS.HISTORY.SEQ&&(a=[t.element.HISTORY_RECORDS.HISTORY]):e+='     <tr>                <td colspan="8" style="width:5%">'+s.tr("No data available in table")+"</td>               </tr>";for(var n=Math.round((new Date).getTime()/1e3),o=0;o<a.length;o++){var l=parseInt(a[o].STIME,10),c=parseInt(a[o].ETIME,10);c=0==c?n:c;var d,u=c-l,p=parseInt(a[o].PSTIME,10),h=parseInt(a[o].PETIME,10);d=0==p?0:0==h?n:h;var f=d-p;e+='     <tr>                        <td style="width:5%">'+a[o].SEQ+'</td>                        <td style="width:15%">'+a[o].HOSTNAME+'</td>                        <td style="width:5%">'+a[o].DS_ID+'</td>                        <td style="width:16%">'+r.migrateActionStr(parseInt(a[o].ACTION,10))+'</td>                        <td style="width:10%">'+r.migrateReasonStr(parseInt(a[o].REASON,10))+'</td>                        <td style="width:16%">'+i.prettyTime(a[o].STIME)+'</td>                        <td style="width:16%">'+i.prettyDuration(u)+'</td>                        <td style="width:16%">'+i.prettyDuration(f)+"</td>                        <td></td>                       </tr>"}e+="</tbody>                 </table>           </div>         </div>",t.element.USER_TEMPLATE.SCHED_MESSAGE&&(e+='<div class="row">         <div class="large-12 columns">           <table id="vm_ds_placement_table" class="extended_table dataTable">                    <thead>                      <tr>                          <th align="center">'+s.tr("Sched Message")+"</th>                      </tr>                    </thead>                    <tbody>                       <tr>                        <td>"+t.element.USER_TEMPLATE.SCHED_MESSAGE+"</td>                      </tr>                    </tbody>           </table>           </div>         </div>");var m=t.element.USER_TEMPLATE.SCHED_REQUIREMENTS?t.element.USER_TEMPLATE.SCHED_REQUIREMENTS:"-",_=t.element.USER_TEMPLATE.SCHED_RANK?t.element.USER_TEMPLATE.SCHED_RANK:"-",b=t.element.USER_TEMPLATE.SCHED_DS_REQUIREMENTS?t.element.USER_TEMPLATE.SCHED_DS_REQUIREMENTS:"-",v=t.element.USER_TEMPLATE.SCHED_DS_RANK?t.element.USER_TEMPLATE.SCHED_DS_RANK:"-";return e+='<div class="row">       <div class="large-9 columns">           <table id="vm_placement_table" class="extended_table dataTable">                    <thead>                      <tr>                          <th colspan="2" align="center">'+s.tr("Placement - Host")+"</th>                      </tr>                    </thead>                    <tbody>                       <tr>                        <td>"+s.tr("Requirements")+"</td>                        <td>"+m+"</td>                      </tr>                       <tr>                        <td>"+s.tr("Rank")+"</td>                        <td>"+_+'</td>                      </tr>                    </tbody>           </table>           <table id="vm_ds_placement_table" class="extended_table dataTable">                    <thead>                      <tr>                          <th colspan="2" align="center">'+s.tr("Placement - Datastore")+"</th>                      </tr>                    </thead>                    <tbody>                       <tr>                        <td>"+s.tr("DS Requirements")+"</td>                        <td>"+b+"</td>                      </tr>                       <tr>                        <td>"+s.tr("DS Rank")+"</td>                        <td>"+v+"</td>                      </tr>                    </tbody>           </table>           </div>         </div>"}function n(){}var s=t("utils/locale"),i=t("utils/humanize"),r=t("opennebula/vm"),o=(t("../tabId"),t("./placement/panelId")),l="VM";return e.PANEL_ID=o,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/vms-tab/panels/actions/panelId",["require"],function(){return"vm_actions_tab"}),define("tabs/vms-tab/panels/actions",["require","utils/locale","sunstone","utils/humanize","utils/template-utils","../tabId","./actions/panelId"],function(t){function e(t){return this.panelId=d,this.title=r.tr("Actions"),this.icon="fa-calendar",this.element=t[u],this}function a(){var t=this,e='<div class="row">      <div class="large-12 columns">        <table id="scheduling_actions_table" class="info_table dataTable extended_table">         <thead>           <tr>              <th>'+r.tr("ID")+"</th>              <th>"+r.tr("ACTION")+"</th>              <th>"+r.tr("TIME")+"</th>              <th>"+r.tr("DONE")+"</th>              <th>"+r.tr("MESSAGE")+'</th>              <th colspan="">'+r.tr("Actions")+'</th>              <th><button id="add_scheduling_action" class="button tiny success right radius" >'+r.tr("Add action")+"</button></th>           </tr>          </thead>"+s(t.element.USER_TEMPLATE.SCHED_ACTION)+"</table>        </div>      </div>";return e}function n(t){var e=this;t.off("click","#add_scheduling_action"),t.on("click","#add_scheduling_action",function(){return $("#add_scheduling_action",t).attr("disabled","disabled"),$("#scheduling_actions_table").append('<tr>          <td></td>          <td class="columns">            <select id="select_new_action" class="select_new_action" name="select_action">              <option value="shutdown">'+r.tr("shutdown")+'</option>              <option value="shutdown-hard">'+r.tr("shutdown-hard")+'</option>              <option value="hold">'+r.tr("hold")+'</option>              <option value="release">'+r.tr("release")+'</option>              <option value="stop">'+r.tr("stop")+'</option>              <option value="suspend">'+r.tr("suspend")+'</option>              <option value="resume">'+r.tr("resume")+'</option>              <option value="delete">'+r.tr("delete")+'</option>              <option value="delete-recreate">'+r.tr("delete-recreate")+'</option>              <option value="reboot">'+r.tr("reboot")+'</option>              <option value="reboot-hard">'+r.tr("reboot-hard")+'</option>              <option value="poweroff">'+r.tr("poweroff")+'</option>              <option value="poweroff-hard">'+r.tr("poweroff-hard")+'</option>              <option value="undeploy">'+r.tr("undeploy")+'</option>              <option value="undeploy-hard">'+r.tr("undeploy-hard")+'</option>              <option value="snapshot-create">'+r.tr("snapshot-create")+'</option>            </select>          </td>         <td>            <input id="date_input" type="date" placeholder="2013/12/30"/>            <input id="time_input" type="time" placeholder="12:30"/>         </td>         <td>            <button id="submit_scheduling_action" class="button small secondary radius" >'+r.tr("Add")+"</button>         </td>         <td colspan=2></td>       </tr>"),!1}),t.off("click","#submit_scheduling_action"),t.on("click","#submit_scheduling_action",function(){var a=$("#date_input",t).val(),n=$("#time_input",t).val();if(""==a||""==n)return!1;var s=a+" "+n,i=-1;if(e.element.USER_TEMPLATE.SCHED_ACTION){if(!e.element.USER_TEMPLATE.SCHED_ACTION.length){var r=e.element.USER_TEMPLATE.SCHED_ACTION;e.element.USER_TEMPLATE.SCHED_ACTION=new Array,e.element.USER_TEMPLATE.SCHED_ACTION.push(r)}$.each(e.element.USER_TEMPLATE.SCHED_ACTION,function(t,e){i<e.ID&&(i=e.ID)})}else e.element.USER_TEMPLATE.SCHED_ACTION=new Array;var l={};l.ID=parseInt(i)+1,l.ACTION=$("#select_new_action",t).val();var d=new Date(s);l.TIME=parseInt(d.getTime())/1e3,e.element.USER_TEMPLATE.SCHED_ACTION.push(l);var u=c.templateToString(e.element.USER_TEMPLATE);return o.runAction("VM.update_template",e.element.ID,u),$("#add_scheduling_action",t).removeAttr("disabled"),!1}),t.off("click",".remove_action_x"),t.on("click",".remove_action_x",function(){var t=this.id.substring(6,this.id.length),a=new Array;$.each(e.element.USER_TEMPLATE.SCHED_ACTION,function(e,n){n.ID!=t&&(a[e]=n)}),e.element.USER_TEMPLATE.SCHED_ACTION=a;var n=c.templateToString(e.element.USER_TEMPLATE);o.runAction("VM.update_template",e.element.ID,n)})}function s(t){var e="",a='      <tr id="no_actions_tr">          <td colspan="6">'+r.tr("No actions to show")+"</td>      </tr>";if(!t)return a;if(!$.isArray(t)){var n=new Array;n[0]=t,t=n}return t.length?($.each(t,function(t,a){e+=i(a)}),e):a}function i(t){var e=t.DONE?l.prettyTime(t.DONE):"",a=t.MESSAGE?t.MESSAGE:"",n=l.prettyTime(t.TIME),s="";return s+='<tr class="tr_action_'+t.ID+'">       <td class="id_row">'+t.ID+'</td>       <td class="action_row">'+t.ACTION+'</td>       <td nowrap class="time_row">'+n+'</td>       <td class="done_row">'+e+'</td>       <td class="message_row">'+a+'</td>       <td>         <div>           <a id="minus_'+t.ID+'" class="remove_action_x" href="#"><i class="fa fa-trash-o"/></a>         </div>       </td>     </tr>'}var r=t("utils/locale"),o=t("sunstone"),l=t("utils/humanize"),c=t("utils/template-utils"),d=(t("../tabId"),t("./actions/panelId")),u="VM";return e.PANEL_ID=d,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/vms-tab/panels/template/panelId",["require"],function(){return"vm_template_tab"}),define("tabs/vms-tab/panels/template",["require","utils/locale","utils/humanize","../tabId","./template/panelId"],function(t){function e(t){return this.title=s.tr("Template"),this.icon="fa-file-o",this.element=t[o],this}function a(){return'<div class="row">      <div class="large-12 columns">        <table id="vm_template_table" class="info_table dataTable">'+i.prettyPrintJSON(this.element.TEMPLATE)+"</table>      </div>    </div>"}function n(){}var s=t("utils/locale"),i=t("utils/humanize"),r=(t("../tabId"),t("./template/panelId")),o="VM";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/vms-tab/panels/log/panelId",["require"],function(){return"vm_log_tab"}),define("tabs/vms-tab/panels/log",["require","utils/locale","utils/notifier","opennebula/vm","../tabId","./log/panelId"],function(t){function e(t){return this.panelId=l,this.title=i.tr("Log"),this.icon="fa-file-text",this.element=t[c],this}function a(){return'<div class="row"><div class="large-12 columns vm_log_container"><div class="text-center" style="height: 100px;"><span id="provision_dashboard_total" style="font-size:80px"><i class="fa fa-spinner fa-spin"></i></span></div></div></div>'}function n(){}function s(t){var e=this;o.log({data:{id:e.element.ID},success:function(e,a){for(var n=a.vm_log.split("\n"),s="",i=0;i<n.length;i++){var r=n[i];r.match(/\[E\]/)&&(r='<span class="vm_log_error">'+r+"</span>"),s+=r+"<br>"}$(".vm_log_container",t).html('<div class="row"><div class="large-11 small-centered columns log-tab">'+s+"</div></div>")},error:function(e,a){$(".vm_log_container",t).html(""),r.onError(e,a)}})}var i=t("utils/locale"),r=t("utils/notifier"),o=t("opennebula/vm"),l=(t("../tabId"),t("./log/panelId")),c="VM";return e.PANEL_ID=l,e.prototype.html=a,e.prototype.setup=n,e.prototype.onShow=s,e}),define("utils/user-inputs",["require","utils/locale","utils/template-utils","tabs/vnets-tab/datatable"],function(t){function e(t,e,a){return n(t,e.VMTEMPLATE.TEMPLATE.USER_INPUTS,a)}function a(t,e,a){return n(t,e.DOCUMENT.TEMPLATE.BODY.custom_attrs,a)}function n(t,e,a){if(t.empty(),void 0==e)return!1;void 0==a&&(a={}),void 0==a.text_header&&(a.text_header=s.tr("Custom Attributes")),void 0==a.network_header&&(a.network_header=s.tr("Network"));var n=[],o=[];if($.each(e,function(t,e){var a=e.split("|"),s={name:t,mandatory:a[0],type:a[1],description:a[2]};switch(a[1]){case"vnet_id":n.push(s);break;case"text":o.push(s);break;case"password":o.push(s)}}),n.length>0){a.network_header.length>0&&t.append('<br><div class="row"><div class="large-12 large-centered columns"><h3 class="subheader">'+a.network_header+"</h3></div></div>"),t.append('<div class="instantiate_user_inputs"/>');var l,c="";$.each(n,function(e,a){var n="user_input_"+a.name.replace(/ /g,"_");l=new r(n,{select:!0}),$(".instantiate_user_inputs",t).append('<div class="row"><div class="large-12 large-centered columns">'+c+"<h5>"+i.htmlDecode(a.description)+"</h5>"+l.dataTableHTML+"</div></div>"),c="<hr/>",l.initialize(),$("#refresh_button_"+n).click(),$("input#selected_resource_id_"+n,t).attr("wizard_field",a.name),$("input#selected_resource_id_"+n,t).attr("required","")})}return o.length>0&&(a.text_header.length>0&&t.append('<br><div class="row"><div class="large-12 large-centered columns"><h3 class="subheader">'+a.text_header+"</h3></div></div>"),t.append('<div class="instantiate_user_inputs"/>'),$.each(o,function(e,a){$(".instantiate_user_inputs",t).append('<div class="row"><div class="large-12 large-centered columns"><label>'+i.htmlDecode(a.description)+'<input type="'+a.type+'" wizard_field="'+a.name+'" required/></label></div></div>')})),n.length>0||o.length>0}var s=t("utils/locale"),i=t("utils/template-utils"),r=t("tabs/vnets-tab/datatable");return{vmTemplateInsert:e,serviceTemplateInsert:a}}),define("tabs/templates-tab/tabId",["require"],function(){return"templates-tab"}),define("tabs/templates-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","utils/humanize","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=c,this.dataTableId=t,this.resource=o,this.xmlRoot=l,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:s.tabTableColumns(c)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[i.tr("ID"),i.tr("Owner"),i.tr("Group"),i.tr("Name"),i.tr("Registration time")],this.selectOptions={id_index:1,name_index:4,select_resource:i.tr("Please select a Template from the list"),you_selected:i.tr("You selected the following Template:"),select_resource_multiple:i.tr("Please select one or more Templates from the list"),you_selected_multiple:i.tr("You selected the following Templates:")},n.call(this)}function a(t){var e=t[l];return['<input class="check_item" type="checkbox" id="'+o.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.UNAME,e.GNAME,e.NAME,r.prettyTime(e.REGTIME)]}var n=t("utils/tab-datatable"),s=t("sunstone-config"),i=t("utils/locale"),r=t("utils/humanize"),o="Template",l="VMTEMPLATE",c=t("./tabId");return e.prototype=Object.create(n.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("hbs!tabs/vms-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<form data-abide="ajax" id="'+l((i=null!=(i=e.formPanelId||(null!=t?t.formPanelId:t))?i:o,typeof i===r?i.call(t,{name:"formPanelId",hash:{},data:n}):i))+'Wizard" class="custom creation">\n  <fieldset>\n    <legend>'+l((e.tr||t&&t.tr||o).call(t,"Step 1: Specify a name and the number of instances",{name:"tr",hash:{},data:n}))+'</legend>\n    <div class="row">\n      <div class="large-5 columns">\n        <label for="create_vm_name">\n          '+l((e.tr||t&&t.tr||o).call(t,"VM Name",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+l((e.tr||t&&t.tr||o).call(t,"Defaults to template name when emtpy. You can use the wildcard &#37;i. When creating several VMs, &#37;i will be replaced with a different number starting from 0 in each of them",{name:"tr",hash:{},data:n}))+'.\n          </span>\n        </label>\n        <input type="text" name="create_vm_name" id="create_vm_name" />\n      </div>\n      <div class="large-4 columns">\n        <label for="create_vm_n_times">\n          '+l((e.tr||t&&t.tr||o).call(t,"Number of instances",{name:"tr",hash:{},data:n}))+':\n          <span class="tip">\n            '+l((e.tr||t&&t.tr||o).call(t,"Number of Virtual Machines that will be created using this template",{name:"tr",hash:{},data:n}))+'.\n          </span>\n        </label>\n        <input type="text" name="create_vm_n_times" id="create_vm_n_times" value="1"></div>\n      <div class="large-3 columns">\n        <input type="checkbox" name="create_vm_hold" id="create_vm_hold"/>\n        <label for="create_vm_hold">\n          '+l((e.tr||t&&t.tr||o).call(t,"Hold",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+l((e.tr||t&&t.tr||o).call(t,"Sets the new VM to hold state, instead of pending. The scheduler will not deploy VMs in this state. It can be released later, or deployed manually.",{name:"tr",hash:{},data:n}))+"\n          </span>\n        </label>\n      </div>\n    </div>\n  </fieldset>\n  <fieldset>\n    <legend>"+l((e.tr||t&&t.tr||o).call(t,"Step 2: Select a template",{name:"tr",hash:{},data:n}))+"</legend>\n    ";return i=null!=(i=e.templatesTableHTML||(null!=t?t.templatesTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"templatesTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n  </fieldset>\n  <div id="create_vm_inputs_step">\n    <fieldset>\n      <legend>'+l((e.tr||t&&t.tr||o).call(t,"Step 3: Fill the required inputs",{name:"tr",hash:{},data:n}))+'</legend>\n      <div id="create_vm_user_inputs"></div>\n    </fieldset>\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/vms-tab/form-panels/create/wizard",a),a}),define("tabs/vms-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","utils/tips","utils/notifier","utils/wizard-fields","utils/user-inputs","opennebula/template","tabs/templates-tab/datatable","hbs!./create/wizard","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=_,this.tabId=b,this.actions={create:{title:l.tr("Create Virtual Machine"),buttonText:l.tr("Create"),resetButton:!0}},this.templatesTable=new f("vm_create",{select:!0}),r.call(this)}function a(){return m({formPanelId:this.formPanelId,templatesTableHTML:this.templatesTable.dataTableHTML})}function n(t){$("#create_vm_template_proceed",t).attr("disabled","disabled"),$("#create_vm_inputs_step",t).hide(),this.templatesTable.initialize(),$("#selected_resource_id_vm_create",t).on("change",function(){var e=$(this).val();$("#create_vm_inputs_step",t).hide(),$("#create_vm_user_inputs",t).empty(),h.show({data:{id:e},timeout:!0,success:function(e,a){$("#create_vm_inputs_step",t).hide(),$("#create_vm_user_inputs",t).empty();var n=p.vmTemplateInsert($("#create_vm_user_inputs",t),a,{text_header:""});n&&$("#create_vm_inputs_step",t).show(),$("#create_vm_template_proceed",t).removeAttr("disabled")},error:function(t,e,a){d.onError(t,e,a)}})}),c.setup(t)}function s(t){$("input#vm_name",t).focus(),this.templatesTable.resetResourceTableSelect()}function i(t){var e=$("#create_vm_name",t).val(),a=$("#selected_resource_id_vm_create",t).val(),n=$("#create_vm_n_times",t).val(),s=1,i=$("#create_vm_hold",t).prop("checked");if(!a.length)return d.notifyError(tr("You have not selected a template")),!1;n.length&&(s=parseInt(n,10));var r="";s>1&&(r=s+" times"),d.notifySubmit("Template.instantiate",a,r);var l={hold:i},c=u.retrieve(t);if(l.template=c,e.length)if(-1==e.indexOf("%i"))for(var p=0;s>p;p++)l.vm_name=e,o.runAction("Template.instantiate_quiet",a,l);else for(var p=0;s>p;p++)l.vm_name=e.replace(/%i/gi,p),o.runAction("Template.instantiate_quiet",a,l);else for(var p=0;s>p;p++)l.vm_name="",o.runAction("Template.instantiate_quiet",a,l);return setTimeout(function(){o.resetFormPanel(b,_),o.hideFormPanel(b),o.runAction("VM.list")},1500),!1}t("foundation.tab");var r=t("utils/form-panels/form-panel"),o=t("sunstone"),l=t("utils/locale"),c=t("utils/tips"),d=t("utils/notifier"),u=t("utils/wizard-fields"),p=t("utils/user-inputs"),h=t("opennebula/template"),f=t("tabs/templates-tab/datatable"),m=t("hbs!./create/wizard"),_=t("./create/formPanelId"),b=t("../tabId");return e.FORM_PANEL_ID=_,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.setup=n,e.prototype.onShow=s,e.prototype.submitWizard=i,e}),define("tabs/vms-tab",["require","utils/locale","./vms-tab/buttons","./vms-tab/actions","./vms-tab/datatable","utils/vnc","./vms-tab/tabId","./vms-tab/dialogs/deploy","./vms-tab/dialogs/migrate","./vms-tab/dialogs/resize","./vms-tab/dialogs/attach-disk","./vms-tab/dialogs/attach-nic","./vms-tab/dialogs/snapshot","./vms-tab/dialogs/vnc","./vms-tab/dialogs/spice","./vms-tab/panels/info","./vms-tab/panels/capacity","./vms-tab/panels/storage","./vms-tab/panels/network","./vms-tab/panels/snapshots","./vms-tab/panels/placement","./vms-tab/panels/actions","./vms-tab/panels/template","./vms-tab/panels/log","./vms-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./vms-tab/buttons"),n=t("./vms-tab/actions"),s=t("./vms-tab/datatable");t("utils/vnc");var i=t("./vms-tab/tabId"),r="dataTableVms",o=[t("./vms-tab/dialogs/deploy"),t("./vms-tab/dialogs/migrate"),t("./vms-tab/dialogs/resize"),t("./vms-tab/dialogs/attach-disk"),t("./vms-tab/dialogs/attach-nic"),t("./vms-tab/dialogs/snapshot"),t("./vms-tab/dialogs/vnc"),t("./vms-tab/dialogs/spice")],l=[t("./vms-tab/panels/info"),t("./vms-tab/panels/capacity"),t("./vms-tab/panels/storage"),t("./vms-tab/panels/network"),t("./vms-tab/panels/snapshots"),t("./vms-tab/panels/placement"),t("./vms-tab/panels/actions"),t("./vms-tab/panels/template"),t("./vms-tab/panels/log")],c=[t("./vms-tab/form-panels/create")],d={tabId:i,title:e.tr("Virtual Machines"),tabClass:"subTab",parentTab:"vresources-tab",listHeader:'<i class="fa fa-fw fa-th"></i>&emsp;'+e.tr("Virtual Machines"),infoHeader:'<i class="fa fa-fw fa-th"></i>&emsp;'+e.tr("VM"),subheader:'<span class="total_vms"/> <small>'+e.tr("TOTAL")+'</small>&emsp;        <span class="active_vms"/> <small>'+e.tr("ACTIVE")+'</small>&emsp;        <span class="off_vms"/> <small>'+e.tr("OFF")+'</small>&emsp;        <span class="pending_vms"/> <small>'+e.tr("PENDING")+'</small>&emsp;        <span class="failed_vms"/> <small>'+e.tr("FAILED")+"</small>",resource:"VM",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/templates-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Template.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Template.create_dialog":{type:"create_dialog",layout:"create"},"Template.import_dialog":{type:"create_dialog",layout:"create",text:e.tr("Import"),icon:'<i class="fa fa-download">',alwaysActive:!0},"Template.update_dialog":{type:"action",layout:"main",text:e.tr("Update")},"Template.instantiate_vms":{type:"action",layout:"main",text:e.tr("Instantiate")},"Template.chown":{type:"confirm_with_select",text:e.tr("Change owner"),layout:"user_select",select:"User",tip:e.tr("Select the new owner")+":"},"Template.chgrp":{type:"confirm_with_select",text:e.tr("Change group"),layout:"user_select",select:"Group",tip:e.tr("Select the new group")+":"},"Template.clone_dialog":{type:"action",layout:"main",text:e.tr("Clone")},"Template.delete":{type:"confirm",layout:"del"}};return a}),define("tabs/templates-tab/form-panels/create/formPanelId",["require"],function(){return"createVMTemplateForm"}),define("tabs/templates-tab/dialogs/clone/dialogId",["require"],function(){return"cloneTemplateDialog"}),define("tabs/templates-tab/dialogs/instantiate/dialogId",["require"],function(){return"instantiateTemplateDialog"}),define("tabs/templates-tab/actions",["require","sunstone","utils/notifier","utils/locale","opennebula/template","utils/common-actions","opennebula/action","./tabId","./form-panels/create/formPanelId","./dialogs/clone/dialogId","./dialogs/instantiate/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=t("opennebula/template"),i=t("utils/common-actions"),r=t("opennebula/action"),o=t("./tabId"),l=t("./form-panels/create/formPanelId"),c=t("./dialogs/clone/dialogId"),d=t("./dialogs/instantiate/dialogId"),u="VMTEMPLATE",p="Template",h=new i(s,p,o),f={"Template.list":h.list(),"Template.show":h.show(),"Template.refresh":h.refresh(),"Template.delete":h["delete"](),"Template.create":{type:"create",call:s.create,callback:function(t,a){e.resetFormPanel(o,l),e.hideFormPanel(o),e.getDataTable(o).addElement(t,a)},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)},notify:!0},"Template.create_dialog":{type:"custom",call:function(){e.showFormPanel(o,l,"create")}},"Template.import_dialog":{type:"create",call:function(){}},"Template.update_dialog":{type:"custom",call:function(){var t=e.getDataTable(o).elements();if(1!=t.length)return a.notifyMessage("Please select one (and just one) Virtual Template to update."),!1;var n=""+t[0];e.runAction("Template.show_to_update",n)}},"Template.show_to_update":{type:"single",call:s.show,callback:function(t,a){e.showFormPanel(o,l,"update",function(t,e){t.fill(e,a[u])})},error:a.onError},"Template.update":{type:"single",call:s.update,callback:function(){e.hideFormPanel(o),a.notifyMessage(n.tr("Virtual Template updated correctly"))},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)}},"Template.rename":{type:"single",call:s.rename,callback:function(t){e.runAction("Template.show",t.request.data[0][0])},error:a.onError,notify:!0},"Template.instantiate":{type:"multiple",call:s.instantiate,callback:function(){r.clear_cache("VM")},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Template.instantiate_quiet":{type:"single",call:s.instantiate,callback:function(){r.clear_cache("VM")},error:a.onError},"Template.instantiate_vms":{type:"custom",call:function(){e.getDialog(d).show()}},"Template.clone_dialog":{type:"custom",call:function(){e.getDialog(c).show()}},"Template.clone":{type:"single",call:s.clone,error:a.onError,notify:!0},"Template.chown":{type:"multiple",call:s.chown,callback:function(t){e.runAction("Template.show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Template.chgrp":{type:"multiple",call:s.chgrp,callback:function(t){e.runAction("Template.show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Template.chmod":{type:"single",call:s.chmod,callback:function(t){e.runAction("Template.show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0}};return f}),define("hbs!tabs/templates-tab/dialogs/clone/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal" role="dialog" data-reveal >\n  <div class="row">\n    <h3 id="create_vnet_header" class="subheader">'+o((e.tr||t&&t.tr||r).call(t,"Clone Template",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n  <form id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'Form" action="" class="custom creation">\n    <div class="row">\n      <div class="large-12 columns">\n        <div class="clone_one"></div>\n        <div class="clone_several">\n          '+o((e.tr||t&&t.tr||r).call(t,"Several templates are selected, please choose prefix to name the new copies",{name:"tr",hash:{},data:n}))+'\n          <br></div>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <label class="clone_one">'+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'</label>\n        <label class="clone_several">'+o((e.tr||t&&t.tr||r).call(t,"Prefix",{name:"tr",hash:{},data:n}))+'</label>\n        <input type="text" name="name"/>\n      </div>\n    </div>\n    <div class="form_buttons row">\n      <button class="button radius right" id="template_clone_button" value="Template.clone">'+o((e.tr||t&&t.tr||r).call(t,"Clone",{name:"tr",hash:{},data:n}))+'</button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'
+},useData:!0});return e.registerPartial("tabs/templates-tab/dialogs/clone/html",a),a}),define("tabs/templates-tab/dialogs/clone",["require","utils/dialogs/dialog","hbs!./clone/html","sunstone","utils/notifier","opennebula/template","./clone/dialogId","tabs/templates-tab/tabId"],function(t){function e(){this.dialogId=d,i.call(this)}function a(){return r({dialogId:this.dialogId})}function n(t){return $("#"+d+"Form",t).submit(function(){var t,e=$('input[name="name"]',this).val(),a=o.getDataTable(u).elements();if(e&&a.length||l.notifyError("A name or prefix is needed!"),a.length>1)for(var n=0;n<a.length;n++)t=e+c.getName(a[n]),o.runAction("Template.clone",a[n],t);else t=e,o.runAction("Template.clone",a[0],t);return o.getDialog(d).hide(),o.getDialog(d).reset(),setTimeout(function(){o.runAction("Template.refresh")},1500),!1}),!1}function s(t){var e=o.getDataTable(u).elements();return e.length>1?($(".clone_one",t).hide(),$(".clone_several",t).show(),$('input[name="name"]',t).val("Copy of ")):($(".clone_one",t).show(),$(".clone_several",t).hide(),$('input[name="name"]',t).val("Copy of "+c.getName(e[0]))),$("input[name='name']",t).focus(),!1}var i=t("utils/dialogs/dialog"),r=t("hbs!./clone/html"),o=t("sunstone"),l=t("utils/notifier"),c=t("opennebula/template"),d=t("./clone/dialogId"),u=t("tabs/templates-tab/tabId");return e.DIALOG_ID=d,e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e}),define("hbs!tabs/templates-tab/dialogs/instantiate/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal" role="dialog" data-reveal >\n  <div class="row">\n    <h3 id="create_vnet_header" class="subheader">'+o((e.tr||t&&t.tr||r).call(t,"Instantiate VM Template",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n  <form data-abide="ajax" id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'Form" action="" class="custom creation">\n    <div class="row">\n      <div class="large-12 columns">\n        <label for="vm_name">\n          '+o((e.tr||t&&t.tr||r).call(t,"VM Name",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Defaults to template name when emtpy. You can use the wildcard &#37;i. When creating several VMs, &#37;i will be replaced with a different number starting from 0 in each of them",{name:"tr",hash:{},data:n}))+'.\n          </span>\n        </label>\n        <input type="text" name="vm_name" id="vm_name" />\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <label for="vm_n_times">\n          '+o((e.tr||t&&t.tr||r).call(t,"Number of instances",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Number of Virtual Machines that will be created using this template",{name:"tr",hash:{},data:n}))+'.\n          </span>\n        </label>\n        <input type="text" name="vm_n_times" id="vm_n_times" value="1"></div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <input type="checkbox" name="hold" id="hold"/>\n        <label for="hold">\n          '+o((e.tr||t&&t.tr||r).call(t,"Hold",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Sets the new VM to hold state, instead of pending. The scheduler will not deploy VMs in this state. It can be released later, or deployed manually.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n      </div>\n    </div>\n    <div id="instantiate_vm_user_inputs"> <i class="fa fa-spinner fa-spin"></i>\n    </div>\n    <div class="form_buttons">\n      <button class="button radius right success" id="instantiate_vm_template_proceed" value="Template.instantiate_vms">'+o((e.tr||t&&t.tr||r).call(t,"Instantiate",{name:"tr",hash:{},data:n}))+'</button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/templates-tab/dialogs/instantiate/html",a),a}),define("tabs/templates-tab/dialogs/instantiate",["require","utils/dialogs/dialog","hbs!./instantiate/html","sunstone","utils/notifier","opennebula/template","utils/locale","utils/tips","utils/user-inputs","utils/wizard-fields","./instantiate/dialogId","tabs/templates-tab/tabId"],function(t){function e(){this.dialogId=f,i.call(this)}function a(){return r({dialogId:this.dialogId})}function n(t){t.off("invalid.fndtn.abide","#"+f+"Form"),t.off("valid.fndtn.abide","#"+f+"Form"),t.on("invalid.fndtn.abide","#"+f+"Form",function(t){return"abide.fndtn"==t.namespace?(l.notifyError(d.tr("One or more required fields are missing or malformed.")),!1):void 0}).on("valid.fndtn.abide","#"+f+"Form",function(e){if("abide.fndtn"==e.namespace){var a=$("#vm_name",this).val(),n=$("#vm_n_times",this).val(),s=1,i=$("#hold",this).prop("checked"),r=o.getDataTable(m).elements();return $.each(r,function(e,r){n.length&&(s=parseInt(n,10));var c="";s>1&&(c=s+" times"),l.notifySubmit("Template.instantiate",r,c);var d={hold:i},u=h.retrieve($(".template_user_inputs"+r,t));if(d.template=u,a.length)if(-1==a.indexOf("%i")){d.vm_name=a;for(var p=0;s>p;p++)o.runAction("Template.instantiate_quiet",r,d)}else for(var p=0;s>p;p++)d.vm_name=a.replace(/%i/gi,p),o.runAction("Template.instantiate_quiet",r,d);else for(var p=0;s>p;p++)d.vm_name="",o.runAction("Template.instantiate_quiet",r,d)}),o.getDialog(f).hide(),o.getDialog(f).reset(),!1}})}function s(t){$("#instantiate_vm_template_proceed",t).attr("disabled","disabled");var e=o.getDataTable(m).elements();return $("#instantiate_vm_user_inputs",t).html('<br><div class="row"><div class="large-12 large-centered columns"><div class="subheader">'+d.tr("Templates to be instantiated")+'</div><ul class="disc list_of_templates"></ul></div></div>'),$.each(e,function(e,a){c.show({data:{id:a},timeout:!0,success:function(e,a){$(".list_of_templates",t).append("<li>"+a.VMTEMPLATE.NAME+"</li>");var n=$("<div class='template_user_inputs"+a.VMTEMPLATE.ID+"'></div>").appendTo($("#instantiate_vm_user_inputs",t));p.vmTemplateInsert(n,a,{text_header:a.VMTEMPLATE.NAME}),n.data("opennebula_id",a.VMTEMPLATE.ID)},error:function(e,a,n){l.onError(e,a,n),$("#instantiate_vm_user_inputs",t).empty()}})}),$("#instantiate_vm_template_proceed",t).removeAttr("disabled"),u.setup(t),!1}var i=t("utils/dialogs/dialog"),r=t("hbs!./instantiate/html"),o=t("sunstone"),l=t("utils/notifier"),c=t("opennebula/template"),d=t("utils/locale"),u=t("utils/tips"),p=t("utils/user-inputs"),h=t("utils/wizard-fields"),f=t("./instantiate/dialogId"),m=t("tabs/templates-tab/tabId");return e.DIALOG_ID=f,e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e}),define("hbs!tabs/templates-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n        </tr>\n        ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Register time",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.prettyRegTime||(null!=t?t.prettyRegTime:t))?i:r,typeof i===c?i.call(t,{name:"prettyRegTime",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">',i=null!=(i=e.permissionsTableHTML||(null!=t?t.permissionsTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"permissionsTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"</div>\n</div>"},useData:!0});return e.registerPartial("tabs/templates-tab/panels/info/html",a),a}),define("tabs/templates-tab/panels/info/panelId",["require"],function(){return"template_info_tab"}),define("tabs/templates-tab/panels/info",["require","utils/locale","utils/humanize","utils/panel/rename-tr","utils/panel/permissions-table","hbs!./info/html","../tabId","./info/panelId"],function(t){function e(t){return this.title=s.tr("Info"),this.icon="fa-info-circle",this.element=t[p],this}function a(){var t=r.html(u,this.element.NAME),e=o.html(c,u,this.element),a=i.prettyTime(this.element.REGTIME);return l({element:this.element,renameTrHTML:t,permissionsTableHTML:e,prettyRegTime:a})}function n(t){r.setup(u,this.element.ID,t),o.setup(c,u,this.element,t)}var s=t("utils/locale"),i=t("utils/humanize"),r=t("utils/panel/rename-tr"),o=t("utils/panel/permissions-table"),l=t("hbs!./info/html"),c=t("../tabId"),d=t("./info/panelId"),u="Template",p="VMTEMPLATE";return e.PANEL_ID=d,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/templates-tab/panels/template/html",["hbs","hbs/handlebars"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l='<div class="row">\n  <div class="large-12 columns">\n    <table  class="info_table dataTable" style="width:80%">';return i=null!=(i=e.prettyTemplateHTML||(null!=t?t.prettyTemplateHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"prettyTemplateHTML",hash:{},data:n}):i,null!=s&&(l+=s),l+"</table>\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/templates-tab/panels/template/html",a),a}),define("tabs/templates-tab/panels/template/panelId",["require"],function(){return"template_template_tab"}),define("tabs/templates-tab/panels/template",["require","utils/locale","utils/humanize","hbs!./template/html","../tabId","./template/panelId"],function(t){function e(t){return this.title=s.tr("Template"),this.icon="fa-file-o",this.element=t[l],this}function a(){var t=i.prettyPrintJSON(this.element.TEMPLATE);return r({element:this.element,prettyTemplateHTML:t})}function n(){}var s=t("utils/locale"),i=t("utils/humanize"),r=t("hbs!./template/html"),o=(t("../tabId"),t("./template/panelId")),l="VMTEMPLATE";return e.PANEL_ID=o,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard",["hbs","hbs/handlebars"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return"      <dd class='"+o((s=null!=(s=e.classes||(null!=t?t.classes:t))?s:r,typeof s===i?s.call(t,{name:"classes",hash:{},data:n}):s))+"'>\n        <a href='#"+o((s=null!=(s=e.wizardTabId||(null!=t?t.wizardTabId:t))?s:r,typeof s===i?s.call(t,{name:"wizardTabId",hash:{},data:n}):s))+"'> <i class='fa "+o((s=null!=(s=e.icon||(null!=t?t.icon:t))?s:r,typeof s===i?s.call(t,{name:"icon",hash:{},data:n}):s))+"'></i>\n          <br>"+o((s=null!=(s=e.title||(null!=t?t.title:t))?s:r,typeof s===i?s.call(t,{name:"title",hash:{},data:n}):s))+"</a>\n      </dd>\n"},3:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='        <div id="'+l((i=null!=(i=e.wizardTabId||(null!=t?t.wizardTabId:t))?i:o,typeof i===r?i.call(t,{name:"wizardTabId",hash:{},data:n}):i))+'" class="wizard_tab content">\n          ';return i=null!=(i=e.contentHTML||(null!=t?t.contentHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"contentHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n        </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<form data-abide="ajax" id="'+l((i=null!=(i=e.formPanelId||(null!=t?t.formPanelId:t))?i:o,typeof i===r?i.call(t,{name:"formPanelId",hash:{},data:n}):i))+'Wizard" class="custom creation">\n  <div class="bordered-tabs">\n    <dl id="template_create_tabs" class="tabs right-info-tabs text-center" data-tab>\n';return s=e.each.call(t,null!=t?t.wizardTabs:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='    </dl>\n    <div id="template_create_tabs_content" class="tabs-content" style="min-height: 300px">\n',s=e.each.call(t,null!=t?t.wizardTabs:t,{name:"each",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+"    </div>\n  </div>\n</form>"},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard",a),a}),define("hbs!tabs/templates-tab/form-panels/create/advanced",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Advanced" class="custom creation">\n   <div class="row">\n     <div class="large-12 columns">\n       <p>'+o((e.tr||t&&t.tr||r).call(t,"Write the Virtual Machine template here",{name:"tr",hash:{},data:n}))+'</p>\n     </div>\n   </div>\n   <div class="row">\n     <div class="large-12 columns">\n       <textarea id="template" rows="15" required></textarea>\n     </div>\n   </div>\n </form>'},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/advanced",a),a}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/general/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'          <option value="'+o((s=null!=(s=e.path||(null!=t?t.path:t))?s:r,typeof s===i?s.call(t,{name:"path",hash:{},data:n}):s))+'">'+o((s=null!=(s=e.title||(null!=t?t.title:t))?s:r,typeof s===i?s.call(t,{name:"title",hash:{},data:n}):s))+"</option>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='<div class="row">\n  <div id="template_name_form"  class="large-6 columns">\n    <label  for="NAME">\n      '+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Name that the VM will get for description purposes.",{name:"tr",hash:{},data:n}))+'</span>\n      <input type="text" wizard_field="NAME" id="NAME" name="name" required/>\n    </label>\n  </div>\n  <div  id="template_hypervisor_form" class="large-6 columns">\n    <label>'+o((e.tr||t&&t.tr||r).call(t,"Hypervisor",{name:"tr",hash:{},data:n}))+'</label>\n    <input type="radio" wizard_field="HYPERVISOR" name="hypervisor" value="kvm" id="kvmRadio">\n    <label for="kvmRadio">'+o((e.tr||t&&t.tr||r).call(t,"KVM",{name:"tr",hash:{},data:n}))+'</label>\n    <input type="radio" wizard_field="HYPERVISOR" name="hypervisor" value="vmware" id="vmwareRadio">\n    <label for="vmwareRadio">'+o((e.tr||t&&t.tr||r).call(t,"VMware",{name:"tr",hash:{},data:n}))+'</label>\n    <input type="radio" wizard_field="HYPERVISOR" name="hypervisor" value="xen" id="xenRadio">\n    <label for="xenRadio">'+o((e.tr||t&&t.tr||r).call(t,"Xen",{name:"tr",hash:{},data:n}))+'</label>\n    <input type="radio" wizard_field="HYPERVISOR" name="hypervisor" value="vcenter" id="vcenterRadio">\n    <label for="vcenterRadio">'+o((e.tr||t&&t.tr||r).call(t,"vCenter",{name:"tr",hash:{},data:n}))+'</label>\n  </div>\n</div>\n<div class="row">\n  <div class="large-6 columns">\n    <label  for="DESCRIPTION">\n      '+o((e.tr||t&&t.tr||r).call(t,"Description",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Description of the template",{name:"tr",hash:{},data:n}))+'</span>\n    </label>\n    <textarea type="text" wizard_field="DESCRIPTION" id="DESCRIPTION" name="DESCRIPTION" style="height: 70px;"/>\n  </div>\n  <div class="large-6 columns">\n    <div class="row">\n      <div class="large-6 columns">\n        <label  for="LOGO">\n          '+o((e.tr||t&&t.tr||r).call(t,"Logo",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Logo for the template.",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <select wizard_field="LOGO" id="LOGO" name="LOGO">\n          <option value=""></option>\n';return s=e.each.call(t,null!=t?t.logos:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='        </select>\n      </div>\n      <div id="template_create_logo" class="text-center large-6 columns" style="margin-bottom: 15px"></div>\n      <br></div>\n  </div>\n</div>\n<div class="row hypervisor only_vcenter" style="display: none;">\n  <div class="large-6 columns">\n    <label  for="vcenter_template_uuid">\n      '+o((e.tr||t&&t.tr||r).call(t,"vCenter Template UUID",{name:"tr",hash:{},data:n}))+'\n      <span class="tip"></span>\n    </label>\n    <input type="text" id="vcenter_template_uuid" name="name"/>\n  </div>\n</div>\n',i=null!=(i=e.capacityInputsHTML||(null!=t?t.capacityInputsHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"capacityInputsHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n<div class="row">\n  <div class="large-6 columns">\n    <input type="checkbox" id="sunstone_capacity_select" name="name"/>\n    <label  for="sunstone_capacity_select">\n      '+o((e.tr||t&&t.tr||r).call(t,"Do not allow to change capacity",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">\n        '+o((e.tr||t&&t.tr||r).call(t,"Users using the cloud view will not be able to select a new capacity for this template",{name:"tr",hash:{},data:n}))+'\n      </span>\n    </label>\n  </div>\n</div>\n<div class="row">\n  <div class="large-6 columns">\n    <input type="checkbox" id="sunstone_network_select" name="name"/>\n    <label  for="sunstone_network_select">\n      '+o((e.tr||t&&t.tr||r).call(t,"Do not allow to modify network configuration",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">\n        '+o((e.tr||t&&t.tr||r).call(t,"Users using the cloud view will not be able to remove or add new NICs",{name:"tr",hash:{},data:n}))+"\n      </span>\n    </label>\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/general/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/general/wizardTabId",["require"],function(){return"generalTab"}),define("tabs/templates-tab/form-panels/create/wizard-tabs/general",["require","utils/locale","utils/tips","./general/capacity-inputs","utils/wizard-fields","hbs!./general/html","./general/wizardTabId"],function(t){function e(){this.wizardTabId=p,this.icon="fa-laptop",this.title=o.tr("General")}function a(){return u({capacityInputsHTML:c.html(),logos:h})}function n(t,e){"create"==e.action?($("#template_name_form",t).show(),$("#template_hypervisor_form",t).removeClass("left"),$("#NAME",t).removeAttr("disabled"),$("#NAME",t).attr("required","")):"update"==e.action&&($("#template_name_form",t).hide(),$("#template_hypervisor_form",t).addClass("left"),$("#NAME",t).attr("disabled","disabled"),$("#NAME",t).removeAttr("required"))}function s(t){l.setup(t),t.on("change","#LOGO",function(){$("#template_create_logo",t).show(),$("#template_create_logo",t).html('<span  class=""><img src="'+$(this).val()+'"></span>')}),t.on("change","input[name='hypervisor']",function(){$(".hypervisor").hide(),$(".only_"+this.value).show()}),c.setup(t)}function i(t){var e=d.retrieve(t);return"vcenter"==e.HYPERVISOR&&(e.PUBLIC_CLOUD={TYPE:"vcenter",VM_TEMPLATE:$("#vcenter_template_uuid",t).val()}),$("#sunstone_capacity_select:checked",t).length>0&&(e.SUNSTONE_CAPACITY_SELECT="NO"),$("#sunstone_network_select:checked",t).length>0&&(e.SUNSTONE_NETWORK_SELECT="NO"),e}function r(t,e){e.SUNSTONE_CAPACITY_SELECT&&"NO"==e.SUNSTONE_CAPACITY_SELECT.toUpperCase()&&($("#sunstone_capacity_select",t).attr("checked","checked"),delete e.SUNSTONE_CAPACITY_SELECT),e.SUNSTONE_NETWORK_SELECT&&"NO"==e.SUNSTONE_NETWORK_SELECT.toUpperCase()&&($("#sunstone_network_select",t).attr("checked","checked"),delete e.SUNSTONE_NETWORK_SELECT),e.HYPERVISOR&&($("input[name='hypervisor'][value='"+e.HYPERVISOR+"']",t).trigger("click"),delete e.HYPERVISOR),d.fill(t,e)}var o=t("utils/locale"),l=t("utils/tips"),c=t("./general/capacity-inputs"),d=t("utils/wizard-fields"),u=t("hbs!./general/html"),p=t("./general/wizardTabId"),h=[{path:"images/logos/arch.png",title:o.tr("Arch Linux")},{path:"images/logos/centos.png",title:o.tr("CentOS")},{path:"images/logos/debian.png",title:o.tr("Debian")},{path:"images/logos/fedora.png",title:o.tr("Fedora")},{path:"images/logos/linux.png",title:o.tr("Linux")},{path:"images/logos/redhat.png",title:o.tr("Redhat")},{path:"images/logos/ubuntu.png",title:o.tr("Ubuntu")},{path:"images/logos/windowsxp.png",title:o.tr("Windows XP/2003")},{path:"images/logos/windows8.png",title:o.tr("Windows 8")}];return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.fill=r,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/storage/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<dl class="tabs vertical" id="'+o((s=null!=(s=e.linksContainerId||(null!=t?t.linksContainerId:t))?s:r,typeof s===i?s.call(t,{name:"linksContainerId",hash:{},data:n}):s))+'" data-tab>\n  <dt class="text-center">\n    <button href="#" class="button tiny radius" id="tf_btn_disks">\n      <span class="fa fa-plus"></span>\n      '+o((e.tr||t&&t.tr||r).call(t,"Add another disk",{name:"tr",hash:{},data:n}))+'\n    </button>\n  </dt>\n</dl>\n<div class="tabs-content vertical" id="'+o((s=null!=(s=e.contentsContainerId||(null!=t?t.contentsContainerId:t))?s:r,typeof s===i?s.call(t,{name:"contentsContainerId",hash:{},data:n}):s))+'"></div>'},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/storage/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/storage/wizardTabId",["require"],function(){return"storageTab"}),define("tabs/templates-tab/form-panels/create/wizard-tabs/storage",["require","foundation.tab","sunstone-config","utils/locale","utils/tips","utils/wizard-fields","./storage/disk-tab","hbs!./storage/html","./storage/wizardTabId"],function(t){function e(){if(!c.isTemplateCreationTabEnabled("storage"))throw"Wizard Tab not enabled";this.wizardTabId=f,this.icon="fa-tasks",this.title=d.tr("Storage"),this.classes="hypervisor only_kvm only_vmware only_xen"}function a(){return h({linksContainerId:m,contentsContainerId:_})}function n(){}function s(t){var e=this;e.numberOfDisks=0,e.diskTabObjects={},u.setup(t),t.foundation("reflow","tab"),t.on("click","i.remove-tab",function(){var a=$(this).parent().attr("href"),n=$(this).closest("dd"),s=$(this).closest("dl"),i=$(a);n.remove(),i.remove();var r=i.attr("diskId");delete e.diskTabObjects[r],"active"==n.attr("class")&&$("a",s.children("dd").last()).click(),e.renameTabLinks(t)}),t.on("click","#tf_btn_disks",function(){return e.addDiskTab(t),!1}),e.addDiskTab(t)}function i(t){var e,a={},n=[];return $.each(this.diskTabObjects,function(a,s){e=s.retrieve($("#"+s.diskTabId,t)),$.isEmptyObject(e)||n.push(e)}),$.isEmptyObject(n)||(a.DISK=n),a}function r(t,e){var a=this,n=e.DISK;if(n instanceof Array)$.each(n,function(e,n){e>0&&a.addDiskTab(t);var s=a.diskTabObjects[a.numberOfDisks],i=$("#"+s.diskTabId,t);s.fill(i,n)});else if(n instanceof Object){var s=a.diskTabObjects[a.numberOfDisks],i=$("#"+s.diskTabId,t);s.fill(i,n)}}function o(t){this.numberOfDisks++;var e=new p(this.numberOfDisks),a=$('<div id="'+e.diskTabId+'" class="active disk wizard_internal_tab content">'+e.html()+"</div>").appendTo($("#"+_,t)),n=$("<dd class='active'><a href='#"+e.diskTabId+"'>"+d.tr("DISK")+"</a></dd>").appendTo($("#"+m,t));$("a",n).trigger("click"),e.setup(a),a.attr("diskId",this.numberOfDisks),this.renameTabLinks(t),this.diskTabObjects[this.numberOfDisks]=e}function l(t){$("#"+m+" dd",t).each(function(t){$("a",this).html(d.tr("Disk")+" "+t+" <i class='fa fa-times-circle remove-tab'></i>")})}t("foundation.tab");var c=t("sunstone-config"),d=t("utils/locale"),u=t("utils/tips"),p=(t("utils/wizard-fields"),t("./storage/disk-tab")),h=t("hbs!./storage/html"),f=t("./storage/wizardTabId"),m="template_create_storage_tabs",_="template_create_storage_tabs_content";return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.fill=r,e.prototype.renameTabLinks=l,e.prototype.addDiskTab=o,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/network/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<dl class="tabs vertical" id="'+o((s=null!=(s=e.linksContainerId||(null!=t?t.linksContainerId:t))?s:r,typeof s===i?s.call(t,{name:"linksContainerId",hash:{},data:n}):s))+'" data-tab>\n  <dt class="text-center">\n    <button href="#" class="button tiny radius" id="tf_btn_nics">\n      <span class="fa fa-plus"></span>\n      '+o((e.tr||t&&t.tr||r).call(t,"Add another interface",{name:"tr",hash:{},data:n}))+'\n    </button>\n  </dt>\n</dl>\n<div class="tabs-content vertical" id="'+o((s=null!=(s=e.contentsContainerId||(null!=t?t.contentsContainerId:t))?s:r,typeof s===i?s.call(t,{name:"contentsContainerId",hash:{},data:n}):s))+'"></div>\n<div class="row">\n  <div class="large-6 columns">\n    <label for="DEFAULT_MODEL">\n      '+o((e.tr||t&&t.tr||r).call(t,"Default model",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">\n        '+o((e.tr||t&&t.tr||r).call(t,"Default value for all NICs. Hardware that will emulate the network interface. With Xen this is the type attribute of the vif.",{name:"tr",hash:{},data:n}))+'\n      </span>\n    </label>\n    <input type="text" id="DEFAULT_MODEL" name="DEFAULT_MODEL"/>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/network/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/network/wizardTabId",["require"],function(){return"networkTab"}),define("tabs/templates-tab/form-panels/create/wizard-tabs/network",["require","foundation.tab","sunstone-config","utils/locale","utils/tips","utils/wizard-fields","./network/nic-tab","hbs!./network/html","./network/wizardTabId"],function(t){function e(){if(!c.isTemplateCreationTabEnabled("network"))throw"Wizard Tab not enabled";this.wizardTabId=f,this.icon="fa-globe",this.title=d.tr("Network"),this.classes="hypervisor only_kvm only_vmware only_xen only_vcenter"}function a(){return h({linksContainerId:m,contentsContainerId:_})}function n(){}function s(t){var e=this;e.numberOfNics=0,e.nicTabObjects={},u.setup(t),t.foundation("reflow","tab"),t.on("click","i.remove-tab",function(){var a=$(this).parent().attr("href"),n=$(this).closest("dd"),s=$(this).closest("dl"),i=$(a);n.remove(),i.remove();var r=i.attr("nicId");delete e.nicTabObjects[r],"active"==n.attr("class")&&$("a",s.children("dd").last()).click(),e.renameTabLinks(t)}),t.on("click","#tf_btn_nics",function(){return e.addNicTab(t),!1}),e.addNicTab(t)}function i(t){var e,a={},n=[];$.each(this.nicTabObjects,function(a,s){e=s.retrieve($("#"+s.nicTabId,t)),$.isEmptyObject(e)||n.push(e)}),$.isEmptyObject(n)||(a.NIC=n);var s=$("#DEFAULT_MODEL",t).val();return s&&(a.NIC_DEFAULT={MODEL:s}),a}function r(t,e){var a=this,n=e.NIC;if(n instanceof Array)$.each(n,function(e,n){e>0&&a.addNicTab(t);var s=a.nicTabObjects[a.numberOfNics],i=$("#"+s.nicTabId,t);s.fill(i,n)});else if(n instanceof Object){var s=a.nicTabObjects[a.numberOfNics],i=$("#"+s.nicTabId,t);s.fill(i,n)}var r=e.NIC_DEFAULT;void 0!=r&&(r.MODEL&&$("#DEFAULT_MODEL",t).val(r.MODEL),delete template.NIC_DEFAULT)}function o(t){this.numberOfNics++;var e=new p(this.numberOfNics),a=$('<div id="'+e.nicTabId+'" class="active nic wizard_internal_tab content">'+e.html()+"</div>").appendTo($("#"+_,t)),n=$("<dd class='active'><a href='#"+e.nicTabId+"'>"+d.tr("NIC")+"</a></dd>").appendTo($("#"+m,t));$("a",n).trigger("click"),e.setup(a),a.attr("nicId",this.numberOfNics),this.renameTabLinks(t),this.nicTabObjects[this.numberOfNics]=e}function l(t){$("#"+m+" dd",t).each(function(t){$("a",this).html(d.tr("NIC")+" "+t+" <i class='fa fa-times-circle remove-tab'></i>")})}t("foundation.tab");var c=t("sunstone-config"),d=t("utils/locale"),u=t("utils/tips"),p=(t("utils/wizard-fields"),t("./network/nic-tab")),h=t("hbs!./network/html"),f=t("./network/wizardTabId"),m="template_create_network_tabs",_="template_create_network_tabs_content";return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.fill=r,e.prototype.renameTabLinks=l,e.prototype.addNicTab=o,e}),define("tabs/files-tab/tabId",["require"],function(){return"files-tab"}),define("tabs/files-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","utils/humanize","utils/notifier","opennebula/image","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=d,this.dataTableId=t,this.resource=l,this.xmlRoot=c,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:s.tabTableColumns(d)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[i.tr("ID"),i.tr("Owner"),i.tr("Group"),i.tr("Name"),i.tr("Datastore"),i.tr("Size"),i.tr("Type"),i.tr("Registration time"),i.tr("Persistent"),i.tr("Status"),i.tr("#VMS"),i.tr("Target")],this.selectOptions={id_index:1,name_index:4,uname_index:2,select_resource:i.tr("Please select an file from the list"),you_selected:i.tr("You selected the following file:"),select_resource_multiple:i.tr("Please select one or more files from the list"),you_selected_multiple:i.tr("You selected the following files:")},n.call(this)}function a(t){var e=t.IMAGE;return"0"==e.TYPE||"1"==e.TYPE||"2"==e.TYPE?!1:['<input class="check_item" type="checkbox" id="'+l.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.UNAME,e.GNAME,e.NAME,e.DATASTORE,e.SIZE,o.typeStr(e.TYPE),r.prettyTime(e.REGTIME),parseInt(e.PERSISTENT)?"yes":"no",o.stateStr(e.STATE),e.RUNNING_VMS,e.TEMPLATE.TARGET?e.TEMPLATE.TARGET:"--"]}var n=t("utils/tab-datatable"),s=t("sunstone-config"),i=t("utils/locale"),r=t("utils/humanize"),o=(t("utils/notifier"),t("opennebula/image")),l="File",c="IMAGE",d=t("./tabId"),u={DATASTORE:5,TYPE:7};return e.prototype=Object.create(n.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e.COLUMN_IDS=u,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/os/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t){var e=this.lambda,a=this.escapeExpression;return'            <option value="'+a(e(t,t))+'">'+a(e(t,t))+"</option>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='<div id="tabs-bootos">\n  <dl class="tabs vertical" data-tab>\n    <dd class="active">\n      <a href="#bootTab">'+o((e.tr||t&&t.tr||r).call(t,"Boot",{name:"tr",hash:{},data:n}))+'</a>\n    </dd>\n    <dd>\n      <a href="#kernelTab">'+o((e.tr||t&&t.tr||r).call(t,"Kernel",{name:"tr",hash:{},data:n}))+'</a>\n    </dd>\n    <dd>\n      <a href="#ramdiskTab">'+o((e.tr||t&&t.tr||r).call(t,"Ramdisk",{name:"tr",hash:{},data:n}))+'</a>\n    </dd>\n    <dd>\n      <a href="#featuresTab">'+o((e.tr||t&&t.tr||r).call(t,"Features",{name:"tr",hash:{},data:n}))+'</a>\n    </dd>\n  </dl>\n  <div class="tabs-content vertical">\n    <div class="wizard_internal_tab active content" id="bootTab">\n      <div class="row">\n        <div class="large-4 columns">\n          <label for="ARCH">\n            '+o((e.tr||t&&t.tr||r).call(t,"Arch",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"CPU architecture to virtualization",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select wizard_field="ARCH" id="ARCH" name="arch">\n            <option id="no_arch" name="no_arch" value=""></option>\n            <option value="i686">i686</option>\n            <option value="x86_64">x86_64</option>\n          </select>\n        </div>\n        <div class="large-8 columns hypervisor only_kvm">\n          <label for="MACHINE">\n            '+o((e.tr||t&&t.tr||r).call(t,"Machine type",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"libvirt machine type, only for KVM",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input type="text" wizard_field="MACHINE" id="MACHINE" name="machine" />\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-4 columns">\n          <label for="ROOT">\n            '+o((e.tr||t&&t.tr||r).call(t,"Root",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Device to be mounted as root",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input type="text" wizard_field="ROOT" id="ROOT" name="root"/>\n        </div>\n        <div class="large-8 columns hypervisor only_vmware">\n          <label for="GUESTOS">\n            '+o((e.tr||t&&t.tr||r).call(t,"Guest OS",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Set the OS of the VM, only for VMware",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select wizard_field="GUESTOS" id="GUESTOS" name="GUESTOS">\n            <option id="no_guestos" name="no_guestos" value=""></option>\n';
+return s=e.each.call(t,null!=t?t.guestOS:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='          </select>\n        </div>\n      </div>\n      <br>\n      <div class="row">\n        <div class="large-4 columns">\n          <label for="BOOT_0">\n            '+o((e.tr||t&&t.tr||r).call(t,"1st Boot",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"1st Boot device type",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select id="BOOT_0" name="boot">\n            <option id="no_boot" name="no_boot" value=""></option>\n            <option value="hd">'+o((e.tr||t&&t.tr||r).call(t,"HD",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="fd">'+o((e.tr||t&&t.tr||r).call(t,"FD",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="cdrom">'+o((e.tr||t&&t.tr||r).call(t,"CDROM",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="network">'+o((e.tr||t&&t.tr||r).call(t,"NETWORK",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="large-4 columns">\n          <label for="BOOT_1">\n            '+o((e.tr||t&&t.tr||r).call(t,"2nd Boot",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"2nd Boot device type",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select id="BOOT_1" name="boot">\n            <option id="no_boot" name="no_boot" value=""></option>\n            <option value="hd">'+o((e.tr||t&&t.tr||r).call(t,"HD",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="fd">'+o((e.tr||t&&t.tr||r).call(t,"FD",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="cdrom">'+o((e.tr||t&&t.tr||r).call(t,"CDROM",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="network">'+o((e.tr||t&&t.tr||r).call(t,"NETWORK",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="large-4 columns">\n          <label for="BOOT_2">\n            '+o((e.tr||t&&t.tr||r).call(t,"3rd Boot",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"3rd Boot device type",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select id="BOOT_2" name="boot">\n            <option id="no_boot" name="no_boot" value=""></option>\n            <option value="hd">'+o((e.tr||t&&t.tr||r).call(t,"HD",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="fd">'+o((e.tr||t&&t.tr||r).call(t,"FD",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="cdrom">'+o((e.tr||t&&t.tr||r).call(t,"CDROM",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="network">'+o((e.tr||t&&t.tr||r).call(t,"NETWORK",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-12 columns">\n          <label for="KERNEL_CMD">\n            '+o((e.tr||t&&t.tr||r).call(t,"Kernel cmd",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Arguments for the booting kernel",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input type="text" wizard_field="KERNEL_CMD" id="KERNEL_CMD" name="kernel_cmd" />\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-12 columns">\n          <label for="BOOTLOADER">\n            '+o((e.tr||t&&t.tr||r).call(t,"Bootloader",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Path to the bootloader executable",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input type="text" wizard_field="BOOTLOADER" id="BOOTLOADER" name="bootloader" />\n        </div>\n      </div>\n    </div>\n    <div id="kernelTab" class="wizard_internal_tab content">\n      <div class="row">\n        <div class="large-12 columns text-center">\n          <input id="radioKernelDs" type="radio" name="kernel_type" value="kernel_ds" checked/>\n          <label for="radioKernelDs">'+o((e.tr||t&&t.tr||r).call(t,"Registered Image",{name:"tr",hash:{},data:n}))+'</label>\n          <input id="radioKernelPath" type="radio" name="kernel_type" value="kernel_path"/>\n          <label for="radioKernelPath">'+o((e.tr||t&&t.tr||r).call(t,"Remote PATH",{name:"tr",hash:{},data:n}))+'</label>\n        </div>\n      </div>\n      <br>\n      <div class="kernel_ds">\n        ',i=null!=(i=e.kernelFilesTableHTML||(null!=t?t.kernelFilesTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"kernelFilesTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n        <div id="kernel_ds_inputs" class="row">\n          <div class="large-12 columns">\n            <label for="KERNEL_DS">'+o((e.tr||t&&t.tr||r).call(t,"KERNEL_DS",{name:"tr",hash:{},data:n}))+'</label>\n            <input type="text" wizard_field="KERNEL_DS" id="KERNEL_DS" name="KERNEL_DS"/>\n          </div>\n        </div>\n      </div>\n      <div id="kernel_path_inputs" class="kernel_path hidden row">\n        <div class="large-12 columns">\n          <label for="KERNEL">\n            '+o((e.tr||t&&t.tr||r).call(t,"PATH",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Path to the OS kernel to boot the image",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input type="text" wizard_field="KERNEL" id="KERNEL" name="kernel" />\n        </div>\n      </div>\n    </div>\n    <div id="ramdiskTab" class="wizard_internal_tab content">\n      <div class="row">\n        <div class="large-12 columns text-center">\n          <input id="radioInintrdDs" type="radio" name="initrd_type" value="initrd_ds" checked>\n          <label for="radioInintrdDs">'+o((e.tr||t&&t.tr||r).call(t,"Registered Image ",{name:"tr",hash:{},data:n}))+'</label>\n          <input id="radioInitrdPath" type="radio" name="initrd_type" value="initrd_path">\n          <label for="radioInitrdPath">'+o((e.tr||t&&t.tr||r).call(t,"Remote PATH",{name:"tr",hash:{},data:n}))+'</label>\n        </div>\n      </div>\n      <br>\n      <div class="initrd_ds">\n        ',i=null!=(i=e.initrdFilesTableHTML||(null!=t?t.initrdFilesTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"initrdFilesTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n        <div class="row">\n          <div class="large-12 columns">\n            <label for="INITRD_DS">'+o((e.tr||t&&t.tr||r).call(t,"INITRD_DS",{name:"tr",hash:{},data:n}))+'</label>\n            <input type="text" wizard_field="INITRD_DS" id="INITRD_DS" name="initrd_id"/>\n          </div>\n        </div>\n      </div>\n      <div id="initrd_path_inputs" class="initrd_path hidden">\n        <div class="row">\n          <div class="large-12 columns">\n            <label for="INITRD">\n              '+o((e.tr||t&&t.tr||r).call(t,"PATH",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Path to the initrd image",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n            <input type="text" wizard_field="INITRD" id="INITRD" name="initrd"/>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class="wizard_internal_tab content" id="featuresTab">\n      <div class="row">\n        <div class="large-6 columns">\n          <label for="ACPI">\n            '+o((e.tr||t&&t.tr||r).call(t,"ACPI",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"Add support in the VM for Advanced Configuration and Power Interface (ACPI)",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n          <select wizard_field="ACPI" id="ACPI" name="acpi">\n            <option id="no_apci" name="no_apci" value=""></option>\n            <option value="yes">'+o((e.tr||t&&t.tr||r).call(t,"Yes",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="no">'+o((e.tr||t&&t.tr||r).call(t,"No",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="large-6 columns">\n          <label for="PAE">\n            '+o((e.tr||t&&t.tr||r).call(t,"PAE",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"Add support in the VM for Physical Address Extension (PAE)",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n          <select wizard_field="PAE" id="PAE" name="pae">\n            <option id="no_pae" name="no_pae" value=""></option>\n            <option value="yes">'+o((e.tr||t&&t.tr||r).call(t,"Yes",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="no">'+o((e.tr||t&&t.tr||r).call(t,"No",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-6 columns">\n          <label for="APIC">\n            '+o((e.tr||t&&t.tr||r).call(t,"APIC",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Enables the advanced programmable IRQ management.",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select wizard_field="APIC" id="APIC" name="apic">\n            <option id="no_apic" name="no_apic" value=""></option>\n            <option value="yes">'+o((e.tr||t&&t.tr||r).call(t,"Yes",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="no">'+o((e.tr||t&&t.tr||r).call(t,"No",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="large-6 columns">\n          <label for="HYPERV">\n            '+o((e.tr||t&&t.tr||r).call(t,"HYPERV",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Add support in the VM for hyper-v features (HYPERV)",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select wizard_field="HYPERV" id="HYPERV" name="hyperv">\n            <option id="no_hyperv" name="no_hyperv" value=""></option>\n            <option value="yes">'+o((e.tr||t&&t.tr||r).call(t,"Yes",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="no">'+o((e.tr||t&&t.tr||r).call(t,"No",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-6 columns">\n          <label for="LOCALTIME">\n            '+o((e.tr||t&&t.tr||r).call(t,"Localtime",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"The guest clock will be synchronized to the hosts configured timezone when booted.",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n          <select wizard_field="LOCALTIME" id="LOCALTIME" name="localtime">\n            <option id="no_localtime" name="no_localtime" value=""></option>\n            <option value="yes">'+o((e.tr||t&&t.tr||r).call(t,"Yes",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="no">'+o((e.tr||t&&t.tr||r).call(t,"No",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="large-6 columns hypervisor only_xen">\n          <label for="DEVICE_MODEL">\n            '+o((e.tr||t&&t.tr||r).call(t,"Device model",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"Used to change the IO emulator in Xen HVM. Only XEN.",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n          <input type="text" wizard_field="DEVICE_MODEL" id="DEVICE_MODEL" name="device_model"/>\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-6 columns hypervisor only_vmware">\n          <label for="PCIBRIDGE">\n            '+o((e.tr||t&&t.tr||r).call(t,"PCI BRIDGE",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t," Adds a PCI Controller that provides bridge-to-bridge capability, only for VMware.",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n          <select wizard_field="PCIBRIDGE" id="PCIBRIDGE" name="PCIBRIDGE">\n            <option id="no_pcibridge" name="no_pcibridge" value=""></option>\n            <option value="0">0</option>\n            <option value="1">1</option>\n            <option value="2">2</option>\n            <option value="3">3</option>\n            <option value="4">4</option>\n            <option value="5">5</option>\n            <option value="6">6</option>\n            <option value="7">7</option>\n            <option value="8">8</option>\n            <option value="9">9</option>\n            <option value="10">10</option>\n          </select>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/os/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/os/wizardTabId",["require"],function(){return"osTab"}),define("tabs/templates-tab/form-panels/create/wizard-tabs/os",["require","foundation.tab","sunstone-config","utils/locale","utils/tips","utils/wizard-fields","tabs/files-tab/datatable","hbs!./os/html","./os/wizardTabId"],function(t){function e(){if(!o.isTemplateCreationTabEnabled("os_booting"))throw"Wizard Tab not enabled";this.wizardTabId=h,this.icon="fa-power-off",this.title=l.tr("OS Booting"),this.classes="hypervisor only_kvm only_vmware only_xen",this.kernelFilesTable=new u(this.wizardTabId+"KernelTable",{select:!0,selectOptions:{filter_fn:function(t){return 3==t.TYPE}}}),this.initrdFilesTable=new u(this.wizardTabId+"InitrdTable",{select:!0,selectOptions:{filter_fn:function(t){return 4==t.TYPE}}})}function a(){return p({guestOS:f,kernelFilesTableHTML:this.kernelFilesTable.dataTableHTML,initrdFilesTableHTML:this.initrdFilesTable.dataTableHTML})}function n(){}function s(t){var e=this;c.setup(t),t.foundation("reflow","tab");var a=$(".kernel_ds",t),n=$("#kernel_path_inputs",t);$("input[name='kernel_type']",t).change(function(){"kernel_ds"==$("input[name='kernel_type']:checked",t).val()?(a.toggle(),n.hide(),$("[wizard_field]",a).prop("wizard_field_disabled",!1),$("[wizard_field]",n).prop("wizard_field_disabled",!0)):(a.hide(),n.toggle(),$("[wizard_field]",n).prop("wizard_field_disabled",!1),$("[wizard_field]",a).prop("wizard_field_disabled",!0))});var s=$(".initrd_ds",t),i=$("#initrd_path_inputs",t);$("input[name='initrd_type']",t).change(function(){"initrd_ds"==$("input[name='initrd_type']:checked",t).val()?(s.toggle(),i.hide(),$("[wizard_field]",s).prop("wizard_field_disabled",!1),$("[wizard_field]",i).prop("wizard_field_disabled",!0)):(s.hide(),i.toggle(),$("[wizard_field]",i).prop("wizard_field_disabled",!1),$("[wizard_field]",s).prop("wizard_field_disabled",!0))}),e.kernelFilesTable.initialize({selectOptions:{select_callback:function(e,a){$("#KERNEL_DS",t).val("$FILE[IMAGE_ID="+e[a.id_index]+"]")}}}),e.kernelFilesTable.refreshResourceTableSelect(),e.initrdFilesTable.initialize({selectOptions:{select_callback:function(e,a){$("#INITRD_DS",t).val("$FILE[IMAGE_ID="+e[a.id_index]+"]")}}}),e.initrdFilesTable.refreshResourceTableSelect()}function i(t){var e={},a={};$.extend(a,d.retrieve("#bootTab",t)),$.extend(a,d.retrieve("#kernelTab",t)),$.extend(a,d.retrieve("#ramdiskTab",t));for(var n,s="",i=0;3>i;i++)n=$("#BOOT_"+i,t).val(),void 0!=n&&n.length>0&&(s.length>0&&(s+=","),s+=n);s.length>0&&(a.BOOT=s),$.isEmptyObject(a)||(e.OS=a);var r=d.retrieve("#featuresTab",t);return $.isEmptyObject(r)||(e.FEATURES=r),e}function r(t,e){var a=e.OS;if(a){if(d.fill(t,a),a&&a.BOOT)for(var n=a.BOOT.split(","),s=0;3>s&&s<n.length;s++)$("#BOOT_"+s,t).val(n[s]);delete e.OS}var i=e.FEATURES;i&&(d.fill(t,i),delete e.FEATURES)}t("foundation.tab");var o=t("sunstone-config"),l=t("utils/locale"),c=t("utils/tips"),d=t("utils/wizard-fields"),u=t("tabs/files-tab/datatable"),p=t("hbs!./os/html"),h=t("./os/wizardTabId"),f=["asianux3_64Guest","asianux3Guest","asianux4_64Guest","asianux4Guest","centos64Guest","centosGuest","darwin64Guest","darwinGuest","debian4_64Guest","debian4Guest","debian5_64Guest","debian5Guest","dosGuest","eComStationGuest","freebsd64Guest","freebsdGuest","mandriva64Guest","mandrivaGuest","netware4Guest","netware5Guest","netware6Guest","nld9Guest","oesGuest","openServer5Guest","openServer6Guest","oracleLinux64Guest","oracleLinuxGuest","os2Guest","other24xLinux64Guest","other24xLinuxGuest","other26xLinux64Guest","other26xLinuxGuest","otherGuest","otherGuest64","otherLinux64Guest","otherLinuxGuest","redhatGuest","rhel2Guest","rhel3_64Guest","rhel3Guest","rhel4_64Guest","rhel4Guest","rhel5_64Guest","rhel5Guest","rhel6_64Guest","rhel6Guest","sjdsGuest","sles10_64Guest","sles10Guest","sles11_64Guest","sles11Guest","sles64Guest","slesGuest","solaris10_64Guest","solaris10Guest","solaris6Guest","solaris7Guest","solaris8Guest","solaris9Guest","suse64Guest","suseGuest","turboLinux64Guest","turboLinuxGuest","ubuntu64Guest","ubuntuGuest","unixWare7Guest","win2000AdvServGuest","win2000ProGuest","win2000ServGuest","win31Guest","win95Guest","win98Guest","windows7_64Guest","windows7Guest","windows7Server64Guest","winLonghorn64Guest","winLonghornGuest","winMeGuest","winNetBusinessGuest","winNetDatacenter64Guest","winNetDatacenterGuest","winNetEnterprise64Guest","winNetEnterpriseGuest","winNetStandard64Guest","winNetStandardGuest","winNetWebGuest","winNTGuest","winVista64Guest","winVistaGuest","winXPHomeGuest","winXPPro64Guest","winXPProGues"];return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.fill=r,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/io/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row">\n  <div class="large-6 columns graphics">\n    <fieldset>\n      <legend>'+i((e.tr||t&&t.tr||s).call(t,"Graphics",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-12 columns text-center">\n          <input type="radio" name="graphics_type" ID="radioVncType" value="VNC">\n          <label for="radioVncType">VNC</label>\n          <input type="radio" name="graphics_type" ID="radioSdlType" value="SDL" class="hypervisor only_kvm only_vmware only_xen" >\n          <label class="hypervisor only_kvm only_vmware only_xen"  for="radioSdlType">SDL</label>\n          <input type="radio" name="graphics_type" ID="radioSpiceType" value="SPICE" class="hypervisor only_kvm only_vmware only_xen" >\n          <label  class="hypervisor only_kvm only_vmware only_xen" for="radioSpiceType">SPICE</label>\n        </div>\n      </div>\n      <br>\n      <div class="row">\n        <input type="hidden" wizard_field="TYPE" name="graphics_type" ID="TYPE">\n        <div class="large-12 columns">\n          <label for="LISTEN">\n            '+i((e.tr||t&&t.tr||s).call(t,"Listen IP",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"IP to listen on",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input type="text" wizard_field="LISTEN" id="LISTEN" name="graphics_ip" />\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-6 columns">\n          <label for="PORT">\n            '+i((e.tr||t&&t.tr||s).call(t,"Port",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Port for the VNC/SPICE server",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input type="text" wizard_field="PORT" id="PORT" name="port" />\n        </div>\n        <div class="large-6 columns">\n          <label for="KEYMAP">\n            '+i((e.tr||t&&t.tr||s).call(t,"Keymap",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+i((e.tr||t&&t.tr||s).call(t,"Keyboard configuration locale to use in the VNC/SPICE display",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n          <input type="text" wizard_field="KEYMAP" id="KEYMAP" name="keymap" />\n        </div>\n      </div>\n      <div class="row hypervisor only_kvm only_vmware only_xen">\n        <div class="large-12 columns">\n          <label for="PASSWD">\n            '+i((e.tr||t&&t.tr||s).call(t,"Password",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Password for the VNC/SPICE server",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input type="text" wizard_field="PASSWD" id="PASSWD" name="graphics_pw" />\n        </div>\n      </div>\n      <div class="row hypervisor only_kvm only_vmware only_xen">\n        <div class="columns large-12">\n          <input type="checkbox" name="RANDOM_PASSWD" id="RANDOM_PASSWD">\n          <label for="RANDOM_PASSWD">\n            '+i((e.tr||t&&t.tr||s).call(t,"Generate Random Password",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+i((e.tr||t&&t.tr||s).call(t,"A random password will be generated for each VM, and will be included in the VM information",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n        </div>\n      </div>\n    </fieldset>\n  </div>\n  <div class="large-6 columns inputs hypervisor only_kvm only_vmware only_xen">\n    <fieldset>\n      <legend>'+i((e.tr||t&&t.tr||s).call(t,"Inputs",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-5 columns">\n          <select id="INPUT_TYPE" name="input_type">\n            <option id="no_type" name="no_type" value=""></option>\n            <option value="mouse">'+i((e.tr||t&&t.tr||s).call(t,"Mouse",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="tablet">'+i((e.tr||t&&t.tr||s).call(t,"Tablet",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="large-4 columns">\n          <select id="INPUT_BUS" name="input_bus">\n            <option id="no_input" name="no_input" value=""></option>\n            <option value="usb">'+i((e.tr||t&&t.tr||s).call(t,"USB",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="ps2">'+i((e.tr||t&&t.tr||s).call(t,"PS2",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="xen">'+i((e.tr||t&&t.tr||s).call(t,"XEN",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="large-3 columns">\n          <a href="#" class="button small radius secondary" id="add_input">'+i((e.tr||t&&t.tr||s).call(t,"Add",{name:"tr",hash:{},data:n}))+'</a>\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-12 columns">\n          <table id="input_table" class="dataTable policies_table">\n            <thead>\n              <tr>\n                <th>'+i((e.tr||t&&t.tr||s).call(t,"TYPE",{name:"tr",hash:{},data:n}))+"</th>\n                <th>"+i((e.tr||t&&t.tr||s).call(t,"BUS",{name:"tr",hash:{},data:n}))+'</th>\n                <th></th>\n              </tr>\n            </thead>\n            <tbody id="tbodyinput">\n              <tr></tr>\n              <tr></tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n    </fieldset>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/io/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/io/wizardTabId",["require"],function(){return"ioTab"}),define("tabs/templates-tab/form-panels/create/wizard-tabs/io",["require","sunstone-config","utils/locale","utils/tips","utils/wizard-fields","utils/template-utils","hbs!./io/html","./io/wizardTabId"],function(t){function e(){if(!o.isTemplateCreationTabEnabled("input_output"))throw"Wizard Tab not enabled";this.wizardTabId=h,this.icon="fa-exchange",this.title=l.tr("Input/Output")}function a(){return p()}function n(){}function s(t){c.setup(t),$("input[name='graphics_type']",t).change(function(){$("#TYPE",t).val($(this).attr("value")),$("#LISTEN",t).val("0.0.0.0")}),t.off("click","#add_input"),t.on("click","#add_input",function(){var e=$("#input_table",t)[0],a=(e.rows.length,e.insertRow(-1));$(a).addClass("vm_param");var n=a.insertCell(0),s=document.createElement("input");s.id="INPUT_TYPE",s.type="text",s.value=$("select#INPUT_TYPE",t).val(),n.appendChild(s);var i=a.insertCell(1),r=document.createElement("input");r.id="INPUT_BUS",r.type="text",r.value=$("select#INPUT_BUS",t).val(),i.appendChild(r);var o=a.insertCell(2);o.innerHTML="<i class='fa fa-times-circle fa fa-lg remove-tab'></i>"}),t.off("click","i.remove-tab"),t.on("click","i.remove-tab",function(){$(this).closest("tr").remove()})}function i(t){var e={},a=d.retrieve(t);!$.isEmptyObject(a)&&$("#RANDOM_PASSWD:checked",t).length>0&&(a.RANDOM_PASSWD="YES"),$.isEmptyObject(a)||(e.GRAPHICS=a);var n=[];return $("#input_table tr",t).each(function(){$("#INPUT_TYPE",$(this)).val()&&n.push({TYPE:$("#INPUT_TYPE",$(this)).val(),BUS:$("#INPUT_BUS",$(this)).val()})}),$.isEmptyObject(n)||(e.INPUTS=n),e}function r(t,e){var a=e.GRAPHICS;if(a){var n=a.TYPE;n&&$("input[value='"+n.toUpperCase()+"']").click(),"YES"==a.RANDOM_PASSWD&&$("#RANDOM_PASSWD",t).attr("checked","checked"),d.fill(t,a),delete e.GRAPHICS}var s=e.INPUTS;s&&(s instanceof Array||(s=[s]),$.each(s,function(){var e=$("#input_table",t)[0],a=e.rows.length,n=e.insertRow(a),s=n.insertCell(0),i=document.createElement("input");i.id="INPUT_TYPE",i.type="text",i.value=u.htmlDecode(this.TYPE),s.appendChild(i);var r=n.insertCell(1),o=document.createElement("input");o.id="INPUT_BUS",o.type="text",o.value=u.htmlDecode(this.BUS),r.appendChild(o);var l=n.insertCell(2);l.innerHTML="<i class='fa fa-times-circle fa fa-lg remove-tab'></i>"}),delete e.INPUTS)}var o=t("sunstone-config"),l=t("utils/locale"),c=t("utils/tips"),d=t("utils/wizard-fields"),u=t("utils/template-utils"),p=t("hbs!./io/html"),h=t("./io/wizardTabId");return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.fill=r,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/context/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='<dl id="context_tabs" class="tabs vertical" data-tab>\n  <dd class="active">\n    <a href="#netsshTab">'+o((e.tr||t&&t.tr||r).call(t,"Network & SSH",{name:"tr",hash:{},data:n}))+'</a>\n  </dd>\n  <dd>\n    <a href="#filesTab">'+o((e.tr||t&&t.tr||r).call(t,"Files",{name:"tr",hash:{},data:n}))+'</a>\n  </dd>\n  <dd>\n    <a href="#userinputsTab">'+o((e.tr||t&&t.tr||r).call(t,"User Inputs",{name:"tr",hash:{},data:n}))+'</a>\n  </dd>\n  <dd>\n    <a href="#zcustomTab">'+o((e.tr||t&&t.tr||r).call(t,"Custom vars",{name:"tr",hash:{},data:n}))+'</a>\n  </dd>\n</dl>\n<div class="tabs-content vertical">\n  <div class="wizard_internal_tab active content" id="netsshTab">\n    <div class="row">\n      <div class="columns large-12">\n        <input type="checkbox" name="ssh_context" id="ssh_context" checked>\n        <label for="ssh_context">\n          '+o((e.tr||t&&t.tr||r).call(t,"  Add SSH contextualization",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Add an ssh public key to the context. If the Public Key textarea is empty then the user variable SSH_PUBLIC_KEY will be used.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <label for="ssh_public_key">'+o((e.tr||t&&t.tr||r).call(t,"Public Key",{name:"tr",hash:{},data:n}))+':</label>\n        <textarea rows="4" type="text" id="ssh_public_key" name="ssh_public_key" />\n      </div>\n    </div>\n    <br>\n    <div class="row">\n      <div class="columns large-12">\n        <input type="checkbox" name="network_context" id="network_context" checked>\n        <label class="inline" for="network_context">\n          '+o((e.tr||t&&t.tr||r).call(t,"  Add Network contextualization",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Add network contextualization parameters. For each NIC defined in the NETWORK section, ETH$i_IP, ETH$i_NETWORK... parameters will be included in the CONTEXT section and will be available in the Virtual Machine",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n      </div>\n    </div>\n    <div class="row">\n      <div class="columns large-12">\n        <input type="checkbox" name="token_context" id="token_context">\n        <label class="inline" for="token_context">\n          '+o((e.tr||t&&t.tr||r).call(t,"  Add OneGate token",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Add a file (token.txt) to the context contaning the token to push custom metrics to the VirtualMachine through OneGate",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n      </div>\n    </div>\n  </div>\n  <div class="wizard_internal_tab content" id="filesTab">\n    ';return i=null!=(i=e.contextFilesTableHTML||(null!=t?t.contextFilesTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"contextFilesTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n    <div class="row">\n      <div class="large-12 columns">\n        <label for="FILES_DS">\n          '+o((e.tr||t&&t.tr||r).call(t,"FILES_DS",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Raw String for the FILE_DS attribute of the VM template, representing files that will be included in the contextualization image. Each file must be stored in a FILE_DS Datastore and must be of type CONTEXT",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="FILES_DS" id="FILES_DS" name="FILES_DS" />\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <label for="INIT_SCRIPTS">\n          '+o((e.tr||t&&t.tr||r).call(t,"Init scripts",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"If the VM uses the OpenNebula contextualization package the init.sh file is executed by default. When the init script added is not called init.sh or more than one init script is added, this list contains the scripts to run and the order. Ex. “init.sh users.sh mysql.sh”",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" wizard_field="FILES_DS" id="INIT_SCRIPTS" name="INIT_SCRIPTS" />\n      </div>\n    </div>\n  </div>\n  <div class="wizard_internal_tab content" id="zcustomTab">\n    ',i=null!=(i=e.customTagsTableHTML||(null!=t?t.customTagsTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"customTagsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n  </div>\n  <div class="wizard_internal_tab content" id="userinputsTab">\n    <div class="row">\n      <div class="large-12 columns">\n        <table class="service_custom_attrs policies_table dataTable">\n          <thead>\n            <tr>\n              <th colspan="4" style="font-size: 16px !important"> <i class="fa fa-lg fa-fw fa-cogs off-color"/>'+o((e.tr||t&&t.tr||r).call(t,"User Inputs",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"These attributes must be provided by the user when a new VM is intantatiated using each template. They will be included in the VM context",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </th>\n            </tr>\n          </thead>\n          <thead>\n            <tr>\n              <th style="width:30%">'+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'</th>\n              <th style="width:20%">'+o((e.tr||t&&t.tr||r).call(t,"Type",{name:"tr",hash:{},data:n}))+'</th>\n              <th style="width:50%">'+o((e.tr||t&&t.tr||r).call(t,"Description",{name:"tr",hash:{},data:n}))+'</th>\n              <th style="width:3%"></th>\n            </tr>\n          </thead>\n          <tbody></tbody>\n          <tfoot>\n            <tr>\n              <td colspan="4">\n                <a href="#" class="add_service_custom_attr button small large-12 secondary radius">\n                  <i class="fa fa-plus"></i>\n                  '+o((e.tr||t&&t.tr||r).call(t,"Add another attribute",{name:"tr",hash:{},data:n}))+"\n                </a>\n              </td>\n            </tr>\n          </tfoot>\n        </table>\n      </div>\n    </div>\n  </div>\n</div>"
+},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/context/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/context/wizardTabId",["require"],function(){return"contextTab"}),define("tabs/templates-tab/form-panels/create/wizard-tabs/context",["require","sunstone-config","utils/locale","utils/tips","utils/wizard-fields","utils/template-utils","utils/custom-tags-table","tabs/files-tab/datatable","hbs!./context/html","./context/wizardTabId"],function(t){function e(){if(!l.isTemplateCreationTabEnabled("context"))throw"Wizard Tab not enabled";this.wizardTabId=_,this.icon="fa-folder",this.title=c.tr("Context"),this.classes="hypervisor only_kvm only_vmware only_xen only_vcenter",this.contextFilesTable=new f(this.wizardTabId+"ContextTable",{select:!0,selectOptions:{multiple_choice:!0,filter_fn:function(t){return 5==t.TYPE}}})}function a(){return m({customTagsTableHTML:h.html(),contextFilesTableHTML:this.contextFilesTable.dataTableHTML})}function n(){}function s(t){var e=this;d.setup(t),h.setup(t);var a={selectOptions:{select_callback:function(){e.generateContextFiles(t)},unselect_callback:function(){e.generateContextFiles(t)}}};e.contextFilesTable.initialize(a),e.contextFilesTable.refreshResourceTableSelect(),t.on("click",".add_service_custom_attr",function(){$(".service_custom_attrs tbody").append('<tr><td><input class="user_input_name" type="text" pattern="[\\w]+"/><small class="error">'+c.tr("Only word characters are allowed")+'</small></td><td><select class="user_input_type" ><option value="text">'+c.tr("text")+'</option><option value="password">'+c.tr("password")+'</option></select></td><td><textarea class="user_input_description"/></td><td><a href="#"><i class="fa fa-times-circle remove-tab"></i></a></td></tr>')}),t.on("click",".service_custom_attrs i.remove-tab",function(){var t=$(this).closest("tr");t.remove()})}function i(t){var e={},a=u.retrieve(t);if($.extend(a,h.retrieve(t)),$("#ssh_context",t).is(":checked")){var n=$("#ssh_public_key",t).val();a.SSH_PUBLIC_KEY=n?n:"$USER[SSH_PUBLIC_KEY]"}$("#network_context",t).is(":checked")&&(a.NETWORK="YES"),$("#token_context",t).is(":checked")&&(a.TOKEN="YES");var s={};return $(".service_custom_attrs tbody tr",t).each(function(){if($(".user_input_name",$(this)).val()){var t=$(".user_input_name",$(this)).val(),e=$(".user_input_type",$(this)).val(),n=$(".user_input_description",$(this)).val();s[t]="M|"+e+"|"+n,a[t]="$"+t.toUpperCase()}}),$.isEmptyObject(a)||(e.CONTEXT=a),$.isEmptyObject(s)||(e.USER_INPUTS=s),e}function r(t,e){var a=this;$("#ssh_context",t).removeAttr("checked"),$("#network_context",t).removeAttr("checked");var n=e.CONTEXT,s=e.USER_INPUTS;if(s&&($.each(s,function(t,e){$(".add_service_custom_attr",a).trigger("click");var a=$(".service_custom_attrs tbody tr",a).last(),s=e.split("|");$(".user_input_name",a).val(t),$(".user_input_type",a).val(s[1]),$(".user_input_description",a).val(p.escapeDoubleQuotes(p.htmlDecode(s[2]))),n&&delete n[t]}),delete e.USER_INPUTS),n){var i=/\$FILE\[IMAGE_ID=([0-9]+)+/g,r=/^NETWORK$/,o=/^SSH_PUBLIC_KEY$/,l=/^TOKEN$/,c=/\$USER\[SSH_PUBLIC_KEY\]/,d={};$.each(n,function(e,s){if(o.test(e))$("#ssh_context",t).prop("checked","checked"),c.test(s)||$("#ssh_public_key",t).val(p.htmlDecode(s));else if(l.test(e))$("#token_context",t).prop("checked","checked");else if(r.test(e))$("#network_context",t).prop("checked","checked");else if("INIT_SCRIPTS"==e)$("input#INIT_SCRIPTS").val(p.htmlDecode(s));else if("FILES_DS"==e){$("#FILES_DS",t).val(p.escapeDoubleQuotes(p.htmlDecode(n.FILES_DS)));for(var u=[];match=i.exec(s);)u.push(match[1]);var h={ids:u};a.contextFilesTable.selectResourceTableSelect(h)}else d[e]=s}),h.fill(t,d),delete e.CONTEXT}}function o(t){var e=[],a=this.contextFilesTable.retrieveResourceTableSelect();$.each(a,function(t,a){e.push("$FILE[IMAGE_ID="+a+"]")}),$("#FILES_DS",t).val(e.join(" "))}var l=t("sunstone-config"),c=t("utils/locale"),d=t("utils/tips"),u=t("utils/wizard-fields"),p=t("utils/template-utils"),h=t("utils/custom-tags-table"),f=t("tabs/files-tab/datatable"),m=t("hbs!./context/html"),_=t("./context/wizardTabId");return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.fill=r,e.prototype.generateContextFiles=o,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/scheduling/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='<dl class="tabs vertical" data-tab>\n  <dd class="active">\n    <a href="#placementTab">'+o((e.tr||t&&t.tr||r).call(t,"Placement",{name:"tr",hash:{},data:n}))+'</a>\n  </dd>\n  <dd>\n    <a href="#policyTab">'+o((e.tr||t&&t.tr||r).call(t,"Policy",{name:"tr",hash:{},data:n}))+'</a>\n  </dd>\n</dl>\n<div class="tabs-content vertical">\n  <div class="requirements wizard_internal_tab active content" id="placementTab">\n    <fieldset>\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"Host Requirements",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-12 columns text-center">\n          <input type="radio" id="hosts_req" name="req_select" value="host_select">\n          <label for="hosts_req">'+o((e.tr||t&&t.tr||r).call(t,"Select Hosts ",{name:"tr",hash:{},data:n}))+'</label>\n          <input type="radio" id="clusters_req"  name="req_select" value="cluster_select">\n          <label for="clusters_req">'+o((e.tr||t&&t.tr||r).call(t,"Select Clusters ",{name:"tr",hash:{},data:n}))+'</label>\n        </div>\n      </div>\n      <br>\n      <div id="req_type" class="host_select" hidden>\n      ';return i=null!=(i=e.hostsTableSelectHTML||(null!=t?t.hostsTableSelectHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"hostsTableSelectHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n      </div>\n      <div id="req_type" class="cluster_select hidden">\n      ',i=null!=(i=e.clustersTableSelectHTML||(null!=t?t.clustersTableSelectHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"clustersTableSelectHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n      </div>\n      <br>\n      <div class="row">\n        <div class="large-12 columns">\n          <label for="SCHED_REQUIREMENTS">\n            '+o((e.tr||t&&t.tr||r).call(t,"Expression",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"Boolean expression that rules out provisioning hosts from list of machines suitable to run this VM",{name:"tr",hash:{},data:n}))+'.\n            </span>\n          </label>\n          <input type="text" wizard_field="SCHED_REQUIREMENTS" id="SCHED_REQUIREMENTS" name="requirements" />\n        </div>\n      </div>\n    </fieldset>\n    <fieldset class="hypervisor only_kvm only_vmware only_xen">\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"Datastore Requirements",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-12 columns">\n          <label for="SCHED_DS_REQUIREMENTS">\n            '+o((e.tr||t&&t.tr||r).call(t,"Expression",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"Boolean expression that rules out entries from the pool of datastores suitable to run this VM.",{name:"tr",hash:{},data:n}))+'.\n            </span>\n          </label>\n          <input type="text" wizard_field="SCHED_DS_REQUIREMENTS" id="SCHED_DS_REQUIREMENTS" name="requirements" />\n        </div>\n      </div>\n    </fieldset>\n  </div>\n  <div id="policyTab" class="wizard_internal_tab content">\n    <fieldset class="host_rank">\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"Host Rank",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-12 columns text-center">\n          <input type="radio" id="packingRadio" name="rank_select" value="RUNNING_VMS">\n          <label for="packingRadio">\n            '+o((e.tr||t&&t.tr||r).call(t,"Packing",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"Pack the VMs in the cluster nodes to reduce VM fragmentation",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n          <input type="radio"  id="stripingRadio" name="rank_select" value="-RUNNING_VMS">\n          <label for="stripingRadio">\n            '+o((e.tr||t&&t.tr||r).call(t,"Stripping",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Spread the VMs in the cluster nodes",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input type="radio"  id="loadawareRadio" name="rank_select" value="FREE_CPU">\n          <label for="loadawareRadio">\n            '+o((e.tr||t&&t.tr||r).call(t,"Load-aware",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Maximize the resources available to VMs in a node",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n        </div>\n      </div>\n      <br>\n      <div class="row">\n        <div class="large-12 columns">\n          <label for="SCHED_RANK">\n            '+o((e.tr||t&&t.tr||r).call(t,"Expression",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"This field sets which attribute will be used to sort the suitable hosts for this VM",{name:"tr",hash:{},data:n}))+'.\n            </span>\n          </label>\n          <input type="text" wizard_field="SCHED_RANK" id="SCHED_RANK" name="RANK" />\n        </div>\n      </div>\n    </fieldset>\n    <fieldset class="ds_rank hypervisor only_kvm only_vmware only_xen">\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"Datastore Rank",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-12 columns text-center">\n          <input type="radio" id="packingDSRadio" name="ds_rank_select" value="-FREE_MB">\n          <label for="packingDSRadio">\n            '+o((e.tr||t&&t.tr||r).call(t,"Packing",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"Tries to optimize storage usage by selecting the DS with less free space",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n          <input type="radio"  id="stripingDSRadio" name="ds_rank_select" value="FREE_MB">\n          <label for="stripingDSRadio">\n            '+o((e.tr||t&&t.tr||r).call(t,"Stripping",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"Striping. Tries to optimize I/O by distributing the VMs across datastores.",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </label>\n        </div>\n      </div>\n      <br>\n      <div class="row">\n        <div class="large-12 columns">\n          <label for="SCHED_DS_RANK">\n            '+o((e.tr||t&&t.tr||r).call(t,"Expression",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">\n              '+o((e.tr||t&&t.tr||r).call(t,"This field sets which attribute will be used to sort the suitable datastores for this VM",{name:"tr",hash:{},data:n}))+'.\n            </span>\n          </label>\n          <input type="text" wizard_field="SCHED_DS_RANK" id="SCHED_DS_RANK" name="RANK" />\n        </div>\n      </div>\n    </fieldset>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/scheduling/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/scheduling/wizardTabId",["require"],function(){return"schedulingTab"}),define("tabs/templates-tab/form-panels/create/wizard-tabs/scheduling",["require","foundation.tab","sunstone-config","utils/locale","utils/tips","utils/wizard-fields","utils/template-utils","tabs/hosts-tab/datatable","tabs/clusters-tab/datatable","hbs!./scheduling/html","./scheduling/wizardTabId"],function(t){function e(){if(!l.isTemplateCreationTabEnabled("scheduling"))throw"Wizard Tab not enabled";this.wizardTabId=_,this.icon="fa-sitemap",this.title=c.tr("Scheduling");var t={select:!0,selectOptions:{multiple_choice:!0}};this.hostsTable=new h(this.wizardTabId+"HostsTable",t),this.clustersTable=new f(this.wizardTabId+"ClustersTable",t)}function a(){return m({hostsTableSelectHTML:this.hostsTable.dataTableHTML,clustersTableSelectHTML:this.clustersTable.dataTableHTML})}function n(){}function s(t){var e=this;d.setup(t),t.foundation("reflow","tab"),t.on("change","input[name='req_select']",function(){"host_select"==$("input[name='req_select']:checked").val()?($("div.host_select",t).toggle(),$("div.cluster_select",t).hide()):($("div.host_select",t).hide(),$("div.cluster_select",t).toggle())}),t.on("change","input[name='rank_select']",function(){$("#SCHED_RANK",t).val(this.value)}),t.on("change","input[name='ds_rank_select']",function(){$("#SCHED_DS_RANK",t).val(this.value)});var a={selectOptions:{select_callback:function(){e.generateRequirements(t)},unselect_callback:function(){e.generateRequirements(t)}}};e.hostsTable.initialize(a),e.hostsTable.refreshResourceTableSelect(),e.clustersTable.initialize(a),e.clustersTable.refreshResourceTableSelect()}function i(t){return u.retrieve(t)}function r(t,e){var a=e.SCHED_REQUIREMENTS;if(a){for(var n=p.escapeDoubleQuotes(a),s=/(\s|\||\b)ID=\\"([0-9]+)\\"/g,i=/CLUSTER_ID=\\"([0-9]+)\\"/g,r=[];match=s.exec(n);)r.push(match[2]);for(var o=[];match=i.exec(n);)o.push(match[1]);var l={ids:r};this.hostsTable.selectResourceTableSelect(l);var l={ids:o};this.clustersTable.selectResourceTableSelect(l),$("input#SCHED_REQUIREMENTS",t).val(p.htmlDecode(n)),delete e.SCHED_REQUIREMENTS}var c=e.SCHED_DS_REQUIREMENTS;if(c){var d=p.escapeDoubleQuotes(c);$("input#SCHED_DS_REQUIREMENTS",t).val(p.htmlDecode(d)),delete e.SCHED_DS_REQUIREMENTS}var u=e.SCHED_RANK;if(u){var h=/^-RUNNING_VMS$/,f=/^RUNNING_VMS$/,m=/^FREE_CPU$/;h.test(u)?$('input[name="rank_select"]#stripingRadio',t).click():f.test(u)?$('input[name="rank_select"]#packingRadio',t).click():m.test(u)&&$('input[name="rank_select"]#loadawareRadio',t).click(),$("input#SCHED_RANK",t).val(p.htmlDecode(u)),delete e.SCHED_RANK}var _=e.SCHED_DS_RANK;if(_){var h=/^FREE_MB$/,f=/^-FREE_MB$/;h.test(_)?$('input[name="ds_rank_select"]#stripingDSRadio',t).click():f.test(_)&&$('input[name="ds_rank_select"]#packingDSRadio',t).click(),$("input#SCHED_DS_RANK",t).val(p.htmlDecode(_)),delete e.SCHED_DS_RANK}}function o(t){var e=[],a=this.hostsTable.retrieveResourceTableSelect(),n=this.clustersTable.retrieveResourceTableSelect();$.each(a,function(t,a){e.push('ID=\\"'+a+'\\"')}),$.each(n,function(t,a){e.push('CLUSTER_ID=\\"'+a+'\\"')}),$("#SCHED_REQUIREMENTS",t).val(e.join(" | "))}t("foundation.tab");var l=t("sunstone-config"),c=t("utils/locale"),d=t("utils/tips"),u=t("utils/wizard-fields"),p=t("utils/template-utils"),h=t("tabs/hosts-tab/datatable"),f=t("tabs/clusters-tab/datatable"),m=t("hbs!./scheduling/html"),_=t("./scheduling/wizardTabId");return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.fill=r,e.prototype.generateRequirements=o,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/hybrid/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<dl class="tabs vertical" id="template_create_hybrid_tabs" data-tab>\n  <dt class="text-center">\n    <a href="" class="button tiny radius" id="tf_btn_hybrid">\n      <span class="fa fa-plus"></span>\n      '+i((e.tr||t&&t.tr||s).call(t,"Add another provider",{name:"tr",hash:{},data:n}))+'\n    </a>\n  </dt>\n</dl>\n<div class="tabs-content vertical" id="template_create_hybrid_tabs_content"></div>'},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/hybrid/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/hybrid/wizardTabId",["require"],function(){return"hybridTab"}),define("tabs/templates-tab/form-panels/create/wizard-tabs/hybrid",["require","foundation.tab","sunstone-config","utils/locale","utils/tips","utils/wizard-fields","hbs!./hybrid/html","./hybrid/wizardTabId"],function(t){function e(){if(!c.isTemplateCreationTabEnabled("hybrid"))throw"Wizard Tab not enabled";this.wizardTabId=f,this.icon="fa-cloud",this.title=d.tr("Hybrid")}function a(){return h()}function n(){}function s(t){var e=this;t.foundation("reflow","tab"),e.numberOfProviders=0,t.on("click","i.remove-tab",function(){var e=$(this).parent().attr("href"),a=$(this).closest("dd"),n=$(this).closest("dl"),s=$(e);a.remove(),s.remove(),"active"==a.attr("class")&&$("a",n.children("dd").last()).click(),$("dl#template_create_hybrid_tabs dd",t).each(function(t){$("a",this).html(d.tr("Provider")+" "+t+" <i class='fa fa-times-circle remove-tab'></i>")})}),t.on("click","#tf_btn_hybrid",function(){return e.addProviderTab(e.numberOfProviders,t),e.numberOfProviders++,!1}),$("#tf_btn_hybrid",t).trigger("click")}function i(t){var e={},a=[],n=[];return"vcenter"==$("[wizard_field='HYPERVISOR']:checked").val()&&a.push({TYPE:"vcenter",VM_TEMPLATE:$("#vcenter_template_uuid").val()}),$(".provider",t).each(function(){var t=p.retrieve(this);if(!$.isEmptyObject(t)){var e=$("input.hybridRadio:checked",this).val();switch(e){case"ec2":n.push(t);break;case"softlayer":t.TYPE=e.toUpperCase(),a.push(t);break;case"azure":t.TYPE=e.toUpperCase(),a.push(t)}}}),$.isEmptyObject(a)||(e.PUBLIC_CLOUD=a),$.isEmptyObject(n)||(e.EC2=n),e}function r(t,e){var a=this,n=!1;if(e.PUBLIC_CLOUD){var s=e.PUBLIC_CLOUD;s instanceof Array?$.each(s,function(e,s){n=e>0,a.fillProviderTab(t,s,s.TYPE.toLowerCase(),n)}):s instanceof Object&&(a.fillProviderTab(t,s,s.TYPE.toLowerCase(),n),n=!0),delete e.PUBLIC_CLOUD}if(e.EC2){var s=e.EC2;s instanceof Array?$.each(s,function(e,s){n=n||e>0,a.fillProviderTab(t,s,"ec2",n)}):s instanceof Object&&a.fillProviderTab(t,s,"ec2",n),delete e.EC2}}function o(t,e){var a="provider"+t,n='<div id="'+a+'Tab" class="provider wizard_internal_tab content"><div class="row"><div class="large-12 columns"><label>'+d.tr("Hybrid Cloud")+'</label><input type="radio" class="hybridRadio" name="hybrid'+a+'" value="ec2" id="amazonRadio'+a+'"><label for="amazonRadio'+a+'">Amazon EC2</label><input type="radio" class="hybridRadio" name="hybrid'+a+'" value="softlayer" id="softlayerRadio'+a+'"><label for="softlayerRadio'+a+'">IBM Softlayer</label><input type="radio" class="hybridRadio" name="hybrid'+a+'" value="azure" id="azureRadio'+a+'"><label for="azureRadio'+a+'">Microsoft Azure</label></div></div><div class="row hybrid_inputs vm_param"></div></div>';$(n).appendTo($("#template_create_hybrid_tabs_content",e));var s=$("<dd>        <a id='provider_tab"+a+"' href='#"+a+"Tab'>"+d.tr("PROVIDER")+"</a>      </dd>").appendTo($("dl#template_create_hybrid_tabs",e));$("dl#template_create_hybrid_tabs dd",e).each(function(t){$("a",this).html(d.tr("Provider")+" "+t+" <i class='fa fa-times-circle remove-tab'></i>")}),$("a",s).trigger("click");var i=$("#"+a+"Tab",e);i.on("change","input.hybridRadio",function(){$(".hybrid_inputs",i).html("");var t="",e="";$.each(m[this.value],function(a,n){n.required?t+='<div class="large-6 columns"><label>'+n.label+'<span class="tip">'+n.tooltip+'</span></label><input wizard_field="'+n.name+'" type="text" id="'+n.name+'"></div>':e+='<div class="large-6 columns"><label>'+n.label+'<span class="tip">'+n.tooltip+'</span></label><input wizard_field="'+n.name+'" type="text" id="'+n.name+'"></div>'}),$(".hybrid_inputs",i).append(t+"<br><hr><br>"+e),u.setup($(".hybrid_inputs",i))})}function l(t,e,a,n){if("vcenter"==a)$("#vcenter_template_uuid").val(e.VM_TEMPLATE);else{n&&$("#tf_btn_hybrid",t).trigger("click");var s=$(".provider",t).last();$("input.hybridRadio[value='"+a+"']",s).trigger("click"),p.fill(s,e)}}t("foundation.tab");var c=t("sunstone-config"),d=t("utils/locale"),u=t("utils/tips"),p=t("utils/wizard-fields"),h=t("hbs!./hybrid/html"),f=t("./hybrid/wizardTabId"),m={ec2:[{name:"AKI",label:d.tr("AKI"),tooltip:d.tr("The ID of the kernel with which to launch the instance.")},{name:"AMI",label:d.tr("AMI"),tooltip:d.tr("Unique ID of a machine image, returned by a call to ec2-describe-images."),required:!0},{name:"AVAILABILITYZONE",label:d.tr("Availability Zone"),tooltip:d.tr("The Availability Zone in which to run the instance.")},{name:"BLOCKDEVICEMAPPING",label:d.tr("Block Device Mapping"),tooltip:d.tr("The block device mapping for the instance. More than one can be specified in a space-separated list. Check the –block-device-mapping option of the EC2 CLI Reference for the syntax")},{name:"CLIENTTOKEN",label:d.tr("Client Token"),tooltip:d.tr("Unique, case-sensitive identifier you provide to ensure idempotency of the request.")},{name:"EBS_OPTIMIZED",label:d.tr("EBS Optimized"),tooltip:d.tr("Obtain a better I/O throughput for VMs with EBS provisioned volumes")},{name:"ELASTICIP",label:d.tr("Elastic IP"),tooltip:d.tr("EC2 Elastic IP address to assign to the instance. This parameter is passed to the command ec2-associate-address -i i-0041230 elasticip.")},{name:"HOST",label:d.tr("OpenNebula Host"),tooltip:d.tr("Defines which OpenNebula host will use this template")},{name:"INSTANCETYPE",label:d.tr("Instance Type"),tooltip:d.tr("Specifies the instance type."),required:!0},{name:"KEYPAIR",label:d.tr("Keypair"),tooltip:d.tr("The name of the key pair, later will be used to execute commands like ssh -i id_keypair or scp -i id_keypair")},{name:"LICENSEPOOL",label:d.tr("License Pool"),tooltip:d.tr("Name of the license pool.")},{name:"PLACEMENTGROUP",label:d.tr("Placement Group"),tooltip:d.tr("Name of the placement group.")},{name:"PRIVATEIP",label:d.tr("Private IP"),tooltip:d.tr("If you’re using Amazon Virtual Private Cloud, you can optionally use this parameter to assign the instance a specific available IP address from the subnet.")},{name:"RAMDISK",label:d.tr("Ramdisk"),tooltip:d.tr("The ID of the RAM disk to select.")},{name:"SECURITYGROUPS",label:d.tr("Security Groups"),tooltip:d.tr("Name of the security group. You can specify more than one security group (comma separated).")},{name:"SUBNETID",label:d.tr("Subnet ID"),tooltip:d.tr("If you’re using Amazon Virtual Private Cloud, this specifies the ID of the subnet you want to launch the instance into. This parameter is also passed to the command ec2-associate-address -i i-0041230 -a elasticip.")},{name:"TAGS",label:d.tr("Tags"),tooltip:d.tr("Key and optional value of the tag, separated by an equals sign ( = ).You can specify more than one tag (comma separated).")},{name:"TENANCY",label:d.tr("Tenancy"),tooltip:d.tr("The tenancy of the instance you want to launch.")},{name:"USERDATA",label:d.tr("User Data"),tooltip:d.tr("Specifies Base64-encoded MIME user data to be made available to the instance(s) in this reservation.")}],softlayer:[{name:"BLOCKDEVICETEMPLATE",label:d.tr("Block Device Template"),tooltip:d.tr("A global identifier for the template to be used to provision the computing instance")},{name:"BLOCKDEVICE",label:d.tr("Block Device Size"),tooltip:d.tr("Size of the block device size to be presented to the VM")},{name:"DATACENTER",label:d.tr("Datacenter"),tooltip:d.tr("Specifies which datacenter the instance is to be provisioned in")},{name:"DEDICATEDHOST",label:d.tr("Dedicated Host"),tooltip:d.tr("Specifies whether or not the instance must only run on hosts with instances from the same account")},{name:"DOMAIN",label:d.tr("Domain"),tooltip:d.tr("Domain for the computing instance"),required:!0},{name:"HOSTNAME",label:d.tr("Hostname"),tooltip:d.tr("Hostname for the computing instance"),required:!0},{name:"HOURLYBILLING",label:d.tr("Hourly Billing"),tooltip:d.tr("Specifies the billing type for the instance . When true the computing instance will be billed on hourly usage, otherwise it will be billed on a monthly basis"),required:!0},{name:"INSTANCE_TYPE",label:d.tr("Instance Type"),tooltip:d.tr("Specifies the capacity of the VM in terms of CPU and memory. If both STARTCPUS and MAXMEMORY are used, then this parameter is disregarded"),required:!0},{name:"LOCALDISK",label:d.tr("Local Disk"),tooltip:d.tr("Name of the placement group. When true the disks for the computing instance will be provisioned on the host which it runs, otherwise SAN disks will be provisioned"),required:!0},{name:"MAXMEMORY",label:d.tr("Max Memory"),tooltip:d.tr("The amount of memory to allocate in megabytes")},{name:"NETWORKCOMPONENTSMAXSPEED",label:d.tr("Network Components Max Speed"),tooltip:d.tr("Specifies the connection speed for the instance's network components")},{name:"OPERATINGSYSTEM",label:d.tr("Operating System"),tooltip:d.tr("An identifier for the operating system to provision the computing instance with. A non exhaustive list of identifiers can be found here"),required:!0},{name:"POSTSCRIPT",label:d.tr("Postscript"),tooltip:d.tr("Specifies the uri location of the script to be downloaded and run after installation is complete")},{name:"PRIVATENETWORKONLY",label:d.tr("Private Netwrok Only"),tooltip:d.tr("Specifies whether or not the instance only has access to the private network  (ie, if it is going to have a public IP interface or not)")},{name:"PRIMARYNETWORKVLAN",label:d.tr("Primary Network VLAN"),tooltip:d.tr("Specifies the network vlan which is to be used for the frontend interface of the computing instance")},{name:"PRIMARYBACKENDNETWORKVLAN",label:d.tr("Primary Backed Network VLAN"),tooltip:d.tr("Specifies the network vlan which is to be used for the backend interface of the computing instance")},{name:"SSHKEYS",label:d.tr("SSH Keys"),tooltip:d.tr("SSH keys to install on the computing instance upon provisioning")},{name:"STARTCPUS",label:d.tr("Start CPUs"),tooltip:d.tr("The number of CPU cores to allocate to the VM")},{name:"USERDATA",label:d.tr("User Data"),tooltip:d.tr("Arbitrary data to be made available to the computing instance")}],azure:[{name:"AFFINITY_GROUP",label:d.tr("Affinity Group"),tooltip:d.tr("Affinity groups allow you to group your Azure services to optimize performance. All services and VMs within an affinity group will be located in the same region")},{name:"AVAILABILITY_SET",label:d.tr("Availability Set"),tooltip:d.tr("Name of the availability set to which this VM will belong")},{name:"CLOUD_SERVICE",label:d.tr("Cloud Service"),tooltip:d.tr("Specifies the name of the cloud service where this VM will be linked. Defaults to 'OpennebulaDefaultCloudServiceName'")},{name:"IMAGE",label:d.tr("Image"),tooltip:d.tr("Specifies the base OS of the VM."),required:!0},{name:"INSTANCE_TYPE",label:d.tr("Instance Type"),tooltip:d.tr("Specifies the capacity of the VM in terms of CPU and memory"),required:!0},{name:"LOCATION",label:d.tr("Location"),tooltip:d.tr("Azure datacenter where the VM will be sent. See /etc/one/az_driver.conf for possible values (under region_name)"),required:!0},{name:"SSHPORT",label:d.tr("SSH Port"),tooltip:d.tr("Port where the VMs ssh server will listen on")},{name:"STORAGE_ACCOUNT",label:d.tr("Storage Account"),tooltip:d.tr("Specify the storage account where this VM will belong")},{name:"SUBNET",label:d.tr("Subnet"),tooltip:d.tr("Name of the particular Subnet where this VM will be connected to")},{name:"TCP_ENDPOINTS",label:d.tr("TCP Endpoints"),tooltip:d.tr("Comma-separated list of TCP ports to be accesible from the public internet to this VM")},{name:"VIRTUAL_NETWORK_NAME",label:d.tr("Virtual Network Name"),tooltip:d.tr("Name of the virtual network to which this VM will be connected")},{name:"VM_USER",label:d.tr("VM User"),tooltip:d.tr("If the selected IMAGE is prepared for Azure provisioning, a username can be specified here to access the VM once booted"),required:!0},{name:"VM_PASSWORD",label:d.tr("VM Password"),tooltip:d.tr("Password for VM_USER"),required:!0},{name:"WIN_RM",label:d.tr("Win RM"),tooltip:d.tr("Comma-separated list of possible protocols to access this Windows VM")}]};return e.prototype.constructor=e,e.prototype.html=a,e.prototype.setup=s,e.prototype.onShow=n,e.prototype.retrieve=i,e.prototype.fill=r,e.prototype.addProviderTab=o,e.prototype.fillProviderTab=l,e}),define("hbs!tabs/templates-tab/form-panels/create/wizard-tabs/other/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='<div class="row">\n  <div class="large-12 columns">\n    <fieldset class="hypervisor only_xen only_kvm only_vmware">\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"RAW data",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-4 columns">\n          <label for="raw_type">'+o((e.tr||t&&t.tr||r).call(t,"TYPE",{name:"tr",hash:{},data:n}))+'</label>\n          <select id="raw_type" name="raw_type">\n            <option value=""></option>\n            <option value="kvm">'+o((e.tr||t&&t.tr||r).call(t,"kvm",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="xen">'+o((e.tr||t&&t.tr||r).call(t,"xen",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="vmware">'+o((e.tr||t&&t.tr||r).call(t,"vmware",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="large-8 columns">\n          <label class="" for="raw_data">\n            '+o((e.tr||t&&t.tr||r).call(t,"DATA",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Raw data to be passed directly to the hypervisor",{name:"tr",hash:{},data:n}))+'.</span>\n          </label>\n          <textarea rows="2" type="text" id="raw_data" name="raw_data" />\n        </div>\n      </div>\n      <div id="data_vmx_div" class="row hidden">\n        <div class="large-4 columns"></div>\n        <div class="large-8 columns">\n          <label class="" for="raw_data_vmx">\n            '+o((e.tr||t&&t.tr||r).call(t,"DATA_VMX",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Raw data to be added directly to the .vmx file.",{name:"tr",hash:{},data:n}))+'.</span>\n          </label>\n          <textarea rows="2" type="text" id="raw_data_vmx" name="raw_data_vmx" />\n        </div>\n      </div>\n    </fieldset>\n    <fieldset>\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"Custom Tags",{name:"tr",hash:{},data:n}))+"</legend>\n      ";return i=null!=(i=e.customTagsTableHTML||(null!=t?t.customTagsTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"customTagsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n    </fieldset>\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/templates-tab/form-panels/create/wizard-tabs/other/html",a),a}),define("tabs/templates-tab/form-panels/create/wizard-tabs/other/wizardTabId",["require"],function(){return"otherTab"}),define("tabs/templates-tab/form-panels/create/wizard-tabs/other",["require","sunstone-config","utils/locale","utils/tips","utils/wizard-fields","utils/template-utils","utils/custom-tags-table","hbs!./other/html","./other/wizardTabId"],function(e){function a(){if(!l.isTemplateCreationTabEnabled("other"))throw"Wizard Tab not enabled";this.wizardTabId=f,this.icon="fa-ellipsis-h",this.title=c.tr("Other")}function n(){return h({customTagsTableHTML:p.html()})}function s(){}function i(t){d.setup(t),p.setup(t),t.on("change","#raw_type",function(){var e=$(this).val();switch(e){case"vmware":$("#data_vmx_div",t).show();break;default:$("#data_vmx_div",t).hide()}})}function r(e){var a=p.retrieve(e),n={};return t=$("#raw_type",e).val(),t&&(n.TYPE=t),t=u.escapeDoubleQuotes($("#raw_data",e).val()),t&&(n.DATA=t),t=u.escapeDoubleQuotes($("#raw_data_vmx",e).val()),t&&(n.DATA_VMX=t),$.isEmptyObject(n)||(a.RAW=n),a}function o(t,e){var a=e.RAW;a&&($("#raw_type",t).val(a.TYPE),$("#raw_type",t).change(),$("#raw_data",t).val(u.htmlDecode(a.DATA)),$("#raw_data_vmx",t).val(u.htmlDecode(a.DATA_VMX)),delete e.RAW),p.fill(t,e)
+}var l=e("sunstone-config"),c=e("utils/locale"),d=e("utils/tips"),u=(e("utils/wizard-fields"),e("utils/template-utils")),p=e("utils/custom-tags-table"),h=e("hbs!./other/html"),f=e("./other/wizardTabId");return a.prototype.constructor=a,a.prototype.html=n,a.prototype.setup=i,a.prototype.onShow=s,a.prototype.retrieve=r,a.prototype.fill=o,a}),define("tabs/templates-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","utils/tips","utils/template-utils","hbs!./create/wizard","hbs!./create/advanced","./create/formPanelId","../tabId","./create/wizard-tabs/general","./create/wizard-tabs/storage","./create/wizard-tabs/network","./create/wizard-tabs/os","./create/wizard-tabs/io","./create/wizard-tabs/context","./create/wizard-tabs/scheduling","./create/wizard-tabs/hybrid","./create/wizard-tabs/other"],function(t){function e(){this.formPanelId=m,this.tabId=_,this.actions={create:{title:u.tr("Create VM Template"),buttonText:u.tr("Create"),resetButton:!0},update:{title:u.tr("Update VM Template"),buttonText:u.tr("Update"),resetButton:!1}};var t=this;t.wizardTabs=[];var e;$.each(b,function(a,n){try{e=new n,e.contentHTML=e.html(),t.wizardTabs.push(e)}catch(s){console.log(s)}}),c.call(this)}function a(){return h({formPanelId:this.formPanelId,wizardTabs:this.wizardTabs})}function n(){return f({formPanelId:this.formPanelId})}function s(t){$.each(this.wizardTabs,function(e,a){a.setup($("#"+a.wizardTabId,t))}),t.foundation("reflow","tab")}function i(t){var e=this;$('a[href="#'+e.wizardTabs[0].wizardTabId+'"]',t).trigger("click"),$.each(e.wizardTabs,function(a,n){n.onShow($("#"+n.wizardTabId,t),e)})}function r(t){var e={};return $.each(this.wizardTabs,function(a,n){$.extend(!0,e,n.retrieve($("#"+n.wizardTabId,t)))}),"create"==this.action?(d.runAction("Template.create",{vmtemplate:e}),!1):"update"==this.action?(d.runAction("Template.update",this.resourceId,JSON.stringify({vmtemplate:e})),!1):void 0}function o(t){var e=$("textarea#template",t).val();return"create"==this.action?(d.runAction("Template.create",{vmtemplate:{template_raw:e}}),!1):"update"==this.action?(d.runAction("Template.update",this.resourceId,JSON.stringify({vmtemplate:{template_raw:e}})),!1):void 0}function l(t,e){if("update"==this.action){this.resourceId=e.ID;var a=e.TEMPLATE;$("#template",t).val(p.templateToString(a).replace(/^[\r\n]+$/g,"")),$.each(this.wizardTabs,function(e,n){n.fill($("#"+n.wizardTabId,t),a)})}}t("foundation.tab");var c=t("utils/form-panels/form-panel"),d=t("sunstone"),u=t("utils/locale"),p=(t("utils/tips"),t("utils/template-utils")),h=t("hbs!./create/wizard"),f=t("hbs!./create/advanced"),m=t("./create/formPanelId"),_=t("../tabId"),b=[t("./create/wizard-tabs/general"),t("./create/wizard-tabs/storage"),t("./create/wizard-tabs/network"),t("./create/wizard-tabs/os"),t("./create/wizard-tabs/io"),t("./create/wizard-tabs/context"),t("./create/wizard-tabs/scheduling"),t("./create/wizard-tabs/hybrid"),t("./create/wizard-tabs/other")];return e.FORM_PANEL_ID=m,e.prototype=Object.create(c.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.htmlAdvanced=n,e.prototype.setup=s,e.prototype.onShow=i,e.prototype.submitWizard=r,e.prototype.submitAdvanced=o,e.prototype.fill=l,e}),define("tabs/templates-tab",["require","utils/locale","./templates-tab/buttons","./templates-tab/actions","./templates-tab/datatable","./templates-tab/tabId","./templates-tab/dialogs/clone","./templates-tab/dialogs/instantiate","./templates-tab/panels/info","./templates-tab/panels/template","./templates-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./templates-tab/buttons"),n=t("./templates-tab/actions"),s=t("./templates-tab/datatable"),i=t("./templates-tab/tabId"),r="dataTableTemplates",o=[t("./templates-tab/dialogs/clone"),t("./templates-tab/dialogs/instantiate")],l=[t("./templates-tab/panels/info"),t("./templates-tab/panels/template")],c=[t("./templates-tab/form-panels/create")],d={tabId:i,title:e.tr("Templates"),tabClass:"subTab",parentTab:"vresources-tab",listHeader:'<i class="fa fa-fw fa-file-o"></i>&emsp;'+e.tr("Templates"),infoHeader:'<i class="fa fa-fw fa-file-o"></i>&emsp;'+e.tr("Template"),subheader:"",resource:"Template",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/images-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Image.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Image.create_dialog":{type:"create_dialog",layout:"create"},"Image.chown":{type:"confirm_with_select",text:e.tr("Change owner"),layout:"user_select",select:"User",tip:e.tr("Select the new owner")+":"},"Image.chgrp":{type:"confirm_with_select",text:e.tr("Change group"),layout:"user_select",select:"Group",tip:e.tr("Select the new group")+":"},"Image.enable":{type:"action",layout:"more_select",text:e.tr("Enable")},"Image.disable":{type:"action",layout:"more_select",text:e.tr("Disable")},"Image.persistent":{type:"action",layout:"more_select",text:e.tr("Make persistent")},"Image.nonpersistent":{type:"action",layout:"more_select",text:e.tr("Make non persistent")},"Image.clone_dialog":{type:"action",layout:"main",text:e.tr("Clone")},"Image.delete":{type:"confirm",layout:"del",text:e.tr("Delete")}};return a}),define("tabs/images-tab/dialogs/clone/dialogId",["require"],function(){return"cloneImageDialog"}),define("tabs/images-tab/actions",["require","sunstone","utils/notifier","utils/locale","opennebula/image","./tabId","./form-panels/create/formPanelId","./dialogs/clone/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=t("opennebula/image"),i="Image",r="IMAGE",o=t("./tabId"),l=t("./form-panels/create/formPanelId"),c=t("./dialogs/clone/dialogId"),d={"Image.create":{type:"create",call:s.create,callback:function(t,s){e.resetFormPanel(o,l),e.hideFormPanel(o),e.getDataTable(o).addElement(t,s),a.notifyCustom(n.tr("Image created")," ID: "+s[r].ID,!1)},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)}},"Image.create_dialog":{type:"custom",call:function(){e.showFormPanel(o,l,"create")}},"Image.list":{type:"list",call:s.list,callback:function(t,a){e.getDataTable(o).updateView(t,a)},error:a.onError},"Image.show":{type:"single",call:s.show,callback:function(t,a){e.getDataTable(o).updateElement(t,a),e.rightInfoVisible($("#"+o))&&e.insertPanels(o,a)},error:a.onError},"Image.refresh":{type:"custom",call:function(){var t=$("#"+o);e.rightInfoVisible(t)?e.runAction(i+".show",e.rightInfoResourceId(t)):(e.getDataTable(o).waitingNodes(),e.runAction(i+".list",{force:!0}))}},"Image.update_template":{type:"single",call:s.update,callback:function(t){e.runAction(i+".show",t.request.data[0][0])},error:a.onError},"Image.enable":{type:"multiple",call:s.enable,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Image.disable":{type:"multiple",call:s.disable,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Image.persistent":{type:"multiple",call:s.persistent,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Image.nonpersistent":{type:"multiple",call:s.nonpersistent,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Image.delete":{type:"multiple",call:s.del,callback:function(t,a){e.getDataTable(o).deleteElement(t,a)},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Image.chown":{type:"multiple",call:s.chown,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Image.chgrp":{type:"multiple",call:s.chgrp,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Image.chmod":{type:"single",call:s.chmod,callback:function(t){e.runAction(i+".show",t.request.data[0])},error:a.onError,notify:!0},"Image.chtype":{type:"single",call:s.chtype,callback:function(t){e.runAction(i+".show",t.request.data[0][0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Image.clone_dialog":{type:"custom",call:function(){e.getDialog(c).show()}},"Image.clone":{type:"single",call:s.clone,error:a.onError,notify:!0},"Image.rename":{type:"single",call:s.rename,callback:function(t){e.runAction(i+".show",t.request.data[0][0])},error:a.onError,notify:!0}};return d}),define("hbs!tabs/images-tab/dialogs/clone/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large" role="dialog" data-reveal >\n  <div class="row">\n    <h3 class="subheader">'+l((e.tr||t&&t.tr||o).call(t,"Clone Image",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n  <form id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'Form" action="" class="custom creation">\n    <div class="row">\n      <div class="columns large-12">\n        <label class="clone_one">'+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+':</label>\n        <label class="clone_several">\n          '+l((e.tr||t&&t.tr||o).call(t,"Several images are selected, please choose a prefix to name the new copies",{name:"tr",hash:{},data:n}))+':\n        </label>\n        <input type="text" name="image_clone_name"/>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <dl class="accordion" id="image_clone_advanced_toggle" data-accordion>\n          <dd class="accordion-navigation">\n            <a href="#image_clone_advanced">'+l((e.tr||t&&t.tr||o).call(t,"Advanced options",{name:"tr",hash:{},data:n}))+'</a>\n          </dd>\n        </dl>\n        <div id="image_clone_advanced" class="row collapse content">\n          <br>\n          <div class="large-12 columns">\n            <span>'+l((e.tr||t&&t.tr||o).call(t,"You can select a different target datastore",{name:"tr",hash:{},data:n}))+"</span>\n            <br/>\n            <br/>\n          </div>\n          ";return i=null!=(i=e.datastoreTableSelectHTML||(null!=t?t.datastoreTableSelectHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"datastoreTableSelectHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n        </div>\n      </div>\n    </div>\n    <div class="form_buttons row">\n      <button class="button radius right" id="image_clone_button" value="Image.clone">'+l((e.tr||t&&t.tr||o).call(t,"Clone",{name:"tr",hash:{},data:n}))+'</button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/images-tab/dialogs/clone/html",a),a}),define("tabs/images-tab/dialogs/clone",["require","utils/dialogs/dialog","hbs!./clone/html","sunstone","tabs/datastores-tab/datatable","utils/notifier","opennebula/image","./clone/dialogId","tabs/images-tab/tabId"],function(t){function e(){this.dialogId=u,this.datastoreTable=new l("image_clone",{select:!0,selectOptions:{filter_fn:function(t){return 0==t.TYPE}}}),i.call(this)}function a(){return r({dialogId:this.dialogId,datastoreTableSelectHTML:this.datastoreTable.dataTableHTML})}function n(t){var e=this;return e.datastoreTable.initialize(),$("#image_clone_advanced_toggle",t).click(function(){return $("#image_clone_advanced",t).toggle(),!1}),$("#"+u+"Form",t).submit(function(){var t=$('input[name="image_clone_name"]',this).val(),a=o.getDataTable(p).elements();t&&a.length||c.notifyError("A name or prefix is needed!");var n={},s=e.datastoreTable.retrieveResourceTableSelect();if(s&&(n.target_ds=s),a.length>1)for(var i=0;i<a.length;i++)n.name=t+d.getName(a[i]),o.runAction("Image.clone",a[i],n);else n.name=t,o.runAction("Image.clone",a[0],n);return o.getDialog(u).hide(),o.getDialog(u).reset(),setTimeout(function(){o.runAction("Image.refresh")},1500),!1}),!1}function s(t){var e=o.getDataTable(p).elements();return e.length>1?($(".clone_one",t).hide(),$(".clone_several",t).show(),$('input[name="image_clone_name"]',t).val("Copy of ")):($(".clone_one",t).show(),$(".clone_several",t).hide(),$('input[name="image_clone_name"]',t).val("Copy of "+d.getName(e[0]))),$("#image_clone_advanced",t).hide(),this.datastoreTable.resetResourceTableSelect(),$("input[name='image_clone_name']",t).focus(),!1}var i=t("utils/dialogs/dialog"),r=t("hbs!./clone/html"),o=t("sunstone"),l=t("tabs/datastores-tab/datatable"),c=t("utils/notifier"),d=t("opennebula/image"),u=t("./clone/dialogId"),p=t("tabs/images-tab/tabId");return e.DIALOG_ID=u,e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e}),define("hbs!tabs/images-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(){return'              <a id="div_edit_persistency_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n        </tr>\n        ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Datastore",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.DATASTORE:s,t))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Register time",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.prettyRegTime||(null!=t?t.prettyRegTime:t))?i:r,typeof i===c?i.call(t,{name:"prettyRegTime",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Type",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td_type">'+o((i=null!=(i=e.typeStr||(null!=t?t.typeStr:t))?i:r,typeof i===c?i.call(t,{name:"typeStr",hash:{},data:n}):i))+'</td>\n          <td>\n            <div id="div_edit_chg_type">\n              <a id="div_edit_chg_type_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n            </div>\n          </td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Persistent",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td_persistency">'+o((i=null!=(i=e.persistentStr||(null!=t?t.persistentStr:t))?i:r,typeof i===c?i.call(t,{name:"persistentStr",hash:{},data:n}):i))+'</td>\n          <td>\n            <div id="div_edit_persistency">\n',s=e["if"].call(t,null!=t?t.persistentActionEnabled:t,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+='            </div>\n          </td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Filesystem type",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.fsTypeStr||(null!=t?t.fsTypeStr:t))?i:r,typeof i===c?i.call(t,{name:"fsTypeStr",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Size",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.sizeStr||(null!=t?t.sizeStr:t))?i:r,typeof i===c?i.call(t,{name:"sizeStr",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"State",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.stateStr||(null!=t?t.stateStr:t))?i:r,typeof i===c?i.call(t,{name:"stateStr",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Running VMS",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.RUNNING_VMS:s,t))+'</td>\n          <td></td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">',i=null!=(i=e.permissionsTableHTML||(null!=t?t.permissionsTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"permissionsTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='</div>\n</div>\n<div class="row">\n  <div class="large-9 columns">',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"</div>\n</div>"},useData:!0});return e.registerPartial("tabs/images-tab/panels/info/html",a),a}),define("tabs/images-tab/panels/info/panelId",["require"],function(){return"image_info_tab"}),define("tabs/images-tab/panels/info",["require","utils/locale","utils/humanize","utils/panel/rename-tr","utils/panel/template-table","utils/panel/permissions-table","opennebula/image","sunstone-config","sunstone","hbs!./info/html","../tabId","./info/panelId"],function(t){function e(t){return this.title=s.tr("Info"),this.icon="fa-info-circle",this.element=t[m.toUpperCase()],this}function a(){var t=r.html(m,this.element.NAME),e=o.html(this.element.TEMPLATE,m,s.tr("Attributes")),a=l.html(h,m,this.element),n=s.tr(c.stateStr(this.element.STATE)),u=i.prettyTime(this.element.REGTIME),f=void 0!=this.element.FS_TYPE?this.element.FS_TYPE:"-",_=i.sizeFromMB(this.element.SIZE),b=s.tr(parseInt(this.element.PERSISTENT)?"yes":"no"),v=s.tr(c.typeStr(this.element.TYPE));return p({element:this.element,renameTrHTML:t,templateTableHTML:e,permissionsTableHTML:a,stateStr:n,prettyRegTime:u,fsTypeStr:f,persistentActionEnabled:d.isTabActionEnabled("images-tab","Image.persistent"),persistentStr:b,typeStr:v,sizeStr:_})}function n(t){r.setup(m,this.element.ID,t),o.setup(this.element.TEMPLATE,m,this.element.ID,t),l.setup(h,m,this.element,t);var e=this;return t.off("click","#div_edit_chg_type_link"),t.on("click","#div_edit_chg_type_link",function(){$(".value_td_type",t).html('<select id="chg_type_select">                      <option value="OS">OS</option>                      <option value="CDROM">CDROM</option>                      <option value="DATABLOCK">DATABLOCK</option>                  </select>'),$("#chg_type_select",t).val(c.typeStr(e.element.TYPE))}),t.off("change","#chg_type_select"),t.on("change","#chg_type_select",function(){var t=$(this).val();u.runAction("Image.chtype",e.element.ID,t)}),t.off("click","#div_edit_persistency"),t.on("click","#div_edit_persistency",function(){$(".value_td_persistency",t).html('<select id="persistency_select">                      <option value="yes">'+s.tr("yes")+'</option>                      <option value="no">'+s.tr("no")+"</option>                  </select>"),$("#persistency_select",t).val(parseInt(e.element.PERSISTENT)?"yes":"no")}),t.off("change","#persistency_select"),t.on("change","#persistency_select",function(){var t=$(this).val();"yes"==t?u.runAction("Image.persistent",[e.element.ID]):u.runAction("Image.nonpersistent",[e.element.ID])}),!1}var s=t("utils/locale"),i=t("utils/humanize"),r=t("utils/panel/rename-tr"),o=t("utils/panel/template-table"),l=t("utils/panel/permissions-table"),c=t("opennebula/image"),d=t("sunstone-config"),u=t("sunstone"),p=t("hbs!./info/html"),h=t("../tabId"),f=t("./info/panelId"),m="Image";return e.PANEL_ID=f,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/images-tab/panels/vms/panelId",["require"],function(){return"image_vms_tab"}),define("tabs/images-tab/panels/vms",["require","utils/locale","tabs/vms-tab/datatable","./vms/panelId"],function(t){function e(t){return this.title=s.tr("VMs"),this.icon="fa-cloud",this.element=t[l],this}function a(){var t=[];void 0!=this.element.VMS.ID&&(t=this.element.VMS.ID,$.isArray(t)||(t=[t]));var e={info:!0,select:!0,selectOptions:{read_only:!0,fixed_ids:t}};return this.vmsTable=new i(o,e),this.vmsTable.dataTableHTML}function n(){return this.vmsTable.initialize(),this.vmsTable.refreshResourceTableSelect(),!1}var s=t("utils/locale"),i=t("tabs/vms-tab/datatable"),r=t("./vms/panelId"),o=r+"VMsTable",l="IMAGE";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),function(){"use strict";var t=function(e){function a(t,e){var a=this;a.opts={},a.getOpt=t.getOpt,a._prevProgress=0,a.resumableObj=t,a.file=e,a.fileName=e.fileName||e.name,a.size=e.size,a.relativePath=e.webkitRelativePath||e.relativePath||a.fileName,a.uniqueIdentifier=i.generateUniqueIdentifier(e),a._pause=!1,a.container="";var s=!1,r=function(t,e){switch(t){case"progress":a.resumableObj.fire("fileProgress",a);break;case"error":a.abort(),s=!0,a.chunks=[],a.resumableObj.fire("fileError",a,e);break;case"success":if(s)return;a.resumableObj.fire("fileProgress",a),a.isComplete()&&a.resumableObj.fire("fileSuccess",a,e);break;case"retry":a.resumableObj.fire("fileRetry",a)}};return a.chunks=[],a.abort=function(){var t=0;i.each(a.chunks,function(e){"uploading"==e.status()&&(e.abort(),t++)}),t>0&&a.resumableObj.fire("fileProgress",a)},a.cancel=function(){var t=a.chunks;a.chunks=[],i.each(t,function(t){"uploading"==t.status()&&(t.abort(),a.resumableObj.uploadNextChunk())}),a.resumableObj.removeFile(a),a.resumableObj.fire("fileProgress",a)},a.retry=function(){a.bootstrap();var t=!1;a.resumableObj.on("chunkingComplete",function(){t||a.resumableObj.upload(),t=!0})},a.bootstrap=function(){a.abort(),s=!1,a.chunks=[],a._prevProgress=0;for(var t=a.getOpt("forceChunkSize")?Math.ceil:Math.floor,e=Math.max(t(a.file.size/a.getOpt("chunkSize")),1),i=0;e>i;i++)!function(t){window.setTimeout(function(){a.chunks.push(new n(a.resumableObj,a,t,r)),a.resumableObj.fire("chunkingProgress",a,t/e)},0)}(i);window.setTimeout(function(){a.resumableObj.fire("chunkingComplete",a)},0)},a.progress=function(){if(s)return 1;var t=0,e=!1;return i.each(a.chunks,function(a){"error"==a.status()&&(e=!0),t+=a.progress(!0)}),t=e?1:t>.99999?1:t,t=Math.max(a._prevProgress,t),a._prevProgress=t,t},a.isUploading=function(){var t=!1;return i.each(a.chunks,function(e){return"uploading"==e.status()?(t=!0,!1):void 0}),t},a.isComplete=function(){var t=!1;return i.each(a.chunks,function(e){var a=e.status();return"pending"==a||"uploading"==a||1===e.preprocessState?(t=!0,!1):void 0}),!t},a.pause=function(t){a._pause="undefined"==typeof t?a._pause?!1:!0:t},a.isPaused=function(){return a._pause},a.resumableObj.fire("chunkingStart",a),a.bootstrap(),this}function n(t,e,a,n){var s=this;s.opts={},s.getOpt=t.getOpt,s.resumableObj=t,s.fileObj=e,s.fileObjSize=e.size,s.fileObjType=e.file.type,s.offset=a,s.callback=n,s.lastProgressCallback=new Date,s.tested=!1,s.retries=0,s.pendingRetry=!1,s.preprocessState=0;var r=s.getOpt("chunkSize");return s.loaded=0,s.startByte=s.offset*r,s.endByte=Math.min(s.fileObjSize,(s.offset+1)*r),s.fileObjSize-s.endByte<r&&!s.getOpt("forceChunkSize")&&(s.endByte=s.fileObjSize),s.xhr=null,s.test=function(){s.xhr=new XMLHttpRequest;var t=function(){s.tested=!0;var t=s.status();"success"==t?(s.callback(t,s.message()),s.resumableObj.uploadNextChunk()):s.send()};s.xhr.addEventListener("load",t,!1),s.xhr.addEventListener("error",t,!1),s.xhr.addEventListener("timeout",t,!1);var e=[],a=s.getOpt("query");"function"==typeof a&&(a=a(s.fileObj,s)),i.each(a,function(t,a){e.push([encodeURIComponent(t),encodeURIComponent(a)].join("="))}),e.push(["resumableChunkNumber",encodeURIComponent(s.offset+1)].join("=")),e.push(["resumableChunkSize",encodeURIComponent(s.getOpt("chunkSize"))].join("=")),e.push(["resumableCurrentChunkSize",encodeURIComponent(s.endByte-s.startByte)].join("=")),e.push(["resumableTotalSize",encodeURIComponent(s.fileObjSize)].join("=")),e.push(["resumableType",encodeURIComponent(s.fileObjType)].join("=")),e.push(["resumableIdentifier",encodeURIComponent(s.fileObj.uniqueIdentifier)].join("=")),e.push(["resumableFilename",encodeURIComponent(s.fileObj.fileName)].join("=")),e.push(["resumableRelativePath",encodeURIComponent(s.fileObj.relativePath)].join("=")),e.push(["resumableTotalChunks",encodeURIComponent(s.fileObj.chunks.length)].join("=")),s.xhr.open("GET",i.getTarget(e)),s.xhr.timeout=s.getOpt("xhrTimeout"),s.xhr.withCredentials=s.getOpt("withCredentials"),i.each(s.getOpt("headers"),function(t,e){s.xhr.setRequestHeader(t,e)}),s.xhr.send(null)},s.preprocessFinished=function(){s.preprocessState=2,s.send()},s.send=function(){var t=s.getOpt("preprocess");if("function"==typeof t)switch(s.preprocessState){case 0:return t(s),void(s.preprocessState=1);case 1:return;case 2:}if(s.getOpt("testChunks")&&!s.tested)return void s.test();s.xhr=new XMLHttpRequest,s.xhr.upload.addEventListener("progress",function(t){new Date-s.lastProgressCallback>1e3*s.getOpt("throttleProgressCallbacks")&&(s.callback("progress"),s.lastProgressCallback=new Date),s.loaded=t.loaded||0},!1),s.loaded=0,s.pendingRetry=!1,s.callback("progress");var e=function(){var t=s.status();if("success"==t||"error"==t)s.callback(t,s.message()),s.resumableObj.uploadNextChunk();else{s.callback("retry",s.message()),s.abort(),s.retries++;var e=s.getOpt("chunkRetryInterval");void 0!==e?(s.pendingRetry=!0,setTimeout(s.send,e)):s.send()}};s.xhr.addEventListener("load",e,!1),s.xhr.addEventListener("error",e,!1),s.xhr.addEventListener("timeout",e,!1);var a={resumableChunkNumber:s.offset+1,resumableChunkSize:s.getOpt("chunkSize"),resumableCurrentChunkSize:s.endByte-s.startByte,resumableTotalSize:s.fileObjSize,resumableType:s.fileObjType,resumableIdentifier:s.fileObj.uniqueIdentifier,resumableFilename:s.fileObj.fileName,resumableRelativePath:s.fileObj.relativePath,resumableTotalChunks:s.fileObj.chunks.length},n=s.getOpt("query");"function"==typeof n&&(n=n(s.fileObj,s)),i.each(n,function(t,e){a[t]=e});var r=s.fileObj.file.slice?"slice":s.fileObj.file.mozSlice?"mozSlice":s.fileObj.file.webkitSlice?"webkitSlice":"slice",o=s.fileObj.file[r](s.startByte,s.endByte),l=null,c=s.getOpt("target");if("octet"===s.getOpt("method")){l=o;var d=[];i.each(a,function(t,e){d.push([encodeURIComponent(t),encodeURIComponent(e)].join("="))}),c=i.getTarget(d)}else l=new FormData,i.each(a,function(t,e){l.append(t,e)}),l.append(s.getOpt("fileParameterName"),o);s.xhr.open("POST",c),s.xhr.timeout=s.getOpt("xhrTimeout"),s.xhr.withCredentials=s.getOpt("withCredentials"),i.each(s.getOpt("headers"),function(t,e){s.xhr.setRequestHeader(t,e)}),s.xhr.send(l)},s.abort=function(){s.xhr&&s.xhr.abort(),s.xhr=null},s.status=function(){return s.pendingRetry?"uploading":s.xhr?s.xhr.readyState<4?"uploading":200==s.xhr.status?"success":i.contains(s.getOpt("permanentErrors"),s.xhr.status)||s.retries>=s.getOpt("maxChunkRetries")?"error":(s.abort(),"pending"):"pending"},s.message=function(){return s.xhr?s.xhr.responseText:""},s.progress=function(t){"undefined"==typeof t&&(t=!1);var e=t?(s.endByte-s.startByte)/s.fileObjSize:1;if(s.pendingRetry)return 0;var a=s.status();switch(a){case"success":case"error":return 1*e;case"pending":return 0*e;default:return s.loaded/(s.endByte-s.startByte)*e}},this}if(!(this instanceof t))return new t(e);if(this.version=1,this.support=!("undefined"==typeof File||"undefined"==typeof Blob||"undefined"==typeof FileList||!Blob.prototype.webkitSlice&&!Blob.prototype.mozSlice&&!Blob.prototype.slice),!this.support)return!1;var s=this;s.files=[],s.defaults={chunkSize:1048576,forceChunkSize:!1,simultaneousUploads:3,fileParameterName:"file",throttleProgressCallbacks:.5,query:{},headers:{},preprocess:null,method:"multipart",prioritizeFirstAndLastChunk:!1,target:"/",testChunks:!0,generateUniqueIdentifier:null,maxChunkRetries:void 0,chunkRetryInterval:void 0,permanentErrors:[400,404,415,500,501],maxFiles:void 0,withCredentials:!1,xhrTimeout:0,maxFilesErrorCallback:function(){var t=s.getOpt("maxFiles");alert("Please upload "+t+" file"+(1===t?"":"s")+" at a time.")},minFileSize:1,minFileSizeErrorCallback:function(t){alert(t.fileName||t.name+" is too small, please upload files larger than "+i.formatSize(s.getOpt("minFileSize"))+".")},maxFileSize:void 0,maxFileSizeErrorCallback:function(t){alert(t.fileName||t.name+" is too large, please upload files less than "+i.formatSize(s.getOpt("maxFileSize"))+".")},fileType:[],fileTypeErrorCallback:function(t){alert(t.fileName||t.name+" has type not allowed, please upload files of type "+s.getOpt("fileType")+".")}},s.opts=e||{},s.getOpt=function(e){var s=this;if(e instanceof Array){var r={};return i.each(e,function(t){r[t]=s.getOpt(t)}),r}if(s instanceof n){if("undefined"!=typeof s.opts[e])return s.opts[e];s=s.fileObj}if(s instanceof a){if("undefined"!=typeof s.opts[e])return s.opts[e];s=s.resumableObj}return s instanceof t?"undefined"!=typeof s.opts[e]?s.opts[e]:s.defaults[e]:void 0},s.events=[],s.on=function(t,e){s.events.push(t.toLowerCase(),e)},s.fire=function(){for(var t=[],e=0;e<arguments.length;e++)t.push(arguments[e]);for(var a=t[0].toLowerCase(),e=0;e<=s.events.length;e+=2)s.events[e]==a&&s.events[e+1].apply(s,t.slice(1)),"catchall"==s.events[e]&&s.events[e+1].apply(null,t);"fileerror"==a&&s.fire("error",t[2],t[1]),"fileprogress"==a&&s.fire("progress")};var i={stopEvent:function(t){t.stopPropagation(),t.preventDefault()},each:function(t,e){if("undefined"!=typeof t.length){for(var a=0;a<t.length;a++)if(e(t[a])===!1)return}else for(a in t)if(e(a,t[a])===!1)return},generateUniqueIdentifier:function(t){var e=s.getOpt("generateUniqueIdentifier");if("function"==typeof e)return e(t);var a=t.webkitRelativePath||t.fileName||t.name,n=t.size;return n+"-"+a.replace(/[^0-9a-zA-Z_-]/gim,"")},contains:function(t,e){var a=!1;return i.each(t,function(t){return t==e?(a=!0,!1):!0}),a},formatSize:function(t){return 1024>t?t+" bytes":1048576>t?(t/1024).toFixed(0)+" KB":1073741824>t?(t/1024/1024).toFixed(1)+" MB":(t/1024/1024/1024).toFixed(1)+" GB"},getTarget:function(t){var e=s.getOpt("target");return e+=e.indexOf("?")<0?"?":"&",e+t.join("&")}},r=function(t){i.stopEvent(t),t.dataTransfer&&t.dataTransfer.items?l(t.dataTransfer.items,t):t.dataTransfer&&t.dataTransfer.files&&l(t.dataTransfer.files,t)},o=function(t){t.preventDefault()},l=function(t,e,a,n){a||(a={total:0,files:[],event:e}),c(t.length,a);for(var s=0;s<t.length;s++){var i,r,o=t[s];if(o.isFile||o.isDirectory)i=o;else if(o.getAsEntry)i=o.getAsEntry();else{if(!o.webkitGetAsEntry){if("function"==typeof o.getAsFile){d(o.getAsFile(),a,n);continue}if(File&&o instanceof File){d(o,a,n);continue}c(-1,a);continue}i=o.webkitGetAsEntry()}if(i){if(i.isFile)i.file(function(t){d(t,a,n)},function(t){console.warn(t)});else if(i.isDirectory){r=i.createReader();var u=function(t){return function(n){l(n,e,a,t),c(-1,a)}};r.readEntries(u(i.fullPath),function(t){console.warn(t)})}}else c(-1,a)}},c=function(t,e){e.total+=t,e.files.length===e.total&&u(e.files,e.event)},d=function(t,e,a){a&&(t.relativePath=a+"/"+t.name),e.files.push(t),e.files.length===e.total&&u(e.files,e.event)},u=function(t,e){var n=0,r=s.getOpt(["maxFiles","minFileSize","maxFileSize","maxFilesErrorCallback","minFileSizeErrorCallback","maxFileSizeErrorCallback","fileType","fileTypeErrorCallback"]);if("undefined"!=typeof r.maxFiles&&r.maxFiles<t.length+s.files.length){if(1!==r.maxFiles||1!==s.files.length||1!==t.length)return r.maxFilesErrorCallback(t,n++),!1;
+s.removeFile(s.files[0])}var o=[];i.each(t,function(t){var l=t.name.split("."),c=l[l.length-1].toLowerCase();return r.fileType.length>0&&!i.contains(r.fileType,c)?(r.fileTypeErrorCallback(t,n++),!1):"undefined"!=typeof r.minFileSize&&t.size<r.minFileSize?(r.minFileSizeErrorCallback(t,n++),!1):"undefined"!=typeof r.maxFileSize&&t.size>r.maxFileSize?(r.maxFileSizeErrorCallback(t,n++),!1):void(s.getFromUniqueIdentifier(i.generateUniqueIdentifier(t))||!function(){var n=new a(s,t);window.setTimeout(function(){s.files.push(n),o.push(n),n.container="undefined"!=typeof e?e.srcElement:null,s.fire("fileAdded",n,e)},0)}())}),window.setTimeout(function(){s.fire("filesAdded",o)},0)};return s.uploadNextChunk=function(){var t=!1;if(s.getOpt("prioritizeFirstAndLastChunk")&&(i.each(s.files,function(e){return e.chunks.length&&"pending"==e.chunks[0].status()&&0===e.chunks[0].preprocessState?(e.chunks[0].send(),t=!0,!1):e.chunks.length>1&&"pending"==e.chunks[e.chunks.length-1].status()&&0===e.chunks[e.chunks.length-1].preprocessState?(e.chunks[e.chunks.length-1].send(),t=!0,!1):void 0}),t))return!0;if(i.each(s.files,function(e){return e.isPaused()===!1&&i.each(e.chunks,function(e){return"pending"==e.status()&&0===e.preprocessState?(e.send(),t=!0,!1):void 0}),t?!1:void 0}),t)return!0;var e=!1;return i.each(s.files,function(t){return t.isComplete()?void 0:(e=!0,!1)}),e||s.fire("complete"),!1},s.assignBrowse=function(t,e){"undefined"==typeof t.length&&(t=[t]),i.each(t,function(t){var a;"INPUT"===t.tagName&&"file"===t.type?a=t:(a=document.createElement("input"),a.setAttribute("type","file"),a.style.display="none",t.addEventListener("click",function(){a.style.opacity=0,a.style.display="block",a.focus(),a.click(),a.style.display="none"},!1),t.appendChild(a));var n=s.getOpt("maxFiles");"undefined"==typeof n||1!=n?a.setAttribute("multiple","multiple"):a.removeAttribute("multiple"),e?a.setAttribute("webkitdirectory","webkitdirectory"):a.removeAttribute("webkitdirectory"),a.addEventListener("change",function(t){u(t.target.files,t),t.target.value=""},!1)})},s.assignDrop=function(t){"undefined"==typeof t.length&&(t=[t]),i.each(t,function(t){t.addEventListener("dragover",o,!1),t.addEventListener("drop",r,!1)})},s.unAssignDrop=function(t){"undefined"==typeof t.length&&(t=[t]),i.each(t,function(t){t.removeEventListener("dragover",o),t.removeEventListener("drop",r)})},s.isUploading=function(){var t=!1;return i.each(s.files,function(e){return e.isUploading()?(t=!0,!1):void 0}),t},s.upload=function(){if(!s.isUploading()){s.fire("uploadStart");for(var t=1;t<=s.getOpt("simultaneousUploads");t++)s.uploadNextChunk()}},s.pause=function(){i.each(s.files,function(t){t.abort()}),s.fire("pause")},s.cancel=function(){for(var t=s.files.length-1;t>=0;t--)s.files[t].cancel();s.fire("cancel")},s.progress=function(){var t=0,e=0;return i.each(s.files,function(a){t+=a.progress()*a.size,e+=a.size}),e>0?t/e:0},s.addFile=function(t,e){u([t],e)},s.removeFile=function(t){for(var e=s.files.length-1;e>=0;e--)s.files[e]===t&&s.files.splice(e,1)},s.getFromUniqueIdentifier=function(t){var e=!1;return i.each(s.files,function(a){a.uniqueIdentifier==t&&(e=a)}),e},s.getSize=function(){var t=0;return i.each(s.files,function(e){t+=e.size}),t},this};"undefined"!=typeof module?module.exports=t:"function"==typeof define&&define.amd?define("resumable",[],function(){return t}):window.Resumable=t}(),define("utils/browser-info",["require"],function(){function t(){var t=-1;if("Microsoft Internet Explorer"==navigator.appName){var e=navigator.userAgent,a=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=a.exec(e)&&(t=parseFloat(RegExp.$1))}return t}return{getInternetExplorerVersion:t}}),define("hbs!tabs/images-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/isTabActionEnabled","templates/helpers/advancedSection"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'    <div class="row">\n      <div class="large-4 columns">\n        <input type="checkbox" id="img_persistent" name="img_persistent" value="YES" />\n        <label for="img_persistent">\n          '+i((e.tr||t&&t.tr||s).call(t,"Persistent",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Persistence of the image",{name:"tr",hash:{},data:n}))+"</span>\n        </label>\n      </div>\n    </div>\n"},3:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='    <div class="row">\n      <div class="medium-6 columns">\n        <div class="row">\n          <div class="large-12 columns">\n            <label for="img_dev_prefix">\n              '+o((e.tr||t&&t.tr||r).call(t,"Device prefix",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">\n                '+o((e.tr||t&&t.tr||r).call(t,"Prefix for the emulated device this image will be mounted at. For instance, “hd”, “sd”. If omitted, the default value is the one defined in oned.conf (installation default is “hd”).",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n            <input type="text" name="img_dev_prefix" id="img_dev_prefix" />\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-12 columns">\n            <label for="img_driver">\n              '+o((e.tr||t&&t.tr||r).call(t,"Driver",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">\n                '+o((e.tr||t&&t.tr||r).call(t,"Specific image mapping driver. KVM: raw, qcow2. XEN: tap:aio, file:",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n            <input type="text" name="img_driver" id="img_driver" />\n          </div>\n        </div>\n      </div>\n      <div class="medium-6 columns">\n        <div class="row">\n          <div class="large-12 columns">\n            <label for="img_target">\n              '+o((e.tr||t&&t.tr||r).call(t,"Target",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">\n                '+o((e.tr||t&&t.tr||r).call(t,"Target on which the image will be mounted at. For example: hda, sdb...",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n            <input type="text" name="img_target" id="img_target" />\n          </div>\n        </div>\n      </div>\n    </div>\n    <br>\n    <div class="row">\n      <div class="large-12 columns">\n        <span>'+o((e.tr||t&&t.tr||r).call(t,"Custom attributes",{name:"tr",hash:{},data:n}))+"</span>\n        <br>\n        <br>\n      </div>\n    </div>\n    ";return i=null!=(i=e.customTagsHTML||(null!=t?t.customTagsHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"customTagsHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<form data-abide="ajax" id="'+l((i=null!=(i=e.formPanelId||(null!=t?t.formPanelId:t))?i:o,typeof i===r?i.call(t,{name:"formPanelId",hash:{},data:n}):i))+'Wizard" class="custom creation">\n  <div class="row">\n    <div class="medium-4 columns">\n      <label for="img_name">\n        '+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+l((e.tr||t&&t.tr||o).call(t,"Name that the Image will get. Every image must have a unique name.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input required type="text" name="img_name" id="img_name" />\n    </div>\n    <div class="medium-8 columns">\n      <label for="img_desc">\n        '+l((e.tr||t&&t.tr||o).call(t,"Description",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+l((e.tr||t&&t.tr||o).call(t,"Human readable description of the image for other users.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <textarea name="img_desc" id="img_desc" rows="4"></textarea>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-4 columns">\n      <label for="img_type">\n        '+l((e.tr||t&&t.tr||o).call(t,"Type",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+l((e.tr||t&&t.tr||o).call(t,"Type of the image.",{name:"tr",hash:{},data:n}))+"\n          <br/>\n          <br/>\n          "+l((e.tr||t&&t.tr||o).call(t,"OS images contain a working operative system.",{name:"tr",hash:{},data:n}))+"\n          <br/>\n          <br/>\n          "+l((e.tr||t&&t.tr||o).call(t,"CDROM images are readonly data.",{name:"tr",hash:{},data:n}))+"\n          <br/>\n          <br/>\n          "+l((e.tr||t&&t.tr||o).call(t,"DATABLOCK images are a storage for data. They can be created from previous existing data, or as an empty drive.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <select name="img_type" id="img_type">\n        <option value="OS">'+l((e.tr||t&&t.tr||o).call(t,"OS",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="CDROM">'+l((e.tr||t&&t.tr||o).call(t,"CDROM",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="DATABLOCK">'+l((e.tr||t&&t.tr||o).call(t,"DATABLOCK",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n    <div class="large-8 columns">\n      <label for="img_datastore">\n        '+l((e.tr||t&&t.tr||o).call(t,"Datastore",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Select the datastore for this image",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <div id="img_datastore" name="img_datastore"></div>\n    </div>\n  </div>\n';return s=(e.isTabActionEnabled||t&&t.isTabActionEnabled||o).call(t,"images-tab","Image.persistent",{name:"isTabActionEnabled",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+="  <br>\n  <fieldset>\n    <legend>"+l((e.tr||t&&t.tr||o).call(t,"Image location",{name:"tr",hash:{},data:n}))+':</legend>\n    <div class="row" id="src_path_select">\n      <div class="large-12 columns text-center">\n        <input type="radio" name="src_path" id="path_image" value="path">\n        <label for="path_image">'+l((e.tr||t&&t.tr||o).call(t,"Provide a path",{name:"tr",hash:{},data:n}))+'</label>\n        <input type="radio" name="src_path" id="upload_image" value="upload">\n        <label for="upload_image">'+l((e.tr||t&&t.tr||o).call(t,"Upload",{name:"tr",hash:{},data:n}))+'</label>\n        <input type="radio" name="src_path" id="datablock_img" value="datablock" disabled>\n        <label for="datablock_img">'+l((e.tr||t&&t.tr||o).call(t,"Empty datablock",{name:"tr",hash:{},data:n}))+'</label>\n      </div>\n    </div>\n    <br>\n    <div class="row">\n      <div class="large-12 columns">\n        <label for="img_path">\n          '+l((e.tr||t&&t.tr||o).call(t,"Path",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+l((e.tr||t&&t.tr||o).call(t,"Path to the original file that will be copied to the image repository. If not specified for a DATABLOCK type image, an empty image will be created.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" name="img_path" id="img_path" />\n      </div>\n    </div>\n    <div class="row">\n      <div id="file-uploader" class="large-12 columns text-center">\n        <label id="file-uploader-label" for="file-uploader-input"></label>\n        <input id="file-uploader-input" type="file"/>\n      </div>\n    </div>\n    <div class="img_size row">\n      <div class="large-6 columns">\n        <label for="img_size">\n          '+l((e.tr||t&&t.tr||o).call(t,"Size",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Size of the datablock in MB.",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" name="img_size" id="img_size" />\n      </div>\n      <div class="large-6 columns">\n        <label for="img_fstype">\n          '+l((e.tr||t&&t.tr||o).call(t,"FS type",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+l((e.tr||t&&t.tr||o).call(t,"Type of file system to be built.",{name:"tr",hash:{},data:n}))+"\n            <br>\n            <br>\n            "+l((e.tr||t&&t.tr||o).call(t,"Plain. When the disk image is used directly by the hypervisor we can format the image, and so it is ready to be used by the guest OS. Values: ext2, ext3, ext4, ntfs, reiserfs, jfs, swap. Any other fs supported by mkfs will work if no special option is needed.",{name:"tr",hash:{},data:n}))+"\n            <br>\n            <br>\n            "+l((e.tr||t&&t.tr||o).call(t,"Formatted. The disk image is stored in a hypervisor specific format VMDK or Qcow2. Then we cannot really make a filesystem on the image, just create the device and let the guest OS format the disk. Use raw to not to format the new image. Values: raw, qcow2, vmdk_*.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" name="img_fstype" id="img_fstype" />\n      </div>\n    </div>\n  </fieldset>\n',s=(e.advancedSection||t&&t.advancedSection||o).call(t,(e.tr||t&&t.tr||o).call(t,"Advanced Options",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+"</form>"},useData:!0});return e.registerPartial("tabs/images-tab/form-panels/create/wizard",a),a}),define("hbs!tabs/images-tab/form-panels/create/advanced",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Advanced" class="custom creation">\n  <div class="row">\n    <div class="columns large-12">\n      <label for="img_datastores_raw">'+o((e.tr||t&&t.tr||r).call(t,"Datastore",{name:"tr",hash:{},data:n}))+':</label>\n      <div id="img_datastore_raw" name="img_datastore_raw"></div>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <p>'+o((e.tr||t&&t.tr||r).call(t,"Write the Image template here",{name:"tr",hash:{},data:n}))+'</p>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <textarea id="template" rows="15" required></textarea>\n    </div>\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/images-tab/form-panels/create/advanced",a),a}),define("tabs/images-tab/form-panels/create",["require","utils/form-panels/form-panel","resumable","sunstone","opennebula/error","utils/notifier","utils/locale","utils/tips","utils/resource-select","utils/custom-tags-table","utils/browser-info","hbs!./create/wizard","hbs!./create/advanced","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=y,this.tabId=w,this.actions={create:{title:h.tr("Create Image"),buttonText:h.tr("Create"),resetButton:!0}},l.call(this)}function a(){return v({formPanelId:this.formPanelId,customTagsHTML:_.html()})}function n(){return g({formPanelId:this.formPanelId})}function s(t){$("#img_name",t).focus();var e=$("#img_datastore .resource_list_select",t).val(),a=$("#img_datastore_raw .resource_list_select",t).val(),n=["TYPE","TYPE"],s=["1","2"];return m.insert("div#img_datastore",t,"Datastore",e,!1,null,n,s),m.insert("div#img_datastore_raw",t,"Datastore",a,!1,null,n,s),!1}function i(t){var e=this;if(f.setup(t),$("select#img_type",t).change(function(){var e=$(this).val();switch(e){case"DATABLOCK":$("#datablock_img",t).removeAttr("disabled");break;default:$("#datablock_img",t).attr("disabled","disabled"),$("#path_image",t).click()}}),$("#img_path,#img_fstype,#img_size,#file-uploader",t).closest(".row").hide(),$("input[name='src_path']",t).change(function(){var e=$(this).val();switch(e){case"path":$("#img_fstype,#img_size,#file-uploader",t).closest(".row").hide(),$("#img_path",t).closest(".row").show(),$("#img_path",t).attr("required",""),$("#img_size",t).removeAttr("required");break;case"datablock":$("#img_path,#file-uploader",t).closest(".row").hide(),$("#img_fstype,#img_size",t).closest(".row").show(),$("#img_path",t).removeAttr("required"),$("#img_size",t).attr("required","");break;case"upload":$("#img_path,#img_fstype,#img_size",t).closest(".row").hide(),$("#file-uploader",t).closest(".row").show(),$("#img_path",t).removeAttr("required"),$("#img_size",t).removeAttr("required")}}),$("#path_image",t).click(),_.setup(t),b.getInternetExplorerVersion()>-1)$("#upload_image").attr("disabled","disabled");else{e.uploader=new c({target:"upload_chunk",chunkSize:10485760,maxFiles:1,testChunks:!1,query:{csrftoken:""}}),e.uploader.assignBrowse($("#file-uploader-input",t));var a="",n=!1;e.uploader.on("fileAdded",function(e){a=e.fileName,n=a,$("#file-uploader-input",t).hide(),$("#file-uploader-label",t).html(e.fileName)}),e.uploader.on("uploadStart",function(){$("#upload_progress_bars").append('<div id="'+a+'progressBar" class="row" style="margin-bottom:10px">            <div id="'+a+'-info" class="large-2 columns dataTables_info">              '+h.tr("Uploading...")+'            </div>            <div class="large-10 columns">              <div id="upload_progress_container" class="progress nine radius" style="height:25px !important">                <span class="meter" style="width:0%"></span>              </div>              <div class="progress-text" style="margin-left:15px">'+a+"</div>            </div>          </div>")}),e.uploader.on("progress",function(){$("span.meter",$('div[id="'+a+'progressBar"]')).css("width",100*e.uploader.progress()+"%")})}return!1}function r(t){var e=this,a=!1,n=$("#img_datastore .resource_list_select",t).val();if(!n)return d.hideFormPanelLoading(w),p.notifyError(h.tr("Please select a datastore for this image")),!1;var s={},i=$("#img_name",t).val();s.NAME=i;var r=$("#img_desc",t).val();r.length&&(s.DESCRIPTION=r);var o=$("#img_type",t).val();s.TYPE=o,s.PERSISTENT=$("#img_persistent:checked",t).length?"YES":"NO";var l=$("#img_dev_prefix",t).val();l.length&&(s.DEV_PREFIX=l);var c=$("#img_driver",t).val();c.length&&(s.DRIVER=c);var f=$("#img_target",t).val();switch(f&&(s.TARGET=f),$("#src_path_select input:checked",t).val()){case"path":path=$("#img_path",t).val(),path&&(s.PATH=path);break;case"datablock":size=$("#img_size",t).val(),fstype=$("#img_fstype",t).val(),size&&(s.SIZE=size),fstype&&(s.FSTYPE=fstype);break;case"upload":a=!0}$.extend(s,_.retrieve(t));var m={image:s,ds_id:n};if(a){if(0==e.uploader.files.length)return d.hideFormPanelLoading(w),p.notifyError(h.tr("Please select a file to upload")),!1;d.resetFormPanel(e.tabId,e.formPanelId),d.hideFormPanel(e.tabId),e.uploader.on("fileSuccess",function(t){$('div[id="'+t.fileName+'-info"]').text(h.tr("Registering in OpenNebula")),$.ajax({url:"upload",type:"POST",data:{csrftoken:csrftoken,img:JSON.stringify(m),file:t.fileName,tempfile:t.uniqueIdentifier},success:function(){p.notifyMessage("Image uploaded correctly"),$('div[id="'+t.fileName+'progressBar"]').remove(),d.runAction("Image.refresh")},error:function(e){p.onError({},u(e)),$('div[id="'+t.fileName+'progressBar"]').remove()}})}),e.uploader.upload()}else d.runAction("Image.create",m);return!1}function o(t){var e=$("#template",t).val(),a=$("#img_datastore_raw .resource_list_select",t).val();if(!a)return p.notifyError(h.tr("Please select a datastore for this image")),!1;var n={image:{image_raw:e},ds_id:a};return d.runAction("Image.create",n),!1}var l=t("utils/form-panels/form-panel"),c=t("resumable"),d=t("sunstone"),u=t("opennebula/error"),p=t("utils/notifier"),h=t("utils/locale"),f=t("utils/tips"),m=t("utils/resource-select"),_=t("utils/custom-tags-table"),b=t("utils/browser-info"),v=t("hbs!./create/wizard"),g=t("hbs!./create/advanced"),y=t("./create/formPanelId"),w=t("../tabId");return e.FORM_PANEL_ID=y,e.prototype=Object.create(l.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.htmlAdvanced=n,e.prototype.submitWizard=r,e.prototype.submitAdvanced=o,e.prototype.onShow=s,e.prototype.setup=i,e}),define("tabs/images-tab",["require","utils/locale","./images-tab/buttons","./images-tab/actions","./images-tab/datatable","./images-tab/tabId","./images-tab/dialogs/clone","./images-tab/panels/info","./images-tab/panels/vms","./images-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./images-tab/buttons"),n=t("./images-tab/actions"),s=t("./images-tab/datatable"),i=t("./images-tab/tabId"),r="dataTableImages",o=[t("./images-tab/dialogs/clone")],l=[t("./images-tab/panels/info"),t("./images-tab/panels/vms")],c=[t("./images-tab/form-panels/create")],d={tabId:i,title:e.tr("Images"),tabClass:"subTab",parentTab:"vresources-tab",listHeader:'<i class="fa fa-fw fa-upload"></i>&emsp;'+e.tr("Images"),infoHeader:'<i class="fa fa-fw fa-upload"></i>&emsp;'+e.tr("Image"),subheader:"",resource:"Image",content:'<div id="upload_progress_bars" class="large-12 columns"></div>',buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/files-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"File.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"File.create_dialog":{type:"create_dialog",layout:"create"},"File.chown":{type:"confirm_with_select",text:e.tr("Change owner"),layout:"user_select",select:"User",tip:e.tr("Select the new owner")+":"},"File.chgrp":{type:"confirm_with_select",text:e.tr("Change group"),layout:"user_select",select:"Group",tip:e.tr("Select the new group")+":"},"File.enable":{type:"action",layout:"more_select",text:e.tr("Enable")},"File.disable":{type:"action",layout:"more_select",text:e.tr("Disable")},"File.delete":{type:"confirm",layout:"del",text:e.tr("Delete")}};return a}),define("tabs/files-tab/form-panels/create/formPanelId",["require"],function(){return"createFileForm"}),define("tabs/files-tab/actions",["require","sunstone","utils/notifier","utils/locale","opennebula/image","./tabId","./form-panels/create/formPanelId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=t("opennebula/image"),i="File",r="IMAGE",o=t("./tabId"),l=t("./form-panels/create/formPanelId"),c={"File.create":{type:"create",call:s.create,callback:function(t,s){e.resetFormPanel(o,l),e.hideFormPanel(o),e.getDataTable(o).addElement(t,s),a.notifyCustom(n.tr("File created")," ID: "+s[r].ID,!1)},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)}},"File.create_dialog":{type:"custom",call:function(){e.showFormPanel(o,l,"create")}},"File.list":{type:"list",call:s.list,callback:function(t,a){e.getDataTable(o).updateView(t,a)},error:a.onError},"File.show":{type:"single",call:s.show,callback:function(t,a){e.getDataTable(o).updateElement(t,a),e.rightInfoVisible($("#"+o))&&e.insertPanels(o,a)},error:a.onError},"File.refresh":{type:"custom",call:function(){var t=$("#"+o);e.rightInfoVisible(t)?e.runAction(i+".show",e.rightInfoResourceId(t)):(e.getDataTable(o).waitingNodes(),e.runAction(i+".list",{force:!0}))}},"File.update_template":{type:"single",call:s.update,callback:function(t){e.runAction(i+".show",t.request.data[0][0])},error:a.onError},"File.enable":{type:"multiple",call:s.enable,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"File.disable":{type:"multiple",call:s.disable,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"File.delete":{type:"multiple",call:s.del,callback:function(t,a){e.getDataTable(o).deleteElement(t,a)},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"File.chown":{type:"multiple",call:s.chown,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"File.chgrp":{type:"multiple",call:s.chgrp,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"File.chmod":{type:"single",call:s.chmod,callback:function(t){e.runAction(i+".show",t.request.data[0])},error:a.onError,notify:!0},"File.chtype":{type:"single",call:s.chtype,callback:function(t){e.runAction(i+".show",t.request.data[0][0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"File.rename":{type:"single",call:s.rename,callback:function(t){e.runAction(i+".show",t.request.data[0][0])},error:a.onError,notify:!0}};return c}),define("hbs!tabs/files-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n        </tr>\n        ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Datastore",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.DATASTORE:s,t))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Register time",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.prettyRegTime||(null!=t?t.prettyRegTime:t))?i:r,typeof i===c?i.call(t,{name:"prettyRegTime",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Type",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td_type">'+o((i=null!=(i=e.typeStr||(null!=t?t.typeStr:t))?i:r,typeof i===c?i.call(t,{name:"typeStr",hash:{},data:n}):i))+'</td>\n          <td>\n            <div id="div_edit_chg_type">\n              <a id="div_edit_chg_type_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n            </div>\n          </td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Filesystem type",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.fsTypeStr||(null!=t?t.fsTypeStr:t))?i:r,typeof i===c?i.call(t,{name:"fsTypeStr",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Size",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.sizeStr||(null!=t?t.sizeStr:t))?i:r,typeof i===c?i.call(t,{name:"sizeStr",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"State",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.stateStr||(null!=t?t.stateStr:t))?i:r,typeof i===c?i.call(t,{name:"stateStr",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Running VMS",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.RUNNING_VMS:s,t))+'</td>\n          <td></td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">',i=null!=(i=e.permissionsTableHTML||(null!=t?t.permissionsTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"permissionsTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='</div>\n</div>\n<div class="row">\n  <div class="large-9 columns">',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"</div>\n</div>"},useData:!0});return e.registerPartial("tabs/files-tab/panels/info/html",a),a}),define("tabs/files-tab/panels/info/panelId",["require"],function(){return"file_info_tab"}),define("tabs/files-tab/panels/info",["require","utils/locale","utils/humanize","utils/panel/rename-tr","utils/panel/template-table","utils/panel/permissions-table","opennebula/image","sunstone-config","sunstone","hbs!./info/html","../tabId","./info/panelId"],function(t){function e(t){return this.title=s.tr("Info"),this.icon="fa-info-circle",this.element=t[m],this}function a(){var t=r.html(f,this.element.NAME),e=o.html(this.element.TEMPLATE,f,s.tr("Attributes")),a=l.html(p,f,this.element),n=s.tr(c.stateStr(this.element.STATE)),d=i.prettyTime(this.element.REGTIME),h=void 0!=this.element.FS_TYPE?this.element.FS_TYPE:"-",m=i.sizeFromMB(this.element.SIZE),_=s.tr(c.typeStr(this.element.TYPE));return u({element:this.element,renameTrHTML:t,templateTableHTML:e,permissionsTableHTML:a,stateStr:n,prettyRegTime:d,fsTypeStr:h,typeStr:_,sizeStr:m})}function n(t){r.setup(f,this.element.ID,t),o.setup(this.element.TEMPLATE,f,this.element.ID,t),l.setup(p,f,this.element,t);var e=this;return t.off("click","#div_edit_chg_type_link"),t.on("click","#div_edit_chg_type_link",function(){$(".value_td_type",t).html('<select id="chg_type_select">                      <option value="KERNEL">KERNEL</option>                      <option value="RAMDISK">RAMDISK</option>                      <option value="CONTEXT">CONTEXT</option>                  </select>'),$("#chg_type_select",t).val(c.typeStr(e.element.TYPE))}),t.off("change","#chg_type_select"),t.on("change","#chg_type_select",function(){var t=$(this).val();d.runAction("File.chtype",e.element.ID,t)}),!1}var s=t("utils/locale"),i=t("utils/humanize"),r=t("utils/panel/rename-tr"),o=t("utils/panel/template-table"),l=t("utils/panel/permissions-table"),c=t("opennebula/image"),d=(t("sunstone-config"),t("sunstone")),u=t("hbs!./info/html"),p=t("../tabId"),h=t("./info/panelId"),f="File",m="IMAGE";return e.PANEL_ID=h,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/files-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Wizard" class="custom creation">\n  <div class="row">\n    <div class="medium-4 columns">\n      <label for="file_name">\n        '+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+o((e.tr||t&&t.tr||r).call(t,"Name that the File will get. Every file must have a unique name.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <input required type="text" name="file_name" id="file_name" />\n    </div>\n    <div class="medium-8 columns">\n      <label for="file_desc">\n        '+o((e.tr||t&&t.tr||r).call(t,"Description",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+o((e.tr||t&&t.tr||r).call(t,"Human readable description of the file for other users.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <textarea name="file_desc" id="file_desc" rows="4"></textarea>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-4 columns">\n      <label for="file_type">\n        '+o((e.tr||t&&t.tr||r).call(t,"Type",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">\n          '+o((e.tr||t&&t.tr||r).call(t,"Type of the file.",{name:"tr",hash:{},data:n}))+"\n          <br/>\n          <br/>\n          "+o((e.tr||t&&t.tr||r).call(t," KERNEL & RAMDISK files can be used in the OS Booting section of the Template wizard.",{name:"tr",hash:{},data:n}))+"\n          <br/>\n          <br/>\n          "+o((e.tr||t&&t.tr||r).call(t," CONTEXT files can be included in the context CD-ROM, from the Context/Files section of the Template wizard.",{name:"tr",hash:{},data:n}))+'\n        </span>\n      </label>\n      <select name="file_type" id="file_type">\n        <option value="CONTEXT">'+o((e.tr||t&&t.tr||r).call(t,"Context",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="KERNEL">'+o((e.tr||t&&t.tr||r).call(t,"Kernel",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="RAMDISK">'+o((e.tr||t&&t.tr||r).call(t,"Ramdisk",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n    <div class="large-8 columns">\n      <label for="file_datastore">\n        '+o((e.tr||t&&t.tr||r).call(t,"Datastore",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Select the datastore for this file",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <div id="file_datastore" name="file_datastore"></div>\n    </div>\n  </div>\n  <br>\n  <fieldset>\n    <legend>'+o((e.tr||t&&t.tr||r).call(t,"Image location",{name:"tr",hash:{},data:n}))+':</legend>\n    <div class="row" id="src_path_select">\n      <div class="large-12 columns text-center">\n        <input type="radio" name="src_path" id="path_file" value="path">\n          <label for="path_file">'+o((e.tr||t&&t.tr||r).call(t,"Provide a path",{name:"tr",hash:{},data:n}))+'</label>\n        </input>\n        <input type="radio" name="src_path" id="upload_file" value="upload">\n          <label for="upload_file">'+o((e.tr||t&&t.tr||r).call(t,"Upload",{name:"tr",hash:{},data:n}))+'</label>\n        </input>\n      </div>\n    </div>\n    <br>\n    <div class="row">\n      <div class="large-12 columns">\n        <label for="file_path">\n          '+o((e.tr||t&&t.tr||r).call(t,"Path",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">\n            '+o((e.tr||t&&t.tr||r).call(t,"Path to the original file that will be copied to the file repository.",{name:"tr",hash:{},data:n}))+'\n          </span>\n        </label>\n        <input type="text" name="file_path" id="file_path" />\n      </div>\n    </div>\n    <div class="row">\n      <div id="files_file-uploader" class="large-12 columns text-center">\n        <label id="files_file-uploader-label" for="files_file-uploader-input"></label>\n        <input id="files_file-uploader-input" type="file"/>\n      </div>\n    </div>\n  </fieldset>\n</form>'
+},useData:!0});return e.registerPartial("tabs/files-tab/form-panels/create/wizard",a),a}),define("hbs!tabs/files-tab/form-panels/create/advanced",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Advanced" class="custom creation">\n  <div class="row">\n    <div class="columns large-12">\n      <label for="file_datastores_raw">'+o((e.tr||t&&t.tr||r).call(t,"Datastore",{name:"tr",hash:{},data:n}))+':</label>\n      <div id="file_datastore_raw" name="file_datastore_raw"></div>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <p>'+o((e.tr||t&&t.tr||r).call(t,"Write the Image template here",{name:"tr",hash:{},data:n}))+'</p>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <textarea id="template" rows="15" required></textarea>\n    </div>\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/files-tab/form-panels/create/advanced",a),a}),define("tabs/files-tab/form-panels/create",["require","utils/form-panels/form-panel","resumable","sunstone","opennebula/error","utils/notifier","utils/locale","utils/tips","utils/resource-select","utils/browser-info","hbs!./create/wizard","hbs!./create/advanced","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=g,this.tabId=y,this.actions={create:{title:h.tr("Create File"),buttonText:h.tr("Create"),resetButton:!0}},l.call(this)}function a(){return b({formPanelId:this.formPanelId})}function n(){return v({formPanelId:this.formPanelId})}function s(t){$("#file_name",t).focus();var e=$("#file_datastore .resource_list_select",t).val(),a=$("#file_datastore_raw .resource_list_select",t).val(),n=["TYPE","TYPE"],s=["0","1"];return m.insert("div#file_datastore",t,"Datastore",e,!1,null,n,s),m.insert("div#file_datastore_raw",t,"Datastore",a,!1,null,n,s),!1}function i(t){var e=this;if(f.setup(t),$("#file_path,#files_file-uploader",t).closest(".row").hide(),$("input[name='src_path']",t).change(function(){var e=$(this).val();switch(e){case"path":$("#files_file-uploader",t).closest(".row").hide(),$("#file_path",t).closest(".row").show(),$("#file_path",t).attr("required","");break;case"upload":$("#file_path",t).closest(".row").hide(),$("#files_file-uploader",t).closest(".row").show(),$("#file_path",t).removeAttr("required")}}),$("#path_file",t).click(),_.getInternetExplorerVersion()>-1)$("#upload_file").attr("disabled","disabled");else{e.uploader=new c({target:"upload_chunk",chunkSize:10485760,maxFiles:1,testChunks:!1,query:{csrftoken:""}}),e.uploader.assignBrowse($("#files_file-uploader-input",t));var a="",n=!1;e.uploader.on("fileAdded",function(e){a=e.fileName,n=a,$("#files_file-uploader-input",t).hide(),$("#files_file-uploader-label",t).html(e.fileName)}),e.uploader.on("uploadStart",function(){$("#files_upload_progress_bars").append('<div id="files-'+a+'progressBar" class="row" style="margin-bottom:10px">            <div id="files-'+a+'-info" class="large-2 columns dataTables_info">              '+h.tr("Uploading...")+'            </div>            <div class="large-10 columns">              <div id="upload_progress_container" class="progress nine radius" style="height:25px !important">                <span class="meter" style="width:0%"></span>              </div>              <div class="progress-text" style="margin-left:15px">'+a+"</div>            </div>          </div>")}),e.uploader.on("progress",function(){$("span.meter",$('div[id="files-'+a+'progressBar"]')).css("width",100*e.uploader.progress()+"%")})}return!1}function r(t){var e=this,a=!1,n=$("#file_datastore .resource_list_select",t).val();if(!n)return d.hideFormPanelLoading(y),p.notifyError(h.tr("Please select a datastore for this file")),!1;var s={},i=$("#file_name",t).val();s.NAME=i;var r=$("#file_desc",t).val();r.length&&(s.DESCRIPTION=r);var o=$("#file_type",t).val();switch(s.TYPE=o,$("#src_path_select input:checked",t).val()){case"path":path=$("#file_path",t).val(),path&&(s.PATH=path);break;case"upload":a=!0}var l={image:s,ds_id:n};if(a){if(0==e.uploader.files.length)return d.hideFormPanelLoading(y),p.notifyError(h.tr("Please select a file to upload")),!1;d.resetFormPanel(e.tabId,e.formPanelId),d.hideFormPanel(e.tabId),e.uploader.on("fileSuccess",function(t){$('div[id="files-'+t.fileName+'-info"]').text(h.tr("Registering in OpenNebula")),$.ajax({url:"upload",type:"POST",data:{csrftoken:csrftoken,img:JSON.stringify(l),file:t.fileName,tempfile:t.uniqueIdentifier},success:function(){p.notifyMessage("Image uploaded correctly"),$('div[id="files-'+t.fileName+'progressBar"]').remove(),d.runAction("File.refresh")},error:function(e){p.onError({},u(e)),$('div[id="files-'+t.fileName+'progressBar"]').remove()}})}),e.uploader.upload()}else d.runAction("File.create",l);return!1}function o(t){var e=$("#template",t).val(),a=$("#file_datastore_raw .resource_list_select",t).val();if(!a)return p.notifyError(h.tr("Please select a datastore for this file")),!1;var n={image:{image_raw:e},ds_id:a};return d.runAction("File.create",n),!1}var l=t("utils/form-panels/form-panel"),c=t("resumable"),d=t("sunstone"),u=t("opennebula/error"),p=t("utils/notifier"),h=t("utils/locale"),f=t("utils/tips"),m=t("utils/resource-select"),_=t("utils/browser-info"),b=t("hbs!./create/wizard"),v=t("hbs!./create/advanced"),g=t("./create/formPanelId"),y=t("../tabId");return e.FORM_PANEL_ID=g,e.prototype=Object.create(l.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.htmlAdvanced=n,e.prototype.submitWizard=r,e.prototype.submitAdvanced=o,e.prototype.onShow=s,e.prototype.setup=i,e}),define("tabs/files-tab",["require","utils/locale","./files-tab/buttons","./files-tab/actions","./files-tab/datatable","./files-tab/tabId","./files-tab/panels/info","./files-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./files-tab/buttons"),n=t("./files-tab/actions"),s=t("./files-tab/datatable"),i=t("./files-tab/tabId"),r="dataTableFiles",o=[],l=[t("./files-tab/panels/info")],c=[t("./files-tab/form-panels/create")],d={tabId:i,title:e.tr("Files & Kernels"),tabClass:"subTab",parentTab:"vresources-tab",listHeader:'<i class="fa fa-fw fa-folder-open"></i>&emsp;'+e.tr("Files & Kernels"),infoHeader:'<i class="fa fa-fw fa-folder-open"></i>&emsp;'+e.tr("File"),subheader:"",resource:"File",content:'<div class="large-12 columns">                <div id="files_upload_progress_bars"></div>              </div>',buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/infra-tab",["require","utils/locale"],function(t){var e=t("utils/locale"),a="infra-tab",n={tabId:a,title:'<i class="fa fa-lg fa-fw fa-sitemap"></i>&emsp;'+e.tr("Infrastructure"),no_content:!0};return n}),define("tabs/clusters-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Cluster.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Cluster.create_dialog":{type:"create_dialog",layout:"create"},"Cluster.update_dialog":{type:"action",layout:"main",text:e.tr("Update")},"Cluster.delete":{type:"confirm",layout:"del",text:e.tr("Delete")}};return a}),define("tabs/clusters-tab/form-panels/create/formPanelId",["require"],function(){return"createClusterForm"}),define("tabs/clusters-tab/actions",["require","sunstone","utils/notifier","utils/locale","./datatable","opennebula/cluster","opennebula/action","./tabId","./form-panels/create/formPanelId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=(t("./datatable"),t("opennebula/cluster")),i=t("opennebula/action"),r="Cluster",o="CLUSTER",l=t("./tabId"),c=t("./form-panels/create/formPanelId"),d={"Cluster.create":{type:"create",call:s.create,callback:function(t,s){e.resetFormPanel(l,c),e.hideFormPanel(l),e.getDataTable(l).addElement(t,s);for(var i in t.request.data[0].cluster.hosts)t.request.data[0].cluster.hosts[i]&&e.runAction("Cluster.addhost",s[o].ID,i);for(var r in t.request.data[0].cluster.vnets)t.request.data[0].cluster.vnets[r]&&e.runAction("Cluster.addvnet",s[o].ID,r);for(var d in t.request.data[0].cluster.datastores)t.request.data[0].cluster.datastores[d]&&e.runAction("Cluster.adddatastore",s[o].ID,d);a.notifyCustom(n.tr("Cluster created")," ID: "+s[o].ID,!1)},error:a.onError},"Cluster.create_dialog":{type:"custom",call:function(){e.showFormPanel(l,c,"create")}},"Cluster.list":{type:"list",call:s.list,callback:function(t,a){e.getDataTable(l).updateView(t,a)},error:a.onError},"Cluster.show":{type:"single",call:s.show,callback:function(t,a){e.getDataTable(l).updateElement(t,a),e.rightInfoVisible($("#"+l))&&e.insertPanels(l,a)},error:a.onError},"Cluster.show_to_update":{type:"single",call:s.show,callback:function(t,a){e.showFormPanel(l,c,"update",function(t,e){t.fill(e,a[o])})},error:a.onError},"Cluster.refresh":{type:"custom",call:function(){var t=$("#"+l);e.rightInfoVisible(t)?e.runAction(r+".show",e.rightInfoResourceId(t)):(e.getDataTable(l).waitingNodes(),e.runAction(r+".list",{force:!0}))},error:a.onError},"Cluster.addhost":{type:"single",call:s.addhost,callback:function(t){i.clear_cache("HOST"),e.runAction("Cluster.show",t.request.data[0][0])},error:a.onError},"Cluster.delhost":{type:"single",call:s.delhost,callback:function(t){i.clear_cache("HOST"),e.runAction("Cluster.show",t.request.data[0][0])},error:a.onError},"Cluster.adddatastore":{type:"single",call:s.adddatastore,callback:function(t){i.clear_cache("DATASTORE"),e.runAction("Cluster.show",t.request.data[0][0])},error:a.onError},"Cluster.deldatastore":{type:"single",call:s.deldatastore,callback:function(t){i.clear_cache("DATASTORE"),e.runAction("Cluster.show",t.request.data[0][0])},error:a.onError},"Cluster.addvnet":{type:"single",call:s.addvnet,callback:function(t){i.clear_cache("VNET"),e.runAction("Cluster.show",t.request.data[0][0])},error:a.onError},"Cluster.delvnet":{type:"single",call:s.delvnet,callback:function(t){i.clear_cache("VNET"),e.runAction("Cluster.show",t.request.data[0][0])},error:a.onError},"Cluster.delete":{type:"multiple",call:s.del,callback:function(t,a){e.getDataTable(l).deleteElement(t,a)},elements:function(){return e.getDataTable(l).elements()},error:a.onError},"Cluster.update_template":{type:"single",call:s.update,callback:function(t){e.runAction(r+".show",t.request.data[0][0])},error:a.onError},"Cluster.update_dialog":{type:"single",call:function(){var t=e.getDataTable(l).elements();if(1!=t.length)return a.notifyMessage("Please select one (and just one) cluster to update."),!1;var n=""+t[0];e.runAction(r+".show_to_update",n)}},"Cluster.rename":{type:"single",call:s.rename,callback:function(t){e.runAction(r+".show",t.request.data[0][0])},error:a.onError}};return d}),define("hbs!tabs/clusters-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n       <tr>\n        <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n        <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n        <td></td>\n      </tr>\n      ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n    </tbody>\n  </table>\n</div>\n</div>\n<div class="row">\n  <div class="large-9 columns">\n    ',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/clusters-tab/panels/info/html",a),a}),define("tabs/clusters-tab/panels/info/panelId",["require"],function(){return"cluster_info_tab"}),define("tabs/clusters-tab/panels/info",["require","hbs!./info/html","utils/locale","utils/panel/rename-tr","utils/panel/template-table","../tabId","./info/panelId"],function(t){function e(t){return this.title=i.tr("Info"),this.icon="fa-info-circle",this.element=t[d],this}function a(){var t=r.html(c,this.element.NAME),e=o.html(this.element.TEMPLATE,c,i.tr("Attributes"));return s({element:this.element,renameTrHTML:t,templateTableHTML:e})}function n(t){r.setup(c,this.element.ID,t),o.setup(this.element.TEMPLATE,c,this.element.ID,t)}var s=t("hbs!./info/html"),i=t("utils/locale"),r=t("utils/panel/rename-tr"),o=t("utils/panel/template-table"),l=(t("../tabId"),t("./info/panelId")),c="Cluster",d="CLUSTER";return e.PANEL_ID=l,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/clusters-tab/panels/hosts/panelId",["require"],function(){return"cluster_host_tab"}),define("tabs/clusters-tab/panels/hosts",["require","utils/locale","tabs/hosts-tab/datatable","./hosts/panelId"],function(t){function e(t){return this.title=s.tr("Hosts"),this.icon="fa-hdd-o",this.element=t[l],this}function a(){var t=[];void 0!=this.element.HOSTS.ID&&(t=this.element.HOSTS.ID,$.isArray(t)||(t=[t]));var e={info:!0,select:!0,selectOptions:{read_only:!0,fixed_ids:t}};return this.HostsTable=new i(o,e),this.HostsTable.dataTableHTML}function n(){return this.HostsTable.initialize(),this.HostsTable.refreshResourceTableSelect(),!1}var s=t("utils/locale"),i=t("tabs/hosts-tab/datatable"),r=t("./hosts/panelId"),o=r+"HostsTable",l="CLUSTER";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/clusters-tab/panels/vnets/panelId",["require"],function(){return"cluster_vnet_tab"}),define("tabs/clusters-tab/panels/vnets",["require","utils/locale","tabs/vnets-tab/datatable","./vnets/panelId"],function(t){function e(t){return this.title=s.tr("VNets"),this.icon="fa-globe",this.element=t[l],this}function a(){var t=[];void 0!=this.element.VNETS.ID&&(t=this.element.VNETS.ID,$.isArray(t)||(t=[t]));var e={info:!0,select:!0,selectOptions:{read_only:!0,fixed_ids:t}};return this.VNetsTable=new i(o,e),this.VNetsTable.dataTableHTML}function n(){return this.VNetsTable.initialize(),this.VNetsTable.refreshResourceTableSelect(),!1}var s=t("utils/locale"),i=t("tabs/vnets-tab/datatable"),r=t("./vnets/panelId"),o=r+"VNetsTable",l="CLUSTER";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/clusters-tab/panels/datastores/panelId",["require"],function(){return"cluster_datastore_tab"}),define("tabs/clusters-tab/panels/datastores",["require","utils/locale","tabs/datastores-tab/datatable","./datastores/panelId"],function(t){function e(t){return this.title=s.tr("Datastores"),this.icon="fa-folder-open",this.element=t[l],this}function a(){var t=[];void 0!=this.element.DATASTORES.ID&&(t=this.element.DATASTORES.ID,$.isArray(t)||(t=[t]));var e={info:!0,select:!0,selectOptions:{read_only:!0,fixed_ids:t}};return this.DatastoresTable=new i(o,e),this.DatastoresTable.dataTableHTML}function n(){return this.DatastoresTable.initialize(),this.DatastoresTable.refreshResourceTableSelect(),!1}var s=t("utils/locale"),i=t("tabs/datastores-tab/datatable"),r=t("./datastores/panelId"),o=r+"DatastoresTable",l="CLUSTER";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/clusters-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<form data-abide="ajax" id="'+l((i=null!=(i=e.formPanelId||(null!=t?t.formPanelId:t))?i:o,typeof i===r?i.call(t,{name:"formPanelId",hash:{},data:n}):i))+'Wizard" class="custom creation">\n  <div class="row">\n    <div class="medium-6 columns">\n      <label for="name">'+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+'</label>\n      <input type="text" required name="name" id="name" />\n    </div>\n    <div class="medium-6 columns">\n      <dl class="tabs right-info-tabs text-center right" data-tab>\n        <dd class="active">\n          <a href="#tab-hostsTab">\n            <i class="fa fa-hdd-o"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"Hosts",{name:"tr",hash:{},data:n}))+'\n          </a>\n        </dd>\n        <dd>\n          <a href="#tab-vnetsTab">\n            <i class="fa fa-globe"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"VNets",{name:"tr",hash:{},data:n}))+'\n          </a>\n        </dd>\n        <dd>\n          <a href="#tab-datastoresTab">\n            <i class="fa fa-folder-open"></i><br>'+l((e.tr||t&&t.tr||o).call(t,"Datastores",{name:"tr",hash:{},data:n}))+'\n          </a>\n        </dd>\n      </dl>\n    </div>\n  </div>\n  <div class="tabs-content">\n    <div id="tab-hostsTab" class="active content">\n      ';return i=null!=(i=e.hostsTableHTML||(null!=t?t.hostsTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"hostsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n    </div>\n    <div id="tab-vnetsTab" class="content">\n      ',i=null!=(i=e.vnetsTableHTML||(null!=t?t.vnetsTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"vnetsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n    </div>\n    <div id="tab-datastoresTab" class="content">\n      ',i=null!=(i=e.datastoresTableHTML||(null!=t?t.datastoresTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"datastoresTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n    </div>\n  </div>\n</form>"},useData:!0});return e.registerPartial("tabs/clusters-tab/form-panels/create/wizard",a),a}),define("tabs/clusters-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","tabs/hosts-tab/datatable","tabs/vnets-tab/datatable","tabs/datastores-tab/datatable","hbs!./create/wizard","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=f,this.tabId=m,this.actions={create:{title:c.tr("Create Cluster"),buttonText:c.tr("Create"),resetButton:!0},update:{title:c.tr("Update Cluster"),buttonText:c.tr("Update"),resetButton:!1}},o.call(this)}function a(){var t={info:!1,select:!0,selectOptions:{multiple_choice:!0}};return this.hostsTable=new d("cluster_wizard_hosts",t),this.vnetsTable=new u("cluster_wizard_vnets",t),this.datastoresTable=new p("cluster_wizard_datastores",t),h({formPanelId:this.formPanelId,hostsTableHTML:this.hostsTable.dataTableHTML,vnetsTableHTML:this.vnetsTable.dataTableHTML,datastoresTableHTML:this.datastoresTable.dataTableHTML})}function n(){this.hostsTable.initialize(),this.vnetsTable.initialize(),this.datastoresTable.initialize()}function s(t){var e=this,a=e.hostsTable.retrieveResourceTableSelect(),n=e.vnetsTable.retrieveResourceTableSelect(),s=e.datastoresTable.retrieveResourceTableSelect();if("create"==e.action){var i={};$.each(a,function(t,e){i[e]=1});var r={};$.each(n,function(t,e){r[e]=1});var o={};$.each(s,function(t,e){o[e]=1});var c={cluster:{name:$("#name",t).val(),hosts:i,vnets:r,datastores:o}};return l.runAction("Cluster.create",c),!1}return"update"==e.action?($.each(a,function(t,a){-1==e.originalHostsList.indexOf(a)&&l.runAction("Cluster.addhost",e.clusterUpdateId,a)}),$.each(e.originalHostsList,function(t,n){-1==a.indexOf(n)&&l.runAction("Cluster.delhost",e.clusterUpdateId,n)}),$.each(n,function(t,a){-1==e.originalVNetsList.indexOf(a)&&l.runAction("Cluster.addvnet",e.clusterUpdateId,a)}),$.each(e.originalVNetsList,function(t,a){-1==n.indexOf(a)&&l.runAction("Cluster.delvnet",e.clusterUpdateId,a)}),$.each(s,function(t,a){-1==e.originalDatastoresList.indexOf(a)&&l.runAction("Cluster.adddatastore",e.clusterUpdateId,a)}),$.each(e.originalDatastoresList,function(t,a){-1==s.indexOf(a)&&l.runAction("Cluster.deldatastore",e.clusterUpdateId,a)}),l.hideFormPanel(m),!1):void 0}function i(t){$("input#name",t).focus(),this.hostsTable.refreshResourceTableSelect(),this.vnetsTable.refreshResourceTableSelect(),this.datastoresTable.refreshResourceTableSelect()}function r(t,e){var a=e.NAME,n=e.HOSTS.ID,s=e.VNETS.ID,i=e.DATASTORES.ID;"string"==typeof n&&(n=[n]),"string"==typeof s&&(s=[s]),"string"==typeof i&&(i=[i]),$("#name",t).val(a),$("#name",t).attr("disabled","disabled"),this.originalHostsList=[],n&&(this.originalHostsList=n,this.hostsTable.selectResourceTableSelect({ids:n})),this.originalVNetsList=[],s&&(this.originalVNetsList=s,this.vnetsTable.selectResourceTableSelect({ids:s})),this.originalDatastoresList=[],i&&(this.originalDatastoresList=i,this.datastoresTable.selectResourceTableSelect({ids:i})),this.clusterUpdateId=e.ID}t("foundation.tab");var o=t("utils/form-panels/form-panel"),l=t("sunstone"),c=t("utils/locale"),d=t("tabs/hosts-tab/datatable"),u=t("tabs/vnets-tab/datatable"),p=t("tabs/datastores-tab/datatable"),h=t("hbs!./create/wizard"),f=t("./create/formPanelId"),m=t("../tabId");return e.FORM_PANEL_ID=f,e.prototype=Object.create(o.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.submitWizard=s,e.prototype.onShow=i,e.prototype.fill=r,e.prototype.setup=n,e}),define("tabs/clusters-tab",["require","utils/locale","./clusters-tab/buttons","./clusters-tab/actions","./clusters-tab/datatable","./clusters-tab/tabId","./clusters-tab/panels/info","./clusters-tab/panels/hosts","./clusters-tab/panels/vnets","./clusters-tab/panels/datastores","./clusters-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./clusters-tab/buttons"),n=t("./clusters-tab/actions"),s=t("./clusters-tab/datatable"),i=t("./clusters-tab/tabId"),r="dataTableClusters",o=[],l=[t("./clusters-tab/panels/info"),t("./clusters-tab/panels/hosts"),t("./clusters-tab/panels/vnets"),t("./clusters-tab/panels/datastores")],c=[t("./clusters-tab/form-panels/create")],d={tabId:i,title:e.tr("Clusters"),tabClass:"subTab",parentTab:"infra-tab",listHeader:'<i class="fa fa-fw fa-th"></i>&emsp;'+e.tr("Clusters"),infoHeader:'<i class="fa fa-fw fa-th"></i>&emsp;'+e.tr("Cluster"),subheader:"<span/> <small></small>&emsp;",resource:"Cluster",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/hosts-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Host.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Host.create_dialog":{type:"create_dialog",layout:"create"},"Host.addtocluster":{type:"confirm_with_select",text:e.tr("Select cluster"),select:"Cluster",tip:e.tr("Select the destination cluster:"),layout:"main"},"Host.enable":{type:"action",text:e.tr("Enable"),layout:"main"},"Host.disable":{type:"action",text:e.tr("Disable"),layout:"main"},"Host.delete":{type:"confirm",text:e.tr("Delete host"),layout:"del"}};return a}),define("tabs/hosts-tab/actions",["require","sunstone","utils/notifier","utils/locale","./datatable","opennebula/host","opennebula/cluster","opennebula/action","./tabId","./form-panels/create/formPanelId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=(t("utils/locale"),t("./datatable"),t("opennebula/host")),s=t("opennebula/cluster"),i=t("opennebula/action"),r=t("./tabId"),o=t("./form-panels/create/formPanelId"),l={"Host.create":{type:"create",call:n.create,callback:function(t,a){e.resetFormPanel(r,o),e.hideFormPanel($("#"+r)),e.getDataTable(r).addElement(t,a)},error:function(t,n){e.hideFormPanelLoading($("#"+r)),a.onError(t,n)},notify:!0},"Host.create_dialog":{type:"custom",call:function(){e.showFormPanel(r,o,"create")}},"Host.list":{type:"list",call:n.list,callback:function(t,a){e.getDataTable(r).updateView(t,a)},error:a.onError},"Host.show":{type:"single",call:n.show,callback:function(t,a){e.getDataTable(r).updateElement(t,a),e.rightInfoVisible($("#"+r))&&e.insertPanels(r,a)},error:a.onError},"Host.refresh":{type:"custom",call:function(){var t=$("#"+r);e.rightInfoVisible(t)?e.runAction("Host.show",e.rightInfoResourceId(t)):(e.getDataTable(r).waitingNodes(),e.runAction("Host.list",{force:!0}))},error:a.onError},"Host.enable":{type:"multiple",call:n.enable,callback:function(t){e.runAction("Host.show",t.request.data[0])},elements:function(){return e.getDataTable(r).elements()},error:a.onError,notify:!0},"Host.disable":{type:"multiple",call:n.disable,callback:function(t){e.runAction("Host.show",t.request.data[0])},elements:function(){return e.getDataTable(r).elements()},error:a.onError,notify:!0},"Host.delete":{type:"multiple",call:n.del,callback:function(t,a){e.getDataTable(r).deleteElement(t,a)},elements:function(){return e.getDataTable(r).elements()},error:a.onError,notify:!0},"Host.update_template":{type:"single",call:n.update,callback:function(t){e.runAction("Host.show",t.request.data[0][0])},error:a.onError},"Host.addtocluster":{type:"multiple",call:function(t){var r=t.data.extra_param,o=t.data.id;-1==r?n.show({data:{id:o},success:function(t,n){var r=n.HOST,l=r.CLUSTER_ID;-1!=l?s.delhost({data:{id:l,extra_param:o},success:function(){i.clear_cache("HOST"),e.runAction("Host.show",o)},error:a.onError}):(i.clear_cache("HOST"),e.runAction("Host.show",o))},error:a.onError}):s.addhost({data:{id:r,extra_param:o},success:function(){i.clear_cache("HOST"),e.runAction("Host.show",o)},error:a.onError})},elements:function(){return e.getDataTable(r).elements()}},"Host.rename":{type:"single",call:n.rename,callback:function(t){e.runAction("Host.show",t.request.data[0][0])},error:a.onError,notify:!0}};return l}),define("hbs!utils/panel/cluster-tr/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o="function";return'<tr>\n  <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"Cluster",{name:"tr",hash:{},data:n}))+'</td>\n  <td class="value_td_cluster">'+r((s=null!=(s=e.clusterName||(null!=t?t.clusterName:t))?s:i,typeof s===o?s.call(t,{name:"clusterName",hash:{},data:n}):s))+'</td>\n  <td>\n    <div id="div_edit_chg_cluster">\n      <a id="div_edit_chg_cluster_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>\n    </div>\n  </td>\n</tr>'},useData:!0});return e.registerPartial("utils/panel/cluster-tr/html",a),a}),define("utils/panel/cluster-tr",["require","hbs!./cluster-tr/html","utils/resource-select","sunstone"],function(t){var e=t("hbs!./cluster-tr/html"),a=t("utils/resource-select"),n=t("sunstone"),s=function(t){var a=e({clusterName:t.length?t:"-"});return a},i=function(t,e,s,i){return i.off("click","#div_edit_chg_cluster_link"),i.on("click","#div_edit_chg_cluster_link",function(){$(this).parents("tr");a.insert(".value_td_cluster",i,"Cluster",s,!1)}),i.off("change",".value_td_cluster .resource_list_select"),i.on("change",".value_td_cluster .resource_list_select",function(){var a=$(this).val();""!=a&&n.runAction(t+".addtocluster",[e],a)}),!1};return{html:s,setup:i}}),define("hbs!tabs/hosts-tab/utils/datastore-capacity-table/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='    <tr>\n      <td class="key_td">'+l((i=null!=(i=e.datastoreId||(null!=t?t.datastoreId:t))?i:o,typeof i===r?i.call(t,{name:"datastoreId",hash:{},data:n}):i))+'</td>\n      <td class="value_td" colspan="2">';return i=null!=(i=e.datastoreBar||(null!=t?t.datastoreBar:t))?i:o,s=typeof i===r?i.call(t,{name:"datastoreBar",hash:{},data:n}):i,null!=s&&(c+=s),c+"</td>\n    </tr>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<table class="dataTable extended_table">\n  <thead>\n    <tr>\n      <th>'+r((e.tr||t&&t.tr||i).call(t,"Datastore ID",{name:"tr",hash:{},data:n}))+'</th>\n      <th style="width:70%">'+r((e.tr||t&&t.tr||i).call(t,"Capacity",{name:"tr",hash:{},data:n}))+"</th>\n    </tr>\n  </thead>\n  <tbody>\n";return s=e.each.call(t,null!=t?t.datastoreBars:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+"  </tbody>\n</table>"},useData:!0});return e.registerPartial("tabs/hosts-tab/utils/datastore-capacity-table/html",a),a}),define("tabs/hosts-tab/utils/datastores-capacity-table",["require","tabs/datastores-tab/utils/datastore-capacity-bar","hbs!./datastore-capacity-table/html"],function(t){function e(t){var e=t.HOST_SHARE,s=[];if($.isArray(e.DATASTORES.DS))s=e.DATASTORES.DS;else{if($.isEmptyObject(e.DATASTORES.DS))return"";s=[e.DATASTORES.DS]}var i=[];return $.each(s,function(t,e){i.push({datastoreId:e.ID,datastoreBar:a.html(e)})}),n({datastoreBars:i})}var a=t("tabs/datastores-tab/utils/datastore-capacity-bar"),n=t("hbs!./datastore-capacity-table/html");return{html:e}}),define("tabs/hosts-tab/utils/can-import-wilds",["require"],function(){function t(t){var e=!1;if(t.TEMPLATE.VM){var a=t.TEMPLATE.VM;$.isArray(a)||(a=[a]),$.each(a,function(){return this.IMPORT_TEMPLATE?(e=!0,!1):void 0})}return e}return t}),define("hbs!tabs/hosts-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n        </tr>\n        ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+="\n        ",i=null!=(i=e.clusterTrHTML||(null!=t?t.clusterTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"clusterTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"State",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.stateStr||(null!=t?t.stateStr:t))?i:r,typeof i===c?i.call(t,{name:"stateStr",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"IM MAD",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.IM_MAD:s,t))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"VM MAD",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.VM_MAD:s,t))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"VN MAD",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.VN_MAD:s,t))+'</td>\n          <td></td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Capacity",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Allocated Memory",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2" style="width:50%;">',s=l(null!=(s=null!=t?t.memoryBars:t)?s.allocated:s,t),null!=s&&(d+=s),d+='</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Allocated CPU",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2" style="width:50%;">',s=l(null!=(s=null!=t?t.cpuBars:t)?s.allocated:s,t),null!=s&&(d+=s),d+='</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Real Memory",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2" style="width:50%;">',s=l(null!=(s=null!=t?t.memoryBars:t)?s.real:s,t),null!=s&&(d+=s),d+='</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Real CPU",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2" style="width:50%;">',s=l(null!=(s=null!=t?t.cpuBars:t)?s.real:s,t),null!=s&&(d+=s),d+="</td>\n        </tr>\n      </tbody>\n    </table>\n    ",i=null!=(i=e.datastoresCapacityTableHTML||(null!=t?t.datastoresCapacityTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"datastoresCapacityTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n  </div>\n</div>\n<div class="row">\n  <div class="large-9 columns">',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"</div>\n</div>"
+},useData:!0});return e.registerPartial("tabs/hosts-tab/panels/info/html",a),a}),define("tabs/hosts-tab/panels/info/panelId",["require"],function(){return"host_info_tab"}),define("tabs/hosts-tab/panels/info",["require","utils/locale","utils/humanize","utils/panel/rename-tr","utils/panel/template-table","utils/panel/permissions-table","utils/panel/cluster-tr","opennebula/host","../utils/cpu-bars","../utils/memory-bars","../utils/datastores-capacity-table","../utils/can-import-wilds","hbs!./info/html","../tabId","./info/panelId"],function(t){function e(t){var e=this;e.title=s.tr("Info"),e.icon="fa-info-circle",e.element=t[v],e.canImportWilds=h(e.element),e.unshownTemplate={},e.strippedTemplate={};var a=["HOST","VM","WILDS"];return $.each(e.element.TEMPLATE,function(t,n){$.inArray(t,a)>-1?e.unshownTemplate[t]=n:e.strippedTemplate[t]=n}),this}function a(){var t=r.html(this.strippedTemplate,b,s.tr("Attributes")),e=i.html(b,this.element.NAME),a=l.html(this.element.CLUSTER),n=o.html(m,b,this.element),h=d.html(this.element),_=u.html(this.element),v=s.tr(c.stateStr(this.element.STATE)),g=p.html(this.element);return f({element:this.element,renameTrHTML:e,clusterTrHTML:a,templateTableHTML:t,permissionsTableHTML:n,cpuBars:h,memoryBars:_,stateStr:v,datastoresCapacityTableHTML:g})}function n(t){return i.setup(b,this.element.ID,t),l.setup(b,this.element.ID,this.element.CLUSTER_ID,t),r.setup(this.strippedTemplate,b,this.element.ID,t,this.unshownTemplate),o.setup(m,b,this.element,t),!1}var s=t("utils/locale"),i=(t("utils/humanize"),t("utils/panel/rename-tr")),r=t("utils/panel/template-table"),o=t("utils/panel/permissions-table"),l=t("utils/panel/cluster-tr"),c=t("opennebula/host"),d=t("../utils/cpu-bars"),u=t("../utils/memory-bars"),p=t("../utils/datastores-capacity-table"),h=t("../utils/can-import-wilds"),f=t("hbs!./info/html"),m=t("../tabId"),_=t("./info/panelId"),b="Host",v="HOST";return e.PANEL_ID=_,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/hosts-tab/panels/monitor/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="">\n  <div class="large-6 columns">\n    <div class="row graph_legend">\n      <h3 class="subheader">\n        <small>'+i((e.tr||t&&t.tr||s).call(t,"CPU",{name:"tr",hash:{},data:n}))+'</small>\n      </h3>\n    </div>\n    <div class="row">\n      <div class="large-10 columns centered graph text-center" id="host_cpu_graph" style="height: 100px;">\n        <span  id="provision_dashboard_total" style="font-size:80px">\n          <i class="fa fa-spinner fa-spin"></i>\n        </span>\n      </div>\n    </div>\n    <div class="row graph_legend">\n      <div class="large-10 columns centered" id="host_cpu_legend"></div>\n    </div>\n  </div>\n  <div class="large-6 columns">\n    <div class="row graph_legend">\n      <h3 class="subheader">\n        <small>'+i((e.tr||t&&t.tr||s).call(t,"MEMORY",{name:"tr",hash:{},data:n}))+'</small>\n      </h3>\n    </div>\n    <div class="row">\n      <div class="large-10 columns centered graph text-center" id="host_mem_graph" style="height: 100px;">\n        <span  id="provision_dashboard_total" style="font-size:80px">\n          <i class="fa fa-spinner fa-spin"></i>\n        </span>\n      </div>\n    </div>\n    <div class="row graph_legend">\n      <div class="large-10 columns centered" id="host_mem_legend"></div>\n    </div>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/hosts-tab/panels/monitor/html",a),a}),define("tabs/hosts-tab/panels/monitor/panelId",["require"],function(){return"host_monitoring_tab"}),define("tabs/hosts-tab/panels/monitor",["require","opennebula/host","utils/notifier","utils/locale","utils/graphs","hbs!./monitor/html","../tabId","./monitor/panelId"],function(t){function e(t){return this.panelId=d,this.title=o.tr("Graphs"),this.icon="fa-bar-chart-o",this.element=t[u],this}function a(){return c()}function n(){return!1}function s(){return i.monitor({data:{id:this.element.ID,monitor:{monitor_resources:"HOST_SHARE/CPU_USAGE,HOST_SHARE/USED_CPU,HOST_SHARE/MAX_CPU,HOST_SHARE/MEM_USAGE,HOST_SHARE/USED_MEM,HOST_SHARE/MAX_MEM"}},success:function(t,e){for(var a=[{monitor_resources:"HOST_SHARE/CPU_USAGE,HOST_SHARE/USED_CPU,HOST_SHARE/MAX_CPU",labels:o.tr("Allocated")+","+o.tr("Real")+","+o.tr("Total"),humanize_figures:!1,div_graph:$("#host_cpu_graph"),div_legend:$("#host_cpu_legend")},{monitor_resources:"HOST_SHARE/MEM_USAGE,HOST_SHARE/USED_MEM,HOST_SHARE/MAX_MEM",labels:o.tr("Allocated")+","+o.tr("Real")+","+o.tr("Total"),humanize_figures:!0,div_graph:$("#host_mem_graph"),div_legend:$("#host_mem_legend")}],n=0;n<a.length;n++)l.plot(e,a[n])},error:r.onError}),!1}var i=t("opennebula/host"),r=t("utils/notifier"),o=t("utils/locale"),l=t("utils/graphs"),c=t("hbs!./monitor/html"),d=(t("../tabId"),t("./monitor/panelId")),u="HOST";return e.PANEL_ID=d,e.prototype.html=a,e.prototype.setup=n,e.prototype.onShow=s,e}),define("tabs/hosts-tab/panels/vms/panelId",["require"],function(){return"host_vms_tab"}),define("tabs/hosts-tab/panels/vms",["require","utils/locale","tabs/vms-tab/datatable","./vms/panelId"],function(t){function e(t){return this.title=s.tr("VMs"),this.icon="fa-cloud",this.element=t[l],this}function a(){var t=[];void 0!=this.element.VMS.ID&&(t=this.element.VMS.ID,$.isArray(t)||(t=[t]));var e={info:!0,select:!0,selectOptions:{read_only:!0,fixed_ids:t}};return this.vmsTable=new i(o,e),this.vmsTable.dataTableHTML}function n(){return this.vmsTable.initialize(),this.vmsTable.refreshResourceTableSelect(),!1}var s=t("utils/locale"),i=t("tabs/vms-tab/datatable"),r=t("./vms/panelId"),o=r+"VMsTable",l="HOST";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/hosts-tab/panels/wilds/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div class="row">\n  <div class="large-12 columns">\n    <button id="import_wilds" class="button tiny success right radius" >'+i((e.tr||t&&t.tr||s).call(t,"Import Wilds",{name:"tr",hash:{},data:n}))+'</button>\n    <table id="datatable_host_wilds" class="datatable twelve">\n      <thead>\n        <tr>\n          <th></th>\n          <th>'+i((e.tr||t&&t.tr||s).call(t,"VM name",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+i((e.tr||t&&t.tr||s).call(t,"Remote ID",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody id="tbody_host_wilds"></tbody>\n    </table>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/hosts-tab/panels/wilds/html",a),a}),define("tabs/hosts-tab/panels/wilds/panelId",["require"],function(){return"host_wilds_tab"}),define("tabs/hosts-tab/panels/wilds",["require","foundation-datatables","utils/locale","../utils/can-import-wilds","opennebula/vm","opennebula/action","sunstone","utils/notifier","hbs!./wilds/html","./wilds/panelId"],function(t){function e(t){return this.title=s.tr("Wilds"),this.icon="fa-hdd-o",this.element=t[p.toUpperCase()],this}function a(){return d()}function n(t){var e=this;return i(this.element)||$("#import_wilds").hide(),e.dataTableWildHosts=$("#datatable_host_wilds",t).dataTable({bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:[0]},{sWidth:"35px",aTargets:[0]}]}),e.element.TEMPLATE.VM&&(wilds=e.element.TEMPLATE.VM,$.isArray(wilds)||(wilds=[wilds]),$.each(wilds,function(){var t=this.VM_NAME,a=t.replace(/ /g,"_").replace(/\./g,"_"),n=this.DEPLOY_ID,s=[['<input type="checkbox" class="import_wild_checker import_'+a+'" unchecked/>',t,n]];e.dataTableWildHosts.fnAddData(s),$(".import_"+a,e.dataTableWildHosts).data("wild_template",atob(this.IMPORT_TEMPLATE))})),delete e.element.TEMPLATE.WILDS,delete e.element.TEMPLATE.VM,$("#import_wilds",t).attr("disabled","disabled").on("click.disable",function(){return!1}),$(".import_wild_checker",t).off("change"),$(".import_wild_checker",t).on("change",function(){0==$(".import_wild_checker:checked",t).length?$("#import_wilds",t).attr("disabled","disabled").on("click.disable",function(){return!1}):$("#import_wilds",t).removeAttr("disabled").off("click.disable")}),t.off("click","#import_wilds"),t.on("click","#import_wilds",function(){$("#import_wilds",t).attr("disabled","disabled").on("click.disable",function(){return!1}),$("#import_wilds",t).html('<i class="fa fa-spinner fa-spin"></i>'),$(".import_wild_checker:checked","#datatable_host_wilds").each(function(){var a={vm:{vm_raw:$(this).data("wild_template")}},n=e.element.ID,i=$(this).closest("tr");r.create({timeout:!0,data:a,success:function(a,r){o.clear_cache("VM");var d={};d.host_id=n,d.ds_id=-1,d.enforce=!1,l.runAction("VM.silent_deploy_action",r.VM.ID,d),c.notifyCustom(s.tr("VM imported")," ID: "+r.VM.ID,!1),e.dataTableWildHosts.fnDeleteRow(i),$("#import_wilds",t).removeAttr("disabled").off("click.disable"),$("#import_wilds",t).html(s.tr("Import Wilds"))},error:function(e,a){var n;n=a.error.message?a.error.message:s.tr("Cannot contact server: is it running and reachable?"),c.notifyError(n),$("#import_wilds",t).removeAttr("disabled").off("click.disable"),$("#import_wilds",t).html(s.tr("Import Wilds"))}})})}),!1}t("foundation-datatables");var s=t("utils/locale"),i=t("../utils/can-import-wilds"),r=t("opennebula/vm"),o=t("opennebula/action"),l=t("sunstone"),c=t("utils/notifier"),d=t("hbs!./wilds/html"),u=t("./wilds/panelId"),p="Host";return e.PANEL_ID=u,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/hosts-tab/panels/esx/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<div id="datatable_host_esx_info_div" class="row">\n  <div class="large-12 columns">\n    <table id="datatable_host_esx" class="datatable twelve">\n      <thead>\n        <tr>\n          <th>'+i((e.tr||t&&t.tr||s).call(t,"Hostname",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+i((e.tr||t&&t.tr||s).call(t,"Status",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+i((e.tr||t&&t.tr||s).call(t,"Real CPU",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+i((e.tr||t&&t.tr||s).call(t,"Real Memory",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody id="tbody_host_esx"></tbody>\n    </table>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/hosts-tab/panels/esx/html",a),a}),define("tabs/hosts-tab/panels/esx/panelId",["require"],function(){return"host_esx_tab"}),define("tabs/hosts-tab/panels/esx",["require","foundation-datatables","utils/locale","../utils/cpu-bars","../utils/memory-bars","hbs!./esx/html","./esx/panelId"],function(t){function e(t){if(this.title=s.tr("ESX"),this.icon="fa-hdd-o",this.element=t[c.toUpperCase()],"vcenter"!=this.element.TEMPLATE.HYPERVISOR)throw"Panel not available for this element";return this}function a(){return o()}function n(t){var e=this,a=$("#datatable_host_esx",t).dataTable({bSortClasses:!1,bDeferRender:!0}),n=[];e.element.TEMPLATE.HOST&&(e.element.TEMPLATE.HOST instanceof Array||(e.element.TEMPLATE.HOST=[e.element.TEMPLATE.HOST]),e.element.TEMPLATE.HOST instanceof Array&&$.each(e.element.TEMPLATE.HOST,function(){var t=i.html(this.element),e=r.html(this.element);n.push([this.HOSTNAME,this.STATE,t.real,e.real])}),a.fnAddData(n),delete e.element.TEMPLATE.HOST)}t("foundation-datatables");var s=t("utils/locale"),i=t("../utils/cpu-bars"),r=t("../utils/memory-bars"),o=t("hbs!./esx/html"),l=t("./esx/panelId"),c="Host";return e.PANEL_ID=l,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/hosts-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Wizard" class="custom creation">\n  <div class="row">\n    <div class="large-6 columns">\n      <label for="host_type">'+o((e.tr||t&&t.tr||r).call(t,"Type",{name:"tr",hash:{},data:n}))+'</label>\n      <select id="host_type_mad" name="host_type">\n        <option value="kvm">'+o((e.tr||t&&t.tr||r).call(t,"KVM",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="xen">'+o((e.tr||t&&t.tr||r).call(t,"XEN",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="vmware">'+o((e.tr||t&&t.tr||r).call(t,"VMware",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="vcenter">'+o((e.tr||t&&t.tr||r).call(t,"vCenter",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="az">'+o((e.tr||t&&t.tr||r).call(t,"Microsoft Azure",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="ec2">'+o((e.tr||t&&t.tr||r).call(t,"Amazon EC2",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="sl">'+o((e.tr||t&&t.tr||r).call(t,"IBM Softlayer",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="dummy">'+o((e.tr||t&&t.tr||r).call(t,"Dummy",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="custom">'+o((e.tr||t&&t.tr||r).call(t,"Custom",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n    <div class="large-6 columns" id="cluster_select">\n      <label for="host_cluster_id">'+o((e.tr||t&&t.tr||r).call(t,"Cluster",{name:"tr",hash:{},data:n}))+'</label>\n      <div id="host_cluster_id" name="host_cluster_id"></div>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-6 columns" id="name_container">\n      <label for="name">'+o((e.tr||t&&t.tr||r).call(t,"Hostname",{name:"tr",hash:{},data:n}))+'</label>\n      <input type="text" name="name" id="name" />\n    </div>\n    <div class="large-6 columns">\n      <div class="manager clear row" id="vnm_mads">\n        <div class="large-12 columns">\n          <label for="vn">'+o((e.tr||t&&t.tr||r).call(t,"Networking",{name:"tr",hash:{},data:n}))+'</label>\n          <select id="vnm_mad" name="vn">\n            <option value="dummy">'+o((e.tr||t&&t.tr||r).call(t,"Default (dummy)",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="fw">'+o((e.tr||t&&t.tr||r).call(t,"Firewall",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="802.1Q">'+o((e.tr||t&&t.tr||r).call(t,"802.1Q",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="vxlan">'+o((e.tr||t&&t.tr||r).call(t,"VXLAN",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="ebtables">'+o((e.tr||t&&t.tr||r).call(t,"ebtables",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="ovswitch">'+o((e.tr||t&&t.tr||r).call(t,"Open vSwitch",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="vmware">'+o((e.tr||t&&t.tr||r).call(t,"VMware",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="custom">'+o((e.tr||t&&t.tr||r).call(t,"Custom",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="large-12 columns">\n          <label>'+o((e.tr||t&&t.tr||r).call(t,"Custom VNM_MAD",{name:"tr",hash:{},data:n}))+'</label>\n          <input type="text" name="custom_vnm_mad" />\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class="drivers">\n    <fieldset>\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"Drivers",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-6 columns">\n          <div class="manager clear row" id="vmm_mads">\n            <div class="large-12 columns">\n              <label for="vmm">'+o((e.tr||t&&t.tr||r).call(t,"Virtualization",{name:"tr",hash:{},data:n}))+'</label>\n              <select id="vmm_mad" name="vmm">\n                <option value="kvm">'+o((e.tr||t&&t.tr||r).call(t,"KVM",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="xen">'+o((e.tr||t&&t.tr||r).call(t,"XEN",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="vmware">'+o((e.tr||t&&t.tr||r).call(t,"VMware",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="vcenter">'+o((e.tr||t&&t.tr||r).call(t,"vCenter",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="az">'+o((e.tr||t&&t.tr||r).call(t,"Microsoft Azure",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="ec2">'+o((e.tr||t&&t.tr||r).call(t,"Amazon EC2",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="sl">'+o((e.tr||t&&t.tr||r).call(t,"IBM Softlayer",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="dummy">'+o((e.tr||t&&t.tr||r).call(t,"Dummy",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="custom">'+o((e.tr||t&&t.tr||r).call(t,"Custom",{name:"tr",hash:{},data:n}))+'</option>\n              </select>\n            </div>\n            <div class="large-12 columns">\n              <label>'+o((e.tr||t&&t.tr||r).call(t,"Custom VMM_MAD",{name:"tr",hash:{},data:n}))+'</label>\n              <input type="text" name="custom_vmm_mad" />\n            </div>\n          </div>\n        </div>\n        <div class="large-6 columns">\n          <div class="manager clear row" id="im_mads">\n            <div class="large-12 columns">\n              <label for="im">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</label>\n              <select id="im_mad" name="im">\n                <option value="kvm">'+o((e.tr||t&&t.tr||r).call(t,"KVM",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="xen">'+o((e.tr||t&&t.tr||r).call(t,"XEN",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="vmware">'+o((e.tr||t&&t.tr||r).call(t,"VMware",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="vcenter">'+o((e.tr||t&&t.tr||r).call(t,"vCenter",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="az">'+o((e.tr||t&&t.tr||r).call(t,"Microsoft Azure",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="ec2">'+o((e.tr||t&&t.tr||r).call(t,"Amazon EC2",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="sl">'+o((e.tr||t&&t.tr||r).call(t,"IBM Softlayer",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="dummy">'+o((e.tr||t&&t.tr||r).call(t,"Dummy",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="custom">'+o((e.tr||t&&t.tr||r).call(t,"Custom",{name:"tr",hash:{},data:n}))+'</option>\n              </select>\n            </div>\n            <div class="large-12 columns">\n              <label>'+o((e.tr||t&&t.tr||r).call(t,"Custom IM_MAD",{name:"tr",hash:{},data:n}))+':</label>\n              <input type="text" name="custom_im_mad" />\n            </div>\n          </div>\n        </div>\n      </div>\n    </fieldset>\n  </div>\n  <div class="row vcenter_credentials hidden">\n    <fieldset>\n      <legend>'+o((e.tr||t&&t.tr||r).call(t,"vCenter",{name:"tr",hash:{},data:n}))+'</legend>\n      <div class="row">\n        <div class="large-6 columns">\n          <label for="vcenter_user">'+o((e.tr||t&&t.tr||r).call(t,"User",{name:"tr",hash:{},data:n}))+'</label>\n          <input type="text" name="vcenter_user" id="vcenter_user" />\n        </div>\n        <div class="large-6 columns">\n          <label for="vcenter_host">'+o((e.tr||t&&t.tr||r).call(t,"Hostname",{name:"tr",hash:{},data:n}))+'</label>\n          <input type="text" name="vcenter_host" id="vcenter_host" />\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-6 columns">\n          <label for="vcenter_password">'+o((e.tr||t&&t.tr||r).call(t,"Password",{name:"tr",hash:{},data:n}))+'</label>\n          <input type="password" name="vcenter_password" id="vcenter_password" />\n        </div>\n        <div class="large-6 columns">\n          <br>\n          <a class="button radius small right" id="get_vcenter_clusters">'+o((e.tr||t&&t.tr||r).call(t,"Get vCenter Clusters",{name:"tr",hash:{},data:n}))+'</a>\n        </div>\n      </div>\n      <div class="vcenter_clusters"></div>\n      <br>\n      <div class="vcenter_templates"></div>\n      <br>\n      <br>\n      <div class="vcenter_vms"></div>\n      <br>\n      <div class="vcenter_networks"></div>\n      <div class="row import_vcenter_clusters_div hidden">\n        <div class="large-12 columns">\n          <br>\n          <a class="button radius small right success" id="import_vcenter_clusters">'+o((e.tr||t&&t.tr||r).call(t,"Import",{name:"tr",hash:{},data:n}))+"</a>\n        </div>\n      </div>\n    </fieldset>\n  </div>\n</form>"},useData:!0});return e.registerPartial("tabs/hosts-tab/form-panels/create/wizard",a),a}),define("tabs/hosts-tab/form-panels/create",["require","utils/form-panels/form-panel","sunstone","utils/locale","utils/tips","utils/notifier","utils/resource-select","hbs!./create/wizard","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=h,this.tabId=f,this.actions={create:{title:l.tr("Create Host"),buttonText:l.tr("Create"),resetButton:!0}},r.call(this)}function a(){return p({formPanelId:this.formPanelId})}function n(t){return $(".drivers",t).hide(),$("#host_type_mad",t).on("change",function(){$("#vmm_mad",t).val(this.value).change(),$("#im_mad",t).val(this.value).change(),"custom"==this.value?($(".vcenter_credentials",t).hide(),$("#vnm_mads",t).show(),$("#name_container",t).show(),$("#create_host_submit",t).show(),$(".drivers",t).show()):"vcenter"==this.value?($("#vnm_mads",t).hide(),$("#name_container",t).hide(),$(".vcenter_credentials",t).show(),$("#create_host_submit",t).hide(),$(".drivers",t).hide()):($(".vcenter_credentials",t).hide(),$("#vnm_mads",t).show(),$("#name_container",t).show(),$("#create_host_submit",t).show(),$(".drivers",t).hide())}),$('input[name="custom_vmm_mad"],input[name="custom_im_mad"],input[name="custom_vnm_mad"]',t).parent().hide(),$("select#vmm_mad",t).change(function(){"custom"==$(this).val()?$('input[name="custom_vmm_mad"]').parent().show():$('input[name="custom_vmm_mad"]').parent().hide()}),$("select#im_mad",t).change(function(){"custom"==$(this).val()?$('input[name="custom_im_mad"]').parent().show():$('input[name="custom_im_mad"]').parent().hide()}),$("select#vnm_mad",t).change(function(){"custom"==$(this).val()?$('input[name="custom_vnm_mad"]').parent().show():$('input[name="custom_vnm_mad"]').parent().hide()}),$("#create_host_form").on("keyup keypress",function(t){var e=t.keyCode||t.which;return 13==e?(t.preventDefault(),!1):void 0}),c.setup(),!1}function s(t){var e=$("#name",t).val();if(!e)return o.hideFormPanelLoading(this.tabId),d.notifyError(l.tr("Host name missing!")),!1;var a=$("#host_cluster_id .resource_list_select",t).val();a||(a="-1");var n=$("select#vmm_mad",t).val();n="custom"==n?$('input[name="custom_vmm_mad"]').val():n;var s=$("select#im_mad",t).val();s="custom"==s?$('input[name="custom_im_mad"]').val():s;var i=$("select#vnm_mad",t).val();i="custom"==i?$('input[name="custom_vnm_mad"]').val():i;var r={host:{name:e,vm_mad:n,vnm_mad:i,im_mad:s,cluster_id:a}};return o.runAction("Host.create",r),!1}function i(t){$("#name",t).focus();var e=$("#host_cluster_id .resource_list_select",t).val();return e||(e="-1"),u.insert("#host_cluster_id",t,"Cluster",e,!1),!1}var r=t("utils/form-panels/form-panel"),o=t("sunstone"),l=t("utils/locale"),c=t("utils/tips"),d=t("utils/notifier"),u=t("utils/resource-select"),p=t("hbs!./create/wizard"),h=t("./create/formPanelId"),f=t("../tabId");return e.FORM_PANEL_ID=h,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.submitWizard=s,e.prototype.onShow=i,e.prototype.setup=n,e}),define("tabs/hosts-tab",["require","utils/locale","./hosts-tab/buttons","./hosts-tab/actions","./hosts-tab/datatable","./hosts-tab/tabId","./hosts-tab/panels/info","./hosts-tab/panels/monitor","./hosts-tab/panels/vms","./hosts-tab/panels/wilds","./hosts-tab/panels/esx","./hosts-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./hosts-tab/buttons"),n=t("./hosts-tab/actions"),s=t("./hosts-tab/datatable"),i=t("./hosts-tab/tabId"),r="dataTableHosts",o=[t("./hosts-tab/panels/info"),t("./hosts-tab/panels/monitor"),t("./hosts-tab/panels/vms"),t("./hosts-tab/panels/wilds"),t("./hosts-tab/panels/esx")],l=[t("./hosts-tab/form-panels/create")],c={tabId:i,title:e.tr("Hosts"),tabClass:"subTab",parentTab:"infra-tab",listHeader:'<i class="fa fa-fw fa-hdd-o"></i>&emsp;'+e.tr("Hosts"),infoHeader:'<i class="fa fa-fw fa-hdd-o"></i>&emsp;'+e.tr("Host"),subheader:'<span class="total_hosts"/> <small>'+e.tr("TOTAL")+'</small>&emsp;        <span class="on_hosts"/> <small>'+e.tr("ON")+'</small>&emsp;        <span class="off_hosts"/> <small>'+e.tr("OFF")+'</small>&emsp;        <span class="error_hosts"/> <small>'+e.tr("ERROR")+"</small>",resource:"Host",content:"",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:o,formPanels:l};return c}),define("tabs/datastores-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Datastore.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Datastore.create_dialog":{type:"create_dialog",layout:"create"},"Datastore.addtocluster":{type:"confirm_with_select",text:e.tr("Select cluster"),select:"Cluster",layout:"main",tip:e.tr("Select the destination cluster:")},"Datastore.chown":{type:"confirm_with_select",text:e.tr("Change owner"),select:"User",layout:"user_select",tip:e.tr("Select the new owner")+":"},"Datastore.chgrp":{type:"confirm_with_select",text:e.tr("Change group"),select:"Group",layout:"user_select",tip:e.tr("Select the new group")+":"},"Datastore.delete":{type:"confirm",text:e.tr("Delete"),layout:"del"},"Datastore.enable":{type:"action",layout:"more_select",text:e.tr("Enable")},"Datastore.disable":{type:"action",layout:"more_select",text:e.tr("Disable")}};return a}),define("tabs/datastores-tab/dialogs/create/dialogId",["require"],function(){return"createDatastoreDialog"}),define("tabs/datastores-tab/actions",["require","sunstone","utils/notifier","utils/locale","opennebula/datastore","opennebula/cluster","opennebula/action","./tabId","./dialogs/create/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=t("opennebula/datastore"),i=t("opennebula/cluster"),r=t("opennebula/action"),o=t("./tabId"),l=t("./dialogs/create/dialogId"),c={"Datastore.create":{type:"create",call:s.create,callback:function(t,s){e.getDialog(l).hide(),e.getDialog(l).reset(),e.getDataTable(o).addElement(t,s),a.notifyCustom(n.tr("Datastore created")," ID: "+s.DATASTORE.ID,!1)},error:a.onError},"Datastore.create_dialog":{type:"custom",call:function(){e.getDialog(l).show()}},"Datastore.list":{type:"list",call:s.list,callback:function(t,a){e.getDataTable(o).updateView(t,a)},error:a.onError},"Datastore.show":{type:"single",call:s.show,callback:function(t,a){e.getDataTable(o).updateElement(t,a),e.rightInfoVisible($("#"+o))&&e.insertPanels(o,a)},error:a.onError},"Datastore.refresh":{type:"custom",call:function(){var t=$("#"+o);e.rightInfoVisible(t)?e.runAction("Datastore.show",e.rightInfoResourceId(t)):(e.getDataTable(o).waitingNodes(),e.runAction("Datastore.list",{force:!0}))},error:a.onError},"Datastore.fetch_permissions":{type:"single",call:s.show,callback:function(){},error:a.onError},"Datastore.update_template":{type:"single",call:s.update,callback:function(t){e.runAction("Datastore.show",t.request.data[0][0])},error:a.onError},"Datastore.update":{type:"single",call:s.update,callback:function(){e.runAction("Datastore.show",request.request.data[0][0])},error:a.onError},"Datastore.delete":{type:"multiple",call:s.del,callback:function(t,a){e.getDataTable(o).deleteElement(t,a)},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Datastore.chown":{type:"multiple",call:s.chown,callback:function(t){e.runAction("Datastore.show",t.request.data[0][0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError},"Datastore.chgrp":{type:"multiple",call:s.chgrp,callback:function(t){e.runAction("Datastore.show",t.request.data[0][0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError},"Datastore.chmod":{type:"single",call:s.chmod,callback:function(t){e.runAction("Datastore.show",t.request.data[0])},error:a.onError},"Datastore.addtocluster":{type:"multiple",call:function(t){var n=t.data.extra_param,o=t.data.id;-1==n?s.show({data:{id:o},success:function(t,n){var s=n.DATASTORE.CLUSTER_ID;-1!=s?i.deldatastore({data:{id:s,extra_param:o},success:function(){r.clear_cache("DATASTORE"),e.runAction("Datastore.show",o)},error:a.onError}):(r.clear_cache("DATASTORE"),e.runAction("Datastore.show",o))},error:a.onError}):i.adddatastore({data:{id:n,extra_param:o},success:function(){r.clear_cache("DATASTORE"),e.runAction("Datastore.show",o)},error:a.onError})},elements:function(){return e.getDataTable(o).elements()}},"Datastore.rename":{type:"single",call:s.rename,callback:function(t){e.runAction("Datastore.show",t.request.data[0][0])},error:a.onError,notify:!0},"Datastore.enable":{type:"multiple",call:s.enable,callback:function(t){e.runAction("Datastore.show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Datastore.disable":{type:"multiple",call:s.disable,callback:function(t){e.runAction("Datastore.show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0}};return c}),define("hbs!tabs/datastores-tab/dialogs/create/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal medium max-height" role="dialog" data-reveal>\n  <div class="row">\n    <div class="large-5 columns">\n      <h3 id="create_cluster_header" class="subheader">'+o((e.tr||t&&t.tr||r).call(t,"Create Datastore",{name:"tr",hash:{},data:n}))+'</h3>\n    </div>\n    <div class="large-7 columns">\n      <dl class="tabs right wizard_tabs" data-tab>\n        <dd class="active">\n          <a href="#datastore_easyTab">'+o((e.tr||t&&t.tr||r).call(t,"Wizard",{name:"tr",hash:{},data:n}))+'</a>\n        </dd>\n        <dd>\n          <a href="#datastore_manualTab">'+o((e.tr||t&&t.tr||r).call(t,"Advanced mode",{name:"tr",hash:{},data:n}))+'</a>\n        </dd>\n      </dl>\n    </div>\n  </div>\n  <div class="reveal-body">\n    <form id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'Form" action="" class="creation">\n      <div class="tabs-content">\n        <div id="datastore_easyTab" class="active content">\n          <div class="row">\n            <div class="large-6 columns">\n              <label for="name" >'+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+':</label>\n              <input type="text" name="name" id="name"/>\n            </div>\n          </div>\n          <div class="row">\n            <div class="large-6 columns">\n              <label for="presets">'+o((e.tr||t&&t.tr||r).call(t,"Presets",{name:"tr",hash:{},data:n}))+'</label>\n              <select id="presets" name="presets">\n                <option value="fs">'+o((e.tr||t&&t.tr||r).call(t,"Filesystem",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="vmware_vmfs">'+o((e.tr||t&&t.tr||r).call(t,"VMware VMFS",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="block_lvm">'+o((e.tr||t&&t.tr||r).call(t,"Block LVM",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="fs_lvm">'+o((e.tr||t&&t.tr||r).call(t,"FS LVM",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="ceph">'+o((e.tr||t&&t.tr||r).call(t,"Ceph",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="gluster">'+o((e.tr||t&&t.tr||r).call(t,"Gluster",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="dev">'+o((e.tr||t&&t.tr||r).call(t,"Devices",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="custom">'+o((e.tr||t&&t.tr||r).call(t,"Custom",{name:"tr",hash:{},data:n}))+'</option>\n              </select>\n            </div>\n            <div class="large-6 columns">\n              <label for="cluster">'+o((e.tr||t&&t.tr||r).call(t,"Cluster",{name:"tr",hash:{},data:n}))+'</label>\n              <div id="cluster_id" name="cluster_id"></div>\n            </div>\n          </div>\n          <div class="row">\n            <div class="large-12 columns">\n              <fieldset>\n                <legend>'+o((e.tr||t&&t.tr||r).call(t,"Type",{name:"tr",hash:{},data:n}))+'</legend>\n                <div class="large-12 columns text-center">\n                  <input id="image_ds_type" type="radio" name="ds_type" value="IMAGE_DS" checked/>\n                  <label for="image_ds_type">'+o((e.tr||t&&t.tr||r).call(t,"Images",{name:"tr",hash:{},data:n}))+'</label>\n                  <input id="system_ds_type" type="radio" name="ds_type" value="SYSTEM_DS" />\n                  <label for="system_ds_type">'+o((e.tr||t&&t.tr||r).call(t,"System",{name:"tr",hash:{},data:n}))+'</label>\n                  <input id="file_ds_type" type="radio" name="ds_type" value="FILE_DS" />\n                  <label for="file_ds_type">'+o((e.tr||t&&t.tr||r).call(t,"Files",{name:"tr",hash:{},data:n}))+'</label>\n                </div>\n              </fieldset>\n            </div>\n          </div>\n          <div class="row">\n            <div class="large-12 columns">\n              <fieldset>\n                <legend>'+o((e.tr||t&&t.tr||r).call(t,"Managers",{name:"tr",hash:{},data:n}))+'</legend>\n                <div class="large-6 columns">\n                  <label for="ds_mad">'+o((e.tr||t&&t.tr||r).call(t,"Datastore",{name:"tr",hash:{},data:n}))+'</label>\n                  <select id="ds_mad" name="ds_mad">\n                    <option value="fs">'+o((e.tr||t&&t.tr||r).call(t,"Filesystem",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="vmware">'+o((e.tr||t&&t.tr||r).call(t,"VMware",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="lvm">'+o((e.tr||t&&t.tr||r).call(t,"LVM",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="vmfs">'+o((e.tr||t&&t.tr||r).call(t,"VMFS",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="ceph">'+o((e.tr||t&&t.tr||r).call(t,"Ceph",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="dev">'+o((e.tr||t&&t.tr||r).call(t,"Devices",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="custom">'+o((e.tr||t&&t.tr||r).call(t,"Custom",{name:"tr",hash:{},data:n}))+"</option>\n                  </select>\n                  <div>\n                    <label>"+o((e.tr||t&&t.tr||r).call(t,"Custom DS_MAD",{name:"tr",hash:{},data:n}))+':</label>\n                    <input type="text" name="ds_tab_custom_ds_mad" />\n                  </div>\n                </div>\n                <div class="large-6 columns">\n                  <label for="tm_mad">'+o((e.tr||t&&t.tr||r).call(t,"Transfer",{name:"tr",hash:{},data:n}))+':</label>\n                  <select id="tm_mad" name="tm_mad">\n                    <option value="shared">'+o((e.tr||t&&t.tr||r).call(t,"Shared",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="ssh">'+o((e.tr||t&&t.tr||r).call(t,"SSH",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="qcow2">'+o((e.tr||t&&t.tr||r).call(t,"qcow2",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="lvm">'+o((e.tr||t&&t.tr||r).call(t,"LVM",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="fs_lvm">'+o((e.tr||t&&t.tr||r).call(t,"FS LVM",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="vmfs">'+o((e.tr||t&&t.tr||r).call(t,"VMFS",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="ceph">'+o((e.tr||t&&t.tr||r).call(t,"Ceph",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="dev">'+o((e.tr||t&&t.tr||r).call(t,"Devices",{name:"tr",hash:{},data:n}))+'</option>\n                    <option value="custom">'+o((e.tr||t&&t.tr||r).call(t,"Custom",{name:"tr",hash:{},data:n}))+"</option>\n                  </select>\n                  <div>\n                    <label>"+o((e.tr||t&&t.tr||r).call(t,"Custom TM_MAD",{name:"tr",hash:{},data:n}))+':</label>\n                    <input type="text" name="ds_tab_custom_tm_mad" />\n                  </div>\n                </div>\n              </fieldset>\n            </div>\n          </div>\n          <div class="row">\n            <div class="large-6 columns">\n              <label for="disk_type">'+o((e.tr||t&&t.tr||r).call(t,"Disk type",{name:"tr",hash:{},data:n}))+':</label>\n              <select id="disk_type" name="disk_type">\n                <option value="file">'+o((e.tr||t&&t.tr||r).call(t,"File",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="block">'+o((e.tr||t&&t.tr||r).call(t,"Block",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="RBD">'+o((e.tr||t&&t.tr||r).call(t,"RBD",{name:"tr",hash:{},data:n}))+'</option>\n                <option value="gluster">'+o((e.tr||t&&t.tr||r).call(t,"Gluster",{name:"tr",hash:{},data:n}))+'</option>\n              </select>\n            </div>\n          </div>\n          <div class="row">\n            <div class="large-12 columns">\n              <label for="safe_dirs">\n                '+o((e.tr||t&&t.tr||r).call(t,"Safe Directories",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"If you need to un-block a directory under one of the RESTRICTED_DIRS",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="safe_dirs" id="safe_dirs" />\n            </div>\n            <div class="large-12 columns">\n              <label for="restricted_dirs">\n                '+o((e.tr||t&&t.tr||r).call(t,"Restricted Directories",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"Paths that can not be used to register images. A space separated list of paths. This will prevent users registering important files as VM images and accessing them thourgh their VMs. OpenNebula will automatically add its configuration directories: /var/lib/one, /etc/one and oneadmin's home ($HOME).",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="restricted_dirs" id="restricted_dirs" />\n            </div>\n            <div class="large-6 columns">\n              <label for="base_path">\n                '+o((e.tr||t&&t.tr||r).call(t,"Base Path",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"When needed, the front-end will access the datastores using BASE_PATH (defaults to /var/lib/one/datastores).",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="base_path" id="base_path" />\n            </div>\n            <div class="large-6 columns">\n              <label for="limit_transfer_bw">\n                '+o((e.tr||t&&t.tr||r).call(t,"Transfer BW Limit",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"Specify the maximum transfer rate in bytes/second when downloading images from a http/https URL. Suffixes K, M or G can be used.",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="limit_transfer_bw" id="limit_transfer_bw" />\n            </div>\n            <div class="large-6 columns">\n              <label for="limit_mb">\n                '+o((e.tr||t&&t.tr||r).call(t,"Limit",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"Optional limit, in MB. If set, OpenNebula will only use this amount of storage, instead of the whole free disk.",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="limit_mb" id="limit_mb" />\n            </div>\n            <div class="large-12 columns">\n              <input id="no_decompress" type="checkbox" name="no_decompress" value="YES" />\n              <label for="no_decompress">'+o((e.tr||t&&t.tr||r).call(t,"Do not try to untar or decompress",{name:"tr",hash:{},data:n}))+'</label>\n            </div>\n            <div class="large-12 columns">\n              <input id="datastore_capacity_check" type="checkbox" name="datastore_capacity_check" value="YES" />\n              <label for="datastore_capacity_check">\n                '+o((e.tr||t&&t.tr||r).call(t,"Check available capacity of the datastore before creating a new image",{name:"tr",hash:{},data:n}))+'\n              </label>\n            </div>\n            <div class="large-12 columns">\n              <label for="bridge_list">\n                '+o((e.tr||t&&t.tr||r).call(t,"Host Bridge List",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"Space separated list of Server names or IPs where OpenNebula will be staging the new images into. This server will act as the entry point for new inmages in the datastore.",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="bridge_list" id="bridge_list" />\n            </div>\n            <div class="large-6 columns">\n              <label for="ds_tmp_dir">\n                '+o((e.tr||t&&t.tr||r).call(t,"DS Tmp Dir",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"Path in the OpenNebula front-end to be used as a buffer to stage in files in vmfs datastores.",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="ds_tmp_dir" id="ds_tmp_dir" />\n            </div>\n            <div class="large-6 columns">\n              <label for="vg_name">'+o((e.tr||t&&t.tr||r).call(t,"Volume Group Name",{name:"tr",hash:{},data:n}))+'</label>\n              <input type="text" name="vg_name" id="vg_name" />\n            </div>\n            <div class="large-6 columns">\n              <label for="gluster_host">\n                '+o((e.tr||t&&t.tr||r).call(t,"Gluster Host",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"Host and port of one (and only one) Gluster server (host:port)",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="gluster_host" id="gluster_host" />\n            </div>\n            <div class="large-6 columns">\n              <label for="gluster_volume">\n                '+o((e.tr||t&&t.tr||r).call(t,"Gluster Volume",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Gluster volume to use for the datastore",{name:"tr",hash:{},data:n}))+'</span>\n              </label>\n              <input type="text" name="gluster_volume" id="gluster_volume" />\n            </div>\n            <div class="large-6 columns">\n              <label for="pool_name">\n                '+o((e.tr||t&&t.tr||r).call(t,"Pool Name",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"The OpenNebula Ceph pool name. Defaults to 'one' (this pool must exist before using the drivers).",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="pool_name" id="pool_name" />\n            </div>\n            <div class="large-6 columns">\n              <label for="ceph_host">\n                '+o((e.tr||t&&t.tr||r).call(t,"Ceph Host",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"Space-separated list of Ceph monitors. Example: host1 host2:port2 host3 host4:port4 (if no port is specified, the default one is chosen) (Required for Libvirt 1.x when cephx is enabled).",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="ceph_host" id="ceph_host" />\n            </div>\n            <div class="large-6 columns">\n              <label for="ceph_user">\n                '+o((e.tr||t&&t.tr||r).call(t,"Ceph User",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"The OpenNebula Ceph user name. If set it is used by RBD commands. This ceph user must exist before using the drivers. Required for Libvirt 1.x when cephx is enabled .",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="ceph_user" id="ceph_user" />\n            </div>\n            <div class="large-6 columns">\n              <label for="ceph_secret">\n                '+o((e.tr||t&&t.tr||r).call(t,"Ceph Secret",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"A generated UUID for a LibVirt secret (to hold the CephX authentication key in Libvirt on each hypervisor). This should be generated when creating the Ceph datastore in OpenNebula. (Required for Libvirt 1.x when cephx is enabled).",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="ceph_secret" id="ceph_secret" />\n            </div>\n            <div class="large-6 columns">\n              <label class="fs" for="staging_dir">\n                '+o((e.tr||t&&t.tr||r).call(t,"Staging Dir",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"FS: Default path where images will be temporarily copied to in the host carrying out the registration operation (chosen from the bridge list). If empty, defaults to /var/tmp.",{name:"tr",hash:{},data:n}))+"\n                  <br>\n                  <br>\n                  "+o((e.tr||t&&t.tr||r).call(t,"Ceph: Default path for image operations in the OpenNebula Ceph frontend.",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="staging_dir" id="staging_dir" />\n            </div>\n            <div class="large-6 columns">\n              <label for="rbd_format">\n                '+o((e.tr||t&&t.tr||r).call(t,"RBD Format",{name:"tr",hash:{},data:n}))+'\n                <span class="tip">\n                  '+o((e.tr||t&&t.tr||r).call(t,"By default RBD Format 2 will be used. If RBD_FORMAT=2 is specified then when instantiating non-persistent images the Ceph driver will perform rbd snap instead of rbd copy.",{name:"tr",hash:{},data:n}))+'\n                </span>\n              </label>\n              <input type="text" name="rbd_format" id="rbd_format" />\n            </div>\n          </div>\n          <div class="reveal-footer">\n            <div class="form_buttons">\n              <button class="button radius right success" type="submit" id="create_datastore_submit" value="OpenNebula.Datastore.create">'+o((e.tr||t&&t.tr||r).call(t,"Create",{name:"tr",hash:{},data:n}))+'</button>\n              <button class="button radius secondary resetDialog" type="reset" value="reset">'+o((e.tr||t&&t.tr||r).call(t,"Reset",{name:"tr",hash:{},data:n}))+'</button>\n            </div>\n          </div>\n        </div>\n        <div id="datastore_manualTab" class="content">\n          <div class="row">\n            <div class="columns large-6">\n              <label for="datastore_cluster_raw">'+o((e.tr||t&&t.tr||r).call(t,"Cluster",{name:"tr",hash:{},data:n}))+'</label>\n              <div id="datastore_cluster_raw" name="datastore_cluster_raw"></div>\n            </div>\n          </div>\n          <div class="row">\n            <div class="columns large-12">\n              <textarea id="template" rows="15"></textarea>\n            </div>\n          </div>\n          <div class="reveal-footer">\n            <div class="form_buttons">\n              <button class="button success radius right" id="create_datastore_submit_manual" value="datastore/create">'+o((e.tr||t&&t.tr||r).call(t,"Create",{name:"tr",hash:{},data:n}))+'</button>\n              <button class="button secondary radius resetDialog" type="reset" value="reset">'+o((e.tr||t&&t.tr||r).call(t,"Reset",{name:"tr",hash:{},data:n}))+'</button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </form>\n    <a class="close-reveal-modal">&#215;</a>\n  </div>\n</div>'
+},useData:!0});return e.registerPartial("tabs/datastores-tab/dialogs/create/html",a),a}),define("tabs/datastores-tab/dialogs/create",["require","utils/dialogs/dialog","hbs!./create/html","sunstone","utils/notifier","utils/tips","utils/resource-select","./create/dialogId"],function(t){function e(){this.dialogId=y,f.call(this)}function a(){return m({dialogId:y})}function n(t){$("#name",t).focus();var e=$("div#cluster_id .resource_list_select",t).val();e||(e="-1");var a=$("div#datastore_cluster_raw .resource_list_select",t).val();return a||(a="-1"),g.insert("div#cluster_id",t,"Cluster",e,!1),g.insert("div#datastore_cluster_raw",t,"Cluster",a,!1),!1}function s(t){v.setup(t),$('input[name="ds_tab_custom_ds_mad"],input[name="ds_tab_custom_tm_mad"]',t).parent().hide(),$("select#ds_mad",t).change(function(){"custom"==$(this).val()?$('input[name="ds_tab_custom_ds_mad"]').parent().show():$('input[name="ds_tab_custom_ds_mad"]').parent().hide()}),$("select#tm_mad",t).change(function(){"custom"==$(this).val()?$('input[name="ds_tab_custom_tm_mad"]').parent().show():$('input[name="ds_tab_custom_tm_mad"]').parent().hide()}),$("#presets").change(function(){i(t);var e=$(this).val();switch(e){case"fs":r();break;case"vmware_vmfs":o();break;case"block_lvm":c();break;case"fs_lvm":d();break;case"ceph":l();break;case"gluster":u();break;case"dev":p();break;case"custom":h()}}),$("#create_datastore_submit",t).click(function(){var e=$("#name",t).val(),a=$(".resource_list_select",$("#cluster_id",t)).val(),n=$("input[name=ds_type]:checked",t).val(),s=$("#ds_mad",t).val();s="custom"==s?$('input[name="ds_tab_custom_ds_mad"]').val():s;var i=$("#tm_mad",t).val();i="custom"==i?$('input[name="ds_tab_custom_tm_mad"]').val():i;var r=$("#disk_type",t).val(),o=$("#safe_dirs",t).val(),l=$("#base_path",t).val(),c=$("#restricted_dirs",t).val(),d=$("#limit_transfer_bw",t).val(),u=$("#datastore_capacity_check",t).is(":checked"),p=$("#no_decompress",t).is(":checked"),h=$("#bridge_list",t).val(),f=$("#ds_tmp_dir",t).val(),m=$("#vg_name",t).val(),v=$("#limit_mb",t).val(),g=$("#gluster_host",t).val(),y=$("#gluster_volume",t).val(),w=$("#pool_name",t).val(),T=$("#ceph_host",t).val(),E=$("#ceph_secret",t).val(),S=$("#ceph_user",t).val(),I=$("#rbd_format",t).val(),x=$("#staging_dir",t).val();if(!e)return b.notifyError("Please provide a name"),!1;var A={datastore:{name:e,tm_mad:i,disk_type:r,type:n},cluster_id:a};return"SYSTEM_DS"!=n&&(A.datastore.ds_mad=s),l&&(A.datastore.base_path=l),o&&(A.datastore.safe_dirs=o),c&&(A.datastore.restricted_dirs=c),d&&(A.datastore.limit_transfer_bw=d),p&&(A.datastore.no_decompress="YES"),u&&(A.datastore.datastore_capacity_check="YES"),h&&(A.datastore.bridge_list=h),f&&(A.datastore.ds_tmp_dir=f),m&&(A.datastore.vg_name=m),v&&(A.datastore.limit_mb=v),g&&(A.datastore.gluster_host=g),y&&(A.datastore.gluster_volume=y),w&&(A.datastore.pool_name=w),T&&(A.datastore.ceph_host=T),E&&(A.datastore.ceph_secret=E),S&&(A.datastore.ceph_user=S),I&&(A.datastore.rbd_format=I),x&&(A.datastore.staging_dir=x),_.runAction("Datastore.create",A),!1}),$("#create_datastore_submit_manual",t).click(function(){var e=$("#template",t).val(),a=$(".resource_list_select",$("#datastore_cluster_raw",t)).val();if(!a)return b.notifyError(tr("Please select a cluster for this datastore")),!1;var n={datastore:{datastore_raw:e},cluster_id:a};return _.runAction("Datastore.create",n),!1}),$("select#disk_type").parent().hide(),i(t),r()}function i(t){$("input#image_ds_type").attr("checked","true"),$("input[name=ds_type]").removeAttr("disabled","disabled"),$('label[for="bridge_list"],input#bridge_list',t).parent().hide(),$('label[for="ds_tmp_dir"],input#ds_tmp_dir',t).parent().hide(),$('label[for="vg_name"],input#vg_name',t).hide(),$('label[for="gluster_host"],input#gluster_host',t).parent().hide(),$('label[for="gluster_volume"],input#gluster_volume',t).parent().hide(),$('label[for="pool_name"],input#pool_name',t).parent().hide(),$('label[for="ceph_host"],input#ceph_host',t).parent().hide(),$('label[for="ceph_secret"],input#ceph_secret',t).parent().hide(),$('label[for="ceph_user"],input#ceph_user',t).parent().hide(),$('label[for="rbd_format"],input#rbd_format',t).parent().hide(),$('label[for="staging_dir"],input#staging_dir',t).parent().hide(),$('label[for="limit_transfer_bw"],input#limit_transfer_bw',t).parent().hide(),$('label[for="no_decompress"],input#no_decompress',t).parent().hide(),$("select#ds_mad").removeAttr("disabled"),$("select#tm_mad").removeAttr("disabled"),$("select#tm_mad").children("option").each(function(){$(this).removeAttr("disabled")}),$("select#disk_type").removeAttr("disabled"),$("select#disk_type").children("option").each(function(){$(this).removeAttr("disabled")}),$('input[name="ds_tab_custom_ds_mad"]',t).parent().hide(),$('input[name="ds_tab_custom_tm_mad"]',t).parent().hide()}function r(){$("select#ds_mad").val("fs"),$("select#tm_mad").val("shared"),$("select#ds_mad").attr("disabled","disabled"),$("select#tm_mad").children("option").each(function(){var t=$(this).val();$(this).attr("disabled","disabled"),("qcow2"==t||"shared"==t||"ssh"==t)&&$(this).removeAttr("disabled")}),$("select#disk_type").val("file"),$("select#disk_type").attr("disabled","disabled"),$('label[for="limit_transfer_bw"],input#limit_transfer_bw').parent().fadeIn(),$('label[for="no_decompress"],input#no_decompress').parent().fadeIn(),$('label[for="datastore_capacity_check"],input#datastore_capacity_check').parent().fadeIn(),$("input#safe_dirs").removeAttr("disabled"),$("select#disk_type").removeAttr("disabled"),$("input#base_path").removeAttr("disabled"),$("input#limit_mb").removeAttr("disabled"),$("input#restricted_dirs").removeAttr("disabled"),$('label[for="bridge_list"],input#bridge_list').parent().fadeIn(),$('label[for="staging_dir"],input#staging_dir').parent().fadeIn()}function o(){$('label[for="bridge_list"],input#bridge_list').parent().fadeIn(),$('label[for="ds_tmp_dir"],input#ds_tmp_dir').parent().fadeIn(),$("select#ds_mad").val("vmfs"),$("select#ds_mad").attr("disabled","disabled"),$("select#tm_mad").val("vmfs"),$("select#tm_mad").attr("disabled","disabled"),$('label[for="limit_transfer_bw"],input#limit_transfer_bw').parent().fadeIn(),$('label[for="no_decompress"],input#no_decompress').parent().fadeIn(),$('label[for="datastore_capacity_check"],input#datastore_capacity_check').parent().fadeIn(),$("select#disk_type").val("file"),$("select#disk_type").attr("disabled","disabled"),$("input#safe_dirs").removeAttr("disabled"),$("input#base_path").removeAttr("disabled"),$("input#limit_mb").removeAttr("disabled"),$("input#restricted_dirs").removeAttr("disabled")}function l(){$("input#image_ds_type").attr("checked","true"),$("input[name=ds_type]").attr("disabled","disabled"),$("select#ds_mad").val("ceph"),$("select#ds_mad").attr("disabled","disabled"),$("select#tm_mad").val("ceph"),$("select#tm_mad").attr("disabled","disabled"),$('label[for="bridge_list"],input#bridge_list').parent().fadeIn(),$('label[for="pool_name"],input#pool_name').parent().fadeIn(),$('label[for="ceph_host"],input#ceph_host').parent().fadeIn(),$('label[for="ceph_secret"],input#ceph_secret').parent().fadeIn(),$('label[for="ceph_user"],input#ceph_user').parent().fadeIn(),$('label[for="rbd_format"],input#rbd_format').parent().fadeIn(),$('label[for="staging_dir"],input#staging_dir').parent().fadeIn(),$('label[for="limit_transfer_bw"],input#limit_transfer_bw').parent().fadeIn(),$('label[for="no_decompress"],input#no_decompress').parent().fadeIn(),$('label[for="datastore_capacity_check"],input#datastore_capacity_check').parent().fadeIn(),$("select#disk_type").val("RBD"),$("select#disk_type").attr("disabled","disabled"),$("input#safe_dirs").removeAttr("disabled"),$("input#base_path").removeAttr("disabled"),$("input#limit_mb").removeAttr("disabled"),$("input#restricted_dirs").removeAttr("disabled")}function c(){$("select#ds_mad").val("lvm"),$("select#ds_mad").attr("disabled","disabled"),$("select#tm_mad").val("lvm"),$("select#tm_mad").attr("disabled","disabled"),$("input#image_ds_type").attr("checked","true"),$("input[name=ds_type]").attr("disabled","disabled"),$('label[for="bridge_list"],input#bridge_list').parent().fadeIn(),$('label[for="vg_name"],input#vg_name').fadeIn(),$('label[for="limit_transfer_bw"],input#limit_transfer_bw').parent().fadeIn(),$('label[for="no_decompress"],input#no_decompress').parent().fadeIn(),$('label[for="datastore_capacity_check"],input#datastore_capacity_check').parent().fadeIn(),$("select#disk_type").val("block"),$("select#disk_type").attr("disabled","disabled"),$("input#safe_dirs").removeAttr("disabled"),$("input#base_path").removeAttr("disabled"),$("input#limit_mb").removeAttr("disabled"),$("input#restricted_dirs").removeAttr("disabled")}function d(){$("select#ds_mad").val("fs"),$("select#ds_mad").attr("disabled","disabled"),$("select#tm_mad").val("fs_lvm"),$("select#tm_mad").attr("disabled","disabled"),$("input#image_ds_type").attr("checked","true"),$("input[name=ds_type]").attr("disabled","disabled"),$('label[for="limit_transfer_bw"],input#limit_transfer_bw').parent().fadeIn(),$('label[for="no_decompress"],input#no_decompress').parent().fadeIn(),$('label[for="datastore_capacity_check"],input#datastore_capacity_check').parent().fadeIn(),$("select#disk_type").val("block"),$("select#disk_type").attr("disabled","disabled"),$("input#safe_dirs").removeAttr("disabled"),$("input#base_path").removeAttr("disabled"),$("input#limit_mb").removeAttr("disabled"),$("input#restricted_dirs").removeAttr("disabled")}function u(){$("select#ds_mad").val("fs"),$("select#ds_mad").attr("disabled","disabled"),$("select#tm_mad").val("shared"),$("select#tm_mad").children("option").each(function(){var t=$(this).val();$(this).attr("disabled","disabled"),("shared"==t||"ssh"==t)&&$(this).removeAttr("disabled")}),$("input#image_ds_type").attr("checked","true"),$("input[name=ds_type]").attr("disabled","disabled"),$("select#disk_type").val("gluster"),$("select#disk_type").attr("disabled","disabled"),$('label[for="gluster_host"],input#gluster_host').parent().fadeIn(),$('label[for="gluster_volume"],input#gluster_volume').parent().fadeIn(),$('label[for="limit_transfer_bw"],input#limit_transfer_bw').parent().fadeIn(),$('label[for="no_decompress"],input#no_decompress').parent().fadeIn(),$('label[for="datastore_capacity_check"],input#datastore_capacity_check').parent().fadeIn(),$("input#safe_dirs").removeAttr("disabled"),$("input#base_path").removeAttr("disabled"),$("input#limit_mb").removeAttr("disabled"),$("input#restricted_dirs").removeAttr("disabled")}function p(){$("select#ds_mad").val("dev"),$("select#ds_mad").attr("disabled","disabled"),$("select#tm_mad").val("dev"),$("select#tm_mad").attr("disabled","disabled"),$("input#image_ds_type").attr("checked","true"),$("input[name=ds_type]").attr("disabled","disabled"),$("select#disk_type").val("block"),$("select#disk_type").attr("disabled","disabled"),$('label[for="limit_transfer_bw"],input#limit_transfer_bw').parent().hide(),$('label[for="no_decompress"],input#no_decompress').parent().hide(),$('label[for="datastore_capacity_check"],input#datastore_capacity_check').parent().hide(),$("input#safe_dirs").attr("disabled","disabled"),$("input#base_path").attr("disabled","disabled"),$("input#limit_mb").attr("disabled","disabled"),$("input#restricted_dirs").attr("disabled","disabled")}function h(t){i(t),$("select#ds_mad").val("fs"),$("select#tm_mad").val("shared"),$("input#safe_dirs").removeAttr("disabled"),$("select#disk_type").removeAttr("disabled"),$("input#base_path").removeAttr("disabled"),$("input#limit_mb").removeAttr("disabled"),$("input#restricted_dirs").removeAttr("disabled"),$('label[for="limit_transfer_bw"],input#limit_transfer_bw').parent().fadeIn(),$('label[for="no_decompress"],input#no_decompress').parent().fadeIn(),$('label[for="datastore_capacity_check"],input#datastore_capacity_check').parent().fadeIn()}var f=t("utils/dialogs/dialog"),m=t("hbs!./create/html"),_=t("sunstone"),b=t("utils/notifier"),v=t("utils/tips"),g=t("utils/resource-select"),y=t("./create/dialogId");return e.DIALOG_ID=y,e.prototype=Object.create(f.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=n,e.prototype.setup=s,e}),define("hbs!tabs/datastores-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n        </tr>\n        ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+="\n        ",i=null!=(i=e.clusterTrHTML||(null!=t?t.clusterTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"clusterTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"State",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.stateStr||(null!=t?t.stateStr:t))?i:r,typeof i===c?i.call(t,{name:"stateStr",hash:{},data:n}):i))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Base path",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.BASE_PATH:s,t))+'</td>\n          <td></td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Capacity",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">',i=null!=(i=e.capacityBar||(null!=t?t.capacityBar:t))?i:r,s=typeof i===c?i.call(t,{name:"capacityBar",hash:{},data:n}):i,null!=s&&(d+=s),d+='</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Limit",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o((i=null!=(i=e.limitStr||(null!=t?t.limitStr:t))?i:r,typeof i===c?i.call(t,{name:"limitStr",hash:{},data:n}):i))+'</td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">\n    ',i=null!=(i=e.permissionsTableHTML||(null!=t?t.permissionsTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"permissionsTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n  </div>\n</div>\n<div class="row">\n  <div class="large-9 columns">',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"</div>\n</div>"},useData:!0});return e.registerPartial("tabs/datastores-tab/panels/info/html",a),a}),define("tabs/datastores-tab/panels/info/panelId",["require"],function(){return"datastore_info_tab"}),define("tabs/datastores-tab/panels/info",["require","utils/locale","utils/humanize","utils/panel/rename-tr","utils/panel/template-table","utils/panel/permissions-table","utils/panel/cluster-tr","opennebula/datastore","../utils/datastore-capacity-bar","hbs!./info/html","../tabId","./info/panelId"],function(t){function e(t){return this.title=s.tr("Info"),this.icon="fa-info-circle",this.element=t[m.toUpperCase()],this}function a(){var t=r.html(m,this.element.NAME),e=c.html(this.element.CLUSTER),a=o.html(this.element.TEMPLATE,m,s.tr("Attributes")),n=l.html(h,m,this.element),f=u.html(this.element),_=s.tr(d.stateStr(this.element.STATE)),b="-";return("NO"==this.element.TEMPLATE.SHARED||void 0!=this.element.TEMPLATE.LIMIT_MB)&&(b=i.sizeFromMB(this.element.TEMPLATE.LIMIT_MB)),p({element:this.element,renameTrHTML:t,clusterTrHTML:e,templateTableHTML:a,permissionsTableHTML:n,capacityBar:f,stateStr:_,limitStr:b})}function n(t){return r.setup(m,this.element.ID,t),c.setup(m,this.element.ID,this.element.CLUSTER_ID,t),o.setup(this.element.TEMPLATE,m,this.element.ID,t),l.setup(h,m,this.element,t),!1}var s=t("utils/locale"),i=t("utils/humanize"),r=t("utils/panel/rename-tr"),o=t("utils/panel/template-table"),l=t("utils/panel/permissions-table"),c=t("utils/panel/cluster-tr"),d=t("opennebula/datastore"),u=t("../utils/datastore-capacity-bar"),p=t("hbs!./info/html"),h=t("../tabId"),f=t("./info/panelId"),m="Datastore";return e.PANEL_ID=f,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/datastores-tab/panels/images/panelId",["require"],function(){return"datastore_image_tab"}),define("tabs/datastores-tab/panels/images",["require","utils/locale","tabs/images-tab/datatable","./images/panelId"],function(t){function e(t){return this.title=s.tr("Images"),this.icon="fa-upload",this.element=t[l.toUpperCase()],this.imagesDataTable=new i(o,{info:!0}),this}function a(){return this.imagesDataTable.dataTableHTML}function n(){return this.imagesDataTable.initialize(),this.imagesDataTable.filter(this.element.NAME,i.COLUMN_IDS.DATASTORE),this.imagesDataTable.list(),!1}var s=t("utils/locale"),i=t("tabs/images-tab/datatable"),r=t("./images/panelId"),o=r+"ImagesTable",l="Datastore";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/datastores-tab",["require","utils/locale","./datastores-tab/buttons","./datastores-tab/actions","./datastores-tab/datatable","./datastores-tab/tabId","./datastores-tab/dialogs/create","./datastores-tab/panels/info","./datastores-tab/panels/images"],function(t){var e=t("utils/locale"),a=t("./datastores-tab/buttons"),n=t("./datastores-tab/actions"),s=t("./datastores-tab/datatable"),i=t("./datastores-tab/tabId"),r="dataTableDatastores",o=[t("./datastores-tab/dialogs/create")],l=[t("./datastores-tab/panels/info"),t("./datastores-tab/panels/images")],c={tabId:i,title:e.tr("Datastores"),tabClass:"subTab",parentTab:"infra-tab",listHeader:'<i class="fa fa-fw fa-folder-open"></i>&emsp;'+e.tr("Datastores"),infoHeader:'<i class="fa fa-fw fa-folder-open"></i>&emsp;'+e.tr("Datastore"),subheader:"",resource:"Datastore",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,dialogs:o};return c}),define("tabs/vnets-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Network.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Network.create_dialog":{type:"create_dialog",layout:"create"},"Network.import_dialog":{type:"create_dialog",layout:"create",text:e.tr("Import"),icon:'<i class="fa fa-download">',alwaysActive:!0},"Network.update_dialog":{type:"action",layout:"main",text:e.tr("Update")},"Network.reserve_dialog":{type:"action",layout:"main",text:e.tr("Reserve"),custom_classes:"only-right-info reserve-right-info"},"Network.addtocluster":{type:"confirm_with_select",text:e.tr("Select cluster"),layout:"main",select:"Cluster",tip:e.tr("Select the destination cluster:")},"Network.chown":{type:"confirm_with_select",text:e.tr("Change owner"),layout:"user_select",select:"User",tip:e.tr("Select the new owner")+":"},"Network.chgrp":{type:"confirm_with_select",text:e.tr("Change group"),layout:"user_select",select:"Group",tip:e.tr("Select the new group")+":"},"Network.delete":{type:"confirm",layout:"del",text:e.tr("Delete")}};return a}),define("tabs/vnets-tab/dialogs/add-ar/dialogId",["require"],function(){return"add_ar_dialog"}),define("tabs/vnets-tab/dialogs/update-ar/dialogId",["require"],function(){return"update_ar_dialog"}),define("tabs/vnets-tab/dialogs/reserve/dialogId",["require"],function(){return"reserve_dialog"}),define("tabs/vnets-tab/actions",["require","sunstone","utils/notifier","utils/locale","./datatable","opennebula/network","opennebula/cluster","opennebula/action","./tabId","./form-panels/create/formPanelId","./dialogs/add-ar/dialogId","./dialogs/update-ar/dialogId","./dialogs/reserve/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=(t("./datatable"),t("opennebula/network")),i=t("opennebula/cluster"),r=t("opennebula/action"),o=t("./tabId"),l=t("./form-panels/create/formPanelId"),c=t("./dialogs/add-ar/dialogId"),d=t("./dialogs/update-ar/dialogId"),u=t("./dialogs/reserve/dialogId"),p={"Network.create":{type:"create",call:s.create,callback:function(t,a){e.resetFormPanel(o,l),e.hideFormPanel(o),e.getDataTable(o).addElement(t,a)},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)},notify:!0},"Network.create_dialog":{type:"custom",call:function(){e.showFormPanel(o,l,"create")}},"Network.list":{type:"list",call:s.list,callback:function(t,a){e.getDataTable(o).updateView(t,a)},error:a.onError},"Network.show":{type:"single",call:s.show,callback:function(t,a){e.getDataTable(o).updateElement(t,a),e.rightInfoVisible($("#"+o))&&e.insertPanels(o,a)},error:a.onError},"Network.refresh":{type:"custom",call:function(){var t=$("#"+o);e.rightInfoVisible(t)?e.runAction("Network.show",e.rightInfoResourceId(t)):(e.getDataTable(o).waitingNodes(),e.runAction("Network.list",{force:!0}))},error:a.onError},"Network.delete":{type:"multiple",call:s.del,callback:function(t,a){e.getDataTable(o).deleteElement(t,a)},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Network.hold":{type:"single",call:s.hold,callback:function(t){e.runAction("Network.show",t.request.data[0][0])},error:a.onError},"Network.release":{type:"single",call:s.release,callback:function(t){e.runAction("Network.show",t.request.data[0][0])},error:a.onError},"Network.add_ar":{type:"single",call:s.add_ar,callback:function(t){e.getDialog(c).hide(),e.getDialog(c).reset(),e.runAction("Network.show",t.request.data[0][0])},error:a.onError},"Network.rm_ar":{type:"single",call:s.rm_ar,callback:function(t){r.clear_cache("VNET"),e.runAction("Network.show",t.request.data[0][0])},error:a.onError},"Network.update_ar":{type:"single",call:s.update_ar,callback:function(t){e.getDialog(d).hide(),e.getDialog(d).reset(),e.runAction("Network.show",t.request.data[0][0])},error:a.onError},"Network.reserve_dialog":{type:"custom",call:function(){var t=e.getDataTable(o).elements();if(1!=t.length)return a.notifyMessage("Please select one (and just one) Virtual Network."),!1;var n=""+t[0];e.getDialog(u).setParams({vnetId:n}),e.getDialog(u).reset(),e.getDialog(u).show()}},"Network.reserve":{type:"single",call:s.reserve,callback:function(t){e.getDialog(u).hide(),e.getDialog(u).reset(),r.clear_cache("VNET"),e.runAction("Network.show",t.request.data[0][0])},error:a.onError},"Network.chown":{type:"multiple",call:s.chown,callback:function(t){e.runAction("Network.show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Network.chgrp":{type:"multiple",call:s.chgrp,callback:function(t){e.runAction("Network.show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Network.chmod":{type:"single",call:s.chmod,callback:function(t){e.runAction("Network.show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"Network.rename":{type:"single",call:s.rename,callback:function(t){e.runAction("Network.show",t.request.data[0][0])},error:a.onError,notify:!0},"Network.update_dialog":{type:"custom",call:function(){var t=e.getDataTable(o).elements();if(1!=t.length)return a.notifyMessage("Please select one (and just one) Virtual Network to update."),!1;var n=""+t[0];e.runAction("Network.show_to_update",n)}},"Network.show_to_update":{type:"single",call:s.show,callback:function(t,a){e.showFormPanel(o,l,"update",function(t,e){t.fill(e,a.VNET)})},error:a.onError},"Network.update":{type:"single",call:s.update,callback:function(){e.hideFormPanel(o),a.notifyMessage(n.tr("Virtual Network updated correctly"))},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)}},"Network.update_template":{type:"single",call:s.update,callback:function(t){e.runAction("Network.show",t.request.data[0][0])},error:a.onError},"Network.addtocluster":{type:"multiple",call:function(t){var n=t.data.extra_param,o=t.data.id;-1==n?s.show({data:{id:o},success:function(t,n){var s=n.VNET,l=s.CLUSTER_ID;-1!=l?i.delvnet({data:{id:l,extra_param:o},success:function(){r.clear_cache("VNET"),e.runAction("Network.show",o)},error:a.onError}):(r.clear_cache("VNET"),e.runAction("Network.show",o))},error:a.onError}):i.addvnet({data:{id:n,extra_param:o},success:function(){r.clear_cache("VNET"),e.runAction("Network.show",o)},error:a.onError})},elements:function(){return e.getDataTable(o).elements()}}};return p}),define("hbs!tabs/vnets-tab/dialogs/add-ar/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large max-height" data-reveal >\n  <div class="reveal-body">\n    <form data-abide="ajax" id="add_ar_form" action="">\n      <div class="row">\n        <div class="large-12 columns">\n          <h3 class="subheader" id="">\n            '+l((e.tr||t&&t.tr||o).call(t,"Virtual Network",{name:"tr",hash:{},data:n}))+' <span id="vnet_id"/>\n            <br>\n            '+l((e.tr||t&&t.tr||o).call(t,"New Address Range",{name:"tr",hash:{},data:n}))+"\n          </h3>\n        </div>\n      </div>\n      ";return i=null!=(i=e.arTabHTML||(null!=t?t.arTabHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"arTabHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n      <div class="reveal-footer">\n        <div class="form_buttons">\n          <button class="button radius right success" id="submit_ar_button" type="submit" value="Network.add_ar">\n            '+l((e.tr||t&&t.tr||o).call(t,"Add",{name:"tr",hash:{},data:n}))+'\n          </button>\n          <button id="submit_ar_reset_button" class="button secondary radius" type="reset" value="reset">\n            '+l((e.tr||t&&t.tr||o).call(t,"Reset",{name:"tr",hash:{},data:n}))+'\n          </button>\n        </div>\n      </div>\n      <a class="close-reveal-modal">&#215;</a>\n    </form>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/vnets-tab/dialogs/add-ar/html",a),a}),define("hbs!tabs/vnets-tab/utils/ar-tab/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/advancedSection"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='  <div class="row">\n    <div class="large-12 columns">\n      <span>'+o((e.tr||t&&t.tr||r).call(t,"Custom attributes",{name:"tr",hash:{},data:n}))+'</span>\n      <br>\n      <br>\n    </div>\n  </div>\n  <div class="row" id="'+o((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:r,typeof i===l?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_custom_tags">\n    <div class="12 columns">\n      ';return i=null!=(i=e.customTagsHTML||(null!=t?t.customTagsHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"customTagsHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n    </div>\n  </div>\n  <div class="row">\n    <br>\n    <br>\n    <hr>\n    <div class="large-12 columns">\n      <span>'+o((e.tr||t&&t.tr||r).call(t,"Security Groups",{name:"tr",hash:{},data:n}))+'</span>\n      <br>\n      <br>\n    </div>\n  </div>\n  <div class="row" id="'+o((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:r,typeof i===l?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_security_groups">\n    ',i=null!=(i=e.securityGroupsTableHTML||(null!=t?t.securityGroupsTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"securityGroupsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n  </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div class="row" name="str_ar_tab_id" str_ar_tab_id="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'">\n  <div class="large-12 columns">\n    <input wizard_field="TYPE" type="radio" name="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type" id="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type_ip4" value="IP4"/><label for="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type_ip4">'+l((e.tr||t&&t.tr||o).call(t,"IPv4",{name:"tr",hash:{},data:n}))+'</label>\n    <input wizard_field="TYPE" type="radio" name="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type" id="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type_ip4_6" value="IP4_6"/><label for="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type_ip4_6">'+l((e.tr||t&&t.tr||o).call(t,"IPv4/6",{name:"tr",hash:{},data:n}))+'</label>\n    <input wizard_field="TYPE" type="radio" name="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type" id="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type_ip6" value="IP6"/><label for="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type_ip6">'+l((e.tr||t&&t.tr||o).call(t,"IPv6",{name:"tr",hash:{},data:n}))+'</label>\n    <input wizard_field="TYPE" type="radio" name="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type" id="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type_ether" value="ETHER"/><label for="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ar_type_ether">'+l((e.tr||t&&t.tr||o).call(t,"Ethernet",{name:"tr",hash:{},data:n}))+'</label>\n  </div>\n</div>\n<div class="row">\n  <div class="large-6 columns">\n    <div class="row collapse ar_input type_ip4 type_ip4_6">\n      <label for="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ip_start">'+l((e.tr||t&&t.tr||o).call(t,"IP Start",{name:"tr",hash:{},data:n}))+':\n        <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"First IP address",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <input wizard_field="IP" type="text" name="IP" id="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ip_start"/>\n    </div>\n    <div class="row collapse ar_input type_ip4 type_ip4_6 type_ip6 type_ether">\n      <label for="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_mac_start">'+l((e.tr||t&&t.tr||o).call(t,"MAC Start",{name:"tr",hash:{},data:n}))+':\n        <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"First MAC address",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <input wizard_field="MAC" type="text" name="MAC" id="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_mac_start" />\n    </div>\n  </div>\n  <div class="large-6 columns ar_input type_ip4 type_ip4_6 type_ip6 type_ether">\n    <label for="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_size">'+l((e.tr||t&&t.tr||o).call(t,"Size",{name:"tr",hash:{},data:n}))+':\n      <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Number of addresses in the range",{name:"tr",hash:{},data:n}))+'</span>\n    </label>\n    <input wizard_field="SIZE" required type="text" name="SIZE" id="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_size" />\n  </div>\n</div>\n<div class="row">\n  <div class="large-6 columns ar_input type_ip4_6 type_ip6">\n    <label for="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_global_prefix">'+l((e.tr||t&&t.tr||o).call(t,"Global prefix",{name:"tr",hash:{},data:n}))+':\n      <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"IPv6 global address prefix to create leases",{name:"tr",hash:{},data:n}))+'</span>\n    </label>\n    <input wizard_field="GLOBAL_PREFIX" type="text" name="GLOBAL_PREFIX" id="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_global_prefix"/>\n  </div>\n  <div class="large-6 columns ar_input type_ip4_6 type_ip6">\n    <label for="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ula_prefix">'+l((e.tr||t&&t.tr||o).call(t,"ULA prefix",{name:"tr",hash:{},data:n}))+':\n      <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"IPv6 unique local address (ULA) prefix to create leases",{name:"tr",hash:{},data:n}))+'</span>\n    </label>\n    <input wizard_field="ULA_PREFIX" type="text" name="ULA_PREFIX" id="'+l((i=null!=(i=e.str_ar_tab_id||(null!=t?t.str_ar_tab_id:t))?i:o,typeof i===r?i.call(t,{name:"str_ar_tab_id",hash:{},data:n}):i))+'_ula_prefix"/>\n  </div>\n</div>\n';
+return s=(e.advancedSection||t&&t.advancedSection||o).call(t,(e.tr||t&&t.tr||o).call(t,"Advanced Options",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c},useData:!0});return e.registerPartial("tabs/vnets-tab/utils/ar-tab/html",a),a}),define("tabs/vnets-tab/utils/ar-tab",["require","utils/locale","utils/tips","utils/custom-tags-table","utils/wizard-fields","tabs/secgroups-tab/datatable","hbs!./ar-tab/html"],function(t){function e(){return this}function a(t){var e={info:!1,select:!0,selectOptions:{multiple_choice:!0}};return this.securityGroupsTable=new d(t,e),u({str_ar_tab_id:t,customTagsHTML:l.html(),securityGroupsTableHTML:this.securityGroupsTable.dataTableHTML})}function n(t,e){this.ar_section=t,$('input[name$="ar_type"]',t).change(function(){switch($("div.ar_input",t).hide(),$('input[wizard_field="IP"]',t).removeAttr("required"),$(this).val()){case"IP4":$("div.type_ip4",t).show(),$('input[wizard_field="IP"]',t).attr("required","");break;case"IP4_6":$("div.type_ip4_6",t).show(),$('input[wizard_field="IP"]',t).attr("required","");break;case"IP6":$("div.type_ip6",t).show();break;case"ETHER":$("div.type_ether",t).show()}}),$("input#"+e+"_ar_type_ip4",t).prop("checked",!0),$("input#"+e+"_ar_type_ip4",t).change(),l.setup($("#"+e+"_custom_tags",t)),this.securityGroupsTable.initialize(),o.setup(t)}function s(){this.securityGroupsTable.refreshResourceTableSelect()}function i(){var t={},e=$('input[name$="ar_type"]:checked',this.ar_section).val(),a=[];switch(e){case"IP4":a=$("div.type_ip4",this.ar_section).children("input");break;case"IP4_6":a=$("div.type_ip4_6",this.ar_section).children("input");break;case"IP6":a=$("div.type_ip6",this.ar_section).children("input");break;case"ETHER":a=$("div.type_ether",this.ar_section).children("input")}a.each(function(){var e=$(this);null!=e.val()&&e.val().length&&(t[e.attr("name")]=e.val())}),$.isEmptyObject(t)||(t.TYPE=e),$.extend(t,l.retrieve(this.ar_section));var n=($('div[name="str_ar_tab_id"]',this.ar_section).attr("str_ar_tab_id"),this.securityGroupsTable.retrieveResourceTableSelect());return void 0!=n&&0!=n.length&&(t.SECURITY_GROUPS=n.join(",")),t}function r(t){c.fill(this.ar_section,t);var e=$("[wizard_field]",this.ar_section);if(e.each(function(){var e=$(this),a=e.attr("wizard_field");delete t[a]}),delete t.AR_ID,delete t.USED_LEASES,delete t.LEASES,delete t.MAC_END,delete t.IP_END,delete t.IP6_ULA,delete t.IP6_ULA_END,delete t.IP6_GLOBAL,delete t.IP6_GLOBAL_END,void 0!=t.SECURITY_GROUPS&&0!=t.SECURITY_GROUPS.length){var a=t.SECURITY_GROUPS.split(",");this.securityGroupsTable.selectResourceTableSelect({ids:a})}delete t.SECURITY_GROUPS,l.fill(this.ar_section,t),$('input[name$="ar_type"]',this.ar_section).prop("disabled",!0),$('input[wizard_field="IP"]',this.ar_section).prop("disabled",!0),$('input[wizard_field="MAC"]',this.ar_section).prop("disabled",!0)}var o=(t("utils/locale"),t("utils/tips")),l=t("utils/custom-tags-table"),c=t("utils/wizard-fields"),d=t("tabs/secgroups-tab/datatable"),u=t("hbs!./ar-tab/html");return e.prototype={html:a,setup:n,onShow:s,fill:r,retrieve:i},e.prototype.constructor=e,e}),define("tabs/vnets-tab/dialogs/add-ar",["require","utils/dialogs/dialog","hbs!./add-ar/html","tabs/vnets-tab/utils/ar-tab","sunstone","utils/notifier","utils/locale","./add-ar/dialogId"],function(t){function e(){this.dialogId=p,this.arTab=new l,r.call(this)}function a(){return o({arTabHTML:this.arTab.html("add_ar")})}function n(t){var e=this;e.arTab.setup(t,"add_ar"),$("#submit_ar_reset_button",t).click(function(){c.getDialog(p).reset(),c.getDialog(p).show()}),$("#add_ar_form",t).on("invalid",function(){d.notifyError(u.tr("One or more required fields are missing."))}).on("valid",function(){var t=e.arTab.retrieve(),a={AR:t};return c.runAction("Network.add_ar",e.vnetId,a),!1})}function s(){this.arTab.onShow(),$("#vnet_id",this.dialogElement).text(this.vnetId)}function i(t){this.vnetId=t}var r=t("utils/dialogs/dialog"),o=t("hbs!./add-ar/html"),l=t("tabs/vnets-tab/utils/ar-tab"),c=t("sunstone"),d=t("utils/notifier"),u=t("utils/locale"),p=t("./add-ar/dialogId");return e.DIALOG_ID=p,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e.prototype.setId=i,e}),define("hbs!tabs/vnets-tab/dialogs/update-ar/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large max-height" data-reveal >\n  <div class="reveal-body">\n    <form data-abide="ajax" id="update_ar_form" action="">\n      <div class="row">\n        <div class="large-12 columns">\n          <h3 class="subheader" id="">\n            '+l((e.tr||t&&t.tr||o).call(t,"Virtual Network",{name:"tr",hash:{},data:n}))+' <span id="vnet_id"/>\n            <br>\n            '+l((e.tr||t&&t.tr||o).call(t,"Edit Address Range",{name:"tr",hash:{},data:n}))+' <span id="ar_id"/>\n          </h3>\n        </div>\n      </div>\n      ';return i=null!=(i=e.arTabHTML||(null!=t?t.arTabHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"arTabHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n      <div class="reveal-footer">\n        <div class="form_buttons">\n          <button class="button radius right success" id="submit_ar_button" type="submit" value="Network.update_ar">\n            '+l((e.tr||t&&t.tr||o).call(t,"Update",{name:"tr",hash:{},data:n}))+'\n          </button>\n        </div>\n      </div>\n      <a class="close-reveal-modal">&#215;</a>\n    </form>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/vnets-tab/dialogs/update-ar/html",a),a}),define("tabs/vnets-tab/dialogs/update-ar",["require","utils/dialogs/dialog","hbs!./update-ar/html","tabs/vnets-tab/utils/ar-tab","sunstone","utils/notifier","utils/locale","./update-ar/dialogId"],function(t){function e(){this.dialogId=u,this.arTab=new l,r.call(this)}function a(){return o({arTabHTML:this.arTab.html("update_ar")})}function n(t){var e=this;e.arTab.setup(t,"update_ar"),$("#update_ar_form",t).on("invalid",function(){d.notifyError(tr("One or more required fields are missing."))}).on("valid",function(){var t=e.arTab.retrieve();t.AR_ID=e.arId;var a={AR:t};return c.runAction("Network.update_ar",e.vnetId,a),!1})}function s(){this.arTab.onShow()}function i(t){this.vnetId=t.vnetId,this.arId=t.arId,$("#vnet_id",this.dialogElement).text(t.vnetId),$("#ar_id",this.dialogElement).text(t.arId),this.arTab.fill(t.arData)}var r=t("utils/dialogs/dialog"),o=t("hbs!./update-ar/html"),l=t("tabs/vnets-tab/utils/ar-tab"),c=t("sunstone"),d=t("utils/notifier"),u=(t("utils/locale"),t("./update-ar/dialogId"));return e.DIALOG_ID=u,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e.prototype.setParams=i,e}),define("hbs!tabs/vnets-tab/dialogs/reserve/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/advancedSection"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='        <div class="content" id="advanced_reserve">\n          <div class="row">\n            <div class="large-12 columns">\n              <p>'+o((e.tr||t&&t.tr||r).call(t,"You can select the addresses from an specific Address Range",{name:"tr",hash:{},data:n}))+'</p>\n            </div>\n          </div>\n          <div class="row">\n            <div class="large-12 columns">\n              ';return i=null!=(i=e.arsTableHTML||(null!=t?t.arsTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"arsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n            </div>\n          </div>\n          <br>\n          <div class="row">\n            <div class="large-6 columns">\n              <label for="reserve_addr">'+o((e.tr||t&&t.tr||r).call(t,"First address",{name:"tr",hash:{},data:n}))+':</label>\n              <input wizard_field="addr" type="text" id="reserve_addr" placeholder="'+o((e.tr||t&&t.tr||r).call(t,"IPv4 or MAC",{name:"tr",hash:{},data:n}))+'"/>\n            </div>\n          </div>\n        </div>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="'+l((i=null!=(i=e.dialogId||(null!=t?t.dialogId:t))?i:o,typeof i===r?i.call(t,{name:"dialogId",hash:{},data:n}):i))+'" class="reveal-modal large max-height" data-reveal >\n  <div class="reveal-body">\n    <form id="reserve_form" action="">\n      <div class="row">\n        <div class="large-12 columns">\n          <h3 class="subheader" id="">\n            '+l((e.tr||t&&t.tr||o).call(t,"Reservation from Virtual Network",{name:"tr",hash:{},data:n}))+' <span id="vnet_id"/>\n          </h3>\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-6 columns">\n          <label for="reserve_size">'+l((e.tr||t&&t.tr||o).call(t,"Number of addresses",{name:"tr",hash:{},data:n}))+':</label>\n          <input wizard_field="size" type="text" id="reserve_size"/>\n        </div>\n      </div>\n      <div class="row">\n        <div class="large-12 columns">\n          <input type="radio" name="reserve_target" id="reserve_new" value="NEW"/>\n          <label for="reserve_new">\n            '+l((e.tr||t&&t.tr||o).call(t,"Add to a new Virtual Network",{name:"tr",hash:{},data:n}))+'\n          </label>\n          <input type="radio" name="reserve_target" id="reserve_add" value="ADD"/>\n          <label for="reserve_add">\n            '+l((e.tr||t&&t.tr||o).call(t,"Add to an existing Reservation",{name:"tr",hash:{},data:n}))+'\n          </label>\n        </div>\n      </div>\n      <div id="reserve_new_body">\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="reserve_name">'+l((e.tr||t&&t.tr||o).call(t,"Virtual Network Name",{name:"tr",hash:{},data:n}))+':</label>\n            <input wizard_field="name" type="text" id="reserve_name"/>\n          </div>\n        </div>\n      </div>\n      <div id="reserve_add_body">\n        ';return i=null!=(i=e.vnetsTableHTML||(null!=t?t.vnetsTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"vnetsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+="\n      </div>\n      <br>\n",s=(e.advancedSection||t&&t.advancedSection||o).call(t,(e.tr||t&&t.tr||o).call(t,"Advanced Options",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+'      <div class="reveal-footer">\n        <div class="form_buttons">\n          <button class="button radius right success" id="submit_reserve_button" type="submit" value="Network.reserve">\n            '+l((e.tr||t&&t.tr||o).call(t,"Reserve",{name:"tr",hash:{},data:n}))+'\n          </button>\n        </div>\n      </div>\n      <a class="close-reveal-modal">&#215;</a>\n    </form>\n  </div>\n</div>'},useData:!0});return e.registerPartial("tabs/vnets-tab/dialogs/reserve/html",a),a}),define("tabs/vnets-tab/dialogs/reserve/ar-datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","opennebula/network","tabs/vnets-tab/utils/common","utils/notifier","utils/progress-bar"],function(t){function e(t,e){this.conf=e||{},this.dataTableId=t,this.vnetId=e.vnetId,this.dataTableOptions={bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[]},this.columns=[i.tr("Address Range"),i.tr("Type"),i.tr("Start"),i.tr("IPv6 Prefix"),i.tr("Leases")],this.selectOptions={id_index:1,name_index:1,select_resource:i.tr("Please select an Address Range from the list"),you_selected:i.tr("You selected the following Address Range:")},s.call(this)}function a(){var t=this;r.show({data:{id:t.vnetId},timeout:!0,success:function(e,a){var n=[],s=o.getARList(a.VNET);$.each(s,function(){var t,e=this,a=e.AR_ID;t="IP4"==e.TYPE||"IP4_6"==e.TYPE?e.IP?e.IP:"--":e.MAC?e.MAC:"--";var s="";e.GLOBAL_PREFIX&&e.ULA_PREFIX?s+=e.GLOBAL_PREFIX+"<br>"+e.ULA_PREFIX:e.GLOBAL_PREFIX?s+=e.GLOBAL_PREFIX:e.ULA_PREFIX?s+=e.ULA_PREFIX:s="--",n.push([null,a,e.TYPE?e.TYPE:"--",t,s,c.html(e.USED_LEASES,e.SIZE)])}),t.updateView(null,n,!0)},error:l.onError})}function n(){return[]}var s=t("utils/tab-datatable"),i=(t("sunstone-config"),t("utils/locale")),r=t("opennebula/network"),o=t("tabs/vnets-tab/utils/common"),l=t("utils/notifier"),c=t("utils/progress-bar");return e.prototype=Object.create(s.prototype),e.prototype.constructor=e,e.prototype.elementArray=n,e.prototype.updateFn=a,e}),define("tabs/vnets-tab/dialogs/reserve",["require","utils/dialogs/dialog","hbs!./reserve/html","sunstone","utils/locale","utils/tips","utils/wizard-fields","tabs/vnets-tab/datatable","./reserve/ar-datatable","./reserve/dialogId"],function(t){function e(){this.dialogId=h,r.call(this)}function a(){var t=this,e={info:!1,select:!0,selectOptions:{filter_fn:function(e){return e.PARENT_NETWORK_ID==t.vnetId}}};this.vnetsTable=new u("reserve",e);var a={info:!1,select:!0,vnetId:this.vnetId};return this.arsTable=new p("ar_reserve",a),o({vnetsTableHTML:this.vnetsTable.dataTableHTML,arsTableHTML:this.arsTable.dataTableHTML})}function n(t){var e=this;$('input[name="reserve_target"]',t).change(function(){switch($("div#reserve_new_body",t).hide(),$("div#reserve_add_body",t).hide(),$("input",$("div#reserve_new_body",t)).prop("wizard_field_disabled",!0),$("input",$("div#reserve_add_body",t)).prop("wizard_field_disabled",!0),$(this).val()){case"NEW":$("div#reserve_new_body",t).show(),$("input",$("div#reserve_new_body",t)).prop("wizard_field_disabled",!1);break;case"ADD":$("div#reserve_add_body",t).show(),$("input",$("div#reserve_add_body",t)).prop("wizard_field_disabled",!1)}}),$("input#reserve_new",t).prop("checked",!0),$("input#reserve_new",t).change(),e.vnetsTable.idInput().attr("wizard_field","vnet"),e.arsTable.idInput().attr("wizard_field","ar_id"),this.vnetsTable.initialize(),this.arsTable.initialize(),c.setup(t),$("#reserve_form",t).submit(function(){var a=d.retrieve(t);return l.runAction("Network.reserve",e.vnetId,a),!1})}function s(){this.vnetsTable.refreshResourceTableSelect(),this.arsTable.refreshResourceTableSelect()}function i(t){this.vnetId=t.vnetId,$("#vnet_id",this.dialogElement).text(t.vnetId)}var r=t("utils/dialogs/dialog"),o=t("hbs!./reserve/html"),l=t("sunstone"),c=(t("utils/locale"),t("utils/tips")),d=t("utils/wizard-fields"),u=t("tabs/vnets-tab/datatable"),p=t("./reserve/ar-datatable"),h=t("./reserve/dialogId");return e.DIALOG_ID=h,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e.prototype.setParams=i,e}),define("hbs!tabs/vnets-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table id="info_vnet_table" class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n          <td></td>\n        </tr>\n        ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+="\n        <tr>\n          ",i=null!=(i=e.clusterTrHTML||(null!=t?t.clusterTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"clusterTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+="\n        </tr>\n        ",i=null!=(i=e.reservationTrHTML||(null!=t?t.reservationTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"reservationTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n      <tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">\n    ',i=null!=(i=e.permissionsTableHTML||(null!=t?t.permissionsTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"permissionsTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n  </div>\n</div>\n<div class="row">\n  <div class="large-9 columns">\n    ',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"\n  </div>\n</div>\n"},useData:!0});return e.registerPartial("tabs/vnets-tab/panels/info/html",a),a}),define("tabs/vnets-tab/panels/info/panelId",["require"],function(){return"vnet_info_tab"}),define("tabs/vnets-tab/panels/info",["require","hbs!./info/html","utils/locale","utils/panel/permissions-table","utils/panel/cluster-tr","utils/panel/rename-tr","opennebula/network","utils/panel/template-table","../tabId","./info/panelId"],function(t){function e(t){return this.title=i.tr("Info"),this.icon="fa-info-circle",this.element=t[h],this}function a(){var t=l.html(p,this.element.NAME),e=o.html(this.element.CLUSTER),a=r.html(d,p,this.element),n=$.extend({},this.element.TEMPLATE);delete n.SECURITY_GROUPS;var u=c.html(n,p,i.tr("Attributes")),h="";return this.element.PARENT_NETWORK_ID.length>0?(h='<tr>          <td class="key_td">'+i.tr("Reservation parent")+'</td>          <td class="value_td">'+this.element.PARENT_NETWORK_ID+"</td>          <td></td>        </tr>",$(".reserve-right-info").prop("disabled",!0),$(".reserve-right-info").addClass("has-tip"),$(".reserve-right-info").attr("title",i.tr("This Network is already a reservation"))):($(".reserve-right-info").prop("disabled",!1),$(".reserve-right-info").removeClass("has-tip"),$(".reserve-right-info").removeAttr("title")),s({element:this.element,renameTrHTML:t,clusterTrHTML:e,reservationTrHTML:h,permissionsTableHTML:a,templateTableHTML:u})}function n(t){l.setup(p,this.element.ID,t),o.setup(p,this.element.ID,this.element.CLUSTER_ID,t),r.setup(d,p,this.element,t);var e=$.extend({},this.element.TEMPLATE);delete e.SECURITY_GROUPS;var a={};return void 0!=this.element.TEMPLATE.SECURITY_GROUPS&&(a.SECURITY_GROUPS=this.element.TEMPLATE.SECURITY_GROUPS),c.setup(e,p,this.element.ID,t,a),!1}var s=t("hbs!./info/html"),i=t("utils/locale"),r=t("utils/panel/permissions-table"),o=t("utils/panel/cluster-tr"),l=t("utils/panel/rename-tr"),c=(t("opennebula/network"),t("utils/panel/template-table")),d=t("../tabId"),u=t("./info/panelId"),p="Network",h="VNET";return e.PANEL_ID=u,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/vnets-tab/panels/ar/html",["hbs","hbs/handlebars","templates/helpers/isTabActionEnabled","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'        <button class="button success small radius" id="add_ar_button">\n          <span class="fa fa-plus"></span>'+i((e.tr||t&&t.tr||s).call(t,"Add",{name:"tr",hash:{},data:n}))+"\n        </button>\n"},3:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'          <button class="button secondary small radius" id="update_ar_button" ar_id="" disabled="disabled">\n            <span class="fa fa-pencil-square-o"></span>'+i((e.tr||t&&t.tr||s).call(t,"Update",{name:"tr",hash:{},data:n}))+"\n          </button>\n"},5:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'          <button class="button secondary small radius" id="rm_ar_button" ar_id="" disabled="disabled">\n            <span class="fa fa-trash-o"></span>'+i((e.tr||t&&t.tr||s).call(t,"Remove",{name:"tr",hash:{},data:n}))+"\n          </button>\n"},7:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='            <tr ar="'+l((i=null!=(i=e.id||(null!=t?t.id:t))?i:o,typeof i===r?i.call(t,{name:"id",hash:{},data:n}):i))+'">\n              <td style="white-space: nowrap" class="value_td">'+l((i=null!=(i=e.id||(null!=t?t.id:t))?i:o,typeof i===r?i.call(t,{name:"id",hash:{},data:n}):i))+'</td>\n              <td style="white-space: nowrap" class="value_td">'+l((i=null!=(i=e.type||(null!=t?t.type:t))?i:o,typeof i===r?i.call(t,{name:"type",hash:{},data:n}):i))+'</td>\n              <td style="white-space: nowrap" class="value_td">'+l((i=null!=(i=e.start||(null!=t?t.start:t))?i:o,typeof i===r?i.call(t,{name:"start",hash:{},data:n}):i))+'</td>\n              <td style="white-space: nowrap" class="value_td">';return i=null!=(i=e.prefixHTML||(null!=t?t.prefixHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"prefixHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='</td>\n              <td style="white-space: nowrap" class="value_td">',i=null!=(i=e.leasesHTML||(null!=t?t.leasesHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"leasesHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"</td>\n            </tr>\n"},9:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'      <div class="text-center">\n        <span class="fa-stack fa-5x" style="color: #dfdfdf">\n          <i class="fa fa-cloud fa-stack-2x"></i>\n          <i class="fa fa-info-circle fa-stack-1x fa-inverse"></i>\n        </span>\n        <br>\n        <br>\n        <span style="font-size: 18px; color: #999">\n          '+i((e.tr||t&&t.tr||s).call(t,"Select an Address Range to see more information",{name:"tr",hash:{},data:n}))+"\n        </span>\n      </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<form id="ar_list_form">\n  <div class="row collapse">\n    <div class="large-12 columns">\n';return s=(e.isTabActionEnabled||t&&t.isTabActionEnabled||i).call(t,"vnets-tab","Network.add_ar",{name:"isTabActionEnabled",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+='      <span class="right">\n',s=(e.isTabActionEnabled||t&&t.isTabActionEnabled||i).call(t,"vnets-tab","Network.update_ar",{name:"isTabActionEnabled",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(o+=s),s=(e.isTabActionEnabled||t&&t.isTabActionEnabled||i).call(t,"vnets-tab","Network.remove_ar",{name:"isTabActionEnabled",hash:{},fn:this.program(5,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+='      </span>\n    </div>\n  </div>\n  <div class="row collapse">\n    <div class="large-12 columns" style="overflow:auto">\n      <table id="ar_list_datatable" class="datatable twelve">\n        <thead>\n          <tr>\n            <th>'+r((e.tr||t&&t.tr||i).call(t,"Address Range",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+r((e.tr||t&&t.tr||i).call(t,"Type",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+r((e.tr||t&&t.tr||i).call(t,"Start",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+r((e.tr||t&&t.tr||i).call(t,"IPv6 Prefix",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+r((e.tr||t&&t.tr||i).call(t,"Leases",{name:"tr",hash:{},data:n}))+"</th>\n          </tr>\n        </thead>\n        <tbody>\n",s=e.each.call(t,null!=t?t.arList:t,{name:"each",hash:{},fn:this.program(7,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+='        </tbody>\n      </table>\n    </div>\n  </div>\n  <div id="ar_show_info">\n',s=e["if"].call(t,null!=t?t.arList:t,{name:"if",hash:{},fn:this.program(9,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+"  </div>\n</form>"},useData:!0});return e.registerPartial("tabs/vnets-tab/panels/ar/html",a),a}),define("hbs!tabs/vnets-tab/panels/ar/arInfo",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i="";return s=e["if"].call(t,null!=t?t.value:t,{name:"if",hash:{},fn:this.program(2,n),inverse:this.noop,data:n}),null!=s&&(i+=s),i},2:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'            <tr>\n              <td class="key_td">'+o((s=null!=(s=e.key||(null!=t?t.key:t))?s:r,typeof s===i?s.call(t,{name:"key",hash:{},data:n}):s))+'</td>\n              <td class="value_td">'+o((s=null!=(s=e.value||(null!=t?t.value:t))?s:r,typeof s===i?s.call(t,{name:"value",hash:{},data:n}):s))+"</td>\n            </tr>\n"},4:function(t,e,a,n){var s=this.lambda,i=this.escapeExpression;return'          <tr>\n           <td class="key_td">'+i(s(n&&n.key,t))+'</td>\n           <td class="value_td">'+i(s(t,t))+"</td>\n         </tr>\n"},6:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o="function";return'          <tr>\n            <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"IP",{name:"tr",hash:{},data:n}))+'</td>\n            <td class="value_td">'+r((s=null!=(s=e.first_ip||(null!=t?t.first_ip:t))?s:i,typeof s===o?s.call(t,{name:"first_ip",hash:{},data:n}):s))+'</td>\n            <td class="value_td">'+r((s=null!=(s=e.last_ip||(null!=t?t.last_ip:t))?s:i,typeof s===o?s.call(t,{name:"last_ip",hash:{},data:n}):s))+"</td>\n          </tr>\n"},8:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o="function";return'          <tr>\n            <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"IP6_GLOBAL",{name:"tr",hash:{},data:n}))+'</td>\n            <td class="value_td">'+r((s=null!=(s=e.first_ip6_global||(null!=t?t.first_ip6_global:t))?s:i,typeof s===o?s.call(t,{name:"first_ip6_global",hash:{},data:n}):s))+'</td>\n            <td class="value_td">'+r((s=null!=(s=e.last_ip6_global||(null!=t?t.last_ip6_global:t))?s:i,typeof s===o?s.call(t,{name:"last_ip6_global",hash:{},data:n}):s))+"</td>\n          </tr>\n"},10:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o="function";return'          <tr>\n            <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"IP6_ULA",{name:"tr",hash:{},data:n}))+'</td>\n            <td class="value_td">'+r((s=null!=(s=e.first_ip6_ula||(null!=t?t.first_ip6_ula:t))?s:i,typeof s===o?s.call(t,{name:"first_ip6_ula",hash:{},data:n}):s))+'</td>\n            <td class="value_td">'+r((s=null!=(s=e.last_ip6_ula||(null!=t?t.last_ip6_ula:t))?s:i,typeof s===o?s.call(t,{name:"last_ip6_ula",hash:{},data:n}):s))+"</td>\n          </tr>\n"},12:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='  <div class="row collapse">\n    <div class="large-12 columns">\n      <table class="dataTable extended_table">\n        <thead>\n          <tr><th>'+o((e.tr||t&&t.tr||r).call(t,"Security Groups",{name:"tr",hash:{},data:n}))+'</th></tr>\n        </thead>\n        <tbody/>\n      </table>\n    </div>\n    <div class="large-12 columns">\n      ';return i=null!=(i=e.secgroupTableHTML||(null!=t?t.secgroupTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"secgroupTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n    </div>\n  </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='<div class="row collapse">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr><th colspan="2">'+o((e.tr||t&&t.tr||r).call(t,"Address Range",{name:"tr",hash:{},data:n}))+" "+o((i=null!=(i=e.arId||(null!=t?t.arId:t))?i:r,typeof i===l?i.call(t,{name:"arId",hash:{},data:n}):i))+"</th></tr>\n      </thead>\n      <tbody>\n";return s=e.each.call(t,null!=t?t.arKnownAttr:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr><th colspan="2">&nbsp;</th></tr>\n      </thead>\n      <tbody>\n',s=e.each.call(t,null!=t?t.arExtraAttr:t,{name:"each",hash:{},fn:this.program(4,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='      </tbody>\n    </table>\n  </div>\n</div>\n<div class="row collapse">\n  <div class="large-12 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th>'+o((e.tr||t&&t.tr||r).call(t,"Range",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+o((e.tr||t&&t.tr||r).call(t,"First",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+o((e.tr||t&&t.tr||r).call(t,"Last",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"MAC",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.first_mac||(null!=t?t.first_mac:t))?i:r,typeof i===l?i.call(t,{name:"first_mac",hash:{},data:n}):i))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.last_mac||(null!=t?t.last_mac:t))?i:r,typeof i===l?i.call(t,{name:"last_mac",hash:{},data:n}):i))+"</td>\n        </tr>\n",s=e["if"].call(t,null!=t?t.first_ip:t,{name:"if",hash:{},fn:this.program(6,n),inverse:this.noop,data:n}),null!=s&&(c+=s),s=e["if"].call(t,null!=t?t.first_ip6_global:t,{name:"if",hash:{},fn:this.program(8,n),inverse:this.noop,data:n}),null!=s&&(c+=s),s=e["if"].call(t,null!=t?t.first_ip6_ula:t,{name:"if",hash:{},fn:this.program(10,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+="      </tbody>\n    </table>\n  </div>\n</div>\n",s=e["if"].call(t,null!=t?t.secgroupTableHTML:t,{name:"if",hash:{},fn:this.program(12,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c},useData:!0});return e.registerPartial("tabs/vnets-tab/panels/ar/arInfo",a),a}),define("tabs/vnets-tab/panels/ar/panelId",["require"],function(){return"vnet_ar_list_tab"}),define("tabs/vnets-tab/panels/ar",["require","hbs!./ar/html","hbs!./ar/arInfo","utils/locale","utils/progress-bar","sunstone-config","../utils/common","tabs/secgroups-tab/datatable","sunstone","opennebula/network","utils/notifier","../tabId","./ar/panelId","../dialogs/add-ar/dialogId","../dialogs/update-ar/dialogId"],function(t){function e(t){return this.title=c.tr("Addresses"),this.icon="fa-align-justify",this.element=t[g],this.last_selected_row_ar="",this.secgroupTable=void 0,this}function a(){for(var t=p.getARList(this.element),e=[],a=0;a<t.length;a++){var n=t[a],s=n.AR_ID,i=n.TYPE?n.TYPE:"--",r="";r="IP4"==n.TYPE||"IP4_6"==n.TYPE?n.IP?n.IP:"--":n.MAC?n.MAC:"--";var l="";n.GLOBAL_PREFIX&&n.ULA_PREFIX?l+=n.GLOBAL_PREFIX+"<br>"+n.ULA_PREFIX:n.GLOBAL_PREFIX?l+=n.GLOBAL_PREFIX:n.ULA_PREFIX?l+=n.ULA_PREFIX:l="--";var c=d.html(n.USED_LEASES,n.SIZE);e.push({id:s,type:i,start:r,prefixHTML:l,leasesHTML:c})}return o({element:this.element,arList:e})}function n(t){var e=this,a=$("#ar_list_datatable",t).dataTable({bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[]});return a.fnSort([[0,config.user_config.table_order]]),a.off("click","tbody tr"),a.on("click","tbody tr",function(){var n=a.fnGetData(this);if(!n)return!0;var s=n[0];return s?(e.last_selected_row_ar&&e.last_selected_row_ar.children().each(function(){$(this).removeClass("markrowchecked")}),e.last_selected_row_ar=$(this),$(this).children().each(function(){$(this).addClass("markrowchecked")}),$("#update_ar_button",t).attr("ar_id",s),$("#update_ar_button",t).prop("disabled",!1),$("#rm_ar_button",t).attr("ar_id",s).removeAttr("disabled"),$("#ar_show_info",t).html(i(e.element,s)),r($("#ar_show_info",t),e.element,s),!1):!0}),u.isTabActionEnabled("vnets-tab","Network.remove_ar")&&(t.off("click","button#rm_ar_button"),t.on("click","button#rm_ar_button",function(){var t=$(this).attr("ar_id"),a={ar_id:t};return f.runAction("Network.rm_ar",e.element.ID,a),!1})),u.isTabActionEnabled("vnets-tab","Network.add_ar")&&(t.off("click","button#add_ar_button"),t.on("click","button#add_ar_button",function(){var t=e.element.ID;return f.getDialog(y).setId(t),f.getDialog(y).show(),!1})),u.isTabActionEnabled("vnets-tab","Network.update_ar")&&(t.off("click","button#update_ar_button"),t.on("click","button#update_ar_button",function(){var t=e.element.ID,a=$(this).attr("ar_id");return m.show({data:{id:t},timeout:!0,success:function(e,n){var i=n.VNET,r=s(i,a);void 0!=r?(f.getDialog(w).reset(),f.getDialog(w).setParams({vnetId:t,arId:a,arData:$.extend({},r)}),f.getDialog(w).show()):(_.notifyError(c.tr("The Adress Range was not found")),f.runAction("Network.show",t))},error:_.onError}),!1})),!1}function s(t,e){for(var a=p.getARList(t),n=void 0,s=0;s<a.length;s++)if(e==a[s].AR_ID){n=$.extend({},a[s]);
+break}return n}function i(t,e){var a=s(t,e);if(void 0==a)return"";var n=a.MAC,i=a.MAC_END,r=a.IP,o=a.IP_END,d=a.IP6_GLOBAL,u=a.IP6_GLOBAL_END,p=a.IP6_ULA,f=a.IP6_ULA_END,m=[{key:c.tr("Type"),value:a.TYPE},{key:c.tr("MAC Start"),value:a.MAC},{key:c.tr("IP Start"),value:a.IP},{key:c.tr("Global prefix"),value:a.GLOBAL_PREFIX},{key:c.tr("ULA prefix"),value:a.ULA_PREFIX},{key:c.tr("Size"),value:a.SIZE},{key:c.tr("Used leases"),value:a.USED_LEASES},{key:c.tr("Reservation parent AR"),value:a.PARENT_NETWORK_AR_ID}];delete a.MAC_END,delete a.IP_END,delete a.IP6_ULA,delete a.IP6_ULA_END,delete a.IP6_GLOBAL,delete a.IP6_GLOBAL_END,delete a.AR_ID,delete a.TYPE,delete a.MAC,delete a.IP,delete a.GLOBAL_PREFIX,delete a.ULA_PREFIX,delete a.SIZE,delete a.USED_LEASES,delete a.LEASES,delete a.PARENT_NETWORK_AR_ID,this.secgroupTable=void 0;var _=void 0;if(void 0!=a.SECURITY_GROUPS&&0!=a.SECURITY_GROUPS.length){var b=a.SECURITY_GROUPS.split(","),g={info:!0,select:!0,selectOptions:{read_only:!0,fixed_ids:b}};this.secgroupTable=new h(v,g),_=this.secgroupTable.dataTableHTML}delete a.SECURITY_GROUPS;var y=a;return l({arId:e,arKnownAttr:m,arExtraAttr:y,first_mac:n,last_mac:i,first_ip:r,last_ip:o,first_ip6_global:d,last_ip6_global:u,first_ip6_ula:p,last_ip6_ula:f,secgroupTableHTML:_})}function r(t,e,a){var n=s(e,a);void 0!=n&&void 0!=this.secgroupTable&&(this.secgroupTable.initialize(),this.secgroupTable.refreshResourceTableSelect())}var o=t("hbs!./ar/html"),l=t("hbs!./ar/arInfo"),c=t("utils/locale"),d=t("utils/progress-bar"),u=t("sunstone-config"),p=t("../utils/common"),h=t("tabs/secgroups-tab/datatable"),f=t("sunstone"),m=t("opennebula/network"),_=t("utils/notifier"),b=(t("../tabId"),t("./ar/panelId")),v=b+"SecurityGroupsTable",g="VNET",y=t("../dialogs/add-ar/dialogId"),w=t("../dialogs/update-ar/dialogId");return e.PANEL_ID=b,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/vnets-tab/panels/leases/html",["hbs","hbs/handlebars","templates/helpers/isTabActionEnabled","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'    <div class="row collapse">\n      <div class="large-4 columns">\n        <input type="text" id="panel_hold_lease"/>\n      </div>\n      <div class="large-2 columns end">\n        <button class="button small secondary radius" id="panel_hold_lease_button">\n          '+i((e.tr||t&&t.tr||s).call(t,"Hold IP",{name:"tr",hash:{},data:n}))+"\n        </button>\n      </div>\n    </div>\n"},3:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='            <tr ip="'+l((i=null!=(i=e.IP||(null!=t?t.IP:t))?i:o,typeof i===r?i.call(t,{name:"IP",hash:{},data:n}):i))+'" mac="'+l((i=null!=(i=e.MAC||(null!=t?t.MAC:t))?i:o,typeof i===r?i.call(t,{name:"MAC",hash:{},data:n}):i))+'">\n              <td class="key_td">';return i=null!=(i=e.col0HTML||(null!=t?t.col0HTML:t))?i:o,s=typeof i===r?i.call(t,{name:"col0HTML",hash:{},data:n}):i,null!=s&&(c+=s),c+="</td>\n              <td>",i=null!=(i=e.col1HTML||(null!=t?t.col1HTML:t))?i:o,s=typeof i===r?i.call(t,{name:"col1HTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'</td>\n              <td style="white-space: nowrap" class="value_td">'+l((i=null!=(i=e.IP||(null!=t?t.IP:t))?i:o,typeof i===r?i.call(t,{name:"IP",hash:{},data:n}):i))+'</td>\n              <td style="white-space: nowrap" class="value_td">'+l((i=null!=(i=e.MAC||(null!=t?t.MAC:t))?i:o,typeof i===r?i.call(t,{name:"MAC",hash:{},data:n}):i))+'</td>\n              <td style="white-space: nowrap" class="value_td">'+l((i=null!=(i=e.IP6_LINK||(null!=t?t.IP6_LINK:t))?i:o,typeof i===r?i.call(t,{name:"IP6_LINK",hash:{},data:n}):i))+'</td>\n              <td style="white-space: nowrap" class="value_td">'+l((i=null!=(i=e.IP6_ULA||(null!=t?t.IP6_ULA:t))?i:o,typeof i===r?i.call(t,{name:"IP6_ULA",hash:{},data:n}):i))+'</td>\n              <td style="white-space: nowrap" class="value_td">'+l((i=null!=(i=e.IP6_GLOBAL||(null!=t?t.IP6_GLOBAL:t))?i:o,typeof i===r?i.call(t,{name:"IP6_GLOBAL",hash:{},data:n}):i))+'</td>\n              <td style="white-space: nowrap" class="value_td">'+l((i=null!=(i=e.AR_ID||(null!=t?t.AR_ID:t))?i:o,typeof i===r?i.call(t,{name:"AR_ID",hash:{},data:n}):i))+"</td>\n            </tr>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<form id="leases_form">\n';return s=(e.isTabActionEnabled||t&&t.isTabActionEnabled||i).call(t,"vnets-tab","Network.hold_lease",{name:"isTabActionEnabled",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+='  <div class="row collapse">\n    <div class="large-12 columns" style="overflow:auto">\n      <table id="leases_datatable" class="datatable twelve">\n        <thead>\n          <tr>\n            <th></th>\n            <th></th>\n            <th>'+r((e.tr||t&&t.tr||i).call(t,"IP",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+r((e.tr||t&&t.tr||i).call(t,"MAC",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+r((e.tr||t&&t.tr||i).call(t,"IPv6 Link",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+r((e.tr||t&&t.tr||i).call(t,"IPv6 ULA",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+r((e.tr||t&&t.tr||i).call(t,"IPv6 Global",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+r((e.tr||t&&t.tr||i).call(t,"Address Range",{name:"tr",hash:{},data:n}))+"</th>\n          </tr>\n        </thead>\n        <tbody>\n",s=e.each.call(t,null!=t?t.leases:t,{name:"each",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+"        </tbody>\n      </table>\n    </div>\n  </div>\n</form>"},useData:!0});return e.registerPartial("tabs/vnets-tab/panels/leases/html",a),a}),define("tabs/vnets-tab/panels/leases/panelId",["require"],function(){return"vnet_leases_tab"}),define("tabs/vnets-tab/panels/leases",["require","hbs!./leases/html","utils/locale","sunstone-config","sunstone","../utils/common","../tabId","./leases/panelId"],function(t){function e(t){return this.title=i.tr("Leases"),this.icon="fa-list-ul",this.element=t[d],this}function a(){for(var t=l.getARList(this.element),e=[],a=0;a<t.length;a++){var n=t[a],o=n.AR_ID,c=n.LEASES.LEASE;if(c){c.constructor!=Array&&(c=[c]);for(var d=0;d<c.length;d++){var u=c[d],p="",h="";"-1"==u.VM?(p='<span type="text" class="alert radius label"></span>',r.isTabActionEnabled("vnets-tab","Network.release_lease")&&(h='<a class="release_lease" href="#"><i class="fa fa-play"/></a>')):void 0!=u.VM?(p='<span type="text" class="radius label "></span>',h=i.tr("VM:")+u.VM):void 0!=u.VNET?(p='<span type="text" class="radius label "></span>',h=i.tr("NET:")+u.VNET):(p='<span type="text" class="radius label "></span>',h="--"),e.push({col0HTML:p,col1HTML:h,IP:u.IP?u.IP:"--",MAC:u.MAC?u.MAC:"--",IP6_LINK:u.IP6_LINK?u.IP6_LINK:"--",IP6_ULA:u.IP6_ULA?u.IP6_ULA:"--",IP6_GLOBAL:u.IP6_GLOBAL?u.IP6_GLOBAL:"--",AR_ID:o})}}}return s({element:this.element,leases:e})}function n(t){{var e=this;$("#leases_datatable",t).dataTable({bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:[0,1]}]})}return r.isTabActionEnabled("vnets-tab","Network.hold_lease")&&(t.off("click","button#panel_hold_lease_button"),t.on("click","button#panel_hold_lease_button",function(){var t=$("input#panel_hold_lease").val();if(t.length){var a={ip:t};o.runAction("Network.hold",e.element.ID,a)}return!1}),t.off("click","a.hold_lease"),t.on("click","a.hold_lease",function(){var t=$(this).parents("tr").attr("ip"),a={ip:t};return o.runAction("Network.hold",e.element.ID,a),$(this).parents("tr").html('<td class="key_td">'+spinner+'</td><td class="value_td"></td>'),!1})),r.isTabActionEnabled("vnets-tab","Network.release_lease")&&(t.off("click","a.release_lease"),t.on("click","a.release_lease",function(){var t=$(this).parents("tr").attr("ip");"undefined"==t&&(t=$(this).parents("tr").attr("mac"));var a={ip:t};return o.runAction("Network.release",e.element.ID,a),$(this).parents("tr").html('<td class="key_td">'+spinner+'</td><td class="value_td"></td>'),!1})),!1}var s=t("hbs!./leases/html"),i=t("utils/locale"),r=t("sunstone-config"),o=t("sunstone"),l=t("../utils/common"),c=(t("../tabId"),t("./leases/panelId")),d="VNET";return e.PANEL_ID=c,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/vnets-tab/panels/secgroups/panelId",["require"],function(){return"vnet_sg_list_tab"}),define("tabs/vnets-tab/panels/secgroups",["require","utils/locale","tabs/secgroups-tab/datatable","./secgroups/panelId"],function(t){function e(t){return this.title=s.tr("Security"),this.icon="fa-shield",this.element=t[l],this}function a(){var t=[];void 0!=this.element.TEMPLATE.SECURITY_GROUPS&&0!=this.element.TEMPLATE.SECURITY_GROUPS.length&&(t=this.element.TEMPLATE.SECURITY_GROUPS.split(","));var e={info:!0,select:!0,selectOptions:{read_only:!0,fixed_ids:t}};return this.secgroupTable=new i(o,e),this.secgroupTable.dataTableHTML}function n(){return this.secgroupTable.initialize(),this.secgroupTable.refreshResourceTableSelect(),!1}var s=t("utils/locale"),i=t("tabs/secgroups-tab/datatable"),r=t("./secgroups/panelId"),o=r+"SecurityGroupsTable",l="VNET";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/vnets-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<form data-abide="ajax" id="'+l((i=null!=(i=e.formPanelId||(null!=t?t.formPanelId:t))?i:o,typeof i===r?i.call(t,{name:"formPanelId",hash:{},data:n}):i))+'Wizard" class="custom creation">\n  <div>\n    <dl id="vnet_create_tabs" class="tabs right-info-tabs text-center" data-tab>\n      <dd class="active">\n        <a href="#vnetCreateGeneralTab"> <i class="fa fa-globe"></i>\n          <br>'+l((e.tr||t&&t.tr||o).call(t,"General",{name:"tr",hash:{},data:n}))+'</a>\n      </dd>\n      <dd>\n        <a href="#vnetCreateBridgeTab"> <i class="fa fa-cog"></i>\n          <br>'+l((e.tr||t&&t.tr||o).call(t,"Conf",{name:"tr",hash:{},data:n}))+'</a>\n      </dd>\n      <dd>\n        <a href="#vnetCreateARTab">\n          <i class="fa fa-align-justify"></i>\n          <br>'+l((e.tr||t&&t.tr||o).call(t,"Addresses",{name:"tr",hash:{},data:n}))+'</a>\n      </dd>\n      <dd>\n        <a href="#vnetCreateSecurityTab">\n          <i class="fa fa-shield"></i>\n          <br>'+l((e.tr||t&&t.tr||o).call(t,"Security",{name:"tr",hash:{},data:n}))+'</a>\n      </dd>\n      <dd>\n        <a href="#vnetCreateContextTab">\n          <i class="fa fa-folder"></i>\n          <br>'+l((e.tr||t&&t.tr||o).call(t,"Context",{name:"tr",hash:{},data:n}))+'</a>\n      </dd>\n    </dl>\n    <div id="vnet_create_tabs_content" class="tabs-content">\n      <div class="content active" id="vnetCreateGeneralTab">\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="name" >\n              '+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">\n                '+l((e.tr||t&&t.tr||o).call(t,"Name that the Virtual Network will get for description purposes.",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n            <input type="text" wizard_field="NAME" required name="name" id="name"/>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="DESCRIPTION" >\n              '+l((e.tr||t&&t.tr||o).call(t,"Description",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Description of the Virtual Network",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n            <textarea type="text" wizard_field="DESCRIPTION" id="DESCRIPTION" name="DESCRIPTION"/>\n          </div>\n        </div>\n      </div>\n      <div class="content" id="vnetCreateBridgeTab">\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="bridge">\n              '+l((e.tr||t&&t.tr||o).call(t,"Bridge",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">\n                '+l((e.tr||t&&t.tr||o).call(t,"Name of the physical bridge in the physical host where the VM should connect its network interface",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n            <input type="text" wizard_field="BRIDGE" name="bridge" id="bridge" />\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="network_mode">\n              '+l((e.tr||t&&t.tr||o).call(t,"Network model",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">\n                '+l((e.tr||t&&t.tr||o).call(t,"Choose the same networking model you chose for the hosts that will use this newtork",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n            <select name="network_mode" id="network_mode">\n              <option value="default">'+l((e.tr||t&&t.tr||o).call(t,"Default",{name:"tr",hash:{},data:n}))+'</option>\n              <option value="802.1Q">'+l((e.tr||t&&t.tr||o).call(t,"802.1Q",{name:"tr",hash:{},data:n}))+'</option>\n              <option value="vxlan">'+l((e.tr||t&&t.tr||o).call(t,"VXLAN",{name:"tr",hash:{},data:n}))+'</option>\n              <option value="ebtables">'+l((e.tr||t&&t.tr||o).call(t,"ebtables",{name:"tr",hash:{},data:n}))+'</option>\n              <option value="openvswitch">'+l((e.tr||t&&t.tr||o).call(t,"Open vSwitch",{name:"tr",hash:{},data:n}))+'</option>\n              <option value="vmware">'+l((e.tr||t&&t.tr||o).call(t,"VMware",{name:"tr",hash:{},data:n}))+'</option>\n            </select>\n          </div>\n          <div class="large-12 columns">\n            <div class="network_mode_description" value="default">\n              '+l((e.tr||t&&t.tr||o).call(t,"Default: dummy driver that doesn’t perform any network operation. Firewalling rules are also ignored.",{name:"tr",hash:{},data:n}))+'\n            </div>\n            <div class="network_mode_description" value="802.1Q">\n              '+l((e.tr||t&&t.tr||o).call(t,"802.1Q: restrict network access through VLAN tagging, which also requires support from the hardware switches.",{name:"tr",hash:{},data:n}))+'\n            </div>\n            <div class="network_mode_description" value="vxlan">\n              '+l((e.tr||t&&t.tr||o).call(t,"VXLAN: creates a L2 network overlay based on the VXLAN protocol, each VLAN has associated a multicast address in the 239.0.0.0/8 range.",{name:"tr",hash:{},data:n}))+'\n            </div>\n            <div class="network_mode_description" value="ebtables">\n              '+l((e.tr||t&&t.tr||o).call(t,"ebtables: restrict network access through Ebtables rules. No special hardware configuration required.",{name:"tr",hash:{},data:n}))+'\n            </div>\n            <div class="network_mode_description" value="openvswitch">\n              '+l((e.tr||t&&t.tr||o).call(t,"Open vSwitch: restrict network access with Open vSwitch Virtual Switch.",{name:"tr",hash:{},data:n}))+'\n            </div>\n            <div class="network_mode_description" value="vmware">\n              '+l((e.tr||t&&t.tr||o).call(t,"VMware: uses the VMware networking infrastructure to provide an isolated and 802.1Q compatible network for VMs launched with the VMware hypervisor.",{name:"tr",hash:{},data:n}))+'\n            </div>\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="mac_spoofing">\n              <input type="checkbox" wizard_field="FILTER_MAC_SPOOFING" value="YES" name="mac_spoofing" id="mac_spoofing" />\n              '+l((e.tr||t&&t.tr||o).call(t,"Filter MAC spoofing",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">\n                '+l((e.tr||t&&t.tr||o).call(t,"Activate the filter to prevent mac spoofing. Only works with FW, 802.1Q, VXLAN and Ebtables network drivers.",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="ip_spoofing">\n              <input type="checkbox" wizard_field="FILTER_IP_SPOOFING" value="YES" name="ip_spoofing" id="ip_spoofing" />\n              '+l((e.tr||t&&t.tr||o).call(t,"Filter IP spoofing",{name:"tr",hash:{},data:n}))+'\n              <span class="tip">\n                '+l((e.tr||t&&t.tr||o).call(t,"Activate the filter to prevent IP spoofing. Only works with FW, 802.1Q, VXLAN and Ebtables network drivers.",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-6 columns">\n            <div class="row">\n              <div class="large-6 columns">\n                <label for="vlan">\n                  '+l((e.tr||t&&t.tr||o).call(t,"VLAN",{name:"tr",hash:{},data:n}))+':\n                  <span class="tip">\n                    '+l((e.tr||t&&t.tr||o).call(t,"Whether or not to isolate this virtual network using the Virtual Network Manager drivers",{name:"tr",hash:{},data:n}))+'\n                  </span>\n                </label>\n                <select wizard_field="VLAN" name="vlan" id="vlan">\n                  <option value="YES" selected="selected">'+l((e.tr||t&&t.tr||o).call(t,"Yes",{name:"tr",hash:{},data:n}))+'</option>\n                  <option value="NO">'+l((e.tr||t&&t.tr||o).call(t,"No",{name:"tr",hash:{},data:n}))+'</option>\n                </select>\n              </div>\n              <div class="large-6 columns">\n                <label for="vlan_id">\n                  '+l((e.tr||t&&t.tr||o).call(t,"VLAN ID",{name:"tr",hash:{},data:n}))+':\n                  <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Optional: Set a specific VLAN id",{name:"tr",hash:{},data:n}))+'</span>\n                </label>\n                <input type="text" wizard_field="VLAN_ID" name="vlan_id" id="vlan_id" />\n              </div>\n            </div>\n          </div>\n          <div class="large-6 columns">\n            <div class="row">\n              <div class="large-12 columns">\n                <label for="phydev">\n                  '+l((e.tr||t&&t.tr||o).call(t,"Physical device",{name:"tr",hash:{},data:n}))+':\n                  <span class="tip">\n                    '+l((e.tr||t&&t.tr||o).call(t,"Name of the physical network device that will be attached to the bridge",{name:"tr",hash:{},data:n}))+'\n                  </span>\n                </label>\n                <input type="text" wizard_field="PHYDEV" name="phydev" id="phydev" />\n              </div>\n            </div>\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-3 columns">\n            <label for="mtu">\n              '+l((e.tr||t&&t.tr||o).call(t,"MTU",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">\n                '+l((e.tr||t&&t.tr||o).call(t,"Set the MTU for the tagged interface. This MTU will be then inherited by the bridge and by the tagged interface.",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n            <input type="text" wizard_field="MTU" name="mtu" id="mtu" />\n          </div>\n        </div>\n      </div>\n      <div class="content" id="vnetCreateARTab">\n        <div class="row" id="vnetCreateARTabCreate">\n          <div class="large-12 columns">\n            <div class="row">\n              <dl class="tabs vertical" id="vnet_wizard_ar_tabs" data-tab>\n                <dt class="text-center">\n                  <button type="button" class="button tiny radius" id="vnet_wizard_ar_btn">\n                    <span class="fa fa-plus"></span>\n                    '+l((e.tr||t&&t.tr||o).call(t,"Add another Address Range",{name:"tr",hash:{},data:n}))+'\n                  </button>\n                </dt>\n              </dl>\n              <div class="tabs-content vertical" id="vnet_wizard_ar_tabs_content"></div>\n            </div>\n          </div>\n        </div>\n        <div class="row" id="vnetCreateARTabUpdate">\n          <div class="large-12 columns">\n            <p>\n              '+l((e.tr||t&&t.tr||o).call(t,"Address Ranges need to be managed in the individual Virtual Network panel",{name:"tr",hash:{},data:n}))+'\n            </p>\n          </div>\n        </div>\n      </div>\n      <div class="content" id="vnetCreateSecurityTab">\n        ';return i=null!=(i=e.securityGroupsTableHTML||(null!=t?t.securityGroupsTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"securityGroupsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n        <div class="row" id="default_sg_warning">\n          <div class="large-12 columns">\n            <span class="radius secondary label">\n              <i class="fa fa-warning"/>'+l((e.tr||t&&t.tr||o).call(t,"The default Security Group 0 is automatically added to new Virtual Networks",{name:"tr",hash:{},data:n}))+'\n            </span>\n          </div>\n        </div>\n      </div>\n      <div class="content" id="vnetCreateContextTab">\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="net_address">\n              '+l((e.tr||t&&t.tr||o).call(t,"Network address",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Base network address. For example, 192.168.1.0",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n            <input type="text" wizard_field="NETWORK_ADDRESS" name="net_address" id="net_address" />\n          </div>\n          <div class="large-6 columns">\n            <label for="net_mask">\n              '+l((e.tr||t&&t.tr||o).call(t,"Network mask",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Network mask. For example, 255.255.255.0",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n            <input type="text" wizard_field="NETWORK_MASK" name="net_mask" id="net_mask" />\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="net_gateway">\n              '+l((e.tr||t&&t.tr||o).call(t,"Gateway",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">\n                '+l((e.tr||t&&t.tr||o).call(t,"Router for this network. Leave empty if the network is not routable",{name:"tr",hash:{},data:n}))+'\n              </span>\n            </label>\n            <input type="text" wizard_field="GATEWAY" name="net_gateway" id="net_gateway" />\n          </div>\n          <div class="large-6 columns">\n            <label for="net_gateway6">\n              '+l((e.tr||t&&t.tr||o).call(t,"IPv6 Gateway",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"IPv6 Router for this network",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n            <input type="text" wizard_field="GATEWAY6" name="net_gateway6" id="net_gateway6" />\n          </div>\n        </div>\n        <div class="row">\n          <div class="large-6 columns">\n            <label for="net_dns">\n              '+l((e.tr||t&&t.tr||o).call(t,"DNS",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Specific DNS for this network",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n            <input type="text" wizard_field="DNS" name="net_dns" id="net_dns" />\n          </div>\n        </div>\n        <br>\n        <div class="row">\n          <div class="large-12 columns">\n            <span>'+l((e.tr||t&&t.tr||o).call(t,"Custom attributes",{name:"tr",hash:{},data:n}))+"</span>\n            <br>\n            <br>\n          </div>\n        </div>\n        ",i=null!=(i=e.customTagsHTML||(null!=t?t.customTagsHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"customTagsHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+"\n      </div>\n    </div>\n  </div>\n</form>"},useData:!0});return e.registerPartial("tabs/vnets-tab/form-panels/create/wizard",a),a}),define("hbs!tabs/vnets-tab/form-panels/create/advanced",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Advanced" class="custom creation">\n  <div class="row">\n    <div class="large-12 columns">\n      <p>'+o((e.tr||t&&t.tr||r).call(t,"Write the Virtual Network template here",{name:"tr",hash:{},data:n}))+'</p>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <textarea id="template" rows="15" required></textarea>\n    </div>\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/vnets-tab/form-panels/create/advanced",a),a}),define("tabs/vnets-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","utils/tips","utils/custom-tags-table","tabs/vnets-tab/utils/ar-tab","tabs/secgroups-tab/datatable","utils/template-utils","utils/wizard-fields","hbs!./create/wizard","hbs!./create/advanced","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=w,this.tabId=T,this.actions={create:{title:p.tr("Create Virtual Network"),buttonText:p.tr("Create"),resetButton:!0},update:{title:p.tr("Update Virtual Network"),buttonText:p.tr("Update"),resetButton:!1}},d.call(this)}function a(){var t={info:!1,select:!0,selectOptions:{multiple_choice:!0}};return this.securityGroupsTable=new _("vnet_create",t),g({formPanelId:this.formPanelId,customTagsHTML:f.html(),securityGroupsTableHTML:this.securityGroupsTable.dataTableHTML})}function n(){return y({formPanelId:this.formPanelId})}function s(t){this.arTabObjects={};var e=this,a=0;return $("#vnet_wizard_ar_btn",t).bind("click",function(){return e.addARTab(a,t),a++,t.foundation(),!1}),$("#vnetCreateARTab",t).on("click","i.remove-tab",function(){var t=$(this).parent().attr("href"),a=$(this).closest("dd"),n=$(this).closest("dl"),s=$(t),i=s.attr("ar_id");return a.remove(),s.remove(),"active"==a.attr("class")&&$("a",n.children("dd").last()).click(),delete e.arTabObjects[i],!1}),$("#vnetCreateARTab #vnetCreateARTabUpdate",t).hide(),$("#network_mode",t).change(function(){switch($('input,select#vlan,label[for!="network_mode"]',$(this).parent()).hide(),$("input",$(this).parent()).val(""),$(this).val()){case"default":$('input#bridge,label[for="bridge"]',t).show().prop("wizard_field_disabled",!1),$('input#phydev,label[for="phydev"]',t).hide().prop("wizard_field_disabled",!0),$('select#vlan,label[for="vlan"]',t).hide().prop("wizard_field_disabled",!0),$('input#vlan_id,label[for="vlan_id"]',t).hide().prop("wizard_field_disabled",!0),$('input#ip_spoofing,label[for="ip_spoofing"]',t).show().prop("wizard_field_disabled",!1),$('input#mac_spoofing,label[for="mac_spoofing"]',t).show().prop("wizard_field_disabled",!1),$('input#mtu,label[for="mtu"]',t).hide().prop("wizard_field_disabled",!1),$("input#phydev",t).removeAttr("required"),$("input#bridge",t).attr("required","");break;case"802.1Q":$('input#bridge,label[for="bridge"]',t).show().prop("wizard_field_disabled",!1),$('input#phydev,label[for="phydev"]',t).show().prop("wizard_field_disabled",!1),$('select#vlan,label[for="vlan"]',t).show().prop("wizard_field_disabled",!1),$('input#vlan_id,label[for="vlan_id"]',t).show().prop("wizard_field_disabled",!1),$('input#ip_spoofing,label[for="ip_spoofing"]',t).show().prop("wizard_field_disabled",!1),$('input#mac_spoofing,label[for="mac_spoofing"]',t).show().prop("wizard_field_disabled",!1),$('input#mtu,label[for="mtu"]',t).show().prop("wizard_field_disabled",!1),$("input#phydev",t).removeAttr("required"),$("input#bridge",t).removeAttr("required");break;case"vxlan":$('input#bridge,label[for="bridge"]',t).show().prop("wizard_field_disabled",!1),$('input#phydev,label[for="phydev"]',t).show().prop("wizard_field_disabled",!1),$('select#vlan,label[for="vlan"]',t).show().prop("wizard_field_disabled",!1),$('input#vlan_id,label[for="vlan_id"]',t).show().prop("wizard_field_disabled",!1),$('input#ip_spoofing,label[for="ip_spoofing"]',t).show().prop("wizard_field_disabled",!1),$('input#mac_spoofing,label[for="mac_spoofing"]',t).show().prop("wizard_field_disabled",!1),$('input#mtu,label[for="mtu"]',t).show().prop("wizard_field_disabled",!1),$("input#phydev",t).removeAttr("required"),$("input#bridge",t).removeAttr("required");break;case"ebtables":$('input#bridge,label[for="bridge"]',t).show().prop("wizard_field_disabled",!1),$('input#phydev,label[for="phydev"]',t).hide().prop("wizard_field_disabled",!0),$('select#vlan,label[for="vlan"]',t).show().prop("wizard_field_disabled",!1),$('input#vlan_id,label[for="vlan_id"]',t).hide().prop("wizard_field_disabled",!0),$('input#ip_spoofing,label[for="ip_spoofing"]',t).show().prop("wizard_field_disabled",!1),$('input#mac_spoofing,label[for="mac_spoofing"]',t).show().prop("wizard_field_disabled",!1),$('input#mtu,label[for="mtu"]',t).hide().prop("wizard_field_disabled",!1),$("input#phydev",t).removeAttr("required"),$("input#bridge",t).attr("required","");break;case"openvswitch":$('input#bridge,label[for="bridge"]',t).show().prop("wizard_field_disabled",!1),$('input#phydev,label[for="phydev"]',t).hide().prop("wizard_field_disabled",!0),$('select#vlan,label[for="vlan"]',t).show().prop("wizard_field_disabled",!1),$('input#vlan_id,label[for="vlan_id"]',t).show().prop("wizard_field_disabled",!1),$('input#ip_spoofing,label[for="ip_spoofing"]',t).hide().prop("wizard_field_disabled",!0),$('input#mac_spoofing,label[for="mac_spoofing"]',t).show().prop("wizard_field_disabled",!1),$('input#mtu,label[for="mtu"]',t).hide().prop("wizard_field_disabled",!1),$("input#phydev",t).removeAttr("required"),$("input#bridge",t).attr("required","");break;case"vmware":$('input#bridge,label[for="bridge"]',t).show(),$('input#phydev,label[for="phydev"]',t).hide(),$('select#vlan,label[for="vlan"]',t).show(),$('input#vlan_id,label[for="vlan_id"]',t).show(),$('input#ip_spoofing,label[for="ip_spoofing"]',t).hide().prop("wizard_field_disabled",!0),$('input#mac_spoofing,label[for="mac_spoofing"]',t).hide().prop("wizard_field_disabled",!0),$('input#mtu,label[for="mtu"]',t).hide().prop("wizard_field_disabled",!1),$("input#phydev",t).removeAttr("required"),$("input#bridge",t).attr("required","")}$("div.network_mode_description").hide(),$('div.network_mode_description[value="'+$(this).val()+'"]').show()}),$("#network_mode",t).trigger("change"),this.securityGroupsTable.initialize(),f.setup($("#vnetCreateContextTab",t)),$("#vnet_wizard_ar_btn",t).trigger("click"),$(document).foundation("reflow","tab"),h.setup(),!1}function i(t,e){var a="ar"+t,n=new m;this.arTabObjects[t]=n;var s='<div id="'+a+'Tab" class="ar_tab content" ar_id="'+t+'">'+n.html(a)+"</div>",i=$("<dd><a id='ar_tab"+a+"' href='#"+a+"Tab'>"+p.tr("Address Range")+" <i class='fa fa-times-circle remove-tab'></i></a></dd>").appendTo($("dl#vnet_wizard_ar_tabs",e));$(s).appendTo($("#vnet_wizard_ar_tabs_content",e)),$("a",i).trigger("click");var r=$("#"+a+"Tab",e);n.setup(r,a),n.onShow()}function r(t){var e=this,a={};$.extend(a,v.retrieve($("#vnetCreateGeneralTab",t))),$.extend(a,v.retrieve($("#vnetCreateBridgeTab",t))),$.extend(a,v.retrieve($("#vnetCreateContextTab",t)));var n=this.securityGroupsTable.retrieveResourceTableSelect();return void 0!=n&&0!=n.length&&(a.SECURITY_GROUPS=n.join(",")),$.extend(a,f.retrieve($("#vnetCreateContextTab",t))),$(".ar_tab",t).each(function(){var t=$(this).attr("ar_id"),n=e.arTabObjects[t].retrieve();$.isEmptyObject(n)||(a.AR||(a.AR=[]),a.AR.push(n))}),"create"==this.action?(a={vnet:a},u.runAction("Network.create",a),!1):"update"==this.action?(u.runAction("Network.update",this.resourceId,b.templateToString(a)),!1):void 0}function o(t){if("create"==this.action){var e=$("textarea#template",t).val(),a={vnet:{vnet_raw:e}};
+return u.runAction("Network.create",a),!1}if("update"==this.action){var n=$("textarea#template",t).val();return u.runAction("Network.update",this.resourceId,n),!1}}function l(t){var e=this;this.securityGroupsTable.refreshResourceTableSelect(),$(".ar_tab",t).each(function(){var t=$(this).attr("ar_id");e.arTabObjects[t].onShow()})}function c(t,e){if("update"==this.action){if(this.resourceId=e.ID,$("#default_sg_warning").hide(),$("#template",t).val(b.templateToString(e.TEMPLATE).replace(/^[\r\n]+$/g,"")),$('[wizard_field="NAME"]',t).val(b.escapeDoubleQuotes(b.htmlDecode(e.NAME))).prop("disabled",!0).prop("wizard_field_disabled",!0),v.fill($("#vnetCreateGeneralTab",t),e.TEMPLATE),v.fill($("#vnetCreateBridgeTab",t),e.TEMPLATE),v.fill($("#vnetCreateContextTab",t),e.TEMPLATE),$('input#bridge,label[for="bridge"]',t).show().prop("wizard_field_disabled",!1).removeAttr("required"),$('input#phydev,label[for="phydev"]',t).show().prop("wizard_field_disabled",!1).removeAttr("required"),$('select#vlan,label[for="vlan"]',t).show().prop("wizard_field_disabled",!1).removeAttr("required"),$('input#vlan_id,label[for="vlan_id"]',t).show().prop("wizard_field_disabled",!1).removeAttr("required"),$('input#ip_spoofing,label[for="ip_spoofing"]',t).show().prop("wizard_field_disabled",!1),$('input#mac_spoofing,label[for="mac_spoofing"]',t).show().prop("wizard_field_disabled",!1),void 0!=e.TEMPLATE.SECURITY_GROUPS&&0!=e.TEMPLATE.SECURITY_GROUPS.length){var a=e.TEMPLATE.SECURITY_GROUPS.split(",");this.securityGroupsTable.selectResourceTableSelect({ids:a})}else this.securityGroupsTable.refreshResourceTableSelect();delete e.TEMPLATE.SECURITY_GROUPS;var n=$("[wizard_field]",t);n.each(function(){var t=$(this),a=t.attr("wizard_field");delete e.TEMPLATE[a]}),f.fill($("#vnetCreateContextTab",t),e.TEMPLATE),$("#vnetCreateARTab i.remove-tab",t).trigger("click"),$("#vnetCreateARTab #vnetCreateARTabUpdate",t).show(),$("#vnetCreateARTab #vnetCreateARTabCreate",t).hide()}}t("foundation.tab");var d=t("utils/form-panels/form-panel"),u=t("sunstone"),p=t("utils/locale"),h=t("utils/tips"),f=t("utils/custom-tags-table"),m=t("tabs/vnets-tab/utils/ar-tab"),_=t("tabs/secgroups-tab/datatable"),b=t("utils/template-utils"),v=t("utils/wizard-fields"),g=t("hbs!./create/wizard"),y=t("hbs!./create/advanced"),w=t("./create/formPanelId"),T=t("../tabId");return e.FORM_PANEL_ID=w,e.prototype=Object.create(d.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.htmlAdvanced=n,e.prototype.submitWizard=r,e.prototype.submitAdvanced=o,e.prototype.onShow=l,e.prototype.fill=c,e.prototype.setup=s,e.prototype.addARTab=i,e}),define("tabs/vnets-tab",["require","utils/locale","./vnets-tab/buttons","./vnets-tab/actions","./vnets-tab/datatable","./vnets-tab/tabId","./vnets-tab/dialogs/add-ar","./vnets-tab/dialogs/update-ar","./vnets-tab/dialogs/reserve","./vnets-tab/panels/info","./vnets-tab/panels/ar","./vnets-tab/panels/leases","./vnets-tab/panels/secgroups","./vnets-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./vnets-tab/buttons"),n=t("./vnets-tab/actions"),s=t("./vnets-tab/datatable"),i=t("./vnets-tab/tabId"),r="dataTableVNets",o=[t("./vnets-tab/dialogs/add-ar"),t("./vnets-tab/dialogs/update-ar"),t("./vnets-tab/dialogs/reserve")],l=[t("./vnets-tab/panels/info"),t("./vnets-tab/panels/ar"),t("./vnets-tab/panels/leases"),t("./vnets-tab/panels/secgroups")],c=[t("./vnets-tab/form-panels/create")],d={tabId:i,title:e.tr("Virtual Networks"),tabClass:"subTab",parentTab:"infra-tab",listHeader:'<i class="fa fa-fw fa-globe"></i>&emsp;'+e.tr("Virtual Networks"),infoHeader:'<i class="fa fa-fw fa-globe"></i>&emsp;'+e.tr("Virtual Network"),subheader:'<span class="total_vnets"/> <small>'+e.tr("TOTAL")+'</small>&emsp;        <span class="addresses_vnets"/> <small>'+e.tr("USED IPs")+"</small>",resource:"Network",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/secgroups-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"SecurityGroup.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"SecurityGroup.create_dialog":{type:"create_dialog",layout:"create"},"SecurityGroup.update_dialog":{type:"action",layout:"main",text:e.tr("Update")},"SecurityGroup.chown":{type:"confirm_with_select",text:e.tr("Change owner"),layout:"user_select",select:"User",tip:e.tr("Select the new owner")+":"},"SecurityGroup.chgrp":{type:"confirm_with_select",text:e.tr("Change group"),layout:"user_select",select:"Group",tip:e.tr("Select the new group")+":"},"SecurityGroup.clone_dialog":{type:"action",layout:"main",text:e.tr("Clone")},"SecurityGroup.delete":{type:"confirm",layout:"del",text:e.tr("Delete")}};return a}),define("tabs/secgroups-tab/form-panels/create/formPanelId",["require"],function(){return"createSecurityGroupForm"}),define("tabs/secgroups-tab/dialogs/clone/dialogId",["require"],function(){return"cloneSecurityGroupDialog"}),define("tabs/secgroups-tab/actions",["require","sunstone","utils/notifier","utils/locale","./datatable","opennebula/securitygroup","./tabId","./form-panels/create/formPanelId","./dialogs/clone/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=(t("./datatable"),t("opennebula/securitygroup")),i="SecurityGroup",r="SECURITY_GROUP",o=t("./tabId"),l=t("./form-panels/create/formPanelId"),c=t("./dialogs/clone/dialogId"),d={"SecurityGroup.create":{type:"create",call:s.create,callback:function(t,a){e.resetFormPanel(o,l),e.hideFormPanel(o),e.getDataTable(o).addElement(t,a)},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)},notify:!0},"SecurityGroup.create_dialog":{type:"custom",call:function(){e.showFormPanel(o,l,"create")}},"SecurityGroup.list":{type:"list",call:s.list,callback:function(t,a){e.getDataTable(o).updateView(t,a)},error:a.onError},"SecurityGroup.show":{type:"single",call:s.show,callback:function(t,a){e.getDataTable(o).updateElement(t,a),e.rightInfoVisible($("#"+o))&&e.insertPanels(o,a)},error:a.onError},"SecurityGroup.refresh":{type:"custom",call:function(){var t=$("#"+o);e.rightInfoVisible(t)?e.runAction(i+".show",e.rightInfoResourceId(t)):(e.getDataTable(o).waitingNodes(),e.runAction(i+".list",{force:!0}))},error:a.onError},"SecurityGroup.delete":{type:"multiple",call:s.del,callback:function(t,a){e.getDataTable(o).deleteElement(t,a)},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"SecurityGroup.update_dialog":{type:"custom",call:function(){var t=e.getDataTable(o).elements();if(1!=t.length)return a.notifyMessage("Please select one (and just one) Security Group to update."),!1;var n=""+t[0];e.runAction(i+".show_to_update",n)}},"SecurityGroup.show_to_update":{type:"single",call:s.show,callback:function(t,a){e.showFormPanel(o,l,"update",function(t,e){t.fill(e,a[r])})},error:a.onError},"SecurityGroup.update":{type:"single",call:s.update,callback:function(){e.hideFormPanel(o),a.notifyMessage(n.tr("Security Group updated correctly"))},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)}},"SecurityGroup.update_template":{type:"single",call:s.update,callback:function(t){e.runAction("SecurityGroup.show",t.request.data[0][0])},error:a.onError},"SecurityGroup.chown":{type:"multiple",call:s.chown,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"SecurityGroup.chgrp":{type:"multiple",call:s.chgrp,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"SecurityGroup.chmod":{type:"single",call:s.chmod,callback:function(t){e.runAction(i+".show",t.request.data[0])},elements:function(){return e.getDataTable(o).elements()},error:a.onError,notify:!0},"SecurityGroup.clone_dialog":{type:"custom",call:function(){e.getDialog(c).show()}},"SecurityGroup.clone":{type:"single",call:s.clone,callback:function(){e.getDialog(c).hide(),e.getDialog(c).reset(),e.runAction("SecurityGroup.refresh")},error:a.onError,notify:!0},"SecurityGroup.rename":{type:"single",call:s.rename,callback:function(t){e.runAction("SecurityGroup.show",t.request.data[0][0])},error:a.onError,notify:!0}};return d}),define("hbs!tabs/secgroups-tab/dialogs/clone/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal" role="dialog" data-reveal >\n  <div class="row">\n    <h3 class="subheader">'+o((e.tr||t&&t.tr||r).call(t,"Clone Security Group",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n  <form data-abide="ajax" id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'Form">\n    <div class="row">\n      <div class="large-12 columns">\n        <div class="clone_one"></div>\n        <div class="clone_several">\n          '+o((e.tr||t&&t.tr||r).call(t,"Several security groups are selected, please choose a prefix to name the new copies",{name:"tr",hash:{},data:n}))+'\n          <br>\n        </div>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <label class="clone_one">'+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'</label>\n        <label class="clone_several">'+o((e.tr||t&&t.tr||r).call(t,"Prefix",{name:"tr",hash:{},data:n}))+'</label>\n        <input required type="text" name="name"></input>\n      </div>\n    </div>\n    <div class="form_buttons row">\n      <button type="submit" class="button radius right">\n        '+o((e.tr||t&&t.tr||r).call(t,"Clone",{name:"tr",hash:{},data:n}))+'\n      </button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/secgroups-tab/dialogs/clone/html",a),a}),define("tabs/secgroups-tab/dialogs/clone",["require","utils/dialogs/dialog","hbs!./clone/html","sunstone","utils/notifier","utils/locale","opennebula/securitygroup","./clone/dialogId","../tabId"],function(t){function e(){this.dialogId=u,i.call(this)}function a(){return r({dialogId:this.dialogId})}function n(t){return t.off("invalid.fndtn.abide","#"+u+"Form"),t.off("valid.fndtn.abide","#"+u+"Form"),t.on("invalid.fndtn.abide","#"+u+"Form",function(t){"abide.fndtn"==t.namespace&&l.notifyError(c.tr("One or more required fields are missing or malformed."))}).on("valid.fndtn.abide","#"+u+"Form",function(t){if("abide.fndtn"==t.namespace){var e=$("input",this).val(),a=o.getDataTable(p).elements();if(a.length>1)for(var n=0;n<a.length;n++)o.runAction("SecurityGroup.clone",a[n],e+d.getName(a[n]));else o.runAction("SecurityGroup.clone",a[0],e);return!1}}),t.foundation("reflow","abide"),!1}function s(t){var e=o.getDataTable(p).elements();return e.length>1?($(".clone_one",t).hide(),$(".clone_several",t).show(),$("input",t).val("Copy of ")):($(".clone_one",t).show(),$(".clone_several",t).hide(),$("input",t).val("Copy of "+d.getName(e[0]))),$("input[name='name']",t).focus(),!1}var i=t("utils/dialogs/dialog"),r=t("hbs!./clone/html"),o=t("sunstone"),l=t("utils/notifier"),c=t("utils/locale"),d=t("opennebula/securitygroup"),u=t("./clone/dialogId"),p=t("../tabId");return e.DIALOG_ID=u,e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e}),define("hbs!tabs/secgroups-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return"          <tr>\n            <td>"+o((s=null!=(s=e.PROTOCOL||(null!=t?t.PROTOCOL:t))?s:r,typeof s===i?s.call(t,{name:"PROTOCOL",hash:{},data:n}):s))+"</td>\n            <td>"+o((s=null!=(s=e.RULE_TYPE||(null!=t?t.RULE_TYPE:t))?s:r,typeof s===i?s.call(t,{name:"RULE_TYPE",hash:{},data:n}):s))+"</td>\n            <td>"+o((s=null!=(s=e.RANGE||(null!=t?t.RANGE:t))?s:r,typeof s===i?s.call(t,{name:"RANGE",hash:{},data:n}):s))+"</td>\n            <td>"+o((s=null!=(s=e.NETWORK||(null!=t?t.NETWORK:t))?s:r,typeof s===i?s.call(t,{name:"NETWORK",hash:{},data:n}):s))+"</td>\n            <td>"+o((s=null!=(s=e.ICMP_TYPE||(null!=t?t.ICMP_TYPE:t))?s:r,typeof s===i?s.call(t,{name:"ICMP_TYPE",hash:{},data:n}):s))+"</td>\n          </tr>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table id="info_security_group_table" class="dataTable extended_table">\n      <thead>\n         <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n        </tr>\n        ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">\n    ',i=null!=(i=e.permissionsTableHTML||(null!=t?t.permissionsTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"permissionsTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n  </div>\n</div>\n<div class="row">\n  <div class="large-9 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th>'+o((e.tr||t&&t.tr||r).call(t,"Rules",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n    </table>\n    <table class="policies_table dataTable">\n      <thead>\n        <tr>\n          <th>'+o((e.tr||t&&t.tr||r).call(t,"Protocol",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+o((e.tr||t&&t.tr||r).call(t,"Type",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+o((e.tr||t&&t.tr||r).call(t,"Port Range",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+o((e.tr||t&&t.tr||r).call(t,"Network",{name:"tr",hash:{},data:n}))+"</th>\n          <th>"+o((e.tr||t&&t.tr||r).call(t,"ICMP Type",{name:"tr",hash:{},data:n}))+"</th>\n        </tr>\n      </thead>\n      <tbody>\n",s=e.each.call(t,null!=t?t.ruleList:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+='      </tbody>\n    </table>\n  </div>\n</div>\n<div class="row">\n  <div class="large-9 columns">\n    ',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/secgroups-tab/panels/info/html",a),a}),define("tabs/secgroups-tab/panels/info/panelId",["require"],function(){return"security_group_info_tab"}),define("tabs/secgroups-tab/panels/info",["require","hbs!./info/html","utils/locale","utils/panel/permissions-table","utils/panel/rename-tr","opennebula/securitygroup","../utils/common","utils/panel/template-table","../tabId","./info/panelId"],function(t){function e(t){return this.title=i.tr("Info"),this.icon="fa-info-circle",this.element=t[h],this}function a(){var t=o.html(p,this.element.NAME),e=r.html(d,p,this.element),a=l.getRules(this.element),n=[];$.each(a,function(){n.push(l.sgRuleToSt(this))});var u=$.extend({},this.element.TEMPLATE);delete u.RULE;var h=c.html(u,p,i.tr("Attributes"));return s({element:this.element,renameTrHTML:t,permissionsTableHTML:e,ruleList:n,templateTableHTML:h})}function n(t){o.setup(p,this.element.ID,t),r.setup(d,p,this.element,t);var e=$.extend({},this.element.TEMPLATE);delete e.RULE;var a={RULE:this.element.TEMPLATE.RULE};return c.setup(e,p,this.element.ID,t,a),!1}var s=t("hbs!./info/html"),i=t("utils/locale"),r=t("utils/panel/permissions-table"),o=t("utils/panel/rename-tr"),l=(t("opennebula/securitygroup"),t("../utils/common")),c=t("utils/panel/template-table"),d=t("../tabId"),u=t("./info/panelId"),p="SecurityGroup",h="SECURITY_GROUP";return e.PANEL_ID=u,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/secgroups-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<div id="create_security_group_form_wrapper">\n  <form data-abide="ajax" id="'+l((i=null!=(i=e.formPanelId||(null!=t?t.formPanelId:t))?i:o,typeof i===r?i.call(t,{name:"formPanelId",hash:{},data:n}):i))+'Wizard" class="custom creation">\n    <div class="row">\n      <div class="medium-4 columns">\n        <label for="security_group_name">'+l((e.tr||t&&t.tr||o).call(t,"Security Group Name",{name:"tr",hash:{},data:n}))+':</label>\n        <input required type="text" name="security_group_name" id="security_group_name"/>\n      </div>\n      <div class="medium-8 columns">\n        <label for="security_group_description">'+l((e.tr||t&&t.tr||o).call(t,"Description",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Description for the Security Group",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <textarea type="text" id="security_group_description" name="security_group_description" style="height: 70px;"/>\n      </div>\n    </div>\n    <hr/>\n  </form>\n  <form data-abide="ajax" id="rules_form_wizard" action="">\n    <div class="row collapse" id="new_rule_wizard">\n      <div class="row">\n        <div class="medium-4 columns">\n          <label>'+l((e.tr||t&&t.tr||o).call(t,"Type",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Defines the direction of the rule.",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select class="security_group_rule_type">\n            <option value="inbound" selected="selected">'+l((e.tr||t&&t.tr||o).call(t,"Inbound",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="outbound">'+l((e.tr||t&&t.tr||o).call(t,"Outbound",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="medium-4 columns">\n          <label>'+l((e.tr||t&&t.tr||o).call(t,"Protocol",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Defines the protocol of the rule.",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select class="security_group_rule_protocol">\n            <option value="TCP" selected="selected">'+l((e.tr||t&&t.tr||o).call(t,"TCP",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="UDP">'+l((e.tr||t&&t.tr||o).call(t,"UDP",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="ICMP">'+l((e.tr||t&&t.tr||o).call(t,"ICMP",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="IPSEC">'+l((e.tr||t&&t.tr||o).call(t,"IPsec",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="ALL">'+l((e.tr||t&&t.tr||o).call(t,"All",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="medium-4 columns icmp_type_wrapper">\n          <label>'+l((e.tr||t&&t.tr||o).call(t,"ICMP Type",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Specific ICMP type of the rule. If a type has multiple codes, it includes all the codes within.",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select class="security_group_rule_icmp_type">\n            <option value="" selected="selected">'+l((e.tr||t&&t.tr||o).call(t,"All",{name:"tr",hash:{},data:n}))+'</option>\n            <option value = "0">0/0: Echo Reply (pong)</option>\n            <option value = "3">3: Destination Unreachable</option>\n            <option value = "4">4/0: Source Quench</option>\n            <option value = "5">5: Redirect</option>\n            <option value = "8">8/0: Echo Request (ping)</option>\n            <option value = "9">9/0: Router Advertisement</option>\n            <option value = "10">10/0: Router Solicitation</option>\n            <option value = "11">11: Time Exceeded</option>\n            <option value = "12">12: Parameter Problem</option>\n            <option value = "13">13/0: Timestamp Request</option>\n            <option value = "14">14/0: Timestamp Reply</option>\n            <option value = "17">17/0: Address Mask Request</option>\n            <option value = "18">18/0: Address Mask Reply</option>\n          </select>\n        </div>\n      </div>\n      <div class="row range_row">\n        <div class="medium-4 columns">\n          <label>'+l((e.tr||t&&t.tr||o).call(t,"Port range",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Selects whether to apply this TCP or UDP rule to all the ports or just a specific set.",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select class="security_group_rule_range_sel">\n            <option value="ALL" selected="selected">'+l((e.tr||t&&t.tr||o).call(t,"All",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="RANGE">'+l((e.tr||t&&t.tr||o).call(t,"Port range",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="medium-4 columns end security_group_rule_range">\n          <label>'+l((e.tr||t&&t.tr||o).call(t,"Iptables range",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"A Port Range to filter specific ports. Uses the iptables port syntax: port[,port|,port:port]...",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input type="text" placeholder="22,53,80:90,110,1024:65535"/>\n        </div>\n      </div>\n      <div class="row">\n        <div class="medium-4 columns">\n          <label>'+l((e.tr||t&&t.tr||o).call(t,"Network",{name:"tr",hash:{},data:n}))+'\n            <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Any: apply this rule to any connection regardless of its source or destination. Network: Apply this rule only to a custom defined network range. Virtual Network: Apply this rule only to connections with origin or destination in one of the already defined VNETs.",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <select class="security_group_rule_network_sel">\n            <option value="ANY" selected="selected">'+l((e.tr||t&&t.tr||o).call(t,"Any",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="NETWORK">'+l((e.tr||t&&t.tr||o).call(t,"Network",{name:"tr",hash:{},data:n}))+'</option>\n            <option value="VNET">'+l((e.tr||t&&t.tr||o).call(t,"Virtual Network",{name:"tr",hash:{},data:n}))+'</option>\n          </select>\n        </div>\n        <div class="medium-4 columns security_group_rule_network">\n          <label for="security_group_rule_first_ip">'+l((e.tr||t&&t.tr||o).call(t,"IP Start",{name:"tr",hash:{},data:n}))+':\n            <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"First IP address",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input id="security_group_rule_first_ip" type="text" placeholder="192.168.10.1"/>\n        </div>\n        <div class="medium-4 columns security_group_rule_network">\n          <label for="security_group_rule_size">'+l((e.tr||t&&t.tr||o).call(t,"Size",{name:"tr",hash:{},data:n}))+':\n            <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Number of addresses in the range",{name:"tr",hash:{},data:n}))+'</span>\n          </label>\n          <input id="security_group_rule_size" type="text" placeholder="254"/>\n        </div>\n      </div>\n      <div class="row">\n        <div class="small-12 columns vnet_select">\n          ';return i=null!=(i=e.vnetsTableHTML||(null!=t?t.vnetsTableHTML:t))?i:o,s=typeof i===r?i.call(t,{name:"vnetsTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+'\n          <br/>\n        </div>\n      </div>\n    </div>\n    <div class="row">\n      <div class="medium-8 small-centered columns">\n        <button type="submit" class="add_security_group_rule button small small-12 radius">\n          <i class="fa fa-angle-double-down"></i> '+l((e.tr||t&&t.tr||o).call(t,"Add Rule",{name:"tr",hash:{},data:n}))+'\n        </button>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <table class="security_group_rules policies_table dataTable">\n          <thead>\n            <tr>\n              <th>'+l((e.tr||t&&t.tr||o).call(t,"Protocol",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+l((e.tr||t&&t.tr||o).call(t,"Type",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+l((e.tr||t&&t.tr||o).call(t,"Port Range",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+l((e.tr||t&&t.tr||o).call(t,"Network",{name:"tr",hash:{},data:n}))+"</th>\n              <th>"+l((e.tr||t&&t.tr||o).call(t,"ICMP Type",{name:"tr",hash:{},data:n}))+'</th>\n              <th style="width:3%"></th>\n            </tr>\n          </thead>\n          <tbody>\n          </tbody>\n        </table>\n      </div>\n    </div>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/secgroups-tab/form-panels/create/wizard",a),a}),define("hbs!tabs/secgroups-tab/form-panels/create/advanced",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Advanced" class="custom creation">\n  <div class="row">\n    <div class="large-12 columns">\n      <p>'+o((e.tr||t&&t.tr||r).call(t,"Write the Security Group template here",{name:"tr",hash:{},data:n}))+'</p>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <textarea id="template" rows="15" required></textarea>\n    </div>\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/secgroups-tab/form-panels/create/advanced",a),a}),define("tabs/secgroups-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","utils/tips","utils/template-utils","utils/wizard-fields","tabs/vnets-tab/datatable","../utils/common","hbs!./create/wizard","hbs!./create/advanced","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=v,this.tabId=g,this.actions={create:{title:u.tr("Create Security Group"),buttonText:u.tr("Create"),resetButton:!0},update:{title:u.tr("Update Security Group"),buttonText:u.tr("Update"),resetButton:!1}},c.call(this)}function a(){var t={info:!1,select:!0};return this.vnetsTable=new f("new_sg_rule",t),_({formPanelId:this.formPanelId,vnetsTableHTML:this.vnetsTable.dataTableHTML})}function n(){return b({formPanelId:this.formPanelId})}function s(t){var e=this;return t.off("change",".security_group_rule_protocol"),t.on("change",".security_group_rule_protocol",function(){switch($(".range_row",t).hide(),$(".range_row input",t).removeAttr("required"),$(".icmp_type_wrapper",t).hide(),$(this).val()){case"TCP":case"UDP":$(".range_row",t).show(),$(".range_row select",t).trigger("change");break;case"ICMP":$(".icmp_type_wrapper",t).show();break;case"IPSEC":case"ALL":}}),t.off("change",".security_group_rule_network_sel"),t.on("change",".security_group_rule_network_sel",function(){switch($(".security_group_rule_network",t).hide(),$("div.security_group_rule_network input",t).removeAttr("required"),e.vnetsTable.idInput().removeAttr("required"),$(".vnet_select",t).hide(),$(this).val()){case"ANY":break;case"NETWORK":$(".security_group_rule_network",t).show(),$("div.security_group_rule_network input",t).attr("required","");break;case"VNET":$(".vnet_select",t).show(),e.vnetsTable.idInput().attr("required",""),e.vnetsTable.refreshResourceTableSelect()}}),t.off("change",".security_group_rule_range_sel"),t.on("change",".security_group_rule_range_sel",function(){switch($(this).val()){case"ALL":$(".security_group_rule_range",t).hide(),$(".security_group_rule_range input",t).removeAttr("required");break;case"RANGE":$(".security_group_rule_range",t).show(),$(".security_group_rule_range input",t).attr("required","")}}),$("#rules_form_wizard",t).off("invalid"),$("#rules_form_wizard",t).off("valid"),$("#rules_form_wizard",t).on("invalid",function(){}).on("valid",function(){var a={};switch(a.PROTOCOL=$(".security_group_rule_protocol",t).val(),a.RULE_TYPE=$(".security_group_rule_type",t).val(),$(".security_group_rule_range_sel",t).val()){case"ALL":break;case"RANGE":a.RANGE=$(".security_group_rule_range input",t).val()}switch($(".security_group_rule_network_sel",t).val()){case"ANY":break;case"NETWORK":a.IP=$("#security_group_rule_first_ip",t).val(),a.SIZE=$("#security_group_rule_size",t).val();break;case"VNET":a.NETWORK_ID=e.vnetsTable.retrieveResourceTableSelect()}if("ICMP"==a.PROTOCOL){var n=$(".security_group_rule_icmp_type",t).val();""!=n&&(a.ICMP_TYPE=n)}var s=m.sgRuleToSt(a);$(".security_group_rules tbody",t).append("<tr>            <td>"+s.PROTOCOL+"</td>            <td>"+s.RULE_TYPE+"</td>            <td>"+s.RANGE+"</td>            <td>"+s.NETWORK+"</td>            <td>"+s.ICMP_TYPE+'</td>            <td>              <a href="#"><i class="fa fa-times-circle remove-tab"></i></a>            </td>          </tr>'),$(".security_group_rules tbody",t).children("tr").last().data("rule",a),$("#new_rule_wizard select option",t).prop("selected",function(){return this.defaultSelected}),$("#new_rule_wizard select",t).trigger("change"),$("#new_rule_wizard input",t).val(""),e.vnetsTable.resetResourceTableSelect()}),t.off("click",".security_group_rules i.remove-tab"),t.on("click",".security_group_rules i.remove-tab",function(){var t=$(this).closest("tr");t.remove()}),t.foundation(),this.vnetsTable.initialize(),p.setup(),$("#new_rule_wizard select",t).trigger("change"),!1}function i(t){var e=$("#security_group_name",t).val(),a=$("#security_group_description",t).val(),n=[];$(".security_group_rules tbody tr").each(function(){n.push($(this).data("rule"))});var s={NAME:e,DESCRIPTION:a,RULE:n};return"create"==this.action?(s={security_group:s},d.runAction("SecurityGroup.create",s),!1):"update"==this.action?(delete s.NAME,d.runAction("SecurityGroup.update",this.resourceId,h.templateToString(s)),!1):void 0}function r(t){if("create"==this.action){var e=$("textarea#template",t).val(),a={security_group:{security_group_raw:e}};return d.runAction("SecurityGroup.create",a),!1}if("update"==this.action){var n=$("textarea#template",t).val();return d.runAction("SecurityGroup.update",this.resourceId,n),!1}}function o(){this.vnetsTable.refreshResourceTableSelect()}function l(t,e){this.resourceId=e.ID,$("#template",t).val(h.templateToString(e.TEMPLATE).replace(/^[\r\n]+$/g,"")),$("#security_group_name",t).val(h.escapeDoubleQuotes(h.htmlDecode(e.NAME))).prop("disabled",!0),$("#security_group_description",t).val(h.escapeDoubleQuotes(h.htmlDecode(e.TEMPLATE.DESCRIPTION)));var a=e.TEMPLATE.RULE;a?a.constructor!=Array&&(a=[a]):a=[],$.each(a,function(){var e=m.sgRuleToSt(this);$(".security_group_rules tbody",t).append("<tr>        <td>"+e.PROTOCOL+"</td>        <td>"+e.RULE_TYPE+"</td>        <td>"+e.RANGE+"</td>        <td>"+e.NETWORK+"</td>        <td>"+e.ICMP_TYPE+'</td>        <td>        <a href="#"><i class="fa fa-times-circle remove-tab"></i></a>        </td>        </tr>'),$(".security_group_rules tbody",t).children("tr").last().data("rule",this)})}t("foundation.tab");var c=t("utils/form-panels/form-panel"),d=t("sunstone"),u=t("utils/locale"),p=t("utils/tips"),h=t("utils/template-utils"),f=(t("utils/wizard-fields"),t("tabs/vnets-tab/datatable")),m=t("../utils/common"),_=t("hbs!./create/wizard"),b=t("hbs!./create/advanced"),v=t("./create/formPanelId"),g=t("../tabId");
+return e.FORM_PANEL_ID=v,e.prototype=Object.create(c.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.htmlAdvanced=n,e.prototype.submitWizard=i,e.prototype.submitAdvanced=r,e.prototype.onShow=o,e.prototype.fill=l,e.prototype.setup=s,e}),define("tabs/secgroups-tab",["require","utils/locale","./secgroups-tab/buttons","./secgroups-tab/actions","./secgroups-tab/datatable","./secgroups-tab/tabId","./secgroups-tab/dialogs/clone","./secgroups-tab/panels/info","./secgroups-tab/form-panels/create"],function(t){var e=t("utils/locale"),a=t("./secgroups-tab/buttons"),n=t("./secgroups-tab/actions"),s=t("./secgroups-tab/datatable"),i=t("./secgroups-tab/tabId"),r="dataTableSecurityGroups",o=[t("./secgroups-tab/dialogs/clone")],l=[t("./secgroups-tab/panels/info")],c=[t("./secgroups-tab/form-panels/create")],d={tabId:i,title:e.tr("Security Groups"),tabClass:"subTab",parentTab:"infra-tab",listHeader:'<i class="fa fa-fw fa-shield"></i>&emsp;'+e.tr("Security Groups"),infoHeader:'<i class="fa fa-fw fa-shield"></i>&emsp;'+e.tr("Security Group"),subheader:"<span/> <small></small>&emsp;",resource:"SecurityGroup",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/zones-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Zone.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Zone.create_dialog":{type:"create_dialog",layout:"create"},"Zone.delete":{type:"confirm",layout:"del",text:e.tr("Delete")}};return a}),define("tabs/zones-tab/tabId",["require"],function(){return"zones-tab"}),define("tabs/zones-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=l,this.dataTableId=t,this.resource=r,this.xmlRoot=o,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:s.tabTableColumns(l)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[i.tr("ID"),i.tr("Name"),i.tr("Endpoint")],this.selectOptions={id_index:1,name_index:2,select_resource:i.tr("Please select a Zone from the list"),you_selected:i.tr("You selected the following Zone:"),select_resource_multiple:i.tr("Please select one or more Zones from the list"),you_selected_multiple:i.tr("You selected the following Zones:")},n.call(this)}function a(t){var e=t.ZONE;return['<input class="check_item" type="checkbox" id="'+r.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.NAME,e.TEMPLATE.ENDPOINT]}var n=t("utils/tab-datatable"),s=t("sunstone-config"),i=t("utils/locale"),r="Zone",o="ZONE",l=t("./tabId");return e.prototype=Object.create(n.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("tabs/zones-tab/dialogs/create/dialogId",["require"],function(){return"createZoneDialog"}),define("tabs/zones-tab/actions",["require","sunstone","utils/notifier","utils/locale","./datatable","opennebula/zone","./tabId","./dialogs/create/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=(t("./datatable"),t("opennebula/zone")),i=t("./tabId"),r=t("./dialogs/create/dialogId"),o={"Zone.create":{type:"create",call:s.create,callback:function(t,a){e.getDialog(r).hide(),e.getDialog(r).reset(),e.getDataTable(i).addElement(t,a)},error:a.onError,notify:!0},"Zone.create_dialog":{type:"custom",call:function(){e.getDialog(r).show()}},"Zone.list":{type:"list",call:s.list,callback:function(t,a){e.getDataTable(i).updateView(t,a)},error:a.onError},"Zone.show":{type:"single",call:s.show,callback:function(t,a){e.getDataTable(i).updateElement(t,a),e.rightInfoVisible($("#"+i))&&e.insertPanels(i,a)},error:a.onError},"Zone.show_to_update":{type:"single",call:s.show,error:a.onError},"Zone.refresh":{type:"custom",call:function(){var t=$("#"+i);e.rightInfoVisible(t)?e.runAction("Zone.show",e.rightInfoResourceId(t)):(e.getDataTable(i).waitingNodes(),e.runAction("Zone.list",{force:!0}))},error:a.onError},"Zone.delete":{type:"multiple",call:s.del,callback:function(t,a){e.getDataTable(i).deleteElement(t,a)},elements:function(){return e.getDataTable(i).elements()},error:a.onError,notify:!0},"Zone.update_template":{type:"single",call:s.update,callback:function(t){a.notifyMessage(n.tr("Zone updated correctly")),e.runAction("Zone.show",t.request.data[0][0])},error:a.onError},"Zone.fetch_template":{type:"single",call:s.fetch_template,callback:function(t,e){$("#template_update_dialog #template_update_textarea").val(e.template)},error:a.onError},"Zone.rename":{type:"single",call:s.rename,callback:function(t){a.notifyMessage(n.tr("Zone renamed correctly")),e.runAction("Zone.show",t.request.data[0][0])},error:a.onError,notify:!0}};return o}),define("hbs!tabs/zones-tab/dialogs/create/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="row reveal-modal" role="dialog" data-reveal >\n  <div class="row">\n    <div class="large-12 columns">\n      <h3 id="create_zone_header" class="subheader">'+o((e.tr||t&&t.tr||r).call(t,"Create Zone",{name:"tr",hash:{},data:n}))+'</h3>\n    </div>\n  </div>\n  <form id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'Form" action="">\n    <div class="row">\n      <div class="large-12 columns">\n        <label for="zonename">'+o((e.tr||t&&t.tr||r).call(t,"Zone Name",{name:"tr",hash:{},data:n}))+':</label>\n        <input type="text" name="zonename" id="zonename" />\n      </div>\n    </div>\n    <div class="row centered">\n      <div class="large-12 columns">\n        <label for="endpoint">'+o((e.tr||t&&t.tr||r).call(t,"Endpoint",{name:"tr",hash:{},data:n}))+':</label>\n        <input type="text" name="endpoint" id="endpoint" />\n      </div>\n    </div>\n    <div class="form_buttons">\n      <button class="button radius right success" id="create_zone_submit" value="zone/create">'+o((e.tr||t&&t.tr||r).call(t,"Create",{name:"tr",hash:{},data:n}))+'</button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/zones-tab/dialogs/create/html",a),a}),define("tabs/zones-tab/dialogs/create",["require","utils/dialogs/dialog","hbs!./create/html","sunstone","./create/dialogId"],function(t){function e(){this.dialogId=c,r.call(this)}function a(){return o({dialogId:this.dialogId})}function n(t){return $("#"+c+"Form",t).submit(s),!1}function s(){var t=$("#zonename",this).val(),e=$("#endpoint",this).val(),a={zone:{name:t,endpoint:e}};return l.runAction("Zone.create",a),!1}function i(t){return $("#zonename",t).focus(),!1}var r=t("utils/dialogs/dialog"),o=t("hbs!./create/html"),l=t("sunstone"),c=t("./create/dialogId");return e.DIALOG_ID=c,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=i,e.prototype.setup=n,e}),define("hbs!tabs/zones-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table id="info_zone_table" class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="3">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+"</td>\n        </tr>\n        ";return i=null!=(i=e.renameTrHTML||(null!=t?t.renameTrHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"renameTrHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+='\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns"></div>\n</div>\n<div class="row">\n  <div class="large-9 columns">\n    ',i=null!=(i=e.templateTableHTML||(null!=t?t.templateTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"templateTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"\n  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/zones-tab/panels/info/html",a),a}),define("tabs/zones-tab/panels/info/panelId",["require"],function(){return"zone_info_tab"}),define("tabs/zones-tab/panels/info",["require","hbs!./info/html","utils/locale","utils/panel/rename-tr","utils/panel/template-table","./info/panelId"],function(t){function e(t){return this.title=i.tr("Info"),this.icon="fa-info-circle",this.element=t[c.toUpperCase()],this}function a(){var t=r.html(c,this.element.NAME),e=o.html(this.element.TEMPLATE,c,i.tr("Attributes"));return s({element:this.element,renameTrHTML:t,templateTableHTML:e})}function n(t){return r.setup(c,this.element.ID,t),o.setup(this.element.TEMPLATE,c,this.element.ID,t),!1}var s=t("hbs!./info/html"),i=t("utils/locale"),r=t("utils/panel/rename-tr"),o=t("utils/panel/template-table"),l=t("./info/panelId"),c="Zone";return e.PANEL_ID=l,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/zones-tab",["require","utils/locale","./zones-tab/buttons","./zones-tab/actions","./zones-tab/datatable","./zones-tab/tabId","./zones-tab/dialogs/create","./zones-tab/panels/info"],function(t){var e=t("utils/locale"),a=t("./zones-tab/buttons"),n=t("./zones-tab/actions"),s=t("./zones-tab/datatable"),i=t("./zones-tab/tabId"),r="dataTableZones",o=[t("./zones-tab/dialogs/create")],l=[t("./zones-tab/panels/info")],c={tabId:i,title:e.tr("Zones"),tabClass:"subTab",parentTab:"infra-tab",listHeader:'<i class="fa fa-fw fa-files-o"></i>&emsp;'+e.tr("Zones"),infoHeader:'<i class="fa fa-fw fa-files-o"></i>&emsp;'+e.tr("Zone"),subheader:"",resource:"Zone",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:l,dialogs:o};return c}),define("tabs/marketplace-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Marketplace.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Marketplace.import":{type:"action",layout:"main",text:e.tr("Import")}};return a}),define("tabs/marketplace-tab/tabId",["require"],function(){return"marketplace-tab"}),define("tabs/marketplace-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=o,this.dataTableId=t,this.resource=r,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:s.tabTableColumns(o)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[i.tr("ID"),i.tr("Name"),i.tr("Publisher"),i.tr("Hypervisor"),i.tr("Arch"),i.tr("Format"),i.tr("Tags")],n.call(this)}function a(t){var e="-",a="-",n="-",s="-",i="-";return void 0!=t.publisher&&(e=t.publisher),void 0!=t.files&&t.files.length>0&&(void 0!=t.files[0].hypervisor&&(a=t.files[0].hypervisor),void 0!=t.files[0]["os-arch"]&&(n=t.files[0]["os-arch"]),void 0!=t.files[0].format&&(s=t.files[0].format)),void 0!=t.tags&&(i=t.tags),['<input class="check_item" type="checkbox" id="'+r.toLowerCase()+"_"+t._id.$oid+'" name="selected_items" value="'+t._id.$oid+'"/>',t._id.$oid,t.name,e,a,n,s,i]}var n=t("utils/tab-datatable"),s=t("sunstone-config"),i=t("utils/locale"),r="Marketplace",o=t("./tabId");return e.prototype=Object.create(n.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("tabs/marketplace-tab/dialogs/import/dialogId",["require"],function(){return"importMarketplaceDialog"}),define("tabs/marketplace-tab/actions",["require","sunstone","utils/notifier","utils/locale","./datatable","opennebula/marketplace","./tabId","./dialogs/import/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=(t("./datatable"),t("opennebula/marketplace")),i="Marketplace",r=t("./tabId"),o=t("./dialogs/import/dialogId"),l={"Marketplace.list":{type:"list",call:s.list,callback:function(t,a){e.getDataTable(r).updateView(t,a.appliances)}},"Marketplace.refresh":{type:"custom",call:function(){var t=$("#"+r);e.rightInfoVisible(t)?e.runAction(i+".show",e.rightInfoResourceId(t)):(e.getDataTable(r).waitingNodes(),e.runAction(i+".list",{force:!0}))}},"Marketplace.import":{type:"multiple",call:s.show,callback:function(t,s){return s.status&&"ready"!=s.status?void a.notifyError(n.tr("The appliance is not ready")):(e.getDialog(o).setParams({element:s}),e.getDialog(o).reset(),void e.getDialog(o).show())},elements:function(){return e.getDataTable(r).elements()},error:a.onError},"Marketplace.show":{type:"single",call:s.show,callback:function(t,a){e.rightInfoVisible($("#"+r))&&e.insertPanels(r,a)},error:a.onError}};return l}),define("hbs!tabs/marketplace-tab/dialogs/import/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal medium" role="dialog" data-reveal >\n  <div class="row">\n    <h3 class="subheader">'+o((e.tr||t&&t.tr||r).call(t,"Import Appliance",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n  <form data-abide="ajax" id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'Form">\n    <div id="market_import_dialog_content">\n    </div>\n    <div class="form_buttons row">\n      <button type="submit" class="button radius right">\n        '+o((e.tr||t&&t.tr||r).call(t,"Import",{name:"tr",hash:{},data:n}))+'\n      </button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/marketplace-tab/dialogs/import/html",a),a}),define("hbs!tabs/marketplace-tab/dialogs/import/content",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/humanizeSize"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i=this.lambda,r=this.escapeExpression,o=e.helperMissing,l='<div class="row" id="market_import_file_'+r(i(n&&n.index,t))+'">\n  <div class="large-10 large-centered columns">\n    <div class="large-10 columns">\n      <label>\n        <i class="fa fa-fw fa-download"/>\n        &emsp;'+r(i(n&&n.index,t))+" - "+r((e.tr||t&&t.tr||o).call(t,"Image Name",{name:"tr",hash:{},data:n}))+'\n        <span class="right">'+r((e.humanizeSize||t&&t.humanizeSize||o).call(t,"B",null!=t?t.size:t,{name:"humanizeSize",hash:{},data:n}))+"</span>\n      </label>\n";return s=e["if"].call(t,null!=t?t.name:t,{name:"if",hash:{},fn:this.program(2,n),inverse:this.program(4,n),data:n}),null!=s&&(l+=s),l+'    </div>\n    <div class="large-2 columns market_image_result">\n    </div>\n  </div>\n  <div class="large-10 columns market_image_response">\n  </div>\n</div>\n'},2:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'      <input type="text" class="name" value="'+o((s=null!=(s=e.name||(null!=t?t.name:t))?s:r,typeof s===i?s.call(t,{name:"name",hash:{},data:n}):s))+'"/>\n'},4:function(t){var e,a=this.lambda,n=this.escapeExpression;return'      <input type="text" class="name" value="'+n(a(null!=(e=null!=t?t.element:t)?e.name:e,t))+'"/>\n'},6:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<br>\n<div class="row">\n  <div class="large-12 columns">\n    <p style="font-size:14px">'+r((e.tr||t&&t.tr||i).call(t,"The following template will be created in OpenNebula and the previous images will be referenced in the disks",{name:"tr",hash:{},data:n}))+" "+r((e.tr||t&&t.tr||i).call(t,"If you want to edit parameters of the template you can do it later in the templates tab",{name:"tr",hash:{},data:n}))+' </p>\n  </div>\n</div>\n<div class="row" id="market_import_file_template">\n  <div class="large-10 large-centered columns">\n    <div class="large-10 columns">\n      <label>\n        <i class="fa fa-fw fa-file-text-o"/>&emsp;'+r((e.tr||t&&t.tr||i).call(t,"Template Name",{name:"tr",hash:{},data:n}))+"\n      </label>\n";return s=e["if"].call(t,null!=t?t.NAME:t,{name:"if",hash:{},fn:this.program(7,n),inverse:this.program(4,n),data:n}),null!=s&&(o+=s),o+'    </div>\n    <div class="large-2 columns market_template_result">\n    </div>\n  </div>\n  <div class="large-10 columns market_template_response">\n  </div>\n</div>\n'},7:function(){return'      <input type="text" class="name" value="NAME"/>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='<div class="row">\n  <div class="large-12 columns">\n    <p style="font-size:14px">'+r((e.tr||t&&t.tr||i).call(t,"The following images will be created in OpenNebula.",{name:"tr",hash:{},data:n}))+" "+r((e.tr||t&&t.tr||i).call(t,"If you want to edit parameters of the image you can do it later in the images tab",{name:"tr",hash:{},data:n}))+' </p>\n  </div>\n</div>\n<div class="row">\n  <div class="large-10 large-centered columns">\n    <div class="large-10 columns">\n      <label for="market_img_datastore">'+r((e.tr||t&&t.tr||i).call(t,"Select the datastore for the images",{name:"tr",hash:{},data:n}))+'\n      </label>\n      <div id="market_img_datastore" name="market_img_datastore">\n      </div>\n    </div>\n    <div class="large-2 columns">\n    </div>\n  </div>\n</div>\n';return s=e.each.call(t,null!=(s=null!=t?t.element:t)?s.files:s,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(o+=s),s=e["if"].call(t,null!=(s=null!=t?t.element:t)?s.opennebula_template:s,{name:"if",hash:{},fn:this.program(6,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o},useData:!0});return e.registerPartial("tabs/marketplace-tab/dialogs/import/content",a),a}),define("tabs/marketplace-tab/dialogs/import",["require","utils/dialogs/dialog","hbs!./import/html","hbs!./import/content","sunstone","utils/notifier","utils/locale","utils/resource-select","opennebula/image","opennebula/template","./import/dialogId","../tabId"],function(t){function e(){this.dialogId=m,o.call(this)}function a(){return l({dialogId:this.dialogId})}function n(t){var e=this;$("#market_import_dialog_content",t).html(c({element:this.element}));var a=["TYPE","TYPE"],n=["1","2"];return p.insert("div#market_img_datastore",t,"Datastore",null,!1,null,a,n),t.off("invalid.fndtn.abide","#"+m+"Form"),t.off("valid.fndtn.abide","#"+m+"Form"),t.on("invalid.fndtn.abide","#"+m+"Form",function(t){"abide.fndtn"==t.namespace&&d.notifyError(u.tr("One or more required fields are missing or malformed."))}).on("valid.fndtn.abide","#"+m+"Form",function(a){if("abide.fndtn"==a.namespace){e.number_of_files=e.element.files.length,e.template_created=!1,e.images_information=[],$("input, button",t).attr("disabled","disabled"),$(".market_image_result:not(.success)",t).html('<span class="fa-stack fa-2x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span>'),$(".market_template_result",t).html('<span class="fa-stack fa-2x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i></span>');var n=$("#market_import_file_template",t);return $.each(e.element.files,function(a,s){var i=$("#market_import_file_"+a,i);$(".market_image_result:not(.success)",i).length>0&&(img_obj={image:{NAME:$("input.name",i).val(),PATH:e.element.links.download.href+"/"+a,TYPE:s.type,MD5:s.md5,SHA1:s.sha1,DRIVER:s.driver,DEV_PREFIX:s.dev_prefix,FROM_APP:e.element._id.$oid,FROM_APP_NAME:e.element.name,FROM_APP_FILE:a},ds_id:$("#market_img_datastore select",t).val()},h.create({timeout:!0,data:img_obj,success:function(a,n){return function(s,i){$(".market_image_result",n).addClass("success").html('<span class="fa-stack fa-2x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-check fa-stack-1x fa-inverse"></i></span>'),$(".market_image_response",n).html('<p style="font-size:12px" class="running-color">'+u.tr("Image created successfully")+" ID:"+i.IMAGE.ID+"</p>"),e.images_information[a]=i,e.try_to_create_template(t)}}(a,i),error:function(e,a){$(".market_template_result",n).html(""),$(".market_image_result",i).html('<span class="fa-stack fa-2x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-warning fa-stack-1x fa-inverse"></i></span>'),$(".market_image_response",i).html('<p style="font-size:12px" class="error-color">'+(a.error.message||u.tr("Cannot contact server: is it running and reachable?"))+"</p>"),$("input",n).removeAttr("disabled"),$("input",i).removeAttr("disabled"),$("button",t).removeAttr("disabled")}}))}),e.try_to_create_template(t),!1}}),t.foundation("reflow","abide"),!1}function s(){return!1}function i(t){this.element=t.element}function r(t){var e=this,a=$("#market_import_file_template",t),n=$(".market_image_result.success",t).length;if(n==this.number_of_files&&!e.template_created)if(e.template_created=!0,e.element.opennebula_template&&"CPU=1"!==e.element.opennebula_template){var s;try{s=JSON.parse(e.element.opennebula_template)}catch(i){return $(".market_template_result",a).html('<span class="fa-stack fa-2x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-warning fa-stack-1x fa-inverse"></i></span>'),$(".market_template_response",a).html('<p style="font-size:12px" class="error-color">'+(i.message||u.tr("Cannot contact server: is it running and reachable?"))+"</p>"),$("input",a).removeAttr("disabled"),$("button",t).removeAttr("disabled"),void(e.template_created=!1)}$.isEmptyObject(s.DISK)?s.DISK=[]:$.isArray(s.DISK)||(s.DISK=[s.DISK]),s.NAME=$("input",a).val(),s.CPU||(s.CPU="1"),s.MEMORY||(s.MEMORY="1024"),$.each(e.images_information,function(t,e){s.DISK[t]||(s.DISK[t]={}),s.DISK[t].IMAGE=e.IMAGE.NAME,s.DISK[t].IMAGE_UNAME=e.IMAGE.UNAME}),s.FROM_APP=e.element._id.$oid,s.FROM_APP_NAME=e.element.name,f.create({timeout:!0,data:{vmtemplate:s},success:function(e,n){$(".market_template_result",a).addClass("success").html('<span class="fa-stack fa-2x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-check fa-stack-1x fa-inverse"></i></span>'),$(".market_template_response",a).html('<p style="font-size:12px" class="running-color">'+u.tr("Template created successfully")+" ID:"+n.VMTEMPLATE.ID+"</p>"),$("button",t).hide()},error:function(n,s){$(".market_template_result",a).html('<span class="fa-stack fa-2x" style="color: #dfdfdf"><i class="fa fa-cloud fa-stack-2x"></i><i class="fa  fa-warning fa-stack-1x fa-inverse"></i></span>'),$(".market_template_response",a).html('<p style="font-size:12px" class="error-color">'+(s.error.message||u.tr("Cannot contact server: is it running and reachable?"))+"</p>"),$("input",a).removeAttr("disabled"),$("button",t).removeAttr("disabled"),e.template_created=!1}})}else $("button",t).hide()}{var o=t("utils/dialogs/dialog"),l=t("hbs!./import/html"),c=t("hbs!./import/content"),d=(t("sunstone"),t("utils/notifier")),u=t("utils/locale"),p=t("utils/resource-select"),h=t("opennebula/image"),f=t("opennebula/template"),m=t("./import/dialogId");t("../tabId")}return e.DIALOG_ID=m,e.prototype=Object.create(o.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e.prototype.setParams=i,e.prototype.try_to_create_template=r,e}),define("hbs!tabs/marketplace-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/humanizeSize"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o=this.lambda;return'        <tr>\n          <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"Status",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+r(o(null!=(s=null!=t?t.element:t)?s.status:s,t))+"</td>\n        </tr>\n"},3:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o=this.lambda;return'        <tr>\n          <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"Tags",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+r(o(null!=(s=null!=t?t.element:t)?s.tags:s,t))+"</td>\n        </tr>\n"},5:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o=this.lambda;return'        <tr>\n          <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"Catalog",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+r(o(null!=(s=null!=t?t.element:t)?s.catalog:s,t))+"</td>\n        </tr>\n"},7:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression;return'        <tr>\n          <td class="key_td">'+r((e.tr||t&&t.tr||i).call(t,"Size",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+r((e.humanizeSize||t&&t.humanizeSize||i).call(t,"B",null!=(s=null!=(s=null!=(s=null!=t?t.element:t)?s.files:s)?s[0]:s)?s.size:s,{name:"humanizeSize",hash:{},data:n}))+"</td>\n        </tr>\n"},9:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='    <table class="dataTable">\n      <thead>\n        <tr>\n          <th colspan="2">'+o((e.tr||t&&t.tr||r).call(t,"Short Description",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="value_td">';return i=null!=(i=e.short_description||(null!=t?t.short_description:t))?i:r,s=typeof i===l?i.call(t,{name:"short_description",hash:{},data:n}):i,null!=s&&(c+=s),c+"</td>\n        </tr>\n      </tbody>\n    </table>\n"},11:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'        <tr>\n          <td class="value_td">'+o((s=null!=(s=e.name||(null!=t?t.name:t))?s:r,typeof s===i?s.call(t,{name:"name",hash:{},data:n}):s))+'</td>\n          <td class="value_td">'+o((e.humanizeSize||t&&t.humanizeSize||r).call(t,"B",null!=t?t.size:t,{name:"humanizeSize",hash:{},data:n}))+"</td>\n        </tr>\n"},13:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'        <tr>\n          <td colspan="2" class="value_td">'+i((e.tr||t&&t.tr||s).call(t,"No Images defined",{name:"tr",hash:{},data:n}))+"</td>\n        </tr>\n"},15:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o=this.lambda;return'    <table class="dataTable">\n      <thead>\n        <tr>\n          <th colspan="2">'+r((e.tr||t&&t.tr||i).call(t,"OpenNebula Template",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="value_td"><pre>'+r(o(null!=(s=null!=t?t.element:t)?s.opennebula_template:s,t))+"</pre></td>\n        </tr>\n      </tbody>\n    </table>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable">\n      <thead>\n        <tr><th colspan="2">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th></tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=(s=null!=t?t.element:t)?s._id:s)?s.$oid:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.name:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"URL",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">\n            <a href="'+o((i=null!=(i=e.url||(null!=t?t.url:t))?i:r,typeof i===c?i.call(t,{name:"url",hash:{},data:n}):i))+'" target="_blank">'+o((e.tr||t&&t.tr||r).call(t,"link",{name:"tr",hash:{},data:n}))+'</a>\n          </td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Publisher",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.publisher:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Downloads",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.downloads:s,t))+"</td>\n        </tr>\n";return s=e["if"].call(t,null!=(s=null!=t?t.element:t)?s.status:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(d+=s),s=e["if"].call(t,null!=(s=null!=t?t.element:t)?s.tags:s,{name:"if",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(d+=s),s=e["if"].call(t,null!=(s=null!=t?t.element:t)?s.catalog:s,{name:"if",hash:{},fn:this.program(5,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+='        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"OS",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s["os-id"]:s,t))+" "+o(l(null!=(s=null!=t?t.element:t)?s["os-release"]:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Arch",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s["os-arch"]:s,t))+"</td>\n        </tr>\n",s=e["if"].call(t,null!=(s=null!=t?t.element:t)?s.files:s,{name:"if",hash:{},fn:this.program(7,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+='        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Hypervisor",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.hypervisor:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Format",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=t?t.element:t)?s.format:s,t))+'</td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">\n',s=e["if"].call(t,null!=t?t.short_description:t,{name:"if",hash:{},fn:this.program(9,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+='    <table class="dataTable">\n      <thead>\n        <tr>\n          <th colspan="2">'+o((e.tr||t&&t.tr||r).call(t,"Description",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="value_td">',i=null!=(i=e.description||(null!=t?t.description:t))?i:r,s=typeof i===c?i.call(t,{name:"description",hash:{},data:n}):i,null!=s&&(d+=s),d+='</td>\n        </tr>\n      </tbody>\n    </table>\n    <table class="dataTable">\n      <thead>\n        <tr>\n          <th colspan="2">'+o((e.tr||t&&t.tr||r).call(t,"Images",{name:"tr",hash:{},data:n}))+"</th>\n        </tr>\n      </thead>\n      <tbody>\n",s=e.each.call(t,null!=(s=null!=t?t.element:t)?s.files:s,{name:"each",hash:{},fn:this.program(11,n),inverse:this.program(13,n),data:n}),null!=s&&(d+=s),d+="      </tbody>\n    </table>\n",s=e["if"].call(t,null!=(s=null!=t?t.element:t)?s.opennebula_template:s,{name:"if",hash:{},fn:this.program(15,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+"  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/marketplace-tab/panels/info/html",a),a}),define("tabs/marketplace-tab/panels/info/panelId",["require"],function(){return"marketplace_info_tab"}),define("tabs/marketplace-tab/panels/info",["require","hbs!./info/html","utils/locale","utils/humanize","utils/template-utils","utils/panel/template-table","./info/panelId"],function(t){function e(t){return this.title=i.tr("Info"),this.icon="fa-info-circle",this.element=t,this}function a(){var t=this.element.links.download.href;t=t.replace(/\/download$/,"");var e="";this.element.short_description&&(e=r.htmlDecode(this.element.short_description).replace(/\n/g,"<br/>"));
+var a=r.htmlDecode(this.element.description).replace(/\n/g,"<br/>");return s({element:this.element,url:t,short_description:e,description:a})}function n(){return!1}var s=t("hbs!./info/html"),i=t("utils/locale"),r=(t("utils/humanize"),t("utils/template-utils")),o=(t("utils/panel/template-table"),t("./info/panelId"));return e.PANEL_ID=o,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/marketplace-tab",["require","utils/locale","./marketplace-tab/buttons","./marketplace-tab/actions","./marketplace-tab/datatable","./marketplace-tab/tabId","./marketplace-tab/dialogs/import","./marketplace-tab/panels/info"],function(t){var e=t("utils/locale"),a=t("./marketplace-tab/buttons"),n=t("./marketplace-tab/actions"),s=t("./marketplace-tab/datatable"),i=t("./marketplace-tab/tabId"),r="dataTableMarketplace",o=[t("./marketplace-tab/dialogs/import")],l=[t("./marketplace-tab/panels/info")],c=[],d={tabId:i,title:'<i class="fa fa-lg fa-fw fa-shopping-cart"></i>&emsp;'+e.tr("Marketplace"),listHeader:'<i class="fa fa-fw fa-shopping-cart"></i>&emsp;'+e.tr("OpenNebula Marketplace"),infoHeader:'<i class="fa fa-fw fa-shopping-cart"></i>&emsp;'+e.tr("Appliance"),subheader:"<span/> <small></small>&emsp;",resource:"Marketplace",content:'<div class="row marketplace_error_message" hidden>        <div class="small-6 columns small-centered text-center">            <div class="alert-box alert radius">'+e.tr("Cannot connect to OpenNebula Marketplace")+"</div>        </div>    </div>",buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0,oneSelection:!0}),panels:l,formPanels:c,dialogs:o};return d}),define("tabs/oneflow-dashboard",["require"],function(){var t="oneflow-dashboard",e={tabId:t,title:'<i class="fa fa-lg fa-fw fa-cubes"></i>&emsp;OneFlow',no_content:!0};return e}),define("tabs/oneflow-services-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Service.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Service.chown":{type:"confirm_with_select",text:e.tr("Change owner"),select:"User",tip:e.tr("Select the new owner")+":",layout:"user_select"},"Service.chgrp":{type:"confirm_with_select",text:e.tr("Change group"),select:"Group",tip:e.tr("Select the new group")+":",layout:"user_select"},"Service.shutdown":{type:"action",layout:"main",text:e.tr("Shutdown")},"Service.recover":{type:"action",layout:"main",text:e.tr("Recover")},"Service.delete":{type:"confirm",text:e.tr("Delete"),layout:"del",tip:e.tr("This will delete the selected services")}};return a}),define("tabs/oneflow-services-tab/dialogs/scale/dialogId",["require"],function(){return"scaleServiceRoleDialog"}),define("tabs/oneflow-services-tab/actions",["require","sunstone","utils/notifier","utils/locale","opennebula/service","opennebula/role","opennebula/vm","utils/common-actions","./tabId","./panels/roles/panelId","./dialogs/scale/dialogId"],function(t){function e(){var t=[],e=$("#datatable_service_roles","#"+d+" #"+p),a=$("tbody input.check_item:checked",e);return $.each(a,function(){t.push($(this).val())}),t}function a(){var t=[],e=$("table[id^=datatable_service_vms]","#"+d+" #"+p),a=$("tbody input.check_item:checked",e);return $.each(a,function(){t.push($(this).val())}),t}function n(){return s.runAction("Service.refresh")}var s=t("sunstone"),i=t("utils/notifier"),r=(t("utils/locale"),t("opennebula/service")),o=t("opennebula/role"),l=t("opennebula/vm"),c=t("utils/common-actions"),d=t("./tabId"),u="Service",p=t("./panels/roles/panelId"),h=t("./dialogs/scale/dialogId"),f=new c(r,u,d),m={"Service.show":f.show(),"Service.refresh":f.refresh(),"Service.delete":f["delete"](),"Service.chown":f.multipleAction("chown"),"Service.chgrp":f.multipleAction("chgrp"),"Service.chmod":f.singleAction("chmod"),"Service.list":{type:"list",call:r.list,callback:function(t,e){$(".oneflow_services_error_message").hide(),s.getDataTable(d).updateView(t,e)},error:function(t,e){i.onError(t,e,$(".oneflow_services_error_message"))}},"Service.shutdown":{type:"multiple",call:r.shutdown,elements:function(){return s.getDataTable(d).elements()},error:i.onError,notify:!0},"Service.recover":{type:"multiple",call:r.recover,elements:function(){return s.getDataTable(d).elements()},error:i.onError,notify:!0},"Role.scale_dialog":{type:"custom",call:function(){selected=e(),0!=selected.lenght&&(s.getDialog(h).setParams({roleIds:selected}),s.getDialog(h).reset(),s.getDialog(h).show())}},"Role.update":{type:"multiple",call:o.update,callback:function(){s.getDialog(h).hide(),n()},elements:e,error:i.onError,notify:!0},"Role.hold":{type:"multiple",call:o.hold,callback:n,elements:e,error:i.onError,notify:!0},"Role.release":{type:"multiple",call:o.release,callback:n,elements:e,error:i.onError,notify:!0},"Role.suspend":{type:"multiple",call:o.suspend,callback:n,elements:e,error:i.onError,notify:!0},"Role.resume":{type:"multiple",call:o.resume,callback:n,elements:e,error:i.onError,notify:!0},"Role.stop":{type:"multiple",call:o.stop,callback:n,elements:e,error:i.onError,notify:!0},"Role.reboot_hard":{type:"multiple",call:o.reboot_hard,callback:n,elements:e,error:i.onError,notify:!0},"Role.delete_recreate":{type:"multiple",call:o.delete_recreate,callback:n,elements:e,error:i.onError,notify:!0},"Role.reboot":{type:"multiple",call:o.reboot,callback:n,elements:e,error:i.onError,notify:!0},"Role.poweroff":{type:"multiple",call:o.poweroff,callback:n,elements:e,error:i.onError,notify:!0},"Role.poweroff_hard":{type:"multiple",call:o.poweroff_hard,callback:n,elements:e,error:i.onError,notify:!0},"Role.undeploy":{type:"multiple",call:o.undeploy,callback:n,elements:e,error:i.onError,notify:!0},"Role.undeploy_hard":{type:"multiple",call:o.undeploy_hard,callback:n,elements:e,error:i.onError,notify:!0},"Role.snapshot_create":{type:"single",call:o.snapshot_create,callback:n,error:i.onError,notify:!0},"Role.shutdown":{type:"multiple",call:o.shutdown,callback:n,elements:e,error:i.onError,notify:!0},"Role.shutdown_hard":{type:"multiple",call:o.cancel,callback:n,elements:e,error:i.onError,notify:!0},"Role.delete":{type:"multiple",call:o.del,callback:n,elements:e,error:i.onError,notify:!0},"Role.recover":{type:"multiple",call:o.recover,callback:n,elements:e,error:i.onError,notify:!0},"RoleVM.deploy":{type:"multiple",call:l.deploy,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.migrate":{type:"multiple",call:l.migrate,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.migrate_live":{type:"multiple",call:l.livemigrate,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.hold":{type:"multiple",call:l.hold,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.release":{type:"multiple",call:l.release,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.suspend":{type:"multiple",call:l.suspend,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.resume":{type:"multiple",call:l.resume,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.stop":{type:"multiple",call:l.stop,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.reboot_hard":{type:"multiple",call:l.reset,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.delete_recreate":{type:"multiple",call:l.resubmit,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.reboot":{type:"multiple",call:l.reboot,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.poweroff":{type:"multiple",call:l.poweroff,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.poweroff_hard":{type:"multiple",call:l.poweroff_hard,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.undeploy":{type:"multiple",call:l.undeploy,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.undeploy_hard":{type:"multiple",call:l.undeploy_hard,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.shutdown":{type:"multiple",call:l.shutdown,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.shutdown_hard":{type:"multiple",call:l.cancel,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.delete":{type:"multiple",call:l.del,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.recover":{type:"multiple",call:l.recover,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.resched":{type:"multiple",call:l.resched,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.unresched":{type:"multiple",call:l.unresched,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.chown":{type:"multiple",call:l.chown,callback:n,elements:a,error:i.onError,notify:!0},"RoleVM.chgrp":{type:"multiple",call:l.chgrp,callback:n,elements:a,error:i.onError,notify:!0}};return m}),define("tabs/oneflow-services-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","opennebula/service","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=c,this.dataTableId=t,this.resource=o,this.xmlRoot=l,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:s.tabTableColumns(c)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[i.tr("ID"),i.tr("Owner"),i.tr("Group"),i.tr("Name"),i.tr("State")],this.selectOptions={id_index:1,name_index:4,select_resource:i.tr("Please select a Service from the list"),you_selected:i.tr("You selected the following Service:"),select_resource_multiple:i.tr("Please select one or more Services from the list"),you_selected_multiple:i.tr("You selected the following Services:")},n.call(this)}function a(t){var e=t[l];return['<input class="check_item" type="checkbox" id="'+o.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.UNAME,e.GNAME,e.NAME,r.state(e.TEMPLATE.BODY.state)]}var n=t("utils/tab-datatable"),s=t("sunstone-config"),i=t("utils/locale"),r=t("opennebula/service"),o="Service",l="DOCUMENT",c=t("./tabId");return e.prototype=Object.create(n.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("hbs!tabs/oneflow-services-tab/dialogs/scale/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal" role="dialog" data-reveal >\n  <div class="row">\n    <h3 class="subheader">'+o((e.tr||t&&t.tr||r).call(t,"Scale",{name:"tr",hash:{},data:n}))+'</h3>\n  </div>\n  <form data-abide="ajax" id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'Form">\n    <div class="row">\n      <div class="large-12 columns">\n        <label for="cardinality">'+o((e.tr||t&&t.tr||r).call(t,"Cardinality",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Number of VMs to instantiate with this role",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" name="cardinality" id="cardinality"/>\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <input type="checkbox" name="force" id="force"/>\n        <label class="inline" for="force">'+o((e.tr||t&&t.tr||r).call(t,"Force",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Force the new cardinality even if it is outside the limits",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n      </div>\n    </div>\n    <div class="form_buttons row">\n      <button type="submit" class="button radius right">\n        '+o((e.tr||t&&t.tr||r).call(t,"Scale",{name:"tr",hash:{},data:n}))+'\n      </button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/oneflow-services-tab/dialogs/scale/html",a),a}),define("tabs/oneflow-services-tab/dialogs/scale",["require","utils/dialogs/dialog","hbs!./scale/html","sunstone","utils/notifier","utils/locale","utils/tips","./scale/dialogId","../tabId"],function(t){function e(){this.dialogId=p,r.call(this)}function a(){return o({dialogId:this.dialogId})}function n(){}function s(t){var e=this;return t.off("invalid.fndtn.abide","#"+p+"Form"),t.off("valid.fndtn.abide","#"+p+"Form"),t.on("invalid.fndtn.abide","#"+p+"Form",function(t){"abide.fndtn"==t.namespace&&c.notifyError(d.tr("One or more required fields are missing or malformed."))}).on("valid.fndtn.abide","#"+p+"Form",function(a){if("abide.fndtn"==a.namespace){var n=!1;$("#force",t).is(":checked")&&(n=!0);var s={force:n,cardinality:$("#cardinality",t).val()};return l.runAction("Role.update",e.roleIds,s),!1}}),t.foundation("reflow","abide"),u.setup(t),!1}function i(t){this.roleIds=t.roleIds}{var r=t("utils/dialogs/dialog"),o=t("hbs!./scale/html"),l=t("sunstone"),c=t("utils/notifier"),d=t("utils/locale"),u=t("utils/tips"),p=t("./scale/dialogId");t("../tabId")}return e.DIALOG_ID=p,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=n,e.prototype.setup=s,e.prototype.setParams=i,e}),define("hbs!tabs/oneflow-services-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/valOrDefault"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return"            "+i((e.tr||t&&t.tr||s).call(t,"yes",{name:"tr",hash:{},data:n}))+"\n"},3:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return"            "+i((e.tr||t&&t.tr||s).call(t,"no",{name:"tr",hash:{},data:n}))+"\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="2">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.NAME:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Strategy",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.BODY:s)?s.deployment:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Shutdown action",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">\n            '+o((e.valOrDefault||t&&t.valOrDefault||r).call(t,null!=(s=null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.BODY:s)?s.shutdown_action:s,"-",{name:"valOrDefault",hash:{},data:n}))+'\n          </td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"State",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o((i=null!=(i=e.stateStr||(null!=t?t.stateStr:t))?i:r,typeof i===c?i.call(t,{name:"stateStr",hash:{},data:n}):i))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Ready Status Gate",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">\n';return s=e["if"].call(t,null!=(s=null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.BODY:s)?s.ready_status_gate:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.program(3,n),data:n}),null!=s&&(d+=s),d+='          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class="large-6 columns">',i=null!=(i=e.permissionsTableHTML||(null!=t?t.permissionsTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"permissionsTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"</div>\n</div>"},useData:!0});return e.registerPartial("tabs/oneflow-services-tab/panels/info/html",a),a}),define("tabs/oneflow-services-tab/panels/info/panelId",["require"],function(){return"service_info_tab"}),define("tabs/oneflow-services-tab/panels/info",["require","utils/locale","utils/panel/permissions-table","opennebula/service","hbs!./info/html","../tabId","./info/panelId"],function(t){function e(t){return this.title=s.tr("Info"),this.icon="fa-info-circle",this.element=t[d],this}function a(){var t=i.html(l,u,this.element);return o({element:this.element,permissionsTableHTML:t,stateStr:r.state(this.element.TEMPLATE.BODY.state)})}function n(t){i.setup(l,u,this.element,t)}var s=t("utils/locale"),i=t("utils/panel/permissions-table"),r=t("opennebula/service"),o=t("hbs!./info/html"),l=t("../tabId"),c=t("./info/panelId"),d="DOCUMENT",u="Service";return e.PANEL_ID=c,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/oneflow-services-tab/panels/roles/roles-buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Role.scale_dialog":{type:"action",text:e.tr("Scale"),layout:"create"},"Role.hold":{type:"action",text:e.tr("Hold"),tip:e.tr("This will hold selected pending VMs from being deployed"),layout:"vmsplanification_buttons"},"Role.release":{type:"action",text:e.tr("Release"),layout:"vmsplanification_buttons",tip:e.tr("This will release held machines")},"Role.suspend":{type:"action",text:e.tr("Suspend"),layout:"vmspause_buttons",tip:e.tr("This will suspend selected machines")},"Role.resume":{type:"action",text:'<i class="fa fa-play"/>',layout:"vmsplay_buttons",tip:e.tr("This will resume selected VMs")},"Role.stop":{type:"action",text:e.tr("Stop"),layout:"vmsstop_buttons",tip:e.tr("This will stop selected VMs")},"Role.reboot":{type:"action",text:e.tr("Reboot"),layout:"vmsrepeat_buttons",tip:e.tr("This will send a reboot action to running VMs")},"Role.reboot_hard":{type:"action",text:e.tr("Reboot")+' <span class="label secondary radius">hard</span>',layout:"vmsrepeat_buttons",tip:e.tr("This will perform a hard reboot on selected VMs")},"Role.poweroff":{type:"action",text:e.tr("Power Off"),layout:"vmspause_buttons",tip:e.tr("This will send a power off signal to running VMs. They can be resumed later.")},"Role.poweroff_hard":{type:"action",text:e.tr("Power Off")+' <span class="label secondary radius">hard</span>',layout:"vmspause_buttons",tip:e.tr("This will send a forced power off signal to running VMs. They can be resumed later.")},"Role.undeploy":{type:"action",text:e.tr("Undeploy"),layout:"vmsstop_buttons",tip:e.tr("Shuts down the given VM. The VM is saved in the system Datastore.")},"Role.undeploy_hard":{type:"action",text:e.tr("Undeploy")+' <span class="label secondary radius">hard</span>',layout:"vmsstop_buttons",tip:e.tr("Shuts down the given VM. The VM is saved in the system Datastore.")},"Role.shutdown":{type:"action",text:e.tr("Shutdown"),layout:"vmsdelete_buttons",tip:e.tr("This will initiate the shutdown process in the selected VMs")},"Role.shutdown_hard":{type:"action",text:e.tr("Shutdown")+' <span class="label secondary radius">hard</span>',layout:"vmsdelete_buttons",tip:e.tr("This will initiate the shutdown-hard (forced) process in the selected VMs")},"Role.delete":{type:"action",text:e.tr("Delete"),layout:"vmsdelete_buttons",tip:e.tr("This will delete the selected VMs from the database")},"Role.delete_recreate":{type:"action",text:e.tr("Delete")+' <span class="label secondary radius">recreate</span>',layout:"vmsrepeat_buttons",tip:e.tr("This will delete and recreate VMs to PENDING state")}};return a}),define("tabs/oneflow-services-tab/panels/roles/roles-vm-buttons",["require","utils/locale","tabs/vms-tab/buttons"],function(t){var e=(t("utils/locale"),t("tabs/vms-tab/buttons")),a={"RoleVM.hold":e["VM.hold"],"RoleVM.release":e["VM.release"],"RoleVM.suspend":e["VM.suspend"],"RoleVM.resume":e["VM.resume"],"RoleVM.stop":e["VM.stop"],"RoleVM.reboot":e["VM.reboot"],"RoleVM.reboot_hard":e["VM.reboot_hard"],"RoleVM.poweroff":e["VM.poweroff"],"RoleVM.poweroff_hard":e["VM.poweroff_hard"],"RoleVM.undeploy":e["VM.undeploy"],"RoleVM.undeploy_hard":e["VM.undeploy_hard"],"RoleVM.shutdown":e["VM.shutdown"],"RoleVM.shutdown_hard":e["VM.shutdown_hard"],"RoleVM.delete":e["VM.delete"],"RoleVM.delete_recreate":e["VM.delete_recreate"],"RoleVM.resched":e["VM.resched"],"RoleVM.unresched":e["VM.unresched"]};return a}),define("utils/dom-datatable",["require","utils/tab-datatable","sunstone-config","utils/locale"],function(t){function e(t,e){this.conf=e||{},this.dataTableId=t,this.dataTableOptions=e.dataTableOptions||{bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]}]},a.call(this)}{var a=t("utils/tab-datatable");t("sunstone-config"),t("utils/locale")}return e.prototype=Object.create(a.prototype),e.prototype.constructor=e,e}),define("hbs!tabs/oneflow-services-tab/panels/roles/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'    <div id="role_actions">\n      <div class="columns large-4 medium-6 right">\n        <div class="row">\n          <div class="small-6 columns">\n            <label for="batch_action_period">'+i((e.tr||t&&t.tr||s).call(t,"Period",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Seconds between each group of actions",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n            <input type="text" id="batch_action_period" name="batch_action_period"/>\n          </div>\n          <div class="small-6 columns">\n            <label for="batch_action_number">'+i((e.tr||t&&t.tr||s).call(t,"Number",{name:"tr",hash:{},data:n}))+':\n              <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Number of VMs to apply the action to each period",{name:"tr",hash:{},data:n}))+'</span>\n            </label>\n            <input type="text" id="batch_action_number" name="batch_action_number"/>\n          </div>\n        </div>\n      </div>\n      <div class="action_blocks columns large-12">\n      </div>\n    </div>\n'},3:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return"            <th>"+i((e.tr||t&&t.tr||s).call(t,"State",{name:"tr",hash:{},data:n}))+"</th>\n"},5:function(t,e,a,n,s){var i,r,o="function",l=e.helperMissing,c=this.escapeExpression,d=this.lambda,u='          <tr>\n            <td class="hidden">\n              <input class="check_item" type="checkbox" id="role_'+c((r=null!=(r=e.name||(null!=t?t.name:t))?r:l,typeof r===o?r.call(t,{name:"name",hash:{},data:n}):r))+'" name="selected_items" value="'+c(d(null!=(i=null!=s[1]?s[1].element:s[1])?i.ID:i,t))+"/role/"+c((r=null!=(r=e.name||(null!=t?t.name:t))?r:l,typeof r===o?r.call(t,{name:"name",hash:{},data:n}):r))+'"/>\n            </td>\n            <td>'+c((r=null!=(r=e.name||(null!=t?t.name:t))?r:l,typeof r===o?r.call(t,{name:"name",hash:{},data:n}):r))+"</td>\n";return i=e["if"].call(t,null!=s[1]?s[1].servicePanel:s[1],{name:"if",hash:{},fn:this.program(6,n,s),inverse:this.noop,data:n}),null!=i&&(u+=i),u+"            <td>"+c((r=null!=(r=e.cardinality||(null!=t?t.cardinality:t))?r:l,typeof r===o?r.call(t,{name:"cardinality",hash:{},data:n}):r))+"</td>\n            <td>"+c((r=null!=(r=e.vm_template||(null!=t?t.vm_template:t))?r:l,typeof r===o?r.call(t,{name:"vm_template",hash:{},data:n}):r))+"</td>\n            <td>"+c((r=null!=(r=e.parents||(null!=t?t.parents:t))?r:l,typeof r===o?r.call(t,{name:"parents",hash:{},data:n}):r))+"</td>\n          </tr>\n"},6:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return"            <td>"+o((s=null!=(s=e.state||(null!=t?t.state:t))?s:r,typeof s===i?s.call(t,{name:"state",hash:{},data:n}):s))+"</td>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n,s){var i,r,o="function",l=e.helperMissing,c=this.escapeExpression,d='<form class="custom" id="roles_form" action="">\n  <div class="row">\n';return i=e["if"].call(t,null!=t?t.servicePanel:t,{name:"if",hash:{},fn:this.program(1,n,s),inverse:this.noop,data:n}),null!=i&&(d+=i),d+='    <div id="roles_info" class="columns large-12">\n      <table id="datatable_roles_'+c((r=null!=(r=e.panelId||(null!=t?t.panelId:t))?r:l,typeof r===o?r.call(t,{name:"panelId",hash:{},data:n}):r))+'" class="dataTable twelve">\n        <thead>\n          <tr>\n            <th class="check hidden">\n              <input type="checkbox" class="check_all" value=""></input>\n            </th>\n            <th>'+c((e.tr||t&&t.tr||l).call(t,"Name",{name:"tr",hash:{},data:n}))+"</th>\n",i=e["if"].call(t,null!=t?t.servicePanel:t,{name:"if",hash:{},fn:this.program(3,n,s),inverse:this.noop,data:n}),null!=i&&(d+=i),d+="            <th>"+c((e.tr||t&&t.tr||l).call(t,"Cardinality",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+c((e.tr||t&&t.tr||l).call(t,"VM Template",{name:"tr",hash:{},data:n}))+"</th>\n            <th>"+c((e.tr||t&&t.tr||l).call(t,"Parents",{name:"tr",hash:{},data:n}))+"</th>\n          </tr>\n        </thead>\n        <tbody>\n",i=e.each.call(t,null!=t?t.roleList:t,{name:"each",hash:{},fn:this.program(5,n,s),inverse:this.noop,data:n}),null!=i&&(d+=i),d+'        </tbody>\n      </table>\n    </div>\n    <div id="roles_extended_info" class="columns twelve">\n      <div class="text-center">\n        <span class="fa-stack fa-5x" style="color: #dfdfdf">\n          <i class="fa fa-cloud fa-stack-2x"></i>\n          <i class="fa fa-info-circle fa-stack-1x fa-inverse"></i>\n        </span>\n        <br>\n        <br>\n        <span style="font-size: 18px; color: #999">\n          '+c((e.tr||t&&t.tr||l).call(t,"Select a role in the table for more information",{name:"tr",hash:{},data:n}))+"\n        </span>\n      </div>\n    </div>\n  </div>\n</form>"},useData:!0,useDepths:!0});return e.registerPartial("tabs/oneflow-services-tab/panels/roles/html",a),a}),define("hbs!tabs/oneflow-services-tab/panels/roles/roleInfo",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/valOrDefault"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c=this.lambda,d="  <fieldset>\n    <legend>"+o((e.tr||t&&t.tr||r).call(t,"Virtual Machines",{name:"tr",hash:{},data:n}))+'</legend>\n    <div id="role_vms_actions">\n      <div class="action_blocks large-12 columns">\n      </div>\n    </div>\n    <div class="large-12 columns">\n      <br>\n      <table id="datatable_vms_'+o((i=null!=(i=e.panelId||(null!=t?t.panelId:t))?i:r,typeof i===l?i.call(t,{name:"panelId",hash:{},data:n}):i))+"_"+o(c(null!=(s=null!=t?t.role:t)?s.name:s,t))+'" class="dataTable twelve ">\n        <thead>\n          <tr>\n            <th></th>\n            <th></th>\n            <th class="check">\n              <input type="checkbox" class="check_all" value=""></input>\n            </th>\n';return s=e.each.call(t,null!=t?t.vmsTableColumns:t,{name:"each",hash:{},fn:this.program(2,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+="          </tr>\n        </thead>\n        <tbody>\n",s=e.each.call(t,null!=t?t.vms:t,{name:"each",hash:{},fn:this.program(4,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+"        </tbody>\n      </table>\n    </div>\n  </fieldset>\n"},2:function(t){var e=this.lambda,a=this.escapeExpression;return"            <th>"+a(e(t,t))+"</th>\n"},4:function(t,e,a,n){var s,i="          <tr>\n";return s=e.each.call(t,t,{name:"each",hash:{},fn:this.program(5,n),inverse:this.noop,data:n}),null!=s&&(i+=s),i+"          </tr>\n"},5:function(t){var e,a=this.lambda,n="            <td>";return e=a(t,t),null!=e&&(n+=e),n+"</td>\n"},7:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='    <table class="dataTable extended_table policies_table">\n      <thead style="background:#dfdfdf">\n        <tr>\n          <th colspan="7">'+r((e.tr||t&&t.tr||i).call(t,"Elasticity policies",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <thead>\n        <tr>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Type of adjustment.",{name:"tr",hash:{},data:n}))+"<br><br>\n            "+r((e.tr||t&&t.tr||i).call(t,"CHANGE: Add/substract the given number of VMs.",{name:"tr",hash:{},data:n}))+"<br>\n            "+r((e.tr||t&&t.tr||i).call(t,"CARDINALITY: Set the cardinality to the given number.",{name:"tr",hash:{},data:n}))+"<br>\n            "+r((e.tr||t&&t.tr||i).call(t,"PERCENTAGE_CHANGE: Add/substract the given percentage to the current cardinality.",{name:"tr",hash:{},data:n}))+'\n            " style="width:14%">'+r((e.tr||t&&t.tr||i).call(t,"Type",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Positive or negative adjustment. Its meaning depends on 'type'",{name:"tr",hash:{},data:n}))+"<br><br>\n            "+r((e.tr||t&&t.tr||i).call(t,"CHANGE: -2, will substract 2 VMs from the role",{name:"tr",hash:{},data:n}))+"<br>\n            "+r((e.tr||t&&t.tr||i).call(t,"CARDINALITY: 8, will set carditanilty to 8",{name:"tr",hash:{},data:n}))+"<br>\n            "+r((e.tr||t&&t.tr||i).call(t,"PERCENTAGE_CHANGE: 20, will increment cardinality by 20%",{name:"tr",hash:{},data:n}))+'" style="width:12%">'+r((e.tr||t&&t.tr||i).call(t,"Adjust",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Optional parameter for PERCENTAGE_CHANGE adjustment type.",{name:"tr",hash:{},data:n}))+"<br>\n            "+r((e.tr||t&&t.tr||i).call(t," If present, the policy will change the cardinality by at least the number of VMs set in this attribute.",{name:"tr",hash:{},data:n}))+'" style="width:9%">'+r((e.tr||t&&t.tr||i).call(t,"Min",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Expression to trigger the elasticity",{name:"tr",hash:{},data:n}))+"<br><br>\n            "+r((e.tr||t&&t.tr||i).call(t,"Example: ATT < 20",{name:"tr",hash:{},data:n}))+'" style="width:30%">'+r((e.tr||t&&t.tr||i).call(t,"Expression",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Number of periods that the expression must be true before the elasticity is triggered",{name:"tr",hash:{},data:n}))+'" style="width:8%">#\n          </th>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Duration, in seconds, of each period in '# Periods'",{name:"tr",hash:{},data:n}))+'" style="width:9%">'+r((e.tr||t&&t.tr||i).call(t,"Period",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Cooldown period duration after a scale operation, in seconds",{name:"tr",hash:{},data:n}))+'" style="width:15%">'+r((e.tr||t&&t.tr||i).call(t,"Cooldown",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th style="width:3%"></th>\n        </tr>\n      </thead>\n      <tbody>\n';return s=e.each.call(t,null!=(s=null!=t?t.role:t)?s.elasticity_policies:s,{name:"each",hash:{},fn:this.program(8,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+"      </tbody>\n    </table>\n"},8:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c="        <tr>\n          <td>"+l((i=null!=(i=e.type||(null!=t?t.type:t))?i:o,typeof i===r?i.call(t,{name:"type",hash:{},data:n}):i))+"</td>\n          <td>"+l((i=null!=(i=e.adjust||(null!=t?t.adjust:t))?i:o,typeof i===r?i.call(t,{name:"adjust",hash:{},data:n}):i))+"</td>\n          <td>"+l((e.valOrDefault||t&&t.valOrDefault||o).call(t,null!=t?t.min_adjust_step:t,"-",{name:"valOrDefault",hash:{},data:n}))+"</td>\n          <td>"+l((e.valOrDefault||t&&t.valOrDefault||o).call(t,null!=t?t.expression_evaluated:t,null!=t?t.expression:t,{name:"valOrDefault",hash:{},data:n}))+"</td>\n          <td>\n";return s=e["if"].call(t,null!=t?t.period_number:t,{name:"if",hash:{},fn:this.program(9,n),inverse:this.program(14,n),data:n}),null!=s&&(c+=s),c+"          </td>\n          <td>"+l((e.valOrDefault||t&&t.valOrDefault||o).call(t,null!=t?t.period:t,"-",{name:"valOrDefault",hash:{},data:n}))+"</td>\n          <td>"+l((e.valOrDefault||t&&t.valOrDefault||o).call(t,null!=t?t.cooldown:t,"-",{name:"valOrDefault",hash:{},data:n}))+"</td>\n        </tr>\n"
+},9:function(t,e,a,n){var s,i="";return s=e["if"].call(t,null!=t?t.servicePanel:t,{name:"if",hash:{},fn:this.program(10,n),inverse:this.program(12,n),data:n}),null!=s&&(i+=s),i},10:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o="function";return"            "+r((e.valOrDefault||t&&t.valOrDefault||i).call(t,null!=t?t.true_evals:t,"0",{name:"valOrDefault",hash:{},data:n}))+"/"+r((s=null!=(s=e.period_number||(null!=t?t.period_number:t))?s:i,typeof s===o?s.call(t,{name:"period_number",hash:{},data:n}):s))+"\n"},12:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return"            "+o((s=null!=(s=e.period_number||(null!=t?t.period_number:t))?s:r,typeof s===i?s.call(t,{name:"period_number",hash:{},data:n}):s))+"\n"},14:function(){return"            -\n"},16:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='    <table class="dataTable extended_table policies_table">\n      <thead style="background:#dfdfdf">\n        <tr>\n          <th colspan="5">'+r((e.tr||t&&t.tr||i).call(t,"Scheduled policies",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <thead>\n        <tr>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Type of adjustment.",{name:"tr",hash:{},data:n}))+"<br><br>\n            "+r((e.tr||t&&t.tr||i).call(t,"CHANGE: Add/substract the given number of VMs.",{name:"tr",hash:{},data:n}))+"<br>\n            "+r((e.tr||t&&t.tr||i).call(t,"CARDINALITY: Set the cardinality to the given number.",{name:"tr",hash:{},data:n}))+"<br>\n            "+r((e.tr||t&&t.tr||i).call(t,"PERCENTAGE_CHANGE: Add/substract the given percentage to the current cardinality.",{name:"tr",hash:{},data:n}))+'" style="width:14%">'+r((e.tr||t&&t.tr||i).call(t,"Type",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Positive or negative adjustment. Its meaning depends on 'type'",{name:"tr",hash:{},data:n}))+"<br><br>\n            "+r((e.tr||t&&t.tr||i).call(t,"CHANGE: -2, will substract 2 VMs from the role",{name:"tr",hash:{},data:n}))+"<br>\n            "+r((e.tr||t&&t.tr||i).call(t,"CARDINALITY: 8, will set carditanilty to 8",{name:"tr",hash:{},data:n}))+"<br>\n            "+r((e.tr||t&&t.tr||i).call(t,"PERCENTAGE_CHANGE: 20, will increment cardinality by 20%",{name:"tr",hash:{},data:n}))+'" style="width:12%">'+r((e.tr||t&&t.tr||i).call(t,"Adjust",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Optional parameter for PERCENTAGE_CHANGE adjustment type. If present, the policy will change the cardinality by at least the number of VMs set in this attribute.",{name:"tr",hash:{},data:n}))+'" style="width:9%">'+r((e.tr||t&&t.tr||i).call(t,"Min",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Recurrence: Time for recurring adjustements. Time is specified with the Unix cron syntax",{name:"tr",hash:{},data:n}))+"<br><br>\n            "+r((e.tr||t&&t.tr||i).call(t,"Start time: Exact time for the adjustement",{name:"tr",hash:{},data:n}))+'" style="width:28%">'+r((e.tr||t&&t.tr||i).call(t,"Time format",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th class="has-tip" data-tooltip title="'+r((e.tr||t&&t.tr||i).call(t,"Time expression depends on the the time formar selected",{name:"tr",hash:{},data:n}))+"<br><br>\n            "+r((e.tr||t&&t.tr||i).call(t,"Recurrence: Time for recurring adjustements. Time is specified with the Unix cron syntax",{name:"tr",hash:{},data:n}))+"<br>\n            "+r((e.tr||t&&t.tr||i).call(t,"Start time: Exact time for the adjustement",{name:"tr",hash:{},data:n}))+'" style="width:33%">'+r((e.tr||t&&t.tr||i).call(t,"Time expression",{name:"tr",hash:{},data:n}))+'\n          </th>\n          <th style="width:3%"></th>\n        </tr>\n      </thead>\n      <tbody>\n';return s=e.each.call(t,null!=(s=null!=t?t.role:t)?s.scheduled_policies:s,{name:"each",hash:{},fn:this.program(17,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+"      </tbody>\n    </table>\n"},17:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c="        <tr>\n          <td>"+l((i=null!=(i=e.type||(null!=t?t.type:t))?i:o,typeof i===r?i.call(t,{name:"type",hash:{},data:n}):i))+"</td>\n          <td>"+l((i=null!=(i=e.adjust||(null!=t?t.adjust:t))?i:o,typeof i===r?i.call(t,{name:"adjust",hash:{},data:n}):i))+"</td>\n          <td>"+l((e.valOrDefault||t&&t.valOrDefault||o).call(t,null!=t?t.min_adjust_step:t,"-",{name:"valOrDefault",hash:{},data:n}))+"</td>\n";return s=e["if"].call(t,null!=t?t.start_time:t,{name:"if",hash:{},fn:this.program(18,n),inverse:this.program(20,n),data:n}),null!=s&&(c+=s),c+"        </tr>\n"},18:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o="function";return"          <td>"+r((e.tr||t&&t.tr||i).call(t,"Start time",{name:"tr",hash:{},data:n}))+"</td>\n          <td>"+r((s=null!=(s=e.start_time||(null!=t?t.start_time:t))?s:i,typeof s===o?s.call(t,{name:"start_time",hash:{},data:n}):s))+"</td>\n"},20:function(t,e,a,n){var s,i="";return s=e["if"].call(t,null!=t?t.recurrence:t,{name:"if",hash:{},fn:this.program(21,n),inverse:this.noop,data:n}),null!=s&&(i+=s),i},21:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o="function";return"          <td>"+r((e.tr||t&&t.tr||i).call(t,"Recurrence",{name:"tr",hash:{},data:n}))+"</td>\n          <td>"+r((s=null!=(s=e.recurrence||(null!=t?t.recurrence:t))?s:i,typeof s===o?s.call(t,{name:"recurrence",hash:{},data:n}):s))+"</td>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o=this.lambda,l="<form>\n  <h4>"+r((e.tr||t&&t.tr||i).call(t,"Role",{name:"tr",hash:{},data:n}))+" - "+r(o(null!=(s=null!=t?t.role:t)?s.name:s,t))+"</h4>\n  <div class='large-12 columns'>\n    <table class='dataTable extended_table policies_table'>\n      <thead>\n        <tr>\n          <th colspan='8'>"+r((e.tr||t&&t.tr||i).call(t,"Information",{name:"tr",hash:{},data:n}))+"</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class='key_td'>"+r((e.tr||t&&t.tr||i).call(t,"Shutdown action",{name:"tr",hash:{},data:n}))+"</td>\n          <td class='value_td'>"+r((e.valOrDefault||t&&t.valOrDefault||i).call(t,null!=(s=null!=t?t.role:t)?s.shutdown_action:s,"-",{name:"valOrDefault",hash:{},data:n}))+"</td>\n          <td class='key_td'>"+r((e.tr||t&&t.tr||i).call(t,"Cooldown",{name:"tr",hash:{},data:n}))+"</td>\n          <td class='value_td'>"+r((e.valOrDefault||t&&t.valOrDefault||i).call(t,null!=(s=null!=t?t.role:t)?s.cooldown:s,"-",{name:"valOrDefault",hash:{},data:n}))+"</td>\n          <td class='key_td'>"+r((e.tr||t&&t.tr||i).call(t,"Min VMs",{name:"tr",hash:{},data:n}))+"</td>\n          <td class='value_td'>"+r((e.valOrDefault||t&&t.valOrDefault||i).call(t,null!=(s=null!=t?t.role:t)?s.min_vms:s,"-",{name:"valOrDefault",hash:{},data:n}))+"</td>\n          <td class='key_td'>"+r((e.tr||t&&t.tr||i).call(t,"Max VMs",{name:"tr",hash:{},data:n}))+"</td>\n          <td class='value_td'>"+r((e.valOrDefault||t&&t.valOrDefault||i).call(t,null!=(s=null!=t?t.role:t)?s.max_vms:s,"-",{name:"valOrDefault",hash:{},data:n}))+"</td>\n        </tr>\n      </tbody>\n    </table>\n    <br>\n  </div>\n";return s=e["if"].call(t,null!=t?t.servicePanel:t,{name:"if",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(l+=s),l+="  <div class='large-12 columns'>\n    <br>\n",s=e["if"].call(t,null!=(s=null!=t?t.role:t)?s.elasticity_policies:s,{name:"if",hash:{},fn:this.program(7,n),inverse:this.noop,data:n}),null!=s&&(l+=s),l+="    <br>\n",s=e["if"].call(t,null!=(s=null!=t?t.role:t)?s.scheduled_policies:s,{name:"if",hash:{},fn:this.program(16,n),inverse:this.noop,data:n}),null!=s&&(l+=s),l+"  </div>\n</form>"},useData:!0});return e.registerPartial("tabs/oneflow-services-tab/panels/roles/roleInfo",a),a}),define("tabs/oneflow-services-tab/panels/roles",["require","utils/locale","utils/tips","opennebula/role","./roles/roles-buttons","./roles/roles-vm-buttons","sunstone","utils/dom-datatable","tabs/vms-tab/utils/datatable-common","sunstone-config","tabs/vms-tab/tabId","hbs!./roles/html","hbs!./roles/roleInfo","../tabId","./roles/panelId"],function(t){function e(t){return this.title=r.tr("Roles"),this.icon="fa-wrench",this.element=t[g],this.selected_row_role_id=void 0,this.servicePanel=!0,this.panelId=v,this}function a(){var t=[],e=this.element.TEMPLATE.BODY.roles;return e&&e.length&&$.each(e,function(){t.push({name:this.name,state:l.state(this.state),cardinality:this.cardinality,vm_template:this.vm_template,parents:this.parents?this.parents.join(", "):"-"})}),_({element:this.element,panelId:this.panelId,servicePanel:this.servicePanel,roleList:t})}function n(t){var e=this;o.setup(t),e.last_selected_row_role=void 0;var a=this.element.TEMPLATE.BODY.roles;a&&a.length&&(this.servicerolesDataTable=new p("datatable_roles_"+this.panelId,{actions:!0,info:!1,oneSelection:!0,customTabContext:$("#role_actions",t),customTrListener:function(a,n){var s=a.dataTable.fnGetData(n),i=($(s[0]).val(),a.dataTable.fnGetPosition(n));$("#roles_extended_info",t).html(e.roleHTML(i)),e.roleSetup($("#roles_extended_info",t),i);var r=$(".check_item",n);r.is(":checked")||r.trigger("click")}}),this.servicerolesDataTable.initialize(),u.insertButtonsInTab("oneflow-services","service_roles_tab",c,$("#role_actions",t)))}function s(t){var e=this,a=this.element.TEMPLATE.BODY.roles[t],n=[];return a.nodes&&$.each(a.nodes,function(){var t=this.vm_info,a=[];a.push(this.scale_up?"<i class='fa fa-arrow-up'/>":this.disposed?"<i class='fa fa-arrow-down'/>":""),a.push(e.element.TEMPLATE.BODY.ready_status_gate?"YES"==t.VM.USER_TEMPLATE.READY?'<span data-tooltip class="has-tip" title="'+tr("The VM is ready")+'"><i class="fa fa-check"/></span>':'<span data-tooltip class="has-tip" title="'+tr("Waiting for the VM to be ready")+'"><i class="fa fa-clock-o"/></span>':""),n.push(t?a.concat(h.elementArray(t)):a.concat(h.emptyElementArray(this.deploy_id)))}),b({role:a,servicePanel:this.servicePanel,panelId:this.panelId,vmsTableColumns:h.columns,vms:n})}function i(t,e){if(this.servicePanel){var a=this.element.TEMPLATE.BODY.roles[e],n=[0,1].concat(f.tabTableColumns(m).map(function(t){return t+2}));this.serviceroleVMsDataTable=new p("datatable_vms_"+this.panelId+"_"+a.name,{actions:!0,info:!1,customTabContext:$("#role_vms_actions",t),dataTableOptions:{bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:[0,1,"check"]},{bVisible:!0,aTargets:n},{bVisible:!1,aTargets:["_all"]}]}}),this.serviceroleVMsDataTable.initialize(),u.insertButtonsInTab("oneflow-services","service_roles_tab",d,$("div#role_vms_actions",t))}o.setup(t)}var r=t("utils/locale"),o=t("utils/tips"),l=t("opennebula/role"),c=t("./roles/roles-buttons"),d=t("./roles/roles-vm-buttons"),u=t("sunstone"),p=t("utils/dom-datatable"),h=t("tabs/vms-tab/utils/datatable-common"),f=t("sunstone-config"),m=t("tabs/vms-tab/tabId"),_=t("hbs!./roles/html"),b=t("hbs!./roles/roleInfo"),v=(t("../tabId"),t("./roles/panelId")),g="DOCUMENT";return e.PANEL_ID=v,e.prototype.html=a,e.prototype.setup=n,e.prototype.roleHTML=s,e.prototype.roleSetup=i,e}),define("tabs/oneflow-services-tab/panels/log/panelId",["require"],function(){return"service_log_tab"}),define("tabs/oneflow-services-tab/panels/log",["require","utils/locale","utils/humanize","../tabId","./log/panelId"],function(t){function e(t){return this.title=s.tr("Log"),this.icon="fa-file-text",this.element=t[o],this}function a(){var t=this.element.TEMPLATE.BODY.log,e="";if(t){e+='<div class="row"><div class="large-12 columns log-tab">';for(var a=0;a<t.length;a++){var n=i.prettyTime(t[a].timestamp)+" ["+t[a].severity+"] "+t[a].message+"<br>";"E"==t[a].severity&&(n='<span class="vm_log_error">'+n+"</span>"),e+=n}e+="</div></div>"}return e}function n(){}var s=t("utils/locale"),i=t("utils/humanize"),r=(t("../tabId"),t("./log/panelId")),o="DOCUMENT";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/oneflow-services-tab",["require","utils/locale","./oneflow-services-tab/buttons","./oneflow-services-tab/actions","./oneflow-services-tab/datatable","./oneflow-services-tab/tabId","./oneflow-services-tab/dialogs/scale","./oneflow-services-tab/panels/info","./oneflow-services-tab/panels/roles","./oneflow-services-tab/panels/log"],function(t){var e=t("utils/locale"),a=t("./oneflow-services-tab/buttons"),n=t("./oneflow-services-tab/actions"),s=t("./oneflow-services-tab/datatable"),i=t("./oneflow-services-tab/tabId"),r="dataTableService",o="Service",l=[t("./oneflow-services-tab/dialogs/scale")],c=[t("./oneflow-services-tab/panels/info"),t("./oneflow-services-tab/panels/roles"),t("./oneflow-services-tab/panels/log")],d=[],u={tabId:i,title:e.tr("Services"),tabClass:"subTab",parentTab:"oneflow-dashboard",listHeader:'<i class="fa fa-fw fa-cubes"></i>&emsp;'+e.tr("OneFlow - Services"),infoHeader:'<i class="fa fa-fw fa-cubes"></i>&emsp;'+e.tr("OneFlow - Service"),subheader:"",content:'<div class="row oneflow_services_error_message" hidden>        <div class="small-6 columns small-centered text-center">            <div class="alert-box alert radius">'+e.tr("Cannot connect to OneFlow server")+"</div>        </div>    </div>",resource:o,buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:c,formPanels:d,dialogs:l};return u}),define("tabs/oneflow-templates-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"ServiceTemplate.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"ServiceTemplate.create_dialog":{type:"create_dialog",layout:"create"},"ServiceTemplate.instantiate_dialog":{type:"action",layout:"main",text:e.tr("Instantiate")},"ServiceTemplate.update_dialog":{type:"action",layout:"main",text:e.tr("Update")},"ServiceTemplate.chown":{type:"confirm_with_select",text:e.tr("Change owner"),select:"User",layout:"user_select",tip:e.tr("Select the new owner")+":"},"ServiceTemplate.chgrp":{type:"confirm_with_select",text:e.tr("Change group"),select:"Group",layout:"user_select",tip:e.tr("Select the new group")+":"},"ServiceTemplate.delete":{type:"confirm",text:e.tr("Delete"),layout:"del",tip:e.tr("This will delete the selected templates")}};return a}),define("tabs/oneflow-templates-tab/tabId",["require"],function(){return"oneflow-templates"}),define("tabs/oneflow-templates-tab/form-panels/create/formPanelId",["require"],function(){return"createServiceTemplateForm"}),define("tabs/oneflow-templates-tab/form-panels/instantiate/formPanelId",["require"],function(){return"instantiateServiceTemplateForm"}),define("tabs/oneflow-templates-tab/actions",["require","sunstone","utils/notifier","utils/locale","opennebula/servicetemplate","utils/common-actions","opennebula/action","./tabId","./form-panels/create/formPanelId","./form-panels/instantiate/formPanelId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("utils/locale"),s=t("opennebula/servicetemplate"),i=t("utils/common-actions"),r=t("opennebula/action"),o=t("./tabId"),l=t("./form-panels/create/formPanelId"),c=t("./form-panels/instantiate/formPanelId"),d="DOCUMENT",u="ServiceTemplate",p=new i(s,u,o),h={"ServiceTemplate.show":p.show(),"ServiceTemplate.refresh":p.refresh(),"ServiceTemplate.delete":p["delete"](),"ServiceTemplate.chown":p.multipleAction("chown"),"ServiceTemplate.chgrp":p.multipleAction("chgrp"),"ServiceTemplate.chmod":p.singleAction("chmod"),"ServiceTemplate.list":{type:"list",call:s.list,callback:function(t,a){$(".oneflow_templates_error_message").hide(),e.getDataTable(o).updateView(t,a)},error:function(t,e){a.onError(t,e,$(".oneflow_templates_error_message"))}},"ServiceTemplate.create":{type:"create",call:s.create,callback:function(t,a){e.resetFormPanel(o,l),e.hideFormPanel(o),e.getDataTable(o).addElement(t,a)},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)}},"ServiceTemplate.create_dialog":{type:"custom",call:function(){e.showFormPanel(o,l,"create")}},"ServiceTemplate.update_dialog":{type:"custom",call:function(){var t=e.getDataTable(o).elements();if(1!=t.length)return a.notifyMessage("Please select one (and just one) template to update."),!1;var n=""+t[0];e.runAction(u+".show_to_update",n)}},"ServiceTemplate.show_to_update":{type:"single",call:s.show,callback:function(t,a){e.showFormPanel(o,l,"update",function(t,e){t.fill(e,a[d])})},error:a.onError},"ServiceTemplate.update":{type:"single",call:s.update,callback:function(){e.hideFormPanel(o),a.notifyMessage(n.tr("ServiceTemplate updated correctly"))},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)}},"ServiceTemplate.instantiate":{type:"multiple",call:s.instantiate,callback:function(){e.hideFormPanel(o),r.clear_cache("SERVICE")},elements:function(){return e.getDataTable(o).elements()},error:function(t,n){e.hideFormPanelLoading(o),a.onError(t,n)},notify:!0},"ServiceTemplate.instantiate_dialog":{type:"custom",call:function(){var t=e.getDataTable(o).elements();return 1!=t.length?(a.notifyMessage("Please select one (and just one) template to instantiate."),!1):(e.resetFormPanel(o,c),void e.showFormPanel(o,c,"instantiate"))}}};return h}),define("tabs/oneflow-templates-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=l,this.dataTableId=t,this.resource=r,this.xmlRoot=o,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:s.tabTableColumns(l)},{bVisible:!1,aTargets:["_all"]}]},this.columns=[i.tr("ID"),i.tr("Owner"),i.tr("Group"),i.tr("Name")],this.selectOptions={id_index:1,name_index:4,select_resource:i.tr("Please select a Template from the list"),you_selected:i.tr("You selected the following Template:"),select_resource_multiple:i.tr("Please select one or more Templates from the list"),you_selected_multiple:i.tr("You selected the following Templates:")},n.call(this)}function a(t){var e=t[o];return['<input class="check_item" type="checkbox" id="'+r.toLowerCase()+"_"+e.ID+'" name="selected_items" value="'+e.ID+'"/>',e.ID,e.UNAME,e.GNAME,e.NAME]}var n=t("utils/tab-datatable"),s=t("sunstone-config"),i=t("utils/locale"),r="ServiceTemplate",o="DOCUMENT",l=t("./tabId");return e.prototype=Object.create(n.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("hbs!tabs/oneflow-templates-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/valOrDefault"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return"            "+i((e.tr||t&&t.tr||s).call(t,"yes",{name:"tr",hash:{},data:n}))+"\n"},3:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return"            "+i((e.tr||t&&t.tr||s).call(t,"no",{name:"tr",hash:{},data:n}))+"\n"},5:function(t,e,a,n){var s,i=e.helperMissing,r=this.escapeExpression,o='    <table id="info_template_table" class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="2">'+r((e.tr||t&&t.tr||i).call(t,"Network Configuration",{name:"tr",hash:{},data:n}))+"</th>\n        </tr>\n      </thead>\n";return s=e.each.call(t,null!=t?t.customAttrs:t,{name:"each",hash:{},fn:this.program(6,n),inverse:this.noop,data:n}),null!=s&&(o+=s),o+"    </table>\n"},6:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'      <tr>\n        <td class="key_td">'+o((s=null!=(s=e.name||(null!=t?t.name:t))?s:r,typeof s===i?s.call(t,{name:"name",hash:{},data:n}):s))+'</td>\n        <td class="value_td">'+o((s=null!=(s=e.description||(null!=t?t.description:t))?s:r,typeof s===i?s.call(t,{name:"description",hash:{},data:n}):s))+'</td>\n      </tr>\n      <tr>\n        <td class="key_td"></td>\n        <td class="value_td">'+o((e.tr||t&&t.tr||r).call(t,"Roles",{name:"tr",hash:{},data:n}))+": "+o((s=null!=(s=e.roles||(null!=t?t.roles:t))?s:r,typeof s===i?s.call(t,{name:"roles",hash:{},data:n}):s))+"</td>\n      </tr>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l=this.lambda,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <table class="dataTable extended_table">\n      <thead>\n        <tr>\n          <th colspan="2">'+o((e.tr||t&&t.tr||r).call(t,"Information",{name:"tr",hash:{},data:n}))+'</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"ID",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.ID:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Name",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=t?t.element:t)?s.NAME:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Description",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td" colspan="2">'+o(l(null!=(s=null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.BODY:s)?s.description:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Strategy",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">'+o(l(null!=(s=null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.BODY:s)?s.deployment:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Shutdown action",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">\n            '+o((e.valOrDefault||t&&t.valOrDefault||r).call(t,null!=(s=null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.BODY:s)?s.shutdown_action:s,"-",{name:"valOrDefault",hash:{},data:n}))+'\n          </td>\n        </tr>\n        <tr>\n          <td class="key_td">'+o((e.tr||t&&t.tr||r).call(t,"Ready Status Gate",{name:"tr",hash:{},data:n}))+'</td>\n          <td class="value_td">\n';return s=e["if"].call(t,null!=(s=null!=(s=null!=(s=null!=t?t.element:t)?s.TEMPLATE:s)?s.BODY:s)?s.ready_status_gate:s,{name:"if",hash:{},fn:this.program(1,n),inverse:this.program(3,n),data:n}),null!=s&&(d+=s),d+="          </td>\n        </tr>\n      </tbody>\n    </table>\n",s=e["if"].call(t,null!=t?t.customAttrs:t,{name:"if",hash:{},fn:this.program(5,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+='  </div>\n  <div class="large-6 columns">',i=null!=(i=e.permissionsTableHTML||(null!=t?t.permissionsTableHTML:t))?i:r,s=typeof i===c?i.call(t,{name:"permissionsTableHTML",hash:{},data:n}):i,null!=s&&(d+=s),d+"</div>\n</div>"},useData:!0});return e.registerPartial("tabs/oneflow-templates-tab/panels/info/html",a),a}),define("tabs/oneflow-templates-tab/panels/info/panelId",["require"],function(){return"service_template_info_tab"}),define("tabs/oneflow-templates-tab/panels/info",["require","utils/locale","utils/panel/permissions-table","utils/template-utils","hbs!./info/html","../tabId","./info/panelId"],function(t){function e(t){return this.title=s.tr("Info"),this.icon="fa-info-circle",this.element=t[d],this}function a(){var t=this,e=i.html(l,u,this.element),a=[];return $.isEmptyObject(this.element.TEMPLATE.BODY.custom_attrs)||$.each(this.element.TEMPLATE.BODY.custom_attrs,function(e,n){var s=n.split("|"),i=[];switch(s[1]){case"vnet_id":$.each(t.element.TEMPLATE.BODY.roles,function(t,a){if(a.vm_template_contents){var n=new RegExp("\\$"+r.htmlDecode(e)+"\\b");null!=n.exec(a.vm_template_contents)&&i.push(a.name)}})}a.push({name:e,mandatory:s[0],type:s[1],description:s[2],roles:i.join(", ")})}),o({element:this.element,permissionsTableHTML:e,customAttrs:a})}function n(t){i.setup(l,u,this.element,t)}var s=t("utils/locale"),i=t("utils/panel/permissions-table"),r=t("utils/template-utils"),o=t("hbs!./info/html"),l=t("../tabId"),c=t("./info/panelId"),d="DOCUMENT",u="ServiceTemplate";return e.PANEL_ID=c,e.prototype.html=a,e.prototype.setup=n,e}),define("tabs/oneflow-templates-tab/panels/roles/panelId",["require"],function(){return"service_template_roles_tab"}),define("tabs/oneflow-templates-tab/panels/roles",["require","tabs/oneflow-services-tab/panels/roles","./roles/panelId"],function(t){function e(t){return a.call(this,t),this.servicePanel=!1,this.panelId=n,this}var a=t("tabs/oneflow-services-tab/panels/roles"),n=t("./roles/panelId");return e.PANEL_ID=n,e.prototype=Object.create(a.prototype),e.prototype.constructor=e,e}),define("hbs!tabs/oneflow-templates-tab/utils/role-tab/html",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/advancedSection"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'    <div class="row">\n      <div class="large-4 columns">\n        <label for="min_vms">'+i((e.tr||t&&t.tr||s).call(t,"Min VMs",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Minimum number of VMs for elasticity adjustments",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" id="min_vms" name="min_vms" value="" />\n      </div>\n      <div class="large-4 columns">\n        <label for="max_vms">'+i((e.tr||t&&t.tr||s).call(t,"Max VMs",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Maximum number of VMs for elasticity adjustments",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" id="max_vms" name="max_vms" value="" />\n      </div>\n      <div class="service_template_param service_role large-4 columns">\n        <label for="cooldown">'+i((e.tr||t&&t.tr||s).call(t,"Cooldown",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Cooldown time after an elasticity operation (secs)",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <input type="text" id="cooldown" name="cooldown" value="" />\n      </div>\n    </div>\n    <div class="row">\n      <div class="large-12 columns">\n        <table id="elasticity_policies_table" class="policies_table dataTable">\n          <thead style="background:#dfdfdf">\n            <tr>\n              <th colspan="8" style="font-size: 16px !important">\n                '+i((e.tr||t&&t.tr||s).call(t,"Elasticity policies",{name:"tr",hash:{},data:n}))+'\n              </th>\n            </tr>\n          </thead>\n          <thead>\n            <tr>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Type of adjustment.",{name:"tr",hash:{},data:n}))+"<br><br>\n                "+i((e.tr||t&&t.tr||s).call(t,"CHANGE: Add/substract the given number of VMs.",{name:"tr",hash:{},data:n}))+"<br>\n                "+i((e.tr||t&&t.tr||s).call(t,"CARDINALITY: Set the cardinality to the given number.",{name:"tr",hash:{},data:n}))+"<br>\n                "+i((e.tr||t&&t.tr||s).call(t,"PERCENTAGE_CHANGE: Add/substract the given percentage to the current cardinality.",{name:"tr",hash:{},data:n}))+'\n                " style="width:14%">'+i((e.tr||t&&t.tr||s).call(t,"Type",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Positive or negative adjustment. Its meaning depends on 'type'",{name:"tr",hash:{},data:n}))+"<br><br>\n                "+i((e.tr||t&&t.tr||s).call(t,"CHANGE: -2, will substract 2 VMs from the role",{name:"tr",hash:{},data:n}))+"<br>\n                "+i((e.tr||t&&t.tr||s).call(t,"CARDINALITY: 8, will set carditanilty to 8",{name:"tr",hash:{},data:n}))+"<br>\n                "+i((e.tr||t&&t.tr||s).call(t,"PERCENTAGE_CHANGE: 20, will increment cardinality by 20%",{name:"tr",hash:{},data:n}))+'" style="width:12%">'+i((e.tr||t&&t.tr||s).call(t,"Adjust",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Optional parameter for PERCENTAGE_CHANGE adjustment type.",{name:"tr",hash:{},data:n}))+"<br>\n                "+i((e.tr||t&&t.tr||s).call(t," If present, the policy will change the cardinality by at least the number of VMs set in this attribute.",{name:"tr",hash:{},data:n}))+'" style="width:9%">'+i((e.tr||t&&t.tr||s).call(t,"Min",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Expression to trigger the elasticity",{name:"tr",hash:{},data:n}))+"<br><br>\n                "+i((e.tr||t&&t.tr||s).call(t,"Example: ATT < 20",{name:"tr",hash:{},data:n}))+'" style="width:30%">'+i((e.tr||t&&t.tr||s).call(t,"Expression",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Number of periods that the expression must be true before the elasticity is triggered",{name:"tr",hash:{},data:n}))+'" style="width:8%">#\n              </th>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Duration, in seconds, of each period in '# Periods'",{name:"tr",hash:{},data:n}))+'" style="width:9%">'+i((e.tr||t&&t.tr||s).call(t,"Period",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Cooldown period duration after a scale operation, in seconds",{name:"tr",hash:{},data:n}))+'" style="width:15%">'+i((e.tr||t&&t.tr||s).call(t,"Cooldown",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th style="width:3%"></th>\n            </tr>\n          </thead>\n          <tbody id="elasticity_policies_tbody">\n          </tbody>\n          <tfoot>\n            <tr>\n              <td colspan="8">\n                <a type="button" class="button small radius right" id="tf_btn_elas_policies"><i class="fa fa-plus"></i> '+i((e.tr||t&&t.tr||s).call(t,"Add another policy",{name:"tr",hash:{},data:n}))+'</a>\n              </td>\n            </tr>\n          </tfoot>\n        </table>\n      </div>\n    </div>\n    <br>\n    <div class="row">\n      <div class="large-12 columns">\n        <table id="scheduled_policies_table" class="policies_table dataTable">\n          <thead style="background:#dfdfdf">\n            <tr>\n              <th colspan="6" style="font-size: 16px !important">\n                '+i((e.tr||t&&t.tr||s).call(t,"Scheduled policies",{name:"tr",hash:{},data:n}))+'\n              </th>\n            </tr>\n          </thead>\n          <thead>\n            <tr>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Type of adjustment.",{name:"tr",hash:{},data:n}))+"<br><br>\n                "+i((e.tr||t&&t.tr||s).call(t,"CHANGE: Add/substract the given number of VMs.",{name:"tr",hash:{},data:n}))+"<br>\n                "+i((e.tr||t&&t.tr||s).call(t,"CARDINALITY: Set the cardinality to the given number.",{name:"tr",hash:{},data:n}))+"<br>\n                "+i((e.tr||t&&t.tr||s).call(t,"PERCENTAGE_CHANGE: Add/substract the given percentage to the current cardinality.",{name:"tr",hash:{},data:n}))+'" style="width:14%">'+i((e.tr||t&&t.tr||s).call(t,"Type",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Positive or negative adjustment. Its meaning depends on 'type'",{name:"tr",hash:{},data:n}))+"<br><br>\n                "+i((e.tr||t&&t.tr||s).call(t,"CHANGE: -2, will substract 2 VMs from the role",{name:"tr",hash:{},data:n}))+"<br>\n                "+i((e.tr||t&&t.tr||s).call(t,"CARDINALITY: 8, will set carditanilty to 8",{name:"tr",hash:{},data:n}))+"<br>\n                "+i((e.tr||t&&t.tr||s).call(t,"PERCENTAGE_CHANGE: 20, will increment cardinality by 20%",{name:"tr",hash:{},data:n}))+'" style="width:12%">'+i((e.tr||t&&t.tr||s).call(t,"Adjust",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Optional parameter for PERCENTAGE_CHANGE adjustment type. If present, the policy will change the cardinality by at least the number of VMs set in this attribute.",{name:"tr",hash:{},data:n}))+'" style="width:9%">'+i((e.tr||t&&t.tr||s).call(t,"Min",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Recurrence: Time for recurring adjustements. Time is specified with the Unix cron syntax",{name:"tr",hash:{},data:n}))+"<br><br>\n                "+i((e.tr||t&&t.tr||s).call(t,"Start time: Exact time for the adjustement",{name:"tr",hash:{},data:n}))+'" style="width:28%">'+i((e.tr||t&&t.tr||s).call(t,"Time format",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th class="has-tip" data-tooltip title="'+i((e.tr||t&&t.tr||s).call(t,"Time expression depends on the the time formar selected",{name:"tr",hash:{},data:n}))+"<br><br>\n                "+i((e.tr||t&&t.tr||s).call(t,"Recurrence: Time for recurring adjustements. Time is specified with the Unix cron syntax",{name:"tr",hash:{},data:n}))+"<br>\n                "+i((e.tr||t&&t.tr||s).call(t,"Start time: Exact time for the adjustement",{name:"tr",hash:{},data:n}))+'" style="width:33%">'+i((e.tr||t&&t.tr||s).call(t,"Time expression",{name:"tr",hash:{},data:n}))+'\n              </th>\n              <th style="width:3%"></th>\n            </tr>\n          </thead>\n          <tbody id="scheduled_policies_tbody">\n          </tbody>\n          <tfoot>\n            <tr>\n              <td colspan="6">\n                <a type="button" class="button small radius right" id="tf_btn_sche_policies"><i class="fa fa-plus"></i> '+i((e.tr||t&&t.tr||s).call(t,"Add another policy",{name:"tr",hash:{},data:n}))+"</a>\n              </td>\n            </tr>\n          </tfoot>\n        </table>\n      </div>\n    </div>\n"
+},3:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'    <div class="row">\n      <div class="service_template_param service_role large-6 columns">\n        <label for="shutdown_action_role">'+i((e.tr||t&&t.tr||s).call(t,"Shutdown action",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"VM shutdown action: 'shutdown' or 'shutdown-hard'. If it is not set, the one set for the Service will be used",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <select name="shutdown_action_role">\n          <option value=""></option>\n          <option value="shutdown">'+i((e.tr||t&&t.tr||s).call(t,"Shutdown",{name:"tr",hash:{},data:n}))+'</option>\n          <option value="shutdown-hard">'+i((e.tr||t&&t.tr||s).call(t,"Shutdown hard",{name:"tr",hash:{},data:n}))+'</option>\n        </select>\n      </div>\n      <div class="large-6 columns">\n      </div>\n    </div>\n    <div class="row">\n      <div class="service_template_param st_man large-12 columns">\n        <label  for="vm_template_contents">'+i((e.tr||t&&t.tr||s).call(t,"VM Template Content",{name:"tr",hash:{},data:n}))+'\n          <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"This information will be merged with the original Virtual Machine template. Configuration attributes and network interfaces will be replaced by those provided by the user when the template is instantiated",{name:"tr",hash:{},data:n}))+'</span>\n        </label>\n        <textarea type="text" class="vm_template_contents" name="vm_template_contents"/>\n      </div>\n    </div>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=e.helperMissing,o=this.escapeExpression,l="function",c='<div class="row">\n  <div class="service_template_param service_role st_man large-6 columns">\n    <label for="name">'+o((e.tr||t&&t.tr||r).call(t,"Role Name",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Name of the role",{name:"tr",hash:{},data:n}))+'</span>\n    </label>\n    <input type="text" id="role_name" name="name" required/>\n  </div>\n  <div class="service_template_param service_role large-2 columns end">\n    <label for="cardinality">'+o((e.tr||t&&t.tr||r).call(t,"VMs",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Number of VMs to instantiate with this role",{name:"tr",hash:{},data:n}))+'</span>\n    </label>\n    <input type="text" id="cardinality" name="cardinality" value="1"/>\n  </div>\n</div>\n<div class="row">\n  <div class="service_template_param service_role small-12 columns">\n    <label for="vm_template">'+o((e.tr||t&&t.tr||r).call(t,"VM template",{name:"tr",hash:{},data:n}))+'\n      <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Template associated to this role",{name:"tr",hash:{},data:n}))+"</span>\n    </label>\n    ";return i=null!=(i=e.templatesTableHTML||(null!=t?t.templatesTableHTML:t))?i:r,s=typeof i===l?i.call(t,{name:"templatesTableHTML",hash:{},data:n}):i,null!=s&&(c+=s),c+='\n    <div id="vm_template">\n    </div>\n  </div>\n</div>\n<div class="row">\n  <div class="service_template_param service_role large-6 columns">\n    <table class="networks_role extended_table dataTable">\n      <thead>\n        <tr>\n          <th colspan="2">\n            <i class="fa fa-lg fa-fw fa-globe off-color"/>'+o((e.tr||t&&t.tr||r).call(t,"Network Interfaces",{name:"tr",hash:{},data:n}))+'\n          </th>\n        </tr>\n      </thead>\n      <tbody class="networks_role_body">\n      </tbody>\n    </table>\n  </div>\n  <div class="service_template_param service_role large-6 columns">\n    <table class="parent_roles extended_table dataTable">\n      <thead>\n        <tr>\n          <th colspan="2">\n            '+o((e.tr||t&&t.tr||r).call(t,"Parent roles",{name:"tr",hash:{},data:n}))+'\n          </th>\n        </tr>\n      </thead>\n      <tbody class="parent_roles_body">\n      </tbody>\n    </table>\n  </div>\n</div>\n<br>\n<div class="row">\n  <div class="large-12 columns elasticity_accordion">\n',s=(e.advancedSection||t&&t.advancedSection||r).call(t,(e.tr||t&&t.tr||r).call(t,"Role Elasticity",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+='  </div>\n</div>\n<br>\n<div class="row">\n  <div class="large-12 columns advanced_role_accordion">\n',s=(e.advancedSection||t&&t.advancedSection||r).call(t,(e.tr||t&&t.tr||r).call(t,"Advanced Role Parameters",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+"  </div>\n</div>"},useData:!0});return e.registerPartial("tabs/oneflow-templates-tab/utils/role-tab/html",a),a}),define("hbs!tabs/oneflow-templates-tab/utils/role-tab/elasticity-row",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<tr>\n  <td>\n    <select id="type" name="type">\n      <option value=""></option>\n      <option value="CHANGE">'+i((e.tr||t&&t.tr||s).call(t,"Change",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="CARDINALITY">'+i((e.tr||t&&t.tr||s).call(t,"Cardinality",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="PERCENTAGE_CHANGE">'+i((e.tr||t&&t.tr||s).call(t,"Percentage",{name:"tr",hash:{},data:n}))+'</option>\n    </select>\n  </td>\n  <td>\n    <input type="text" id="adjust" name="adjust"/>\n  </td>\n  <td id="min_adjust_step_td">\n  </td>\n  <td>\n    <input type="text" id="expression" name="expression"/>\n  </td>\n  <td>\n    <input type="text" id="period_number" name="period_number"/>\n  </td>\n  <td>\n    <input type="text" id="period" name="period"/>\n  </td>\n  <td>\n    <input type="text" id="cooldown" name="cooldown"/>\n  </td>\n  <td>\n    <a href="#"><i class="fa fa-times-circle remove-tab"></i></a>\n  </td>\n</tr>'},useData:!0});return e.registerPartial("tabs/oneflow-templates-tab/utils/role-tab/elasticity-row",a),a}),define("hbs!tabs/oneflow-templates-tab/utils/role-tab/sche-row",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'<tr>\n  <td>\n    <select id="type" name="type">\n      <option value=""></option>\n      <option value="CHANGE">'+i((e.tr||t&&t.tr||s).call(t,"Change",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="CARDINALITY">'+i((e.tr||t&&t.tr||s).call(t,"Cardinality",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="PERCENTAGE_CHANGE">'+i((e.tr||t&&t.tr||s).call(t,"Percentage",{name:"tr",hash:{},data:n}))+'</option>\n    </select>\n  </td>\n  <td>\n    <input type="text" id="adjust" name="adjust"/>\n  </td>\n  <td id="min_adjust_step_td">\n  </td>\n  <td>\n    <select id="time_format" name="time_format">\n      <option value="start_time">'+i((e.tr||t&&t.tr||s).call(t,"Start time",{name:"tr",hash:{},data:n}))+'</option>\n      <option value="recurrence">'+i((e.tr||t&&t.tr||s).call(t,"Recurrence",{name:"tr",hash:{},data:n}))+'</option>\n    </select>\n  </td>\n  <td>\n    <input type="text" id="time" name="time"/>\n  </td>\n  <td>\n    <a href="#"><i class="fa fa-times-circle remove-tab"></i></a>\n  </td>\n</tr>'},useData:!0});return e.registerPartial("tabs/oneflow-templates-tab/utils/role-tab/sche-row",a),a}),define("tabs/oneflow-templates-tab/utils/role-tab",["require","utils/locale","utils/tips","tabs/templates-tab/datatable","utils/template-utils","hbs!./role-tab/html","hbs!./role-tab/elasticity-row","hbs!./role-tab/sche-row"],function(t){function a(t){return this.html_role_id=t,this}function n(){var t={info:!1,select:!0};return this.templatesTable=new d("roleTabTemplates"+this.html_role_id,t),p({templatesTableHTML:this.templatesTable.dataTableHTML})}function s(t){var e=this;c.setup(t),this.templatesTable.initialize(),this.templatesTable.idInput().attr("required",""),t.on("change","#role_name",function(){$("#"+e.html_role_id+" #role_name_text").html($(this).val())}),t.on("change","select#type",function(){var t=$(this).closest("tr");"PERCENTAGE_CHANGE"==$(this).val()?$("#min_adjust_step_td",t).html('<input type="text" id="min_adjust_step" name="min_adjust_step"/>'):$("#min_adjust_step_td",t).empty()}),$("#tf_btn_elas_policies",t).bind("click",function(){$(h({})).appendTo($("#elasticity_policies_tbody",t))}),t.on("click","#elasticity_policies_table i.remove-tab",function(){var t=$(this).closest("tr");t.remove()}),$("#tf_btn_sche_policies",t).bind("click",function(){$(f({})).appendTo($("#scheduled_policies_tbody",t))}),t.on("click","#scheduled_policies_table i.remove-tab",function(){var t=$(this).closest("tr");t.remove()}),$("#tf_btn_elas_policies",t).trigger("click"),$("#tf_btn_sche_policies",t).trigger("click"),t.on("change",".service_network_checkbox",function(){var e="";$(".service_network_checkbox:checked",t).each(function(){e+='NIC=[NETWORK_ID="$'+$(this).val()+'"]\n'}),$(".vm_template_contents",t).val(e)})}function i(){this.templatesTable.refreshResourceTableSelect()}function r(t){var e={};e.name=$('input[name="name"]',t).val(),e.cardinality=$('input[name="cardinality"]',t).val(),e.vm_template=this.templatesTable.retrieveResourceTableSelect(),e.shutdown_action=$('select[name="shutdown_action_role"]',t).val(),e.parents=[],e.vm_template_contents=$(".vm_template_contents",t).val(),$(".parent_roles_body input.check_item:checked",t).each(function(){e.parents.push($(this).val())});var a=$('select[name="shutdown_action_role"]',t).val();a&&(e.shutdown_action=a);var n=$('input[name="min_vms"]',t).val();n&&(e.min_vms=n);var s=$('input[name="max_vms"]',t).val();s&&(e.max_vms=s);var i=$('input[name="cooldown"]',t).val();return i&&(e.cooldown=i),e=l(e),e.elasticity_policies=[],$("#elasticity_policies_tbody tr",t).each(function(){if($("#type",this).val()){var t={};t.type=$("#type",this).val(),t.adjust=$("#adjust",this).val(),t.min_adjust_step=$("#min_adjust_step",this).val(),t.expression=$("#expression",this).val(),t.period_number=$("#period_number",this).val(),t.period=$("#period",this).val(),t.cooldown=$("#cooldown",this).val(),e.elasticity_policies.push(l(t))}}),e.scheduled_policies=[],$("#scheduled_policies_tbody tr",t).each(function(){if($("#type",this).val()){var t={};t.type=$("#type",this).val(),t.adjust=$("#adjust",this).val(),t.min_adjust_step=$("#min_adjust_step",this).val();var a=$("#time_format",this).val();t[a]=$("#time",this).val(),e.scheduled_policies.push(l(t))}}),e}function o(t,e,a){$("#role_name",t).val(u.htmlDecode(e.name)),$("#role_name",t).change(),$("#cardinality",t).val(u.htmlDecode(e.cardinality)),this.templatesTable.selectResourceTableSelect({ids:e.vm_template}),e.vm_template_contents&&($(a).each(function(){var a=new RegExp("\\$"+this+"\\b");null!=a.exec(e.vm_template_contents)&&$(".service_network_checkbox[value='"+this+"']",t).attr("checked",!0).change()}),$(".vm_template_contents",t).val(u.htmlDecode(e.vm_template_contents))),$("select[name='shutdown_action_role']",t).val(e.shutdown_action),$("#min_vms",t).val(u.htmlDecode(e.min_vms)),$("#max_vms",t).val(u.htmlDecode(e.max_vms)),$("#cooldown",t).val(u.htmlDecode(e.cooldown)),(e.elasticity_policies.length>0||e.scheduled_policies.length>0)&&$("div.elasticity_accordion a.accordion_advanced_toggle",t).trigger("click"),$("#elasticity_policies_table i.remove-tab",t).trigger("click"),$("#scheduled_policies_table i.remove-tab",t).trigger("click"),e.elasticity_policies&&$.each(e.elasticity_policies,function(){$("#tf_btn_elas_policies",t).click();var e=$("#elasticity_policies_tbody tr",t).last();$("#type",e).val(u.htmlDecode(this.type)),$("#type",e).change(),$("#adjust",e).val(u.htmlDecode(this.adjust)),$("#min_adjust_step",e).val(u.htmlDecode(this.min_adjust_step||"")),$("#expression",e).val(u.htmlDecode(this.expression)),$("#period_number",e).val(u.htmlDecode(this.period_number||"")),$("#period",e).val(u.htmlDecode(this.period||"")),$("#cooldown",e).val(u.htmlDecode(this.cooldown||""))}),e.scheduled_policies&&$.each(e.scheduled_policies,function(){$("#tf_btn_sche_policies",t).click();var e=$("#scheduled_policies_tbody tr",t).last();$("#type",e).val(u.htmlDecode(this.type)),$("#type",e).change(),$("#adjust",e).val(u.htmlDecode(this.adjust)),$("#min_adjust_step",e).val(u.htmlDecode(this.min_adjust_step||"")),this.start_time?($("#time_format",e).val("start_time"),$("#time",e).val(u.htmlDecode(this.start_time))):this.recurrence&&($("#time_format",e).val("recurrence"),$("#time",e).val(u.htmlDecode(this.recurrence)))})}function l(t){for(var a in t){var n=!1,s=t[a];if(s instanceof Array)0==s.length?n=!0:s.length>0&&(s=jQuery.grep(s,function(t){var a=0;for(e in t)a+=1;return 0==a?!1:!0}),0==s.length&&(n=!0));else if(s instanceof Object){var i=0;for(e in s)i+=1;0==i&&(n=!0)}else s=String(s),0==s.length&&(n=!0);n&&delete t[a]}return t}var c=(t("utils/locale"),t("utils/tips")),d=t("tabs/templates-tab/datatable"),u=t("utils/template-utils"),p=t("hbs!./role-tab/html"),h=t("hbs!./role-tab/elasticity-row"),f=t("hbs!./role-tab/sche-row");return a.prototype={html:n,setup:s,onShow:i,retrieve:r,fill:o},a.prototype.constructor=a,a}),define("hbs!tabs/oneflow-templates-tab/form-panels/create/wizard",["hbs","hbs/handlebars","templates/helpers/tr","templates/helpers/advancedSection"],function(t,e){var a=e.template({1:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'    <div class="row">\n      <div class="large-12 columns">\n        <table class="service_networks policies_table dataTable">\n          <thead>\n            <tr>\n              <th style="width:30%">'+i((e.tr||t&&t.tr||s).call(t,"Name",{name:"tr",hash:{},data:n}))+'</th>\n              <th style="width:70%">'+i((e.tr||t&&t.tr||s).call(t,"Description",{name:"tr",hash:{},data:n}))+'</th>\n              <th style="width:3%"></th>\n            </tr>\n          </thead>\n          <tbody>\n          </tbody>\n          <tfoot>\n            <tr>\n              <td colspan="3">\n                <a type="button" class="add_service_network button small large-12 secondary radius"><i class="fa fa-plus"></i>'+i((e.tr||t&&t.tr||s).call(t,"Add another Network",{name:"tr",hash:{},data:n}))+"</a>\n              </td>\n            </tr>\n          </tfoot>\n        </table>\n      </div>\n    </div>\n"},3:function(t,e,a,n){var s=e.helperMissing,i=this.escapeExpression;return'  <div class="row">\n    <div class="service_template_param st_man large-6 columns">\n      <label for="deployment">\n        '+i((e.tr||t&&t.tr||s).call(t,"Strategy",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Straight strategy will instantiate each role in order: parents role will be deployed before their children. None strategy will instantiate the roles regardless of their relationships.",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <select name="deployment">\n        <option value="straight">'+i((e.tr||t&&t.tr||s).call(t,"Straight",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="none">'+i((e.tr||t&&t.tr||s).call(t,"None",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n    <div class="service_template_param st_man large-6 columns">\n      <label for="shutdown_action_service">\n        '+i((e.tr||t&&t.tr||s).call(t,"Shutdown action",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"VM shutdown action: 'shutdown' or 'shutdown-hard'.",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <select name="shutdown_action_service">\n        <option value=""></option>\n        <option value="shutdown">'+i((e.tr||t&&t.tr||s).call(t,"Shutdown",{name:"tr",hash:{},data:n}))+'</option>\n        <option value="shutdown-hard">'+i((e.tr||t&&t.tr||s).call(t,"Shutdown hard",{name:"tr",hash:{},data:n}))+'</option>\n      </select>\n    </div>\n  </div>\n  <div class="row">\n    <div class="service_template_param st_man large-6 columns">\n      <input type="checkbox" name="ready_status_gate" id="ready_status_gate"/>\n      <label for="ready_status_gate">\n        '+i((e.tr||t&&t.tr||s).call(t,"Wait for VMs to report that they are READY",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+i((e.tr||t&&t.tr||s).call(t,"Before deploying any child roles, wait for all VMs of the parent roles to report via OneGate that they are READY=YES",{name:"tr",hash:{},data:n}))+"</span>\n      </label>\n    </div>\n  </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r="function",o=e.helperMissing,l=this.escapeExpression,c='<form data-abide="ajax" id="'+l((i=null!=(i=e.formPanelId||(null!=t?t.formPanelId:t))?i:o,typeof i===r?i.call(t,{name:"formPanelId",hash:{},data:n}):i))+'Wizard" class="custom creation">\n  <div class="row">\n    <div class="service_template_param st_man large-6 columns">\n      <label for="service_name">\n        '+l((e.tr||t&&t.tr||o).call(t,"Name",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Name for this template",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <input type="text" id="service_name" name="service_name" required/>\n    </div>\n    <div class="service_template_param st_man large-6 columns">\n    </div>\n  </div>\n  <div class="row">\n    <div class="service_template_param st_man large-12 columns">\n      <label  for="description">\n        '+l((e.tr||t&&t.tr||o).call(t,"Description",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+l((e.tr||t&&t.tr||o).call(t,"Description of the service",{name:"tr",hash:{},data:n}))+'</span>\n      </label>\n      <textarea type="text" id="description" name="description"/>\n    </div>\n  </div>\n  <br>\n  <div id="network_configuration">\n';return s=(e.advancedSection||t&&t.advancedSection||o).call(t,(e.tr||t&&t.tr||o).call(t,"Network Configuration",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+="  </div>\n  <br>\n",s=(e.advancedSection||t&&t.advancedSection||o).call(t,(e.tr||t&&t.tr||o).call(t,"Advanced Service Parameters",{name:"tr",hash:{},data:n}),{name:"advancedSection",hash:{},fn:this.program(3,n),inverse:this.noop,data:n}),null!=s&&(c+=s),c+'  <br>\n  <div class="row">\n    <div class="large-12 columns">\n      <h4>'+l((e.tr||t&&t.tr||o).call(t,"Roles",{name:"tr",hash:{},data:n}))+'</h4>\n    </div>\n  </div>\n  <br>\n  <div class="row">\n    <div id="new_role" class="bordered-tabs large-12 columns">\n      <dl class="tabs" id="roles_tabs" data-tab>\n        <a class="button small right radius" id="tf_btn_roles">\n          <span class="fa fa-plus"></span>'+l((e.tr||t&&t.tr||o).call(t,"Add another role",{name:"tr",hash:{},data:n}))+'\n        </a>\n      </dl>\n      <div class="tabs-content" id="roles_tabs_content">\n      </div>\n    </div>\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/oneflow-templates-tab/form-panels/create/wizard",a),a}),define("hbs!tabs/oneflow-templates-tab/form-panels/create/advanced",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Advanced" class="custom creation">\n  <div class="row">\n    <div class="large-12 columns">\n      <p>'+o((e.tr||t&&t.tr||r).call(t,"Write the Service template here",{name:"tr",hash:{},data:n}))+'</p>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <textarea id="template" rows="15" required></textarea>\n    </div>\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/oneflow-templates-tab/form-panels/create/advanced",a),a}),define("tabs/oneflow-templates-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","utils/tips","tabs/oneflow-templates-tab/utils/role-tab","utils/template-utils","hbs!./create/wizard","hbs!./create/advanced","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=y,this.tabId=w,this.actions={create:{title:f.tr("Create Service Template"),buttonText:f.tr("Create"),resetButton:!0},update:{title:f.tr("Update Service Template"),buttonText:f.tr("Update"),resetButton:!1}},p.call(this)}function a(){return v({formPanelId:this.formPanelId})}function n(){return g({formPanelId:this.formPanelId})}function s(t){this.roleTabObjects={};var e=this,a=0;return $(".add_service_network",t).on("click",function(){$(".service_networks tbody").append('<tr>          <td>            <input class="service_network_name" type="text" pattern="[\\w]+"/>            <small class="error">'+f.tr("Only word characters are allowed")+'</small>          </td>          <td>            <textarea class="service_network_description"/>          </td>          <td>            <a href="#"><i class="fa fa-times-circle remove-tab"></i></a>          </td>        </tr>')}),$(".add_service_network",t).trigger("click"),t.on("change",".service_network_name",function(){c(t)}),t.on("click",".service_networks i.remove-tab",function(){var e=$(this).closest("tr");e.remove(),c(t)}),$("#tf_btn_roles",t).bind("click",function(){return e.addRoleTab(a,t),a++,t.foundation(),!1}),$("#roles_tabs",t).on("click","i.remove-tab",function(){var t=$(this).parent().attr("href"),a=$(this).closest("dd"),n=$(this).closest("dl"),s=$(t),i=s.attr("role_id");return a.remove(),s.remove(),"active"==a.attr("class")&&$("a",n.children("dd").last()).click(),delete e.roleTabObjects[i],!1}),$("#roles_tabs",t).on("click","a",function(){var e="#"+this.id+"Tab",a="";$(e+" .parent_roles").hide();var n=!1;$("#roles_tabs_content #role_name",t).each(function(){$(this).val()&&$(this).val()!=$(e+" #role_name",t).val()&&(n=!0,a+="<tr>            <td style='width:10%'>              <input class='check_item' type='checkbox' value='"+$(this).val()+"' id='"+$(this).val()+"'/>            </td>            <td>"+$(this).val()+"</td>          </tr>")}),n&&$(e+" .parent_roles",t).show();var s=[];$(e+" .parent_roles_body input:checked",t).each(function(){s.push($(this).val())}),$(e+" .parent_roles_body",t).html(a),$.each(s,function(){$(e+" .parent_roles_body #"+this,t).attr("checked",!0)})}),$("#tf_btn_roles",t).trigger("click"),$(document).foundation("reflow","tab"),m.setup(t),!1}function i(t){var e=this,a=$('input[name="service_name"]',t).val(),n=$("#description",t).val(),s=$('select[name="deployment"]',t).val(),i=$('select[name="shutdown_action_service"]',t).val(),r=$('input[name="ready_status_gate"]',t).prop("checked"),o={};$(".service_networks tbody tr").each(function(){if($(".service_network_name",$(this)).val()){var t=$(".service_network_name",$(this)).val(),e="vnet_id",a=$(".service_network_description",$(this)).val();o[t]="M|"+e+"|"+a}});var l=[];$(".role_content",t).each(function(){var t=$(this).attr("role_id");l.push(e.roleTabObjects[t].retrieve($(this)))});var c={name:a,deployment:s,description:n,roles:l};return $.isEmptyObject(o)||(c.custom_attrs=o),i&&(c.shutdown_action=i),c.ready_status_gate=r,"create"==this.action?(h.runAction("ServiceTemplate.create",c),!1):"update"==this.action?(h.runAction("ServiceTemplate.update",this.resourceId,JSON.stringify(c)),!1):void 0}function r(t){var e=$("textarea#template",t).val();return"create"==this.action?(h.runAction("ServiceTemplate.create",JSON.parse(e)),!1):"update"==this.action?(h.runAction("ServiceTemplate.update",this.resourceId,e),!1):void 0}function o(t){var e=this;$(".role_content",t).each(function(){var t=$(this).attr("role_id");e.roleTabObjects[t].onShow()})}function l(t,e){var a=this;if("update"==this.action){this.resourceId=e.ID,$("#template",t).val(b.htmlDecode(JSON.stringify(e.TEMPLATE.BODY,null,"  "))),$("#service_name",t).attr("disabled","disabled"),$("#service_name",t).val(b.htmlDecode(e.NAME)),$("#description",t).val(b.htmlDecode(e.TEMPLATE.BODY.description)),$('select[name="deployment"]',t).val(e.TEMPLATE.BODY.deployment),$("select[name='shutdown_action_service']",t).val(e.TEMPLATE.BODY.shutdown_action),$("input[name='ready_status_gate']",t).prop("checked",e.TEMPLATE.BODY.ready_status_gate||!1),$(".service_networks i.remove-tab",t).trigger("click"),$.isEmptyObject(e.TEMPLATE.BODY.custom_attrs)||($("div#network_configuration a.accordion_advanced_toggle",t).trigger("click"),$.each(e.TEMPLATE.BODY.custom_attrs,function(e,a){var n=a.split("|"),s={name:e,mandatory:n[0],type:n[1],description:n[2]};switch(n[1]){case"vnet_id":$(".add_service_network",t).trigger("click");var i=$(".service_networks tbody tr",t).last();$(".service_network_name",i).val(b.htmlDecode(s.name)).change(),$(".service_network_description",i).val(b.htmlDecode(s.description))}})),$("#roles_tabs i.remove-tab",t).trigger("click");var n=[];$(".service_networks .service_network_name",t).each(function(){$(this).val()&&n.push($(this).val())});var s=[];$.each(e.TEMPLATE.BODY.roles,function(e,i){s.push(i.name),$("#tf_btn_roles",t).click();var r=$(".role_content",t).last(),o=$(r).attr("role_id");a.roleTabObjects[o].fill(r,i,n)}),$.each(e.TEMPLATE.BODY.roles,function(e,a){var n=$(".role_content",t)[e],i="";$.each(s,function(){this!=a.name&&(i+="<tr>              <td style='width:10%'>                <input class='check_item' type='checkbox' value='"+this+"' id='"+this+"'/>              </td>              <td>"+this+"</td>            </tr>")}),$(".parent_roles_body",n).html(i),a.parents&&$.each(a.parents,function(){$(".parent_roles_body #"+this,n).attr("checked",!0)})})}}function c(t){$("#roles_tabs_content .role_content",t).each(function(){var e=this;d(t,e)})}function d(t){$("#roles_tabs_content .role_content",t).each(function(){var e=this,a=[];$(".service_network_checkbox:checked",e).each(function(){a.push($(this).val())}),$(".networks_role",e).hide();var n=!1,s=$(e).attr("id"),i="";$(".service_networks .service_network_name",t).each(function(){$(this).val()&&(n=!0,i+="<tr>            <td style='width:10%'>              <input class='service_network_checkbox check_item' type='checkbox' value='"+$(this).val()+"' id='"+s+"_"+$(this).val()+"'/>            </td>            <td>              <label for='"+s+"_"+$(this).val()+"'>"+$(this).val()+"</label>            </td>          </tr>")}),$(".networks_role_body",e).html(i),n&&$(".networks_role",e).show(),$(".vm_template_contents",e).val(""),$.each(a,function(){$(".service_network_checkbox[value='"+this+"']",e).attr("checked",!0).change()})})}function u(t,e){var a="role"+t,n=new _(a);this.roleTabObjects[t]=n;var s=$('<div id="'+a+'Tab" class="content role_content wizard_internal_tab" role_id="'+t+'">'+n.html()+"</div>").appendTo($("#roles_tabs_content",e));d(e,s);var i=$("<dd>      <a class='text-center' id='"+a+"' href='#"+a+"Tab'>        <span>          <i class='off-color fa fa-cube fa-3x'/>          <br>          <span id='role_name_text'>"+f.tr("Role ")+t+"</span>        </span>        <i class='fa fa-times-circle remove-tab'></i>      </a>    </dd>").appendTo($("dl#roles_tabs",e));$("a",i).trigger("click"),n.setup(s),n.onShow()}t("foundation.tab");var p=t("utils/form-panels/form-panel"),h=t("sunstone"),f=t("utils/locale"),m=t("utils/tips"),_=t("tabs/oneflow-templates-tab/utils/role-tab"),b=t("utils/template-utils"),v=t("hbs!./create/wizard"),g=t("hbs!./create/advanced"),y=t("./create/formPanelId"),w=t("../tabId");return e.FORM_PANEL_ID=y,e.prototype=Object.create(p.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.htmlAdvanced=n,e.prototype.submitWizard=i,e.prototype.submitAdvanced=r,e.prototype.onShow=o,e.prototype.fill=l,e.prototype.setup=s,e.prototype.addRoleTab=u,e}),define("hbs!tabs/oneflow-templates-tab/form-panels/instantiate/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Wizard" class="custom creation">\n  <div class="row">\n    <div class="large-6 columns">\n      <label for="service_name">'+o((e.tr||t&&t.tr||r).call(t,"Service Name",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Defaults to template name when emtpy. You can use the wildcard &#37;i. When creating several Services, &#37;i will be replaced with a different number starting from 0 in each of them",{name:"tr",hash:{},data:n}))+'.</span>\n      </label>\n      <input type="text" name="service_name" id="service_name" />\n    </div>\n    <div class="large-6 columns">\n      <label for="service_n_times">'+o((e.tr||t&&t.tr||r).call(t,"Number of instances",{name:"tr",hash:{},data:n}))+'\n        <span class="tip">'+o((e.tr||t&&t.tr||r).call(t,"Number of Services that will be created using this template",{name:"tr",hash:{},data:n}))+'.</span>\n      </label>\n      <input type="text" name="service_n_times" id="service_n_times" value="1">\n    </div>\n  </div>\n  <div id="instantiate_service_user_inputs">\n    <i class="fa fa-spinner fa-spin"></i>\n  </div>\n  <div class="row" id="instantiate_service_role_user_inputs">\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/oneflow-templates-tab/form-panels/instantiate/html",a),a}),define("tabs/oneflow-templates-tab/form-panels/instantiate",["require","foundation.tab","utils/form-panels/form-panel","sunstone","utils/locale","utils/tips","opennebula/servicetemplate","opennebula/template","utils/notifier","utils/wizard-fields","utils/template-utils","utils/user-inputs","hbs!./instantiate/html","./instantiate/formPanelId","../tabId"],function(t){function e(){this.formPanelId=v,this.tabId=g,this.actions={instantiate:{title:c.tr("Instantiate Service Template"),buttonText:c.tr("Instantiate"),resetButton:!1}},o.call(this)}function a(){return b({formPanelId:this.formPanelId})}function n(t){return d.setup(t),!1}function s(t){var e=this;l.disableFormPanelSubmit(g);var a=l.getDataTable(g).elements(),n=""+a[0];this.service_template_json={},u.show({data:{id:n},timeout:!0,success:function(a,n){e.service_template_json=n,$("#instantiate_service_user_inputs",t).empty(),_.serviceTemplateInsert($("#instantiate_service_user_inputs",t),n),n_roles=n.DOCUMENT.TEMPLATE.BODY.roles.length,n_roles_done=0,$.each(n.DOCUMENT.TEMPLATE.BODY.roles,function(e,a){var n="user_input_role_"+e;$("#instantiate_service_role_user_inputs",t).append('<div id="'+n+'" class="large-6 columns">            </div>'),p.show({data:{id:a.vm_template},timeout:!0,success:function(e,s){$("#"+n,t).empty(),_.vmTemplateInsert($("#"+n,t),s,{text_header:c.tr("Role")+" "+a.name}),n_roles_done+=1,n_roles_done==n_roles&&l.enableFormPanelSubmit(g)},error:function(e,a,n){h.onError(e,a,n),$("#instantiate_vm_user_inputs",t).empty()}})})},error:function(e,a,n){h.onError(e,a,n),$("#instantiate_service_user_inputs",t).empty()}})}function i(t){var e,a=this,n=$("#service_name",t).val(),s=$("#service_n_times",t).val(),i=1;if($("#TEMPLATE_ID",t).val())e=$("#TEMPLATE_ID",t).val();else{var r=l.getDataTable(g).elements();e=""+r[0]}s.length&&(i=parseInt(s,10));var o="";i>1&&(o=i+" times");var c={merge_template:{}},d=f.retrieve($("#instantiate_service_user_inputs",t));if(c.merge_template.custom_attrs_values=d,c.merge_template.roles=[],$.each(a.service_template_json.DOCUMENT.TEMPLATE.BODY.roles,function(e,a){var n="user_input_role_"+e;d={},$.extend(d,f.retrieve($("#"+n,t))),$.each(a.elasticity_policies,function(t,e){e.expression=m.htmlDecode(e.expression)}),a.user_inputs_values=d,c.merge_template.roles.push(a)}),n.length)if(-1==n.indexOf("%i")){c.merge_template.name=n;for(var u=0;i>u;u++)l.runAction("ServiceTemplate.instantiate",[e],c)}else for(var u=0;i>u;u++)c.merge_template.name=n.replace(/%i/gi,u),l.runAction("ServiceTemplate.instantiate",[e],c);
+else for(var u=0;i>u;u++)l.runAction("ServiceTemplate.instantiate",[e],c);return!1}function r(){}t("foundation.tab");var o=t("utils/form-panels/form-panel"),l=t("sunstone"),c=t("utils/locale"),d=t("utils/tips"),u=t("opennebula/servicetemplate"),p=t("opennebula/template"),h=t("utils/notifier"),f=t("utils/wizard-fields"),m=t("utils/template-utils"),_=t("utils/user-inputs"),b=t("hbs!./instantiate/html"),v=t("./instantiate/formPanelId"),g=t("../tabId");return e.FORM_PANEL_ID=v,e.prototype=Object.create(o.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.submitWizard=i,e.prototype.onShow=s,e.prototype.fill=r,e.prototype.setup=n,e}),define("tabs/oneflow-templates-tab",["require","utils/locale","./oneflow-templates-tab/buttons","./oneflow-templates-tab/actions","./oneflow-templates-tab/datatable","./oneflow-templates-tab/tabId","./oneflow-templates-tab/panels/info","./oneflow-templates-tab/panels/roles","./oneflow-templates-tab/form-panels/create","./oneflow-templates-tab/form-panels/instantiate"],function(t){var e=t("utils/locale"),a=t("./oneflow-templates-tab/buttons"),n=t("./oneflow-templates-tab/actions"),s=t("./oneflow-templates-tab/datatable"),i=t("./oneflow-templates-tab/tabId"),r="dataTableServiceTemplates",o="ServiceTemplate",l=[],c=[t("./oneflow-templates-tab/panels/info"),t("./oneflow-templates-tab/panels/roles")],d=[t("./oneflow-templates-tab/form-panels/create"),t("./oneflow-templates-tab/form-panels/instantiate")],u={tabId:i,title:e.tr("Templates"),tabClass:"subTab",parentTab:"oneflow-dashboard",listHeader:'<i class="fa fa-fw fa-file-o"></i>&emsp;'+e.tr("OneFlow - Templates"),infoHeader:'<i class="fa fa-fw fa-file-o"></i>&emsp;'+e.tr("OneFlow - Template"),subheader:"",content:'<div class="row oneflow_templates_error_message" hidden>        <div class="small-6 columns small-centered text-center">            <div class="alert-box alert radius">'+e.tr("Cannot connect to OneFlow server")+"</div>        </div>    </div>",resource:o,buttons:a,actions:n,dataTable:new s(r,{actions:!0,info:!0}),panels:c,formPanels:d,dialogs:l};return u}),define("tabs/support-tab/buttons",["require","utils/locale"],function(t){var e=t("utils/locale"),a={"Support.refresh":{type:"action",layout:"refresh",text:'<i class="fa fa-refresh fa fa-lg">',alwaysActive:!0},"Support.upload":{type:"action",layout:"main",text:'<i class="fa fa-cloud-upload" style="color: rgb(111, 111, 111)"/> '+e.tr("Upload a file"),custom_classes:"only-right-info"},"Support.signout":{type:"action",layout:"main",text:'<i class="fa fa-sign-out fa fa-lg">',tip:"Sign out of Commercial Support",alwaysActive:!0},"Support.create_dialog":{type:"create_dialog",layout:"create",text:"Submit a Request"}};return a}),define("tabs/support-tab/tabId",["require"],function(){return"support-tab"}),define("tabs/support-tab/utils/common",["require","sunstone","../tabId"],function(t){function e(){$(".support_info").hide(),$("#"+r.getDataTable(o).dataTableId+"Container","#"+o).hide(),$(".support_connect").show(),$(".actions_row","#"+o).hide()}function a(){$(".support_info").show(),$(".support_connect").hide(),$(".actions_row","#"+o).show(),$("#"+r.getDataTable(o).dataTableId+"Container","#"+o).show()}function n(){r.runAction("Support.list"),i=setInterval(function(){r.runAction("Support.list")},r.TOP_INTERVAL)}function s(){clearInterval(i)}var i,r=t("sunstone"),o=t("../tabId");return{showSupportConnect:e,showSupportList:a,startIntervalRefresh:n,stopIntervalRefresh:s}}),define("tabs/support-tab/form-panels/create/formPanelId",["require"],function(){return"createSupportRequestForm"}),define("tabs/support-tab/dialogs/upload/dialogId",["require"],function(){return"uploadSupportRequestDialog"}),define("tabs/support-tab/actions",["require","sunstone","utils/notifier","opennebula/support","./utils/common","./tabId","./form-panels/create/formPanelId","./dialogs/upload/dialogId"],function(t){var e=t("sunstone"),a=t("utils/notifier"),n=t("opennebula/support"),s=t("./utils/common"),i="Support",r=t("./tabId"),o=t("./form-panels/create/formPanelId"),l=t("./dialogs/upload/dialogId"),c={"Support.list":{type:"list",call:n.list,callback:function(t,a,n){s.showSupportList(),$(".support_open_value").text(n.open_requests),$(".support_pending_value").text(n.pending_requests);var i=[];n.REQUEST_POOL.REQUEST&&(i=n.REQUEST_POOL.REQUEST),e.getDataTable(r).updateView(t,i)},error:function(t,e){"401"==e.error.http_status&&s.stopIntervalRefresh(),s.showSupportConnect()}},"Support.refresh":{type:"custom",call:function(){var t=$("#"+r);e.rightInfoVisible(t)?e.runAction(i+".show",e.rightInfoResourceId(t)):(e.getDataTable(r).waitingNodes(),e.runAction(i+".list",{force:!0}))},error:function(){s.showSupportConnect()}},"Support.show":{type:"single",call:n.show,callback:function(t,a){e.rightInfoVisible($("#"+r))&&e.insertPanels(r,a)},error:function(){s.showSupportConnect()}},"Support.create":{type:"create",call:n.create,callback:function(){e.resetFormPanel(r,o),e.hideFormPanel(r),e.runAction("Support.refresh")},error:function(t,n){"403"==n.error.http_status?(e.hideFormPanelLoading(r),a.notifyError(n.error.message)):(e.hideFormPanel(r),s.showSupportConnect())}},"Support.create_dialog":{type:"custom",call:function(){e.showFormPanel(r,o,"create")}},"Support.update":{type:"single",call:n.update,callback:function(){e.runAction("Support.refresh"),a.notifyMessage("Comment added correctly")},error:function(){e.runAction("Support.refresh"),a.notifyError("Comment failed to be added")}},"Support.signout":{type:"single",call:function(){$.ajax({url:"support/credentials",type:"DELETE",dataType:"text",success:function(){s.showSupportConnect(),e.runAction("Support.refresh")},error:function(t){a.notifyError("401"==t.status?"Support credentials are incorrect":t.responseText)}})}},"Support.upload":{type:"single",call:function(){var t=e.getDataTable(r).elements(),a=""+t[0];e.getDialog(l).setParams({requestId:a}),e.getDialog(l).reset(),e.getDialog(l).show()}}};return c}),define("tabs/support-tab/datatable",["require","utils/tab-datatable","sunstone-config","utils/locale","./tabId"],function(t){function e(t,e){this.conf=e||{},this.tabId=o,this.dataTableId=t,this.resource=i,this.xmlRoot=r,this.dataTableOptions={bAutoWidth:!1,bSortClasses:!1,bDeferRender:!0,aoColumnDefs:[{bSortable:!1,aTargets:["check"]},{sWidth:"35px",aTargets:[0]},{bVisible:!0,aTargets:s.tabTableColumns(o)},{bVisible:!1,aTargets:["_all"]}]},this.columns=["ID","Subject","Requested","Status"],n.call(this)}function a(t){return['<input class="check_item" type="checkbox" id="'+i.toLowerCase()+"_"+t.id+'" name="selected_items" value="'+t.id+'"/>',t.id,t.subject,t.created_at,t.status]}var n=t("utils/tab-datatable"),s=t("sunstone-config"),i=(t("utils/locale"),"Support"),r="REQUEST",o=t("./tabId");return e.prototype=Object.create(n.prototype),e.prototype.constructor=e,e.prototype.elementArray=a,e}),define("hbs!tabs/support-tab/title",["hbs","hbs/handlebars"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(){return'<span class="support_title"><i class="fa fa-lg fa-fw fa-support"></i> Support</span>\n<br>\n<div class="support_info" style="display: none;">\n  <span class="support_open">Open</span><span class="label secondary right support_open_value">-</span>\n  <br>\n  <span class="support_pending">Pending</span><span class="label right support_pending_value">-</span>\n  <br>\n  <button class="button tiny success radius support_button">Submit a Request</button>\n</div>\n<div class="support_connect" style="display: none;">\n  <span class="">Not connected</span>\n  <br>\n  <button class="button tiny success radius support_connect_button">Sign in</button>\n</div>'},useData:!0});return e.registerPartial("tabs/support-tab/title",a),a}),define("hbs!tabs/support-tab/subheader",["hbs","hbs/handlebars"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(){return'<div class="row text-left support_connect">\n  <div class="large-6 columns" style="font-">\n    <p>The Support Subscription provides expert integration and production support on supported platforms and include:</p>\n    <ul class="fa-ul" style="font-size: 14px;">\n      <li><i class="fa-li fa fa-check"></i>Problem diagnosis, resolution and bug fixing</li>\n      <li><i class="fa-li fa fa-check"></i>Solving unexpected problems when using, installing or configuring the software</li>\n      <li><i class="fa-li fa fa-check"></i>Guidance about tuning for optimal and scalable performance in your environment</li>\n      <li><i class="fa-li fa fa-check"></i>Answering “how to” questions related to standard and intended product usage</li>\n      <li><i class="fa-li fa fa-check"></i>Offering hints about how to go around missing features</li>\n      <li><i class="fa-li fa fa-check"></i>Answering questions about product adaptation and integration</li>\n    </ul>\n    <p>For more info on support subcriptions, <a href="http://opennebula.systems/support/" target="_blank">click here</a></p>\n  </div>\n  <div class="large-6 columns" style="padding: 0px 50px;">\n    <fieldset>\n      <legend>Commercial Support</legend>\n      <form id="support_credentials_form">\n        <div class="large-12 columns">\n          <label for="support_email">Email</label>\n          <input id="support_email" type="text"></input>\n        </div>\n        <div class="large-12 columns">\n          <label for="support_password">Password</label>\n          <input id="support_password" type="password"></input>\n        </div>\n        <div class="large-12 columns">\n          <button class="button right radius success submit_support_credentials_button" type="submit">Sign in</button>\n        </div>\n        <div class="large-12 columns text-center">\n          <p>or</p>\n        </div>\n        <div class="large-12 columns">\n          <a  href="http://opennebula.systems/buy/" target="_blank" class="button large-12 radius" style="color: #fff !important">Get an account</a>\n        </div>\n      </form>\n    </fieldset>\n  </div>\n</div>\n<div class="row">\n  <div class="large-12 columns text-left">\n    <h3 class="subheader"><i class="fa fa-fw fa-info-circle"></i> Additional Help Resources</h3>\n  </div>\n</div>\n<br>\n<div class="row">\n  <div class="large-6 columns">\n    <a href="http://docs.opennebula.org/4.12/" target="_blank">\n      <span class="fa-stack fa-2x" style="color: #cfcfcf;">\n       <i class="fa fa-circle fa-stack-2x"></i>\n       <i class="fa fa-book fa-stack-1x fa-inverse"></i>\n     </span>\n     <br>\n     Documentation\n   </a>\n </div>\n <div class="large-6 columns">\n  <a href="http://opennebula.org/support/community/" target="_blank">\n    <span class="fa-stack fa-2x" style="color: #cfcfcf;">\n     <i class="fa fa-circle fa-stack-2x"></i>\n     <i class="fa fa-comments fa-stack-1x fa-inverse"></i>\n   </span>\n   <br>\n   Community\n </a>\n</div>\n</div>\n<br>\n<p class="text-center" style="font-size: 14px; color: #999;">This tab can be disabled in the sunstone views configuration files</p>'},useData:!0});return e.registerPartial("tabs/support-tab/subheader",a),a}),define("hbs!tabs/support-tab/dialogs/upload/html",["hbs","hbs/handlebars"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal" role="dialog" data-reveal >\n  <div class="row">\n    <h3 class="subheader">Upload File</h3>\n  </div>\n  <form id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'Form">\n    <div class="row">\n      <div id="support_file-uploader" class="large-12 columns text-center">\n        <label id="support_file-uploader-label" for="support_file-uploader-input"></label>\n        <input id="support_file-uploader-input" type="file"/>\n      </div>\n    </div>\n    <div class="form_buttons row">\n      <button class="button right radius success upload_support_file_form_button" type="submit" disabled>\n        Upload\n      </button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("tabs/support-tab/dialogs/upload/html",a),a}),define("tabs/support-tab/dialogs/upload",["require","utils/dialogs/dialog","hbs!./upload/html","resumable","sunstone","utils/notifier","opennebula/error","utils/browser-info","./upload/dialogId","../tabId"],function(t){function e(){this.dialogId=h,r.call(this)}function a(){return o({dialogId:this.dialogId})}function n(t){this.requestId=t.requestId}function s(t){var e=this,a=$("#"+f);if(p.getInternetExplorerVersion()>-1)$(".upload_support_file_form_button",t).text("Uploading files through IE is not supported"),$(".upload_support_file_form_button",t).attr("disabled","disabled");else{var n=new l({target:"upload_chunk",chunkSize:10485760,maxFiles:1,testChunks:!1,query:{csrftoken:""}});n.assignBrowse($("#support_file-uploader-input",t));var s="",i=!1;n.on("fileAdded",function(e){$(".upload_support_file_form_button",t).removeAttr("disabled"),s=e.fileName,i=s,$("#support_file-uploader-input",t).hide(),$("#support_file-uploader-label",t).html(e.fileName)}),n.on("uploadStart",function(){$(".upload_support_file_form_button",t).attr("disabled","disabled"),$(".support_upload_progress_bars",a).append('<div id="'+s+'progressBar" class="row" style="margin-bottom:10px">            <div id="'+s+'-info" class="large-2 columns dataTables_info">              Uploading...            </div>            <div class="large-10 columns">              <div id="upload_progress_container" class="progress nine radius" style="height:25px !important">                <span class="meter" style="width:0%"></span>              </div>              <div class="progress-text" style="margin-left:15px">'+s+"</div>            </div>          </div>")}),n.on("progress",function(){$("span.meter",$('div[id="'+s+'progressBar"]',a)).css("width",100*n.progress()+"%")}),n.on("fileSuccess",function(t){$('div[id="'+s+'-info"]',a).text("Registering in OpenNebula"),$.ajax({url:"support/request/"+e.requestId+"/upload",type:"POST",data:{csrftoken:"",file:s,tempfile:t.uniqueIdentifier},success:function(){d.notifyMessage("File uploaded correctly"),$('div[id="'+s+'progressBar"]',a).remove(),c.runAction("Support.refresh"),c.getDialog(h).hide()},error:function(t){d.onError({},u(t)),$('div[id="'+s+'progressBar"]',a).remove()}})}),$("#"+h+"Form",t).on("submit",function(){return n.upload(),c.getDialog(h).hide(),!1})}}function i(){return!1}var r=t("utils/dialogs/dialog"),o=t("hbs!./upload/html"),l=t("resumable"),c=t("sunstone"),d=t("utils/notifier"),u=t("opennebula/error"),p=t("utils/browser-info"),h=t("./upload/dialogId"),f=t("../tabId");return e.DIALOG_ID=h,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=i,e.prototype.setup=s,e.prototype.setParams=n,e}),define("templates/helpers/htmlDecode",["require","hbs/handlebars","utils/template-utils"],function(t){var e=t("hbs/handlebars"),a=t("utils/template-utils"),n=function(t){return a.htmlDecode(t)};return e.registerHelper("htmlDecode",n),n}),define("hbs!tabs/support-tab/panels/info/html",["hbs","hbs/handlebars","templates/helpers/htmlDecode","templates/helpers/advancedSection"],function(t,e){var a=e.template({1:function(t,e,a,n){var s,i=e.helperMissing,r="";return s=(e.advancedSection||t&&t.advancedSection||i).call(t,null!=t?t.title:t,{name:"advancedSection",hash:{},fn:this.program(2,n),inverse:this.noop,data:n}),null!=s&&(r+=s),r},2:function(t,e,a,n){var s,i=e.helperMissing,r='  <div class="row">\n    <div class="large-12 columns comment" style="font-size: 14px !important;">\n      ';return s=(e.htmlDecode||t&&t.htmlDecode||i).call(t,null!=t?t.html_body:t,{name:"htmlDecode",hash:{},data:n}),null!=s&&(r+=s),r+"\n    </div>\n  </div>\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i,r=this.lambda,o=this.escapeExpression,l=e.helperMissing,c="function",d='<div class="row">\n  <div class="large-6 columns">\n    <h5>'+o(r(null!=(s=null!=t?t.element:t)?s.subject:s,t))+'</h5>\n    <p class="subheader" style="font-size: 14px;">\n      ';return s=(e.htmlDecode||t&&t.htmlDecode||l).call(t,null!=(s=null!=t?t.element:t)?s.html_description:s,{name:"htmlDecode",hash:{},data:n}),null!=s&&(d+=s),d+='\n    </p>\n  </div>\n  <div class="large-6 columns">\n    <table id="info_marketplace_table" class="dataTable">\n      <thead>\n        <tr>\n          <th colspan="2">Information</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td class="key_td">Requested</td>\n          <td class="value_td">'+o(r(null!=(s=null!=t?t.element:t)?s.created_at:s,t))+'</td>\n        </tr>\n        <tr>\n          <td class="key_td">Status</td>\n          <td class="value_td">'+o(r(null!=(s=null!=t?t.element:t)?s.status:s,t))+'</td>\n        </tr>\n        <tr>\n          <td colspan="2"><span class="large-12 label secondary radius">'+o((i=null!=(i=e.message||(null!=t?t.message:t))?i:l,typeof i===c?i.call(t,{name:"message",hash:{},data:n}):i))+"</span></td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n<br>\n",s=e.each.call(t,null!=t?t.comments:t,{name:"each",hash:{},fn:this.program(1,n),inverse:this.noop,data:n}),null!=s&&(d+=s),d+'<div class="row">\n  <div class="large-12 columns support_upload_progress_bars">\n  </div>\n</div>\n<form id="submit_support_comment">\n  <div class="row">\n    <div class="large-12 columns">\n      <textarea class="comment" placeholder="Add a comment to this request" rows="4"/>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <input id="solved" type="checkbox">\n      <label for="solved">Please consider this request resolved</label>\n      <button class="button right radius success" type="submit">Submit</button>\n    </div>\n  </div>\n</form>\n'},useData:!0});return e.registerPartial("tabs/support-tab/panels/info/html",a),a}),define("tabs/support-tab/panels/info/panelId",["require"],function(){return"support_info_tab"}),define("tabs/support-tab/panels/info",["require","utils/locale","sunstone","hbs!./info/html","../tabId","./info/panelId"],function(t){function e(t){return this.title="Info",this.icon="fa-info-circle",this.element=t[o],this}function a(){var t;"open"==this.element.status?t="This request is currently being processed by our staff":"pending"==this.element.status&&(t="This request is awaiting your response");var e=[];return this.element.comments&&$.each(this.element.comments,function(t,a){var n=21231023==a.author_id?"OpenNebula Support Team":"Me";e.push({title:'<span style="width: 100%;">'+n+' <span style="color: #999;"> - '+a.created_at+"</span></span>",html_body:a.html_body})}),i({element:this.element,message:t,comments:e})}function n(t){var e=this;return $("#submit_support_comment").on("submit",function(){$("button[type=submit]",t).attr("disabled","disabled"),$("button[type=submit]",t).html('<i class="fa fa-spinner fa-spin"></i>');var a=e.element.id,n={comment:{value:$(".comment",this).val()},solved:$("#solved:checked",this).length>0?!0:!1};return s.runAction("Support.update",a,n),!1}),$(".accordion_advanced_toggle",t).trigger("click"),$("dl.right-info-tabs",t).hide(),!1}var s=(t("utils/locale"),t("sunstone")),i=t("hbs!./info/html"),r=(t("../tabId"),t("./info/panelId")),o="REQUEST";return e.PANEL_ID=r,e.prototype.html=a,e.prototype.setup=n,e}),define("hbs!tabs/support-tab/form-panels/create/wizard",["hbs","hbs/handlebars"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<form data-abide="ajax" id="'+o((s=null!=(s=e.formPanelId||(null!=t?t.formPanelId:t))?s:r,typeof s===i?s.call(t,{name:"formPanelId",hash:{},data:n}):s))+'Wizard" class="custom creation">\n  <div class="row">\n    <div class="large-12 columns">\n      <label for="subject">Subject</label>\n      <input id="subject" type="text" required></input>\n    </div>\n  </div>\n  <div class="row">\n    <div class="medium-6 columns">\n      <label for="opennebula_version">OpenNebula Version</label>\n      <input id="opennebula_version" type="text" required></input>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <label for="description">Description</label>\n      <textarea id="description" rows="5" placeholder="Please enter the details of your request. A member of our support staff will respond as soon as possible." required></textarea>\n    </div>\n  </div>\n  <div class="row">\n    <div class="large-12 columns">\n      <label for="severity">Subject</label>\n      <select id="severity" name="severity">\n        <option value="severity_1">Severity 1. Product Error: Catastrophic problem in running production systems</option>\n        <option value="severity_2">Severity 2. Product Error: High-impact problem in running production systems</option>\n        <option value="severity_3">Severity 3. Product Error: Low impact problem on a running production system </option>\n        <option value="severity_4" selected>Severity 4. Usage, Design, Configuration, or Integration Question</option>\n      </select>\n    </div>\n  </div>\n</form>'},useData:!0});return e.registerPartial("tabs/support-tab/form-panels/create/wizard",a),a}),define("tabs/support-tab/form-panels/create",["require","foundation.tab","utils/form-panels/form-panel","sunstone","hbs!./create/wizard","./create/formPanelId","../tabId"],function(t){function e(){this.formPanelId=c,this.tabId=d,this.actions={create:{title:"Submit a Request",buttonText:"Submit",resetButton:!0}},r.call(this)}function a(){return l({formPanelId:this.formPanelId})}function n(){}function s(){return!1}function i(t){var e={subject:$("#subject",t).val(),description:$("#description",t).val(),opennebula_version:$("#opennebula_version",t).val(),severity:$("#severity",t).val()};return o.runAction("Support.create",e),!1}t("foundation.tab");var r=t("utils/form-panels/form-panel"),o=t("sunstone"),l=t("hbs!./create/wizard"),c=t("./create/formPanelId"),d=t("../tabId");return e.FORM_PANEL_ID=c,e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.prototype.htmlWizard=a,e.prototype.submitWizard=i,e.prototype.onShow=n,e.prototype.setup=s,e}),define("tabs/support-tab",["require","./support-tab/buttons","./support-tab/actions","./support-tab/datatable","utils/notifier","./support-tab/utils/common","sunstone","hbs!./support-tab/title","hbs!./support-tab/subheader","./support-tab/tabId","./support-tab/dialogs/upload","./support-tab/panels/info","./support-tab/form-panels/create"],function(t){function e(t){r.showSupportConnect(),r.startIntervalRefresh(),$(".support_button").on("click",function(){return $("#li_support-tab > a").trigger("click"),$(".create_dialog_button","#support-tab").trigger("click"),!1}),$("#support_credentials_form",t).on("submit",function(){$(".submit_support_credentials_button",t).attr("disabled","disabled"),$(".submit_support_credentials_button",t).html('<i class="fa fa-spinner fa-spin"></i>');var e={email:$("#support_email",this).val(),password:$("#support_password",this).val()};return $.ajax({url:"support/credentials",type:"POST",dataType:"text",data:JSON.stringify(e),success:function(){$(".submit_support_credentials_button",t).removeAttr("disabled"),$(".submit_support_credentials_button",t).html("Sign in"),o.runAction("Support.refresh"),r.showSupportList(),r.startIntervalRefresh()},error:function(e){i.notifyError("401"==e.status?"Support credentials are incorrect":e.responseText),$(".submit_support_credentials_button",t).removeAttr("disabled"),$(".submit_support_credentials_button",t).html("Sign in")}}),!1})}var a=t("./support-tab/buttons"),n=t("./support-tab/actions"),s=t("./support-tab/datatable"),i=t("utils/notifier"),r=t("./support-tab/utils/common"),o=t("sunstone"),l=t("hbs!./support-tab/title"),c=t("hbs!./support-tab/subheader"),d=t("./support-tab/tabId"),u="dataTableSupport",p=[t("./support-tab/dialogs/upload")],h=[t("./support-tab/panels/info")],f=[t("./support-tab/form-panels/create")],m={tabId:d,resource:"Support",title:l(),listHeader:'<i class="fa fa-fw fa-support"></i> Commercial Support Requests',infoHeader:'<i class="fa fa-fw fa-support"></i> Commercial Support Request',subheader:c(),buttons:a,actions:n,dataTable:new s(u,{actions:!0,info:!0,oneSelection:!0}),panels:h,formPanels:f,dialogs:p,setup:e};return m}),define("hbs!utils/dialogs/confirm/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal" data-reveal>\n  <div class="row">\n    <h3 class="subheader">\n      '+o((e.tr||t&&t.tr||r).call(t,"Confirm",{name:"tr",hash:{},data:n}))+'\n      <br>\n      &emsp;\n      <small class="confirm_action"></small>\n    </h3>\n  </div>\n  <form action="">\n    <div id="confirm_tip">'+o((e.tr||t&&t.tr||r).call(t,"You have to confirm this action.",{name:"tr",hash:{},data:n}))+'</div>\n    <br />\n    <div id="question">'+o((e.tr||t&&t.tr||r).call(t,"Do you want to proceed?",{name:"tr",hash:{},data:n}))+'</div>\n    <br />\n    <div class="form_buttons">\n      <button id="confirm_proceed" class="action_button radius button right" value="">'+o((e.tr||t&&t.tr||r).call(t,"OK",{name:"tr",hash:{},data:n}))+'</button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("utils/dialogs/confirm/html",a),a}),define("utils/dialogs/confirm",["require","utils/dialogs/dialog","hbs!./confirm/html","sunstone","utils/locale","./confirm/dialogId"],function(t){function e(){this.dialogId=c,i.call(this)}function a(){return r({dialogId:this.dialogId})}function n(){return!1}function s(t){var e=t.data("buttonAction"),a=t.data("buttonTab"),n=o.getButton(a,e),s=l.tr("You have to confirm this action");n.tip&&(s=n.tip),$("#confirm_proceed",t).val(e),$("#confirm_tip",t).text(s);var i=o.getAction(e),r=i.elements();if(r){var c=e.split(".");$(".confirm_action",t).html(c[1]+" "+c[0]+": "+r.join(", "))}return!1}var i=t("utils/dialogs/dialog"),r=t("hbs!./confirm/html"),o=t("sunstone"),l=t("utils/locale"),c=t("./confirm/dialogId");return e.DIALOG_ID=c,e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e}),define("hbs!utils/dialogs/confirm-with-select/html",["hbs","hbs/handlebars","templates/helpers/tr"],function(t,e){var a=e.template({compiler:[6,">= 2.0.0-beta.1"],main:function(t,e,a,n){var s,i="function",r=e.helperMissing,o=this.escapeExpression;return'<div id="'+o((s=null!=(s=e.dialogId||(null!=t?t.dialogId:t))?s:r,typeof s===i?s.call(t,{name:"dialogId",hash:{},data:n}):s))+'" class="reveal-modal" data-reveal>\n  <div class="row">\n    <h3 class="subheader">\n      '+o((e.tr||t&&t.tr||r).call(t,"Confirm",{name:"tr",hash:{},data:n}))+'\n      <br>\n      &emsp;\n      <small class="confirm_action"></small>\n    </h3>\n  </div>\n  <form action="">\n    <div class="row">\n      <div id="confirm_with_select_tip">'+o((e.tr||t&&t.tr||r).call(t,"You need to select something.",{name:"tr",hash:{},data:n}))+'</div>\n    </div>\n    <br />\n    <div class="row">\n      <div class="large-12 columns" id="confirm_select"></div>\n    </div>\n    <br />\n    <br />\n    <div class="form_buttons">\n      <button id="confirm_with_select_proceed" class="action_button radius button right" value="">'+o((e.tr||t&&t.tr||r).call(t,"OK",{name:"tr",hash:{},data:n}))+'</button>\n    </div>\n    <a class="close-reveal-modal">&#215;</a>\n  </form>\n</div>'},useData:!0});return e.registerPartial("utils/dialogs/confirm-with-select/html",a),a}),define("utils/dialogs/confirm-with-select",["require","utils/dialogs/dialog","hbs!./confirm-with-select/html","sunstone","utils/locale","utils/notifier","utils/resource-select","./confirm-with-select/dialogId"],function(t){function e(){this.dialogId=u,i.call(this)}function a(){return r({dialogId:this.dialogId})}function n(t){return $("#confirm_with_select_proceed",t).click(function(){var e=t.data("buttonAction"),a=o.getAction(e),n=$(".resource_list_select",t).val();if(!n.length)return c.notifyError("You must select a value"),!1;if(!a)return c.notifyError("Action "+a+" not defined."),!1;var s;switch(a.type){case"multiple":s=o.runAction(e,a.elements(),n);break;default:s=o.runAction(e,n)}return s||t.foundation("reveal","close"),!1}),!1}function s(t){var e=t.data("buttonAction"),a=t.data("buttonTab"),n=o.getButton(a,e),s=l.tr("You have to confirm this action");n.tip&&(s=n.tip),n.custom_select?$("div#confirm_select",t).html(n.custom_select):d.insert("#confirm_select",t,n.select,null,!0),$("#confirm_with_select_tip",t).text(s);var i=o.getAction(e),r=i.elements();if(r){var c=e.split(".");$(".confirm_action",t).html(c[1]+" "+c[0]+": "+r.join(", "))}return!1}var i=t("utils/dialogs/dialog"),r=t("hbs!./confirm-with-select/html"),o=t("sunstone"),l=t("utils/locale"),c=t("utils/notifier"),d=t("utils/resource-select"),u=t("./confirm-with-select/dialogId");return e.DIALOG_ID=u,e.prototype=Object.create(i.prototype),e.prototype.constructor=e,e.prototype.html=a,e.prototype.onShow=s,e.prototype.setup=n,e}),define("app",["require","jquery","tabs/dashboard-tab/tabId","tabs/settings-tab/tabId","tabs/provision-tab/tabId","sunstone","sunstone-config","opennebula","utils/notifier","tabs/provision-tab","tabs/users-tab","tabs/settings-tab","tabs/dashboard-tab","tabs/system-tab","tabs/users-tab","tabs/groups-tab","tabs/vdcs-tab","tabs/acls-tab","tabs/vresources-tab","tabs/vms-tab","tabs/templates-tab","tabs/images-tab","tabs/files-tab","tabs/infra-tab","tabs/clusters-tab","tabs/hosts-tab","tabs/datastores-tab","tabs/vnets-tab","tabs/secgroups-tab","tabs/zones-tab","tabs/marketplace-tab","tabs/oneflow-dashboard","tabs/oneflow-services-tab","tabs/oneflow-templates-tab","tabs/settings-tab","tabs/support-tab","utils/dialogs/confirm","utils/dialogs/confirm-with-select"],function(t){function e(){$(document).on("click",".accordion_advanced > a",function(){return $(this).hasClass("active")?$(this).removeClass("active"):$(this).addClass("active"),$(this).closest(".accordion_advanced").children(".content").toggle(),!1})}function a(){function t(){c.Zone.list({timeout:!0,success:function(t,e){$(".zone-ul").empty(),$.each(e,function(){$(".zone-ul").append('<li><a id="'+this.ZONE.NAME+'" class="zone-choice">'+this.ZONE.NAME+"</a></li>")})},error:d.onError})}var e='<a href="#" data-dropdown="drop1" class="button small radius secondary dropdown" id="logout">      <i class="fa fa-user fa-lg fa-fw header-icon"></i> '+config.display_name+'</a>      <ul id="drop1" data-dropdown-content class="f-dropdown">        <li><a href="#" class="configuration"><i class="fa fa-cog"></i> Settings</a></li>        <li><a href="#" class="logout"><i class="fa fa-power-off"></i> Sign Out</a></li>      </ul>    <a href="#" data-dropdown="drop2" class="button small radius secondary dropdown" id="zonelector">      <i class="fa fa-home fa-lg fa-fw header-icon"></i> '+config.zone_name+'</a>      <ul id="drop2" data-dropdown-content class="zone-ul f-dropdown"></ul>';$(".user-zone-info").html(e),$("#zonelector").on("click",function(){t()}),$("a.zone-choice").on("click",function(){$.ajax({url:"config",type:"GET",headers:{ZONE_NAME:this.id},dataType:"json",success:function(){window.location.href="."},error:function(t){d.onError(null,c.Error(t))}})}),$(".user-zone-info").foundation("reflow","dropdown"),$("a.logout",$(".user-zone-info ")).click(function(){return c.Auth.logout({success:function(){window.location.href="login"},error:d.onError}),!1}),$(".user-zone-info a.configuration").click(function(){$(document).foundation("dropdown","closeall"),o.showTab(i)
+})}t("jquery");var n,s=t("tabs/dashboard-tab/tabId"),i=t("tabs/settings-tab/tabId"),r=t("tabs/provision-tab/tabId"),o=t("sunstone"),l=t("sunstone-config"),c=t("opennebula"),d=t("utils/notifier");n=l.isTabEnabled(r)?[t("tabs/provision-tab"),t("tabs/users-tab"),t("tabs/settings-tab")]:[t("tabs/dashboard-tab"),t("tabs/system-tab"),t("tabs/users-tab"),t("tabs/groups-tab"),t("tabs/vdcs-tab"),t("tabs/acls-tab"),t("tabs/vresources-tab"),t("tabs/vms-tab"),t("tabs/templates-tab"),t("tabs/images-tab"),t("tabs/files-tab"),t("tabs/infra-tab"),t("tabs/clusters-tab"),t("tabs/hosts-tab"),t("tabs/datastores-tab"),t("tabs/vnets-tab"),t("tabs/secgroups-tab"),t("tabs/zones-tab"),t("tabs/marketplace-tab"),t("tabs/oneflow-dashboard"),t("tabs/oneflow-services-tab"),t("tabs/oneflow-templates-tab"),t("tabs/settings-tab"),t("tabs/support-tab")];var u=[t("utils/dialogs/confirm"),t("utils/dialogs/confirm-with-select")];o.addDialogs(u),$.each(n,function(t,e){o.addMainTab(e)}),$(document).ready(function(){o.insertTabs(),e(),a(),l.isTabEnabled(r)?(o.showTab(r),$("#loading").hide()):l.isTabEnabled(s)&&(o.showTab(s),$("#loading").hide())})}),require.config({paths:{jquery:"../bower_components/jquery/dist/jquery.min",datatables:"../bower_components/datatables/media/js/jquery.dataTables.min","foundation-datatables":"../bower_components/foundation-datatables/integration/foundation/dataTables.foundation.min",jgrowl:"../bower_components/jgrowl/jquery.jgrowl.min","foundation.core":"../bower_components/foundation/js/foundation/foundation","foundation.abide":"../bower_components/foundation/js/foundation/foundation.abide","foundation.accordion":"../bower_components/foundation/js/foundation/foundation.accordion","foundation.alert":"../bower_components/foundation/js/foundation/foundation.alert","foundation.clearing":"../bower_components/foundation/js/foundation/foundation.clearing","foundation.dropdown":"../bower_components/foundation/js/foundation/foundation.dropdown","foundation.equalizer":"../bower_components/foundation/js/foundation/foundation.equalizer","foundation.interchange":"../bower_components/foundation/js/foundation/foundation.interchange","foundation.joyride":"../bower_components/foundation/js/foundation/foundation.joyride","foundation.magellan":"../bower_components/foundation/js/foundation/foundation.magellan","foundation.offcanvas":"../bower_components/foundation/js/foundation/foundation.offcanvas","foundation.orbit":"../bower_components/foundation/js/foundation/foundation.orbit","foundation.reveal":"../bower_components/foundation/js/foundation/foundation.reveal","foundation.slider":"../bower_components/foundation/js/foundation/foundation.slider","foundation.tab":"../bower_components/foundation/js/foundation/foundation.tab","foundation.tooltip":"../bower_components/foundation/js/foundation/foundation.tooltip","foundation.topbar":"../bower_components/foundation/js/foundation/foundation.topbar",hbs:"../bower_components/require-handlebars-plugin/hbs","jquery.cookie":"../bower_components/foundation/js/vendor/jquery.cookie",fastclick:"../bower_components/foundation/js/vendor/fastclick",modernizr:"../bower_components/foundation/js/vendor/modernizr",placeholder:"../bower_components/foundation/js/vendor/placeholder",resumable:"../bower_components/resumablejs/resumable",flot:"../bower_components/flot/jquery.flot","flot.stack":"../bower_components/flot/jquery.flot.stack","flot.resize":"../bower_components/flot/jquery.flot.resize","flot.time":"../bower_components/flot/jquery.flot.time","flot.tooltip":"../bower_components/flot.tooltip/js/jquery.flot.tooltip.min",nouislider:"../vendor/4.0/nouislider/jquery.nouislider.min","vnc-util":"../bower_components/no-vnc/include/util","vnc-webutil":"../bower_components/no-vnc/include/webutil","vnc-base64":"../bower_components/no-vnc/include/base64","vnc-websock":"../bower_components/no-vnc/include/websock","vnc-des":"../bower_components/no-vnc/include/des","vnc-keysymdef":"../bower_components/no-vnc/include/keysymdef","vnc-keyboard":"../bower_components/no-vnc/include/keyboard","vnc-input":"../bower_components/no-vnc/include/input","vnc-display":"../bower_components/no-vnc/include/display","vnc-jsunzip":"../bower_components/no-vnc/include/jsunzip","vnc-rfb":"../bower_components/no-vnc/include/rfb","vnc-keysym":"../bower_components/no-vnc/include/keysym","spice-main":"../bower_components/spice-html5/main","spice-spicearraybuffer":"../bower_components/spice-html5/spicearraybuffer","spice-enums":"../bower_components/spice-html5/enums","spice-atKeynames":"../bower_components/spice-html5/atKeynames","spice-utils":"../bower_components/spice-html5/utils","spice-png":"../bower_components/spice-html5/png","spice-lz":"../bower_components/spice-html5/lz","spice-quic":"../bower_components/spice-html5/quic","spice-bitmap":"../bower_components/spice-html5/bitmap","spice-spicedataview":"../bower_components/spice-html5/spicedataview","spice-spicetype":"../bower_components/spice-html5/spicetype","spice-spicemsg":"../bower_components/spice-html5/spicemsg","spice-wire":"../bower_components/spice-html5/wire","spice-spiceconn":"../bower_components/spice-html5/spiceconn","spice-display":"../bower_components/spice-html5/display","spice-inputs":"../bower_components/spice-html5/inputs","spice-webm":"../bower_components/spice-html5/webm","spice-playback":"../bower_components/spice-html5/playback","spice-simulatecursor":"../bower_components/spice-html5/simulatecursor","spice-cursor":"../bower_components/spice-html5/cursor","spice-jsbn":"../bower_components/spice-html5/thirdparty/jsbn","spice-rsa":"../bower_components/spice-html5/thirdparty/rsa","spice-prng4":"../bower_components/spice-html5/thirdparty/prng4","spice-rng":"../bower_components/spice-html5/thirdparty/rng","spice-sha1":"../bower_components/spice-html5/thirdparty/sha1","spice-ticket":"../bower_components/spice-html5/ticket","spice-resize":"../bower_components/spice-html5/resize","spice-filexfer":"../bower_components/spice-html5/filexfer"},shim:{jquery:{exports:"$"},jgrowl:{deps:["jquery"]},"foundation-datatables":{deps:["jquery","datatables"]},"foundation.core":{deps:["jquery","modernizr"],exports:"Foundation"},"foundation.abide":{deps:["foundation.core"]},"foundation.accordion":{deps:["foundation.core"]},"foundation.alert":{deps:["foundation.core"]},"foundation.clearing":{deps:["foundation.core"]},"foundation.dropdown":{deps:["foundation.core"]},"foundation.equalizer":{deps:["foundation.core"]},"foundation.interchange":{deps:["foundation.core"]},"foundation.joyride":{deps:["foundation.core","jquery.cookie"]},"foundation.magellan":{deps:["foundation.core"]},"foundation.offcanvas":{deps:["foundation.core"]},"foundation.orbit":{deps:["foundation.core"]},"foundation.reveal":{deps:["foundation.core"]},"foundation.slider":{deps:["foundation.core"]},"foundation.tab":{deps:["foundation.core"]},"foundation.tooltip":{deps:["foundation.core"]},"foundation.topbar":{deps:["foundation.core"]},"jquery.cookie":{deps:["jquery"]},fastclick:{exports:"FastClick"},modernizr:{exports:"Modernizr"},placeholder:{exports:"Placeholders"},flot:{deps:["jquery"]},"flot.stack":{deps:["flot"]},"flot.resize":{deps:["flot"]},"flot.time":{deps:["flot"]},"flot.tooltip":{deps:["flot"]},nouislider:{deps:["jquery"]},"vnc-util":{exports:"Util"},"vnc-webutil":{deps:["vnc-util"]},"vnc-base64":{deps:["vnc-util"]},"vnc-websock":{deps:["vnc-util"]},"vnc-des":{deps:["vnc-util"]},"vnc-keysymdef":{deps:["vnc-util"]},"vnc-keyboard":{deps:["vnc-util"]},"vnc-input":{deps:["vnc-util"]},"vnc-display":{deps:["vnc-util"]},"vnc-jsunzip":{deps:["vnc-util"]},"vnc-rfb":{deps:["vnc-util"]},"vnc-keysym":{deps:["vnc-util"]},"spice-main":{exports:"SpiceMainConn",deps:["spice-spiceconn","spice-spicearraybuffer","spice-enums","spice-atKeynames","spice-utils","spice-png","spice-lz","spice-quic","spice-bitmap","spice-spicedataview","spice-spicetype","spice-spicemsg","spice-wire","spice-display","spice-inputs","spice-webm","spice-playback","spice-simulatecursor","spice-cursor","spice-jsbn","spice-rsa","spice-prng4","spice-rng","spice-sha1","spice-ticket","spice-resize","spice-filexfer"]},"spice-display":{deps:["spice-spiceconn"]},"spice-inputs":{deps:["spice-spiceconn"]},"spice-playback":{deps:["spice-spiceconn"]},"spice-cursor":{deps:["spice-spiceconn"]}}}),require(["app"],function(){}),define("main",function(){});
+//# sourceMappingURL=main.js
+//# sourceMappingURL=main.js.map
\ No newline at end of file
diff --git a/src/sunstone/public/dist/main.js.map b/src/sunstone/public/dist/main.js.map
new file mode 100644
index 0000000000..f7c9d7dd2c
--- /dev/null
+++ b/src/sunstone/public/dist/main.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"main.js","sources":["../bower_components/no-vnc/include/websock.js","../bower_components/no-vnc/include/des.js","../bower_components/no-vnc/include/keyboard.js","../bower_components/no-vnc/include/jsunzip.js","../bower_components/spice-html5/spiceconn.js","../bower_components/spice-html5/spicearraybuffer.js","../bower_components/spice-html5/utils.js","../bower_components/spice-html5/png.js","../bower_components/spice-html5/lz.js","../bower_components/spice-html5/quic.js","../bower_components/spice-html5/bitmap.js","../bower_components/spice-html5/spicedataview.js","../bower_components/spice-html5/spicetype.js","../bower_components/spice-html5/spicemsg.js","../bower_components/spice-html5/wire.js","../bower_components/spice-html5/display.js","../bower_components/spice-html5/inputs.js","../bower_components/spice-html5/webm.js","../bower_components/spice-html5/playback.js","../bower_components/spice-html5/cursor.js","../bower_components/spice-html5/thirdparty/jsbn.js","../bower_components/spice-html5/thirdparty/rsa.js","../bower_components/spice-html5/thirdparty/prng4.js","../bower_components/spice-html5/thirdparty/rng.js","../bower_components/spice-html5/thirdparty/sha1.js","../bower_components/spice-html5/ticket.js","../bower_components/spice-html5/resize.js","../bower_components/spice-html5/filexfer.js","../bower_components/spice-html5/main.js","../bower_components/jquery/dist/jquery.min.js","tabs/dashboard-tab/tabId.js","tabs/settings-tab/tabId.js","tabs/provision-tab/tabId.js","../bower_components/foundation/js/vendor/modernizr.js","../bower_components/foundation/js/foundation/foundation.js","../bower_components/foundation/js/foundation/foundation.reveal.js","../bower_components/foundation/js/foundation/foundation.tab.js","../bower_components/foundation/js/foundation/foundation.dropdown.js","sunstone-config.js","utils/locale.js","../bower_components/jgrowl/jquery.jgrowl.min.js","utils/notifier.js","utils/dialogs/confirm/dialogId.js","utils/dialogs/confirm-with-select/dialogId.js","../bower_components/require-handlebars-plugin/hbs/handlebars.js","../bower_components/require-handlebars-plugin/hbs/underscore.js","../bower_components/require-handlebars-plugin/hbs/i18nprecompile.js","../bower_components/require-handlebars-plugin/hbs/json2.js","../bower_components/require-handlebars-plugin/hbs.js","sunstone/tab!hbs","templates/helpers/tr.js","sunstone/buttons!hbs","sunstone/panels!hbs","sunstone.js","opennebula/helper.js","opennebula/error.js","opennebula/action.js","opennebula/auth.js","opennebula/acl.js","opennebula/cluster.js","opennebula/datastore.js","utils/quotas/quota-defaults.js","utils/quotas/quota-limits.js","opennebula/group.js","opennebula/host.js","opennebula/image.js","opennebula/marketplace.js","opennebula/network.js","tabs/oneflow-services-tab/panels/roles/panelId.js","opennebula/role.js","tabs/oneflow-services-tab/tabId.js","opennebula/securitygroup.js","opennebula/service.js","opennebula/servicetemplate.js","opennebula/support.js","opennebula/template.js","opennebula/user.js","opennebula/vdc.js","opennebula/vm.js","opennebula/zone.js","opennebula.js","../bower_components/foundation/js/foundation/foundation.accordion.js","../bower_components/datatables/media/js/jquery.dataTables.min.js","../bower_components/foundation-datatables/integration/foundation/dataTables.foundation.min.js","utils/resource-select.js","utils/progress-bar.js","utils/humanize.js","utils/quotas/quota-widgets.js","templates/helpers/advancedSection.js","utils/accounting/html!hbs","../bower_components/flot/jquery.flot.js","../bower_components/flot/jquery.flot.stack.js","../bower_components/flot/jquery.flot.resize.js","../bower_components/flot.tooltip/js/jquery.flot.tooltip.min.js","../bower_components/flot/jquery.flot.time.js","utils/accounting.js","utils/showback/html!hbs","utils/showback.js","utils/graphs.js","../bower_components/foundation/js/foundation/foundation.slider.js","tabs/provision-tab/users/quota-widget.js","../bower_components/foundation/js/foundation/foundation.alert.js","templates/helpers/isTabPanelEnabled.js","hbs!tabs/provision-tab/vms/info","hbs!tabs/provision-tab/vms/list","tabs/provision-tab/vms/list.js","hbs!tabs/provision-tab/templates/list","tabs/provision-tab/templates/list.js","hbs!tabs/provision-tab/flows/info","hbs!tabs/provision-tab/flows/list","tabs/provision-tab/flows/list.js","hbs!tabs/provision-tab/users/quota-widget/html","hbs!tabs/provision-tab/users/empty-graphs","hbs!tabs/provision-tab/users/info","hbs!tabs/provision-tab/users/list","tabs/provision-tab/users/list.js","hbs!tabs/provision-tab/vms/create","templates/helpers/isFeatureEnabled.js","hbs!tabs/provision-tab/group/info","hbs!tabs/provision-tab/users/create","hbs!tabs/provision-tab/flows/create","hbs!tabs/provision-tab/content","hbs!tabs/provision-tab/header","hbs!tabs/provision-tab/dashboard/quotas","hbs!tabs/provision-tab/dashboard/vdc-quotas","hbs!tabs/provision-tab/dashboard/empty-graphs","hbs!tabs/provision-tab/dashboard/vms","hbs!tabs/provision-tab/dashboard/vdc-vms","hbs!tabs/provision-tab/dashboard/users","tabs/provision-tab.js","tabs/users-tab/buttons.js","hbs!utils/tab-datatable/empty-table","../bower_components/foundation/js/foundation/foundation.tooltip.js","utils/tips.js","hbs!utils/tab-datatable/table","hbs!utils/tab-datatable/search-input","utils/tab-datatable.js","utils/template-utils.js","tabs/users-tab/datatable.js","tabs/users-tab/form-panels/create/formPanelId.js","tabs/users-tab/dialogs/password/dialogId.js","tabs/users-tab/dialogs/auth-driver/dialogId.js","tabs/users-tab/dialogs/quotas/dialogId.js","tabs/users-tab/actions.js","utils/dialogs/dialog.js","hbs!tabs/users-tab/dialogs/password/html","hbs!tabs/users-tab/utils/user-creation/html","tabs/users-tab/utils/user-creation.js","tabs/users-tab/dialogs/password.js","hbs!tabs/users-tab/dialogs/auth-driver/html","tabs/users-tab/dialogs/auth-driver.js","hbs!tabs/users-tab/dialogs/quotas/html","tabs/users-tab/dialogs/quotas.js","templates/helpers/valOrDefault.js","hbs!tabs/users-tab/panels/info/html","hbs!tabs/users-tab/panels/info/chgrp-tr","utils/panel/template-table.js","tabs/users-tab/panels/info.js","tabs/users-tab/panels/quotas.js","tabs/users-tab/panels/quotas/panelId.js","tabs/users-tab/panels/accounting.js","tabs/users-tab/panels/accounting/panelId.js","tabs/users-tab/panels/showback.js","tabs/users-tab/panels/showback/panelId.js","../bower_components/foundation/js/foundation/foundation.abide.js","utils/form-panels/form-panel.js","hbs!tabs/users-tab/form-panels/create/wizard","tabs/users-tab/form-panels/create.js","tabs/users-tab.js","hbs!tabs/settings-tab/panels/user-config/html","tabs/settings-tab/panels/user-config.js","tabs/settings-tab/panels/user-config/panelId.js","tabs/settings-tab/panels/group-quotas.js","hbs!tabs/acls-tab/form-panels/create/wizard","tabs/acls-tab/form-panels/create.js","tabs/acls-tab/form-panels/create/formPanelId.js","tabs/settings-tab.js","hbs!tabs/dashboard-tab/html","tabs/vms-tab/tabId.js","tabs/hosts-tab/tabId.js","tabs/images-tab/tabId.js","tabs/vms-tab/form-panels/create/formPanelId.js","tabs/vnets-tab/tabId.js","tabs/hosts-tab/form-panels/create/formPanelId.js","tabs/images-tab/form-panels/create/formPanelId.js","tabs/vnets-tab/form-panels/create/formPanelId.js","hbs!tabs/dashboard-tab/storage","hbs!tabs/dashboard-tab/empty-graph","hbs!tabs/dashboard-tab/users","hbs!tabs/dashboard-tab/network","hbs!tabs/dashboard-tab/hosts","hbs!tabs/dashboard-tab/vms","hbs!tabs/dashboard-tab/user-quotas","hbs!tabs/dashboard-tab/group-quotas","hbs!tabs/dashboard-tab/accounting","tabs/dashboard-tab.js","tabs/system-tab.js","tabs/groups-tab/buttons.js","tabs/groups-tab/datatable.js","tabs/groups-tab/form-panels/create/formPanelId.js","tabs/groups-tab/dialogs/quotas/dialogId.js","tabs/groups-tab/actions.js","hbs!tabs/groups-tab/dialogs/quotas/html","tabs/groups-tab/dialogs/quotas.js","hbs!tabs/groups-tab/panels/info/html","tabs/groups-tab/utils/views.js","tabs/groups-tab/panels/info.js","tabs/groups-tab/panels/info/panelId.js","templates/helpers/isTabActionEnabled.js","hbs!tabs/groups-tab/panels/users/html","tabs/groups-tab/panels/users.js","tabs/groups-tab/panels/quotas.js","tabs/groups-tab/panels/quotas/panelId.js","tabs/groups-tab/panels/accounting.js","tabs/groups-tab/panels/accounting/panelId.js","tabs/groups-tab/panels/showback.js","tabs/groups-tab/panels/showback/panelId.js","hbs!tabs/groups-tab/form-panels/create/wizard","tabs/groups-tab/form-panels/create.js","tabs/groups-tab.js","tabs/vdcs-tab/buttons.js","tabs/vdcs-tab/datatable.js","tabs/vdcs-tab/tabId.js","tabs/vdcs-tab/form-panels/create/formPanelId.js","tabs/vdcs-tab/actions.js","hbs!tabs/vdcs-tab/panels/info/html","hbs!utils/panel/rename-tr/html","utils/panel/rename-tr.js","tabs/vdcs-tab/panels/info.js","tabs/vdcs-tab/panels/info/panelId.js","tabs/vdcs-tab/panels/groups.js","tabs/vdcs-tab/panels/groups/panelId.js","tabs/vdcs-tab/utils/common.js","hbs!tabs/vdcs-tab/utils/resources-tab/html","hbs!tabs/vdcs-tab/utils/resources-zone/html","tabs/clusters-tab/datatable.js","tabs/clusters-tab/tabId.js","tabs/hosts-tab/utils/cpu-bars.js","tabs/hosts-tab/utils/memory-bars.js","tabs/hosts-tab/datatable.js","tabs/vnets-tab/utils/common.js","tabs/vnets-tab/datatable.js","tabs/datastores-tab/utils/datastore-capacity-bar.js","tabs/datastores-tab/datatable.js","tabs/vdcs-tab/utils/resources-zone.js","tabs/vdcs-tab/utils/resources-tab.js","tabs/vdcs-tab/panels/resources.js","tabs/vdcs-tab/panels/resources/panelId.js","hbs!utils/custom-tags-table/html","utils/custom-tags-table.js","utils/wizard-fields.js","hbs!tabs/vdcs-tab/form-panels/create/wizard","hbs!tabs/vdcs-tab/form-panels/create/advanced","tabs/vdcs-tab/form-panels/create.js","tabs/vdcs-tab.js","tabs/acls-tab/buttons.js","tabs/acls-tab/datatable.js","tabs/acls-tab/actions.js","tabs/acls-tab.js","tabs/vresources-tab.js","tabs/vms-tab/buttons.js","utils/common-actions.js","../bower_components/no-vnc/include/util.js","../bower_components/no-vnc/include/webutil.js","../bower_components/no-vnc/include/base64.js","../bower_components/no-vnc/include/keysymdef.js","../bower_components/no-vnc/include/input.js","../bower_components/no-vnc/include/display.js","../bower_components/no-vnc/include/rfb.js","../bower_components/no-vnc/include/keysym.js","utils/vnc.js","../bower_components/spice-html5/enums.js","../bower_components/spice-html5/atKeynames.js","../bower_components/spice-html5/simulatecursor.js","utils/spice.js","tabs/vms-tab/dialogs/deploy/dialogId.js","tabs/vms-tab/dialogs/migrate/dialogId.js","tabs/vms-tab/dialogs/vnc/dialogId.js","tabs/vms-tab/dialogs/spice/dialogId.js","tabs/vms-tab/actions.js","tabs/vms-tab/utils/datatable-common.js","tabs/vms-tab/utils/state-actions.js","tabs/vms-tab/datatable.js","hbs!tabs/vms-tab/dialogs/deploy/html","tabs/vms-tab/dialogs/deploy.js","hbs!tabs/vms-tab/dialogs/migrate/html","tabs/vms-tab/dialogs/migrate.js","hbs!tabs/vms-tab/dialogs/resize/html","../vendor/4.0/nouislider/jquery.nouislider.min.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs/html","tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs.js","tabs/vms-tab/dialogs/resize.js","tabs/vms-tab/dialogs/resize/dialogId.js","hbs!tabs/vms-tab/dialogs/attach-disk/html","tabs/images-tab/datatable.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab/html","tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab.js","tabs/vms-tab/dialogs/attach-disk.js","tabs/vms-tab/dialogs/attach-disk/dialogId.js","hbs!tabs/vms-tab/dialogs/attach-nic/html","tabs/secgroups-tab/datatable.js","tabs/secgroups-tab/tabId.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab/html","tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab.js","tabs/vms-tab/dialogs/attach-nic.js","tabs/vms-tab/dialogs/attach-nic/dialogId.js","hbs!tabs/vms-tab/dialogs/snapshot/html","tabs/vms-tab/dialogs/snapshot.js","tabs/vms-tab/dialogs/snapshot/dialogId.js","hbs!tabs/vms-tab/dialogs/vnc/html","tabs/vms-tab/dialogs/vnc.js","hbs!tabs/vms-tab/dialogs/spice/html","tabs/vms-tab/dialogs/spice.js","hbs!utils/panel/permissions-table/html","hbs!utils/panel/permissions-table/permissions","hbs!utils/panel/permissions-table/owner","hbs!utils/panel/permissions-table/group","utils/panel/permissions-table.js","hbs!tabs/vms-tab/panels/info/html","tabs/vms-tab/panels/info.js","tabs/vms-tab/panels/info/panelId.js","templates/helpers/humanizeSize.js","hbs!tabs/vms-tab/panels/capacity/html","tabs/vms-tab/panels/capacity.js","tabs/vms-tab/panels/storage.js","tabs/secgroups-tab/utils/common.js","tabs/vms-tab/panels/network.js","tabs/vms-tab/panels/network/panelId.js","tabs/vms-tab/panels/snapshots.js","tabs/vms-tab/panels/placement.js","tabs/vms-tab/panels/placement/panelId.js","tabs/vms-tab/panels/actions.js","tabs/vms-tab/panels/actions/panelId.js","tabs/vms-tab/panels/template.js","tabs/vms-tab/panels/template/panelId.js","tabs/vms-tab/panels/log.js","tabs/vms-tab/panels/log/panelId.js","utils/user-inputs.js","tabs/templates-tab/datatable.js","tabs/templates-tab/tabId.js","hbs!tabs/vms-tab/form-panels/create/wizard","tabs/vms-tab/form-panels/create.js","tabs/vms-tab.js","tabs/templates-tab/buttons.js","tabs/templates-tab/form-panels/create/formPanelId.js","tabs/templates-tab/dialogs/clone/dialogId.js","tabs/templates-tab/dialogs/instantiate/dialogId.js","tabs/templates-tab/actions.js","hbs!tabs/templates-tab/dialogs/clone/html","tabs/templates-tab/dialogs/clone.js","hbs!tabs/templates-tab/dialogs/instantiate/html","tabs/templates-tab/dialogs/instantiate.js","hbs!tabs/templates-tab/panels/info/html","tabs/templates-tab/panels/info.js","tabs/templates-tab/panels/info/panelId.js","hbs!tabs/templates-tab/panels/template/html","tabs/templates-tab/panels/template.js","tabs/templates-tab/panels/template/panelId.js","hbs!tabs/templates-tab/form-panels/create/wizard","hbs!tabs/templates-tab/form-panels/create/advanced","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/general/html","tabs/templates-tab/form-panels/create/wizard-tabs/general.js","tabs/templates-tab/form-panels/create/wizard-tabs/general/wizardTabId.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/storage/html","tabs/templates-tab/form-panels/create/wizard-tabs/storage.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/network/html","tabs/templates-tab/form-panels/create/wizard-tabs/network.js","tabs/files-tab/datatable.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/os/html","tabs/templates-tab/form-panels/create/wizard-tabs/os.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/io/html","tabs/templates-tab/form-panels/create/wizard-tabs/io.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/context/html","tabs/templates-tab/form-panels/create/wizard-tabs/context.js","tabs/templates-tab/form-panels/create/wizard-tabs/context/wizardTabId.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/scheduling/html","tabs/templates-tab/form-panels/create/wizard-tabs/scheduling.js","tabs/templates-tab/form-panels/create/wizard-tabs/scheduling/wizardTabId.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/hybrid/html","tabs/templates-tab/form-panels/create/wizard-tabs/hybrid.js","hbs!tabs/templates-tab/form-panels/create/wizard-tabs/other/html","tabs/templates-tab/form-panels/create/wizard-tabs/other.js","tabs/templates-tab/form-panels/create.js","tabs/templates-tab.js","tabs/images-tab/buttons.js","tabs/images-tab/dialogs/clone/dialogId.js","tabs/images-tab/actions.js","hbs!tabs/images-tab/dialogs/clone/html","tabs/images-tab/dialogs/clone.js","hbs!tabs/images-tab/panels/info/html","tabs/images-tab/panels/info.js","tabs/images-tab/panels/info/panelId.js","tabs/images-tab/panels/vms.js","tabs/images-tab/panels/vms/panelId.js","../bower_components/resumablejs/resumable.js","utils/browser-info.js","hbs!tabs/images-tab/form-panels/create/wizard","hbs!tabs/images-tab/form-panels/create/advanced","tabs/images-tab/form-panels/create.js","tabs/images-tab.js","tabs/files-tab/buttons.js","tabs/files-tab/form-panels/create/formPanelId.js","tabs/files-tab/actions.js","hbs!tabs/files-tab/panels/info/html","tabs/files-tab/panels/info.js","tabs/files-tab/panels/info/panelId.js","hbs!tabs/files-tab/form-panels/create/wizard","hbs!tabs/files-tab/form-panels/create/advanced","tabs/files-tab/form-panels/create.js","tabs/files-tab.js","tabs/infra-tab.js","tabs/clusters-tab/buttons.js","tabs/clusters-tab/form-panels/create/formPanelId.js","tabs/clusters-tab/actions.js","hbs!tabs/clusters-tab/panels/info/html","tabs/clusters-tab/panels/info.js","tabs/clusters-tab/panels/info/panelId.js","tabs/clusters-tab/panels/hosts.js","tabs/clusters-tab/panels/hosts/panelId.js","tabs/clusters-tab/panels/vnets.js","tabs/clusters-tab/panels/vnets/panelId.js","tabs/clusters-tab/panels/datastores.js","tabs/clusters-tab/panels/datastores/panelId.js","hbs!tabs/clusters-tab/form-panels/create/wizard","tabs/clusters-tab/form-panels/create.js","tabs/clusters-tab.js","tabs/hosts-tab/buttons.js","tabs/hosts-tab/actions.js","hbs!utils/panel/cluster-tr/html","utils/panel/cluster-tr.js","hbs!tabs/hosts-tab/utils/datastore-capacity-table/html","tabs/hosts-tab/utils/datastores-capacity-table.js","tabs/hosts-tab/utils/can-import-wilds.js","hbs!tabs/hosts-tab/panels/info/html","tabs/hosts-tab/panels/info.js","tabs/hosts-tab/panels/info/panelId.js","hbs!tabs/hosts-tab/panels/monitor/html","tabs/hosts-tab/panels/monitor.js","tabs/hosts-tab/panels/monitor/panelId.js","tabs/hosts-tab/panels/vms.js","tabs/hosts-tab/panels/vms/panelId.js","hbs!tabs/hosts-tab/panels/wilds/html","tabs/hosts-tab/panels/wilds.js","tabs/hosts-tab/panels/wilds/panelId.js","hbs!tabs/hosts-tab/panels/esx/html","tabs/hosts-tab/panels/esx.js","tabs/hosts-tab/panels/esx/panelId.js","hbs!tabs/hosts-tab/form-panels/create/wizard","tabs/hosts-tab/form-panels/create.js","tabs/hosts-tab.js","tabs/datastores-tab/buttons.js","tabs/datastores-tab/dialogs/create/dialogId.js","tabs/datastores-tab/actions.js","hbs!tabs/datastores-tab/dialogs/create/html","tabs/datastores-tab/dialogs/create.js","hbs!tabs/datastores-tab/panels/info/html","tabs/datastores-tab/panels/info.js","tabs/datastores-tab/panels/info/panelId.js","tabs/datastores-tab/panels/images.js","tabs/datastores-tab/panels/images/panelId.js","tabs/datastores-tab.js","tabs/vnets-tab/buttons.js","tabs/vnets-tab/dialogs/add-ar/dialogId.js","tabs/vnets-tab/dialogs/update-ar/dialogId.js","tabs/vnets-tab/dialogs/reserve/dialogId.js","tabs/vnets-tab/actions.js","hbs!tabs/vnets-tab/dialogs/add-ar/html","hbs!tabs/vnets-tab/utils/ar-tab/html","tabs/vnets-tab/utils/ar-tab.js","tabs/vnets-tab/dialogs/add-ar.js","hbs!tabs/vnets-tab/dialogs/update-ar/html","tabs/vnets-tab/dialogs/update-ar.js","hbs!tabs/vnets-tab/dialogs/reserve/html","tabs/vnets-tab/dialogs/reserve/ar-datatable.js","tabs/vnets-tab/dialogs/reserve.js","hbs!tabs/vnets-tab/panels/info/html","tabs/vnets-tab/panels/info.js","hbs!tabs/vnets-tab/panels/ar/html","hbs!tabs/vnets-tab/panels/ar/arInfo","tabs/vnets-tab/panels/ar.js","tabs/vnets-tab/panels/ar/panelId.js","hbs!tabs/vnets-tab/panels/leases/html","tabs/vnets-tab/panels/leases.js","tabs/vnets-tab/panels/secgroups.js","tabs/vnets-tab/panels/secgroups/panelId.js","hbs!tabs/vnets-tab/form-panels/create/wizard","hbs!tabs/vnets-tab/form-panels/create/advanced","tabs/vnets-tab/form-panels/create.js","tabs/vnets-tab.js","tabs/secgroups-tab/buttons.js","tabs/secgroups-tab/form-panels/create/formPanelId.js","tabs/secgroups-tab/dialogs/clone/dialogId.js","tabs/secgroups-tab/actions.js","hbs!tabs/secgroups-tab/dialogs/clone/html","tabs/secgroups-tab/dialogs/clone.js","hbs!tabs/secgroups-tab/panels/info/html","tabs/secgroups-tab/panels/info.js","hbs!tabs/secgroups-tab/form-panels/create/wizard","hbs!tabs/secgroups-tab/form-panels/create/advanced","tabs/secgroups-tab/form-panels/create.js","tabs/secgroups-tab.js","tabs/zones-tab/buttons.js","tabs/zones-tab/datatable.js","tabs/zones-tab/tabId.js","tabs/zones-tab/dialogs/create/dialogId.js","tabs/zones-tab/actions.js","hbs!tabs/zones-tab/dialogs/create/html","tabs/zones-tab/dialogs/create.js","hbs!tabs/zones-tab/panels/info/html","tabs/zones-tab/panels/info.js","tabs/zones-tab/panels/info/panelId.js","tabs/zones-tab.js","tabs/marketplace-tab/buttons.js","tabs/marketplace-tab/datatable.js","tabs/marketplace-tab/tabId.js","tabs/marketplace-tab/dialogs/import/dialogId.js","tabs/marketplace-tab/actions.js","hbs!tabs/marketplace-tab/dialogs/import/html","hbs!tabs/marketplace-tab/dialogs/import/content","tabs/marketplace-tab/dialogs/import.js","hbs!tabs/marketplace-tab/panels/info/html","tabs/marketplace-tab/panels/info.js","tabs/marketplace-tab/panels/info/panelId.js","tabs/marketplace-tab.js","tabs/oneflow-dashboard.js","tabs/oneflow-services-tab/buttons.js","tabs/oneflow-services-tab/actions.js","tabs/oneflow-services-tab/dialogs/scale/dialogId.js","tabs/oneflow-services-tab/datatable.js","hbs!tabs/oneflow-services-tab/dialogs/scale/html","tabs/oneflow-services-tab/dialogs/scale.js","hbs!tabs/oneflow-services-tab/panels/info/html","tabs/oneflow-services-tab/panels/info.js","tabs/oneflow-services-tab/panels/info/panelId.js","tabs/oneflow-services-tab/panels/roles/roles-buttons.js","tabs/oneflow-services-tab/panels/roles/roles-vm-buttons.js","utils/dom-datatable.js","hbs!tabs/oneflow-services-tab/panels/roles/html","hbs!tabs/oneflow-services-tab/panels/roles/roleInfo","tabs/oneflow-services-tab/panels/roles.js","tabs/oneflow-services-tab/panels/log.js","tabs/oneflow-services-tab/panels/log/panelId.js","tabs/oneflow-services-tab.js","tabs/oneflow-templates-tab/buttons.js","tabs/oneflow-templates-tab/tabId.js","tabs/oneflow-templates-tab/form-panels/create/formPanelId.js","tabs/oneflow-templates-tab/form-panels/instantiate/formPanelId.js","tabs/oneflow-templates-tab/actions.js","tabs/oneflow-templates-tab/datatable.js","hbs!tabs/oneflow-templates-tab/panels/info/html","tabs/oneflow-templates-tab/panels/info.js","tabs/oneflow-templates-tab/panels/info/panelId.js","tabs/oneflow-templates-tab/panels/roles.js","tabs/oneflow-templates-tab/panels/roles/panelId.js","hbs!tabs/oneflow-templates-tab/utils/role-tab/html","hbs!tabs/oneflow-templates-tab/utils/role-tab/elasticity-row","hbs!tabs/oneflow-templates-tab/utils/role-tab/sche-row","tabs/oneflow-templates-tab/utils/role-tab.js","hbs!tabs/oneflow-templates-tab/form-panels/create/wizard","hbs!tabs/oneflow-templates-tab/form-panels/create/advanced","tabs/oneflow-templates-tab/form-panels/create.js","hbs!tabs/oneflow-templates-tab/form-panels/instantiate/html","tabs/oneflow-templates-tab/form-panels/instantiate.js","tabs/oneflow-templates-tab.js","tabs/support-tab/buttons.js","tabs/support-tab/tabId.js","tabs/support-tab/utils/common.js","tabs/support-tab/form-panels/create/formPanelId.js","tabs/support-tab/dialogs/upload/dialogId.js","tabs/support-tab/actions.js","tabs/support-tab/datatable.js","hbs!tabs/support-tab/title","hbs!tabs/support-tab/subheader","hbs!tabs/support-tab/dialogs/upload/html","tabs/support-tab/dialogs/upload.js","templates/helpers/htmlDecode.js","hbs!tabs/support-tab/panels/info/html","tabs/support-tab/panels/info.js","tabs/support-tab/panels/info/panelId.js","hbs!tabs/support-tab/form-panels/create/wizard","tabs/support-tab/form-panels/create.js","tabs/support-tab.js","utils/dialogs/confirm/html!hbs","utils/dialogs/confirm.js","hbs!utils/dialogs/confirm-with-select/html","utils/dialogs/confirm-with-select.js","app.js"],"names":["Websock","this","_websocket","_rQ","_rQi","_rQmax","_sQ","_mode","maxBufferedAmount","_eventHandlers","message","open","close","error","DES","passwd","setKeys","keyBlock","i","j","l","m","n","o","raw0","raw1","rawi","KnLi","pc1m","pcr","kn","totrot","PC2","keys","enc8","text","fval","r","x","b","slice","keysi","SP7","SP5","SP3","SP1","SP8","SP6","SP4","SP2","encrypt","t","concat","a","c","d","e","f","z","KeyEventDecoder","modifierState","next","sendAll","evts","length","process","evt","type","result","keyId","kbdUtil","getKey","keysym","getKeysym","hasModifier","hasShortcutModifier","activeCharModifier","nonCharacterKey","isShift","keyCode","key","suppress","stall","active","isCharModifier","escape","keydown","keypress","keyup","syncModifiers","syncAny","releaseAll","VerifyCharModifier","timer","delayProcess","clearTimeout","queue","cur","splice","setTimeout","push","TrackKeyState","state","last","keysyms","ignoreKeyPress","console","log","idx","item","clone","Clone","obj","prototype","out","EscapeModifiers","undefined","lookup","JSUnzip","getInt","offset","size","data","charCodeAt","getDOSDate","dosdate","dostime","day","month","year","second","minute","hour","Date","files","status","endOfCentralDirectory","entriesInThisDisk","centralDirectoryOffset","globalCommentLength","comment","fileOffset","compressionMethod","lastModFileTime","lastModFileDate","lastModifiedDate","compressedSize","uncompressedSize","fileNameLength","extraFieldLength","fileCommentLength","relativeOffsetOfLocalHeader","fileName","fileComment","localFileNameLength","localExtraFieldLength","localFileContent","read","fileInfo","tinf","TINF","init","uncompress","OK","read_bits_direct","source","bitcount","tag","num","val","DATA_ERROR","WINDOW_SIZE","TREE","table","Array","trans","DATA","that","sourceIndex","dest","history","ltree","dtree","sltree","sdtree","length_bits","length_base","dist_bits","dist_base","clcidx","build_bits_base","bits","base","delta","first","sum","Math","floor","build_fixed_trees","lt","dt","build_tree","lengths","loffset","offs","getbit","bit","read_bits","ret","decode_symbol","len","decode_trees","hlit","hdist","hclen","code_tree","clen","sym","prev","inflate_block_data","ddest","ddestlength","dist","inflate_uncompressed_block","invlength","overflow","inflate_fixed_block","inflate_dynamic_block","reset","header","bfinal","blocks","btype","res","SpiceConn","uri","Error","ws","WebSocket","binaryType","connection_id","SPICE_CHANNEL_MAIN","chan_id","parent","message_id","password","screen_id","dump_id","onerror","onsuccess","onagent","wire_reader","SpiceWireReader","process_inbound","messages_sent","warnings","addEventListener","DEBUG","send_hdr","request","SpiceLinkHeader","buffer_size","target","log_err","url","report_error","toString","readyState","timeout","window","spiceconn_timeout","SPICE_CONNECT_TIMEOUT","sc","handle_timeout","call","SpiceArrayBufferSlice","start","end","byteLength","ArrayBuffer","in1","Uint8Array","combine_array_buffers","a1","a2","in2","hexdump_buffer","mg","hex","str","last_zeros","h","Number","String","fromCharCode","get_scancode","code","common_scanmap","navigator","userAgent","indexOf","firefox_scanmap","DOM_scanmap","keycode_to_start_scan","scancode","alert","keycode_to_end_scan","rfc2083_make_crc_table","k","rfc2083_crc_table","rfc2083_crc_table_computed","rfc2083_update_crc","crc","u8buf","at","rfc2083_crc","crc32","mb","u8","PngIHDR","width","height","depth","compression","filter","interlace","adler","s1","s2","PngIDAT","bytes","PngIEND","create_rgba_png","ihdr","idat","iend","to_buffer","lz_rgb32_decompress","in_buf","out_buf","default_alpha","ctrl","encoder","op","ref","ofs","LZ_IMAGE_TYPE_RGBA","convert_spice_lz_to_web","context","lz_image","LZ_IMAGE_TYPE_RGB32","createImageData","LZ_IMAGE_TYPE_XXXA","ceil_log_2","family_init","family","bpc","limit","altprefixlen","altcodewords","bppmask","nGRcodewords","notGRcwlen","notGRprefixmask","notGRsuffixlen","s","pixelbitmask","pixelbitmaskshr","xlatU2L","xlatL2U","quic_image_bpc","QUIC_IMAGE_TYPE_GRAY","QUIC_IMAGE_TYPE_RGB16","QUIC_IMAGE_TYPE_RGB24","QUIC_IMAGE_TYPE_RGB32","QUIC_IMAGE_TYPE_RGBA","QUIC_IMAGE_TYPE_INVALID","cnt_l_zeroes","lzeroes","golomb_decoding_8bpc","rc","cwlen","family_8bpc","zeroprefix","codewordlen","golomb_code_len_8bpc","QuicModel","bstart","bend","levels","n_buckets_ptrs","evol","repfirst","firstsize","repnext","mulsize","n_buckets","repcntr","bsize","QuicBucket","counters","QuicFamilyStat","buckets_ptrs","buckets_buf","QuicChannel","model_8bpc","model_5bpc","CommonState","family_stat_8bpc","family_stat_5bpc","correlate_row","zero","row","fill_model_structures","QuicEncoder","rgb_state","channels","SpiceQuic","convert_spice_quic_to_web","spice_quic","outptr","convert_spice_bitmap_to_web","spice_bitmap","format","SPICE_BITMAP_FMT_32BIT","SPICE_BITMAP_FMT_RGBA","y","stride","SpiceDataView","buffer","byteOffset","SpiceChannelId","SpiceRect","SpiceClipRects","SpiceClip","SpiceImageDescriptor","SpicePalette","SpiceBitmap","SpiceImage","SpiceQMask","SpicePattern","SpiceBrush","SpiceFill","SpiceCopy","SpicePoint16","SpicePoint","SpiceCursorHeader","SpiceCursor","SpiceSurface","magic","SPICE_MAGIC","major_version","SPICE_VERSION_MAJOR","minor_version","SPICE_VERSION_MINOR","from_buffer","SpiceLinkMess","channel_type","channel_id","common_caps","channel_caps","SpiceLinkReply","pub_key","SpiceLinkAuthTicket","auth_mechanism","encrypted_data","SpiceLinkAuthReply","auth_code","SpiceMiniData","SpiceMsgChannels","num_of_channels","SpiceMsgMainInit","SpiceMsgMainMouseMode","SpiceMsgMainAgentData","SpiceMsgMainAgentTokens","SpiceMsgSetAck","SpiceMsgcAckSync","ack","generation","SpiceMsgcMainMouseModeRequest","mode","SpiceMsgcMainAgentStart","num_tokens","SpiceMsgcMainAgentData","protocol","VD_AGENT_PROTOCOL","opaque","VDAgentAnnounceCapabilities","caps","VDAgentMonitorsConfig","flags","num_mon","VDAgentFileXferStatusMessage","id","VDAgentFileXferStartMessage","name","string","VDAgentFileXferDataMessage","SpiceMsgNotify","SpiceMsgcDisplayInit","pixmap_cache_id","glz_dictionary_id","pixmap_cache_size","glz_dictionary_window_size","SpiceMsgDisplayBase","SpiceMsgDisplayDrawCopy","SpiceMsgDisplayDrawFill","SpiceMsgDisplayCopyBits","SpiceMsgSurfaceCreate","SpiceMsgSurfaceDestroy","SpiceMsgInputsInit","SpiceMsgInputsKeyModifiers","SpiceMsgCursorInit","SpiceMsgPlaybackData","SpiceMsgPlaybackMode","SpiceMsgPlaybackStart","SpiceMsgCursorSet","SpiceMsgcMousePosition","display_id","buttons_state","scrollTop","document","body","documentElement","scrollLeft","clientX","display","surfaces","primary_surface","canvas","offsetLeft","clientY","offsetTop","mousex","mousey","SpiceMsgcMouseMotion","SpiceMsgcMousePress","button","SPICE_MOUSE_BUTTON_LEFT","SPICE_MOUSE_BUTTON_MASK_LEFT","SpiceMsgcMouseRelease","SpiceMsgcKeyDown","SpiceMsgcKeyUp","SpiceMsgDisplayStreamCreate","SpiceStreamDataHeader","SpiceMsgDisplayStreamData","SpiceMsgDisplayStreamClip","SpiceMsgDisplayStreamDestroy","SpiceMsgDisplayInvalList","count","resources","callback","needed","buffers","wire_blob_catcher","inbound","putImageDataWithAlpha","createElement","getContext","setAttribute","putImageData","drawImage","stripAlpha","SpiceDisplayConn","apply","arguments","handle_mouseover","focus","handle_mouseout","cursor","spice_simulated_cursor","style","blur","handle_draw_jpeg_onload","temp_canvas","surface_id","log_info","box","right","bottom","alpha_img","globalCompositeOperation","left","top","descriptor","SPICE_IMAGE_FLAGS_CACHE_ME","cache","getImageData","src","DUMP_DRAWS","debug_canvas","draw_count","getElementById","appendChild","SpiceInputsConn","button_state","waiting_for_ack","handle_mousemove","move","msg","mouse_mode","SPICE_MOUSE_MODE_CLIENT","build_msg","SPICE_MSGC_INPUTS_MOUSE_POSITION","SPICE_MSGC_INPUTS_MOUSE_MOTION","inputs","SPICE_INPUT_MOTION_ACK_BUNCH","send_msg","pageX","spice_hot_x","pageY","spice_hot_y","preventDefault","handle_mousedown","press","SPICE_MSGC_INPUTS_MOUSE_PRESS","handle_contextmenu","handle_mouseup","release","SPICE_MSGC_INPUTS_MOUSE_RELEASE","handle_mousewheel","deltaY","SPICE_MOUSE_BUTTON_UP","SPICE_MOUSE_BUTTON_DOWN","handle_keydown","check_and_update_modifiers","SPICE_MSGC_INPUTS_KEY_DOWN","handle_keyup","SPICE_MSGC_INPUTS_KEY_UP","sendCtrlAltDel","update_modifier","KEY_LCtrl","KEY_Alt","KEY_KP_Decimal","Ctrl_state","Alt_state","Shift_state","shiftKey","ctrlKey","altKey","Meta_state","metaKey","KEY_ShiftL","EBML_write_u1_data_len","dv","setUint8","EBML_write_u8_value","EBML_write_array","EBML_write_u32_value","setUint32","EBML_write_u16_value","setUint16","EBML_write_float_value","setFloat32","EBML_write_u64_data_len","shift","arr","EBML_write_string","EBML_write_data","EBMLHeader","EBML_HEADER","Version","ReadVersion","MaxIDLength","MaxSizeLength","DocType","DocTypeVersion","DocTypeReadVersion","webm_Segment","WEBM_SEGMENT_HEADER","webm_SegmentInformation","WEBM_SEGMENT_INFORMATION","timecode_scale","muxing_app","writing_app","webm_Audio","frequency","WEBM_AUDIO","sampling_frequency","OPUS_CHANNELS","webm_Seek","seekid","pos","WEBM_SEEK","webm_SeekHead","info_pos","track_pos","WEBM_SEEK_HEAD","info","track","WEBM_TRACKS","webm_TrackEntry","WEBM_TRACK_ENTRY","number","uid","flag_enabled","flag_default","flag_forced","flag_lacing","min_cache","max_block_addition_id","codec_decode_all","seek_pre_roll","codec_delay","codec_id","audio","OPUS_FREQUENCY","codec_private","webm_Tracks","entry","track_entry","webm_Cluster","timecode","WEBM_CLUSTER","webm_SimpleBlock","keyframe","WEBM_SIMPLE_BLOCK","webm_Header","ebml","segment","seek_head","tracks","SpicePlaybackConn","append_okay","start_time","skip_until","gap_time","handle_source_open","p","spiceconn","source_buffer","addSourceBuffer","SPICE_PLAYBACK_CODEC","handle_source_ended","handle_source_closed","handle_append_buffer_done","playback_append_buffer","handle_sourcebuffer_error","appendBuffer","SpiceCursorConn","BigInteger","fromNumber","fromString","nbi","am1","w","v","am2","xl","xh","am3","int2char","BI_RM","charAt","intAt","BI_RC","bnpCopyTo","bnpFromInt","DV","nbv","fromInt","bnpFromString","fromRadix","mi","sh","DB","clamp","ZERO","subTo","bnpClamp","DM","bnToString","negate","toRadix","km","bnNegate","bnAbs","bnCompareTo","nbits","bnBitLength","bnpDLShiftTo","bnpDRShiftTo","max","bnpLShiftTo","bs","cbs","bm","ds","bnpRShiftTo","bnpSubTo","min","bnpMultiplyTo","abs","am","bnpSquareTo","bnpDivRemTo","q","pm","pt","copyTo","ts","ms","nsh","lShiftTo","ys","y0","yt","F1","F2","d1","FV","d2","dlShiftTo","compareTo","ONE","qd","drShiftTo","rShiftTo","bnMod","divRemTo","Classic","cConvert","mod","cRevert","cReduce","cMulTo","multiplyTo","reduce","cSqrTo","squareTo","bnpInvDigit","Montgomery","mp","invDigit","mpl","mph","um","mt2","montConvert","montRevert","montReduce","u0","montSqrTo","montMulTo","bnpIsEven","bnpExp","r2","g","convert","sqrTo","mulTo","revert","bnModPowInt","isEven","exp","parseBigInt","linebrk","substring","byte2Hex","pkcs1pad2","ba","rng","SecureRandom","nextBytes","RSAKey","dmp1","dmq1","coeff","RSASetPublic","N","E","parseInt","RSADoPublic","modPowInt","RSAEncrypt","bitLength","doPublic","Arcfour","S","ARC4init","ARC4next","prng_newstate","rng_seed_int","rng_pool","rng_pptr","rng_psize","rng_seed_time","getTime","rng_get_byte","rng_state","rng_get_bytes","hex_sha1","rstr2hex","rstr_sha1","str2rstr_utf8","b64_sha1","rstr2b64","any_sha1","rstr2any","hex_hmac_sha1","rstr_hmac_sha1","b64_hmac_sha1","any_hmac_sha1","sha1_vm_test","toLowerCase","binb2rstr","binb_sha1","rstr2binb","bkey","ipad","opad","hash","input","hexcase","hex_tab","output","b64pad","tab","triplet","encoding","quotient","divisor","remainders","dividend","ceil","full_length","str2rstr_utf16le","str2rstr_utf16be","olda","oldb","oldc","oldd","olde","bit_rol","safe_add","sha1_ft","sha1_kt","lsw","msw","cnt","MGF1","mask","seed","outlen","combo_buf","combo_hash","RSA_padding_add_PKCS1_OAEP","tolen","from","param","SHA_DIGEST_LENGTH","rand","dblen","db","padlen","param_hash","dbmask","seedmask","asn_get_length","find_sequence","lenblock","create_rsa_from_mb","seq","rsa_encrypt","rsa","oaep","bigint","enc","resize_helper","clientWidth","clientHeight","hd","innerHeight","offsetHeight","resize_window","spice_resize_timer","handle_resize","spice_connection","SpiceFileXferTask","file","handle_file_dragover","stopPropagation","dataTransfer","dropEffect","handle_file_drop","file_xfer_start","SpiceMainConn","agent_msg_queue","file_xfer_tasks","file_xfer_task_id","file_xfer_read_queue","module","exports","isWindow","nodeType","isFunction","grep","test","D","G","F","each","match","I","removeEventListener","ready","K","Object","defineProperty","get","expando","P","replace","O","getAttribute","parseJSON","M","set","Z","$","_","activeElement","jb","nodeName","firstChild","getElementsByTagName","ownerDocument","kb","lb","gb","exec","removeAttribute","L","nb","hasData","access","events","handle","event","add","extend","ob","querySelectorAll","merge","pb","T","checked","defaultValue","sb","appendTo","getDefaultComputedStyle","css","detach","tb","rb","qb","contentDocument","write","xb","wb","getPropertyValue","contains","vb","ub","minWidth","maxWidth","yb","Fb","toUpperCase","Eb","Gb","Ab","Hb","R","Ib","offsetWidth","boxSizingReliable","parseFloat","Jb","Kb","Sb","Lb","now","Tb","opacity","Ub","Rb","Vb","_queueHooks","unqueued","empty","fire","always","overflowX","overflowY","Nb","isEmptyObject","hidden","show","done","hide","remove","Wb","camelCase","isArray","cssHooks","expand","Xb","Qb","Deferred","elem","startTime","duration","tweens","run","notifyWith","resolveWith","promise","props","opts","specialEasing","originalProperties","originalOptions","createTween","Tween","easing","stop","rejectWith","map","fx","anim","progress","complete","fail","qc","unshift","dataTypes","mc","ajaxSettings","flatOptions","tc","contents","mimeType","getResponseHeader","converters","uc","responseFields","dataFilter","dataType","split","Ac","wc","Jc","defaultView","hasOwnProperty","fn","jquery","constructor","selector","toArray","pushStack","prevObject","eq","sort","isPlainObject","random","isReady","noop","isNumeric","globalEval","eval","trim","head","parentNode","removeChild","makeArray","inArray","guid","proxy","support","H","getElementsByClassName","qsa","u","bb","ab","join","hb","cacheLength","ib","attrHandle","C","nextSibling","value","dir","J","relative","matches","find","TAG","uniqueSort","A","B","pop","Q","RegExp","U","V","W","X","ID","CLASS","ATTR","PSEUDO","CHILD","bool","needsContext","Y","cb","eb","childNodes","fb","isXML","setDocument","attachEvent","attributes","className","createComment","getById","getElementsByName","getAttributeNode","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","sortDetached","attr","specified","detectDuplicates","sortStable","getText","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","preFilter","lastChild","pseudos","setFilters","not","has","innerText","lang","location","root","hasFocus","href","tabIndex","enabled","disabled","selected","selectedIndex","even","odd","gt","nth","radio","checkbox","image","submit","filters","tokenize","compile","select","expr","unique","isXMLDoc","is","parseHTML","children","sibling","closest","index","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","once","memory","stopOnFalse","disable","lock","locked","fireWith","fired","then","resolve","reject","notify","pipe","when","readyWait","holdReady","triggerHandler","off","acceptData","accepts","defineProperties","discard","removeData","_data","_removeData","dequeue","clearQueue","createDocumentFragment","checkClone","cloneNode","noCloneChecked","focusinBubbles","global","handler","triggered","dispatch","special","delegateType","bindType","origType","namespace","delegateCount","setup","teardown","removeEvent","trigger","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","isDefaultPrevented","_default","fix","delegateTarget","preDispatch","handlers","currentTarget","isImmediatePropagationStopped","handleObj","postDispatch","fixHooks","keyHooks","which","charCode","mouseHooks","clientLeft","clientTop","load","click","beforeunload","originalEvent","returnValue","simulate","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","relatedTarget","on","one","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","buildFragment","createTextNode","cleanData","append","domManip","prepend","insertBefore","before","after","html","replaceWith","replaceChild","_evalUrl","prependTo","insertAfter","replaceAll","opener","getComputedStyle","cssText","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginRight","marginRight","swap","zb","Bb","Cb","position","visibility","Db","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","margin","padding","border","toggle","prop","options","unit","propHooks","step","linear","swing","cos","PI","Mb","Ob","Pb","*","Animation","tweener","prefilter","speed","speeds","old","fadeTo","animate","finish","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","tick","interval","setInterval","clearInterval","slow","fast","delay","checkOn","optSelected","optDisabled","radioValue","Yb","Zb","$b","removeAttr","attrHooks","propFix","_b","removeProp","for","class","hasAttribute","ac","addClass","removeClass","toggleClass","hasClass","bc","valHooks","hover","bind","unbind","delegate","undelegate","cc","dc","JSON","parse","parseXML","DOMParser","parseFromString","ec","fc","gc","hc","ic","jc","kc","lc","nc","oc","pc","lastModified","etag","isLocal","processData","async","contentType","xml","json","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","ifModified","statusText","statusCode","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","success","method","crossDomain","traditional","hasContent","headers","beforeSend","send","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","wrap","unwrap","visible","vc","xc","yc","zc","encodeURIComponent","serialize","serializeArray","xhr","XMLHttpRequest","Bc","Cc","Dc",1223,"Ec","cors","username","xhrFields","onload","responseText","script","text script","charset","scriptCharset","Fc","Gc","jsonp","jsonpCallback","Hc","animated","Ic","setOffset","using","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","scrollTo","Height","Width","content","andSelf","define","amd","Kc","jQuery","Lc","noConflict","Modernizr","list","HTMLDataListElement","inputtypes","WebkitAppearance","checkValidity","svg","background","matchMedia","msMatchMedia","currentStyle","change","Function","TypeError","flexbox","flexboxlegacy","canvastext","fillText","webgl","WebGLRenderingContext","touch","DocumentTouch","geolocation","postmessage","postMessage","websqldatabase","openDatabase","indexedDB","hashchange","documentMode","pushState","draganddrop","websockets","rgba","backgroundColor","hsla","multiplebgs","backgroundsize","borderimage","borderradius","boxshadow","textshadow","textShadow","cssanimations","csscolumns","cssgradients","backgroundImage","cssreflections","csstransforms","csstransforms3d","csstransitions","fontface","sheet","styleSheet","cssRules","generatedcontent","video","canPlayType","Boolean","ogg","h264","webm","mp3","wav","m4a","localstorage","localStorage","setItem","removeItem","sessionstorage","sessionStorage","webworkers","Worker","applicationcache","applicationCache","createElementNS","createSVGRect","inlinesvg","namespaceURI","smil","svgclippaths","addTest","elements","createElem","canHaveChildren","tagUrn","frag","createFrag","shivMethods","shivCSS","hasCSS","html5","version","supportsUnknownElements","shivDocument","_version","_prefixes","_domPrefixes","_cssomPrefixes","mq","hasEvent","testProp","testAllProps","testStyles","prefixed","removeQuotes","header_helpers","class_array","FastClick","attach","cont","attr_name","add_namespace","parts","bindings","self","$this","should_bind_events","settings","data_options","scope","single_image_loaded","loaded","bindLoad","doc","docElem","refNode","fakeBody","div","media","raf","animating","requestAnimationFrame","jqueryFxAvailable","lastTime","vendors","cancelAnimationFrame","currTime","timeToCall","Foundation","media_queries","small","small-only","medium","medium-only","large","large-only","xlarge","xlarge-only","xxlarge","stylesheet","libraries","response","args","responses","rtl","set_namespace","libs","init_lib","lib","patch","defaults","utils","inherit","methods","methods_arr","throttle","func","debounce","immediate","later","callNow","el","data_attr_name","isNumber","isNaN","ii","opts_arr","cached_options","register_media","media_class","add_custom_rule","rule","insertRule","query","image_loaded","images","unloaded","random_str","fidx","prefix","is_small_up","is_medium_up","is_large_up","is_xlarge_up","is_xxlarge_up","is_small_only","is_medium_only","is_large_only","is_xlarge_only","is_xxlarge_only","foundation","getAnimationData","fade","reveal","animation","animation_speed","close_on_background_click","close_on_esc","dismiss_modal_class","multiple_opened","bg_class","root_element","opened","closed","bg","element","data_attr","close_targets","bg_clicked","open_video","close_video","key_up_on","open_modal","key_up_off","ajax_settings","modal","cache_offset","toggle_bg","old_success","textStatus","jqXHR","to_back","open_modals","to_front","placeholder","animData","end_css","iframe","data_src","reflow","active_class","deep_linking","scroll_to_content","is_hover","default_tab_hashes","entry_location","handle_location_hash_change","usual_tab_behavior","toggle_active_tab","hash_element","hash_tab_container_id","ind","location_hash","tabs","tab_link","anchor","target_hash","interpret_keyup_action","$target","$original","$prev","$next","tabindex","aria-selected","go_to_hash","is_entry_location","default_hash","scrollIntoView","aria-hidden","dropdown","disabled_class","mega_class","align","hover_timeout","closeall","links","resize","original_target","left_offset","clear_idx","dirs","max-width","_base","o_p","missRight","missTop","missLeft","leftRightFlag","actualBodyWidth","outerWidth","actualMarginWidth","actualBoundary","outerHeight","mega_menu","adjust_pip","triggeredRight","pip_offset_base","rule_idx","sel_before","sel_after","css_before","css_after","addRule","deleteRule","require","_config","config","Config","isTabEnabled","tabName","isTabActionEnabled","actionName","panelName","configTab","isTabPanelEnabled","panelTabName","isFeatureEnabled","featureName","tabTableColumns","columns","isTemplateCreationTabEnabled","templateTabName","dashboardWidgets","perRow","widgets","tableOrder","provision","dashboard","isEnabled","widget","create_vm","logo","autoRefresh","vncProxyPort","vncWSS","tmp","LANGUAGE_OPTIONS","MONTHS","months","language_options","jGrowl","notifications","startup","create","pool","group","sticky","glue","theme","themeState","corners","check","life","closeDuration","openDuration","closer","closeTemplate","closerTemplate","beforeOpen","afterOpen","beforeClose","animateOpen","animateClose","render","created","corner","update","shutdown","Locale","_notifySubmit","action","extra_param","action_text","_notifyError","_notifyMessage","_notifyCustom","title","_onError","error_json","container","object","reason","http_status","get_error","auth_error","rows","notifySubmit","notifyError","notifyMessage","notifyCustom","onError","factory","Handlebars","__module4__","SafeString","__exports__","__module3__","__dependency1__","escapeChar","chr","escapeExpression","possible","badChars","isEmpty","appendContextPath","contextPath","&","<","\"","'","`","__module5__","Exception","node","line","firstLine","firstColumn","errorProps","lineNumber","column","__module2__","__dependency2__","HandlebarsEnvironment","helpers","partials","registerDefaultHelpers","instance","registerHelper","inverse","ids","createFrame","Utils","conditional","includeZero","level","field","VERSION","COMPILER_REVISION","REVISION_CHANGES",1,2,3,4,5,6,"objectType","logger","unregisterHelper","registerPartial","partial","unregisterPartial","methodMap","INFO","WARN","ERROR","frame","_parent","__module6__","__dependency3__","checkRevision","compilerInfo","compilerRevision","currentRevision","runtimeVersions","compilerVersions","template","templateSpec","env","main","VM","compiler","invokePartialWrapper","indent","depths","invokePartial","compat","lines","lambda","current","programs","program","programWrapper","common","_setup","useData","initData","useDepths","isTop","usePartial","_child","prog","__module1__","__dependency4__","__dependency5__","runtime","spec","__module7__","LocationInfo","locInfo","first_line","first_column","lastColumn","last_column","lastLine","last_line","AST","ProgramNode","statements","strip","MustacheNode","rawParams","escapeFlag","escaped","sexpr","SexprNode","params","eligibleHelper","isHelper","isSimple","PartialNode","partialName","inlineStandalone","BlockNode","mustache","isInverse","RawBlockNode","original","ContentNode","HashNode","pairs","IdNode","dig","depthString","part","separator","isScoped","idName","stringModeValue","PartialNameNode","DataNode","StringNode","NumberNode","BooleanNode","CommentNode","__module9__","handlebars","Parser","yy","parser","trace","symbols_","EOF","program_repetition0","statement","block","rawBlock","CONTENT","COMMENT","openRawBlock","END_RAW_BLOCK","OPEN_RAW_BLOCK","CLOSE_RAW_BLOCK","openBlock","block_option0","closeBlock","openInverse","block_option1","OPEN_BLOCK","CLOSE","OPEN_INVERSE","inverseAndProgram","INVERSE","OPEN_ENDBLOCK","path","OPEN","OPEN_UNESCAPED","CLOSE_UNESCAPED","OPEN_PARTIAL","partial_option0","partial_option1","sexpr_repetition0","sexpr_option0","dataName","STRING","NUMBER","BOOLEAN","OPEN_SEXPR","CLOSE_SEXPR","hash_repetition_plus0","hashSegment","EQUALS","pathSegments","SEP","$accept","$end","terminals_",12,13,15,16,18,24,25,26,28,29,31,32,33,34,42,43,44,45,46,50,51,52,54,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","$0","prepareProgram","_$","prepareBlock","stripFlags",7,8,9,10,11,14,19,22,17,30,41,53,35,39,20,27,23,36,38,47,48,49,40,21,37,"defaultActions",57,63,70,73,"parseError","lex","token","lexer","stack","vstack","lstack","recovering","setInput","yylloc","yyloc","ranges","symbol","preErrorSymbol","newState","expected","yyval","errStr","showPosition","loc","range","_input","_more","_less","matched","conditionStack","ch","unput","substr","oldLines","more","less","pastInput","past","upcomingInput","pre","tempMatch","rules","_currentRules","flex","begin","condition","popState","conditions","topState","yy_","$avoiding_name_collisions","YY_START","mu","inclusive","emu","com","raw","INITIAL","__module10__","inverted","openStandalone","isNextWhitespace","closeStandalone","isPrevWhitespace","omitRight","inverseStrip","omitLeft","isRoot","_isPrevWhitespace","_isNextWhitespace","$1","multiple","rightStripped","leftStripped","__module8__","Helpers","__module11__","Compiler","precompile","ast","environment","JavaScriptCompiler","compileInput","compiled","argEquals","equals","other","opcodes","opcode","otherOpcode","stringParams","trackIds","knownHelpers","helperMissing","blockHelperMissing","if","unless","with","accept","compileProgram","addDepth","classifySexpr","helperSexpr","simpleSexpr","ambiguousSexpr","pushParam","noEscape","isBlock","setupFullMustacheParams","knownHelpersOnly","falsy","isEligible","pushParams","__module12__","Literal","nameLookup","isValidJavaScriptVariableName","depthedLookup","aliases","revision","versions","appendToBuffer","initializeBuffer","quotedString","asObject","isChild","environments","preamble","stackSlot","stackVars","registers","hashes","compileStack","inlineStack","compileChildren","pushSource","createFunctionContext","stringify","objectLiteral","lastContext","varDeclarations","locals","alias","mergeSource","appendFirst","appendOnly","forceBuffer","blockValue","contextName","setupParams","blockName","popStack","ambiguousBlockValue","flushInline","topStack","lastHelper","appendContent","pendingContent","local","appendEscaped","pushContext","pushStackLiteral","lookupOnContext","scoped","replaceStack","lookupData","resolvePossibleLambda","pushStringParam","pushString","emptyHash","pushHash","values","types","contexts","popHash","pushLiteral","pushProgram","programExpression","invokeHelper","paramSize","nonHelper","helper","setupHelper","callParams","invokeKnownHelper","invokeAmbiguous","helperCall","functionType","useRegister","helperName","paramsInit","assignToHash","pushId","child","matchExistingProgram","programParams","incrStack","createdStack","usedLiteral","isInline","topStackName","wrapped","inline","blockHelper","foundHelper","setupOptions","hashIds","hashTypes","hashContexts","reservedWords","compilerWords","RESERVED_WORDS","__module0__","_create","_chain","_wrapped","isEqual","multiline","ignoreCase","breaker","ArrayProto","ObjProto","FuncProto","nativeForEach","forEach","nativeMap","nativeReduce","nativeReduceRight","reduceRight","nativeFilter","nativeEvery","every","nativeSome","some","nativeIndexOf","nativeLastIndexOf","lastIndexOf","nativeIsArray","nativeKeys","nativeBind","wrapper","iterator","collect","results","foldl","inject","memo","initial","foldr","reversed","detect","any","all","identity","include","found","invoke","pluck","Infinity","computed","shuffle","shuffled","sortBy","criteria","groupBy","sortedIndex","array","low","high","mid","isArguments","take","guard","rest","tail","compact","flatten","shallow","without","difference","uniq","isSorted","union","intersection","intersect","zip","ctor","bound","bindAll","funcs","functions","memoize","hasher","wait","defer","throttling","whenDone","ran","compose","times","names","pick","isObject","tap","interceptor","isString","isElement","isFinite","isBoolean","isDate","isRegExp","isNull","isUndefined","previousUnderscore","property","mixin","addToWrapper","idCounter","uniqueId","templateSettings","evaluate","interpolate","noMatch","escapes","\\","u2028","u2029","escaper","unescaper","unescape","variable","chain","replaceLocaleStrings","mapping","newString","originalKeyFallback","quote","escapable","lastIndex","meta","holder","mind","gap","toJSON","rep","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","cx","\b","\t","\n","\f","\r","replacer","space","reviver","walk","SyntaxError","fs","getXhr","progIds","fetchText","buildMap","filecode","templateExtension","customNameExtension","devStyleDirectory","buildStyleDirectory","helperDirectory","i18nDirectory","buildCSSFileName","onHbsReadMethod","progId","XDomainRequest","ActiveXObject","getIEVersion","rv","appName","ua","re","xdm","uidx","hidx","dom","msie","xdr","onprogress","ontimeout","onreadystatechange","nodeRequire","readFileSync","java","io","fis","FileInputStream","streamReader","InputStreamReader","reader","BufferedReader","readLine","fetchOrGetCached","styleList","styleMap","filesToRemove","pluginName","asModule","parentRequire","recursiveNodeSearch","findPartialDeps","nodes","getMetaData","description","composeParts","recursiveVarSearch","helpersres","newprefix","sideways","paramsWithoutParts","pair","pairValue","getExternalDeps","defaultHelpers","vars","cleanPath","tokens","fetchAndRegister","langMap","depStr","helpDepStr","metaObj","linkElem","readCallback","isBuild","extDeps","helps","debugOutputStart","debugOutputEnd","debugProperties","deps","baseDir","hbs","_partials","partialReference","partialsUrl","references","_loadedDeps","disableHelpers","paths","pathGetter","helperPathCallback","styles","isBrowser","baseUrl","rel","__dirname","writeSync","serverRender","disableI18n","localeMapping","configHbs","compileOptions","prec","tmplName","partialReferences","compiledName","fromText","removeCombined","i18n","omitExtension","toUrl","langMapPath","locale","er","warn","onLayerEnd","existsSync","unlinkSync","depth0","stack1","listHeader","infoHeader","dataTable","searchInputHTML","dataTableHTML","subheader","buttons","customId","customContext","icon","containerId","panels","_showFormPanel","tabId","formPanelId","onShow2","_popFormPanelLoading","_enableFormPanelSubmit","SunstoneCfg","formPanelInstance","formContext","formPanel","insert","setAction","htmlAdvanced","resetButton","onShow","_hideFormPanelLoading","activeFormPanel","buttonText","_hideFormPanel","_disableFormPanelSubmit","Notifier","TOP_INTERVAL","CONFIRM_DIALOG_ID","CONFIRM_WITH_SELECT_DIALOG_ID","actions","dialogs","dialogInstances","_addMainTab","tabObj","_tabId","_addActions","_addPanels","_addDialogs","formPanels","_addFormPanels","dialog","DIALOG_ID","indexedPanels","panel","PANEL_ID","indexedFormPanels","FORM_PANEL_ID","_insertTabs","_insertTab","_insertButtonsInTab","_setupDataTable","_setupTabs","initialize","tabInfo","tabClass","no_content","TabTemplate","liItem","forms","Sunstone","addFormPanel","panelButtons","buttonCode","actionBlock","ButtonsTemplate","buttonsRow","buttonName","strClass","alwaysActive","custom_classes","buttonContext","layout","_resetFormPanel","_submitFormPanel","_setupButtons","_runAction","_getDialogInstance","dialogInstance","topTabs","subTabs","_showTab","subtabs","_showRighList","_showRighInfo","recountCheckboxes","runAction","_showElement","infoAction","elementId","loading","_insertPanels","contextTabId","activaTab","activaTabHref","templatePanelsParams","panelInstances","Panel","panelInstance","err","TemplatePanels","panelId","dataArg","extraParam","actionCfg","monitor","_getButton","tadId","_rightInfoVisible","_rightListVisible","_rightInfoResourceId","_getAction","actionId","_getDataTable","dialogId","Dialog","addMainTab","addDialogs","insertTabs","insertPanels","showTab","showElement","showFormPanel","resetFormPanel","hideFormPanel","hideFormPanelLoading","disableFormPanelSubmit","enableFormPanelSubmit","rightInfoVisible","rightListVisible","rightInfoResourceId","getAction","getButton","getDataTable","getDialog","insertButtonsInTab","Helper","perform","resource","pool_name","p_pool","pool_hash_processing","resource_name","pool_name_processing","resp","OpenNebulaHelper","OpenNebulaError","listCache","listWaiting","listCallbacks","nameIndex","CACHE_EXPIRE","_clearCache","cache_name","_simple_action","action_obj","callbackError","reqPath","Action","del","force","timestamp","list_in_zone","zone_id","subresource","chown","owner_id","group_id","chgrp","simple_action","accounting","showback","getName","clear_cache","RESOURCE","Auth","login","remember","req","authString","btoa","CryptoJS","Utf8","Base64","logout","OpenNebulaAction","Acl","Cluster","addhost","host_id","delhost","adddatastore","ds_id","deldatastore","addvnet","vnet_id","delvnet","fetch_template","template_raw","rename","STATES","Datastore","stateStr","stateId","chmod","enable","QUOTA_LIMIT_DEFAULT","QUOTA_LIMIT_UNLIMITED","_setDefaultUserQuotas","defaultUserQuotas","_defaultUserQuotas","_setDefaultGroupQuotas","defaultGroupQuotas","_defaultGroupQuotas","_getDefaultUserQuotas","_getDefaultGroupQuotas","_getDefaultQuotas","_default_quotas","default_quotas","VM_QUOTA","VMS","MEMORY","CPU","VOLATILE_SIZE","ds_quotas","DATASTORE_QUOTA","DATASTORE","img_quotas","IMAGE_QUOTA","IMAGE","net_quotas","NETWORK_QUOTA","NETWORK","QuotaLimits","setDefaultUserQuotas","getDefaultUserQuotas","setDefaultGroupQuotas","getDefaultGroupQuotas","getDefaultQuotas","QuotaDefaults","Group","GROUP_POOL","DEFAULT_GROUP_QUOTAS","quotas_hash","QUOTAS","set_quota","quotas","GROUP","add_admin","del_admin","SIMPLE_STATES","Host","simpleStateStr","pool_monitor","TYPES","Image","typeStr","typeId","persistent","nonpersistent","chtype","Marketplace","callback_error","Network","publish","unpublish","hold","add_ar","ar_template","rm_ar","update_ar","reserve","generate_batch_action_params","TAB_ID","period","PATH","Role","state_int","suspend","resume","boot","delete_recreate","reboot","reboot_hard","poweroff","poweroff_hard","undeploy","undeploy_hard","snapshot_create","cancel","recover","SecurityGroup","CACHE_NAME","Service","ServiceTemplate","instantiate","template_json","Support","Template","User","USER_POOL","DEFAULT_USER_QUOTAS","USER","chauth","auth_driver","addgroup","delgroup","Vdc","add_group","del_group","add_cluster","del_cluster","add_host","del_host","add_datastore","del_datastore","add_vnet","del_vnet","retrieveLastHistoryRecord","HISTORY_RECORDS","HISTORY","isNICGraphsSupported","VMMMAD","isNICAttachSupported","retrieveExternalIPs","externalIP","TEMPLATE","ips","EXTERNAL_IP_ATTRS","IPAttr","retrieveExternalNetworkAttrs","externalAttr","EXTERNAL_NETWORK_ATTRIBUTES","ipsStr","divider","nic","NIC","IP","IP6_GLOBAL","IP6_ULA","isVNCSupported","graphics","GRAPHICS","LCM_STATE","TYPE","VNC_STATES","isSPICESupported","LCM_STATES","SHORT_LCM_STATES","MIGRATE_REASON","MIGRATE_ACTION","INIT","PENDING","HOLD","ACTIVE","STOPPED","SUSPENDED","DONE","FAILED","POWEROFF","UNDEPLOYED","lcm_state","LCM_INIT","PROLOG","BOOT","RUNNING","MIGRATE","SAVE_STOP","SAVE_SUSPEND","SAVE_MIGRATE","PROLOG_MIGRATE","PROLOG_RESUME","EPILOG_STOP","EPILOG","SHUTDOWN","CANCEL","FAILURE","CLEANUP_RESUBMIT","UNKNOWN","HOTPLUG","SHUTDOWN_POWEROFF","BOOT_UNKNOWN","BOOT_POWEROFF","BOOT_SUSPENDED","BOOT_STOPPED","CLEANUP_DELETE","HOTPLUG_SNAPSHOT","HOTPLUG_NIC","HOTPLUG_SAVEAS","HOTPLUG_SAVEAS_POWEROFF","HOTPLUG_SAVEAS_SUSPENDED","SHUTDOWN_UNDEPLOY","EPILOG_UNDEPLOY","PROLOG_UNDEPLOY","BOOT_UNDEPLOY","HOTPLUG_PROLOG_POWEROFF","HOTPLUG_EPILOG_POWEROFF","BOOT_MIGRATE","BOOT_FAILURE","BOOT_MIGRATE_FAILURE","PROLOG_MIGRATE_FAILURE","PROLOG_FAILURE","EPILOG_FAILURE","EPILOG_STOP_FAILURE","EPILOG_UNDEPLOY_FAILURE","PROLOG_MIGRATE_POWEROFF","PROLOG_MIGRATE_POWEROFF_FAILURE","PROLOG_MIGRATE_SUSPEND","PROLOG_MIGRATE_SUSPEND_FAILURE","BOOT_UNDEPLOY_FAILURE","BOOT_STOPPED_FAILURE","PROLOG_RESUME_FAILURE","PROLOG_UNDEPLOY_FAILURE","resubmit","hard","deploy","livemigrate","migrate","saveas","disk_snapshot_cancel","disk_id","snapshot_revert","snapshot_delete","vnc","startstop","attachdisk","disk_template","detachdisk","attachnic","nic_template","detachnic","nic_id","resched","unresched","save_as_template","lcmStateStr","shortLcmStateStr","hostnameStr","STATE","hostname","HOSTNAME","migrateActionStr","migrateReasonStr","Zone","securitygroup","Vm","csrftoken","textValue","OpenNebula","File","accordion","content_class","multi_expand","toggleable","groupSelector","aunts","active_content","Da","_hungarianMap","oLanguage","sZeroRecords","sEmptyTable","sLoadingRecords","sInfoThousands","sThousands","sDecimal","aoSearchCols","models","oSearch","oBrowser","bScrollOversize","bScrollbarLeft","Ea","aoColumns","oColumn","nTh","sTitle","aDataSort","mData","aoPreSearchCols","ja","oClasses","sWidthOrig","mDataProp","sType","_sManualType","sClass","iDataSort","mRender","_bAttrSrc","fnGetData","fnSetData","_rowReadObject","oFeatures","bSort","bSortable","sSortableNone","asSorting","sSortingClass","sSortableAsc","sSortingClassJUI","sSortJUIAscAllowed","sSortableDesc","sSortJUIDescAllowed","sSortable","sSortJUI","bAutoWidth","Fa","sWidth","oScroll","sY","sX","ka","aa","Ga","aoData","ext","targets","aTargets","oRow","_aData","Ha","aiDisplayMaster","bDeferRender","Ia","la","ma","cells","iDraw","sDefaultContent","iDrawError","Ja","Ka","na","aiDisplay","oa","ca","anCells","_aSortData","_aFilterData","La","_setter","nTr","_DT_RowIndex","sCellType","bVisible","fnCreatedCell","oInstance","DT_RowId","DT_RowClass","__rowc","Ma","DT_RowData","nTHead","nTFoot","iTabIndex","sTableId","Na","Oa","da","aoHeader","sHeaderTH","sFooterTH","aoFooter","nTf","cell","ea","asStripeClasses","iInitDisplayStart","bDrawing","_iDisplayStart","fnRecordsDisplay","fnDisplayEnd","bDeferLoading","bDestroying","_sRowStripe","fnRecordsTotal","valign","colSpan","sRowEmpty","nTBody","bSorted","bFiltered","bFilter","fa","oPreviousSearch","_drawHold","nTable","sWrapper","sNoFooter","nHolding","nTableWrapper","nTableReinsertBefore","sDom","sJUIHeader","sJUIFooter","bPaginate","bLengthChange","bProcessing","bInfo","feature","cFeature","fnInit","aanFeatures","pa","bSortCellsTop","qa","sError","oApi","_fnLog","sServerMethod","oAjaxData","fnServerData","sAjaxSource","bAjaxDataGet","_iDisplayLength","draw","search","sSearch","regex","bRegex","sName","searchable","bSearchable","orderable","legacy","sEcho","iTotalRecords","recordsTotal","iTotalDisplayRecords","recordsFiltered","_iRecordsTotal","_iRecordsDisplay","ra","_bInitComplete","sa","dataSrc","sAjaxDataProp","aaData","sFilterInput","sFilter","bSmart","bCaseInsensitive","searchDelay","sSearchPlaceholder","ta","bEscapeRegex","Pa","_sFilterRow","va","smart","caseInsensitive","sInfo","aoDrawCallback","sInfoEmpty","sInfoFiltered","sInfoPostFix","fnInfoCallback","fnFormatNumber","ga","bInitialised","Qa","Ra","aLengthMenu","aria-controls","sLengthSelect","Option","sLength","sLengthMenu","outerHTML","sPaginationType","pager","sPaging","fnUpdate","Sa","sProcessing","_captionSide","sScrollWrapper","sScrollHead","sScrollHeadInner","box-sizing","sXInner","sScrollBody","sScrollFoot","sScrollFootInner","scroll","nScrollHead","nScrollBody","nScrollFoot","iBarWidth","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","bCollapse","scrollHeight","sContentPadding","_reszEvt","sInstance","__scrollbarWidth","aaSortingFixed","aaSorting","post","_idx","formatter","oAria","sSortAscending","sSortDescending","Ta","bSortMulti","Ua","wa","aLastSort","sSortColumn","bSortClasses","sSortDataType","xa","bStateSave","time","oSavedState","fnStateSaveCallback","fnStateLoadCallback","iStateDuration","oLoadedState","ya","sErrMode","errMode","renderer","bServerSide","Va","numbers_length","DT_el","za","num-fmt","Wa","html-num","Aa","html-num-fmt","iApiIndex","internal","Xa","Ya","ha","api","fnAddData","fnAdjustColumnSizing","adjust","fnClearTable","clear","fnClose","fnDeleteRow","fnDestroy","destroy","fnDraw","fnFilter","fnGetNodes","fnGetPosition","columnVisible","fnIsOpen","isShown","fnOpen","fnPageChange","page","fnSetColumnVis","fnSettings","fnSort","fnSortListener","listener","fnVersionCheck","bRetrieve","bDestroy","_unique","oSettings","oInit","sDestroyWidth","iDisplayLength","fnDrawCallback","fnServerParams","fnStateSaveParams","fnStateLoadParams","fnStateLoaded","fnRowCallback","fnCreatedRow","fnHeaderCallback","fnFooterCallback","fnInitComplete","fnPreDrawCallback","bJQueryUI","oJUIClasses","classes","sTable","iDisplayStart","iDeferLoading","sUrl","sStripeOdd","sStripeEven","asDestroyStripes","aoColumnDefs","cols","Api","Ba","to$","toJQuery","__dt_wrapper","methodExt","propExt","register","registerPlural","tables","pages","recordsDisplay","Za","$a","_details","_detailsShow","versionCheck","isDataTable","fnIsDataTable","fnTables","util","escapeRegex","camelToHungarian","bJUI","sSortIcon","sSortJUIWrapper","bScrollCollapse","getItem","pathname","oPaginate","sFirst","sLast","sNext","sPrevious","sScrollX","sScrollXInner","sScrollY","aoRowCallback","aoHeaderCallback","aoFooterCallback","aoRowCreatedCallback","aoPreDrawCallback","aoInitComplete","aoStateSaveParams","aoStateLoadParams","aoStateLoaded","aoOpenRows","aoStateSave","aoStateLoad","aoServerParams","aoDestroyCallback","oPlugins","pageButton","sVersion","afnFiltering","aTypes","ofnSearch","oSort","afnSortData","aoFeatures","oStdClasses","oPagination","sPageButton","sPageButtonActive","sPageButtonDisabled","sSortAsc","sSortDesc","sSortJUIAsc","sSortJUIDesc","Ca","ia","simple","full","simple_numbers","full_numbers","_numbers","data-dt-idx","date-pre","html-pre","string-pre","string-asc","string-desc","jqueryui","toFixed","_fnExternApiFunc","_fnBuildAjax","_fnAjaxUpdate","_fnAjaxParameters","_fnAjaxUpdateDraw","_fnAjaxDataSrc","_fnAddColumn","_fnColumnOptions","_fnAdjustColumnSizing","_fnVisibleToColumnIndex","_fnColumnIndexToVisible","_fnVisbleColumns","_fnGetColumns","_fnColumnTypes","_fnApplyColumnDefs","_fnHungarianMap","_fnCamelToHungarian","_fnLanguageCompat","_fnBrowserDetect","_fnAddData","_fnAddTr","_fnNodeToDataIndex","_fnNodeToColumnIndex","_fnGetCellData","_fnSetCellData","_fnSplitObjNotation","_fnGetObjectDataFn","_fnSetObjectDataFn","_fnGetDataMaster","_fnClearTable","_fnDeleteIndex","_fnInvalidate","_fnGetRowElements","_fnCreateTr","_fnBuildHead","_fnDrawHead","_fnDraw","_fnReDraw","_fnAddOptionsHtml","_fnDetectHeader","_fnGetUniqueThs","_fnFeatureHtmlFilter","_fnFilterComplete","_fnFilterCustom","_fnFilterColumn","_fnFilter","_fnFilterCreateSearch","_fnEscapeRegex","_fnFilterData","_fnFeatureHtmlInfo","_fnUpdateInfo","_fnInfoMacros","_fnInitialise","_fnInitComplete","_fnLengthChange","_fnFeatureHtmlLength","_fnFeatureHtmlPaginate","_fnPageChange","_fnFeatureHtmlProcessing","_fnProcessingDisplay","_fnFeatureHtmlTable","_fnScrollDraw","_fnApplyToChildren","_fnCalculateColumnWidths","_fnThrottle","_fnConvertToWidth","_fnScrollingWidthAdjust","_fnGetWidestNode","_fnGetMaxLenString","_fnStringToCss","_fnScrollBarWidth","_fnSortFlatten","_fnSort","_fnSortAria","_fnSortListener","_fnSortAttachListener","_fnSortingClasses","_fnSortData","_fnSaveState","_fnLoadState","_fnSettingsFromNode","_fnMap","_fnBindAction","_fnCallbackReg","_fnCallbackFire","_fnLengthOverflow","_fnRenderer","_fnDataSource","_fnRowAttributes","_fnCalculateEnd","dataTableSettings","dataTableExt","DataTable","TableTools","normal","collection","DEFAULTS","oTags","liner","_insert","init_val","empty_value","extra_options","filter_att","filter_val","trigger_change_init_val","only_name","Resource","obj_list","select_str","res_name","NAME","_quotaBarHtml","usage","info_str","not_html","percentage","_size","from_bytes","sufix","binarySufix","round","st","_sizeFromB","_sizeFromKB","_sizeFromMB","_prettyDuration","days","hours","minutes","_pad","_prettyTime","seconds","setTime","secs","getSeconds","getHours","mins","getMinutes","getDate","getMonth","getFullYear","_prettyTimeAxis","show_date","_prettyPrintJSON","weight","border_bottom","padding_top_bottom","_prettyPrintRowJSON","_format_date","unix_timestamp","_fourdigits","difference_in_seconds","current_date","getYear","getDay","sizeFromB","sizeFromKB","sizeFromMB","prettyDuration","prettyTime","prettyTimeAxis","prettyPrintJSON","prettyTimeAgo","_emptyQuotas","resource_info","_initEmptyQuotas","VMS_USED","CPU_USED","MEMORY_USED","VOLATILE_SIZE_USED","_vmsWidget","empty_quotas","quotas_tab_html","vms_bar","_editableQuotaBar","quota_name","_cpuWidget","cpu_bar","is_float","_memoryWidget","memory_bar","_volatileWidget","volatile_bar","_imageWidget","default_img_quotas","RVMS","rvms_bar","RVMS_USED","_setupImageWidget","ResourceSelect","image_id","initQuotaInputValue","_datastoreWidget","default_ds_quotas","IMAGES","SIZE","img_bar","IMAGES_USED","size_bar","SIZE_USED","_setupDatastoreWidget","_networkWidget","default_net_quotas","LEASES","leases_bar","LEASES_USED","_setupNetworkWidget","network_id","_initQuotasPanel","edit_enabled","quotas_html","vms_quota","cpu_quota","memory_quota","volatile_size_quota","image_quota","network_quota","datastore_quota","input_val","quotasPanelEditAction","parent_container","setupQuotasBarButtons","default_value","retrieveQuotasValues","_setupQuotasPanel","quota_limit","default_limit","_quotaFloatLimit","_quotaIntLimit","Humanize","_quotaInfo","int_usage","int_limit","_quotaBaseInfo","_quotaMBInfo","_quotaFloatInfo","float_usage","float_limit","_quotaBar","ProgressBar","_quotaBarMB","_quotaBarFloat","i_limit","i_default_limit","f_limit","f_default_limit","_quotas_tmpl","_setupQuotasDialog","sel_elems","_populateQuotasDialog","initEmptyQuotas","quotaBar","quotaBarMB","quotaBarFloat","initQuotasPanel","setupQuotasPanel","dialogHTML","setupQuotasDialog","populateQuotasDialog","quotaFloatInfo","quotaMBInfo","quotaInfo","advancedSection","html_id","color","make","normalize","scale","extract","lookupColors","aqua","azure","beige","black","blue","brown","cyan","darkblue","darkcyan","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkviolet","fuchsia","gold","green","indigo","khaki","lightblue","lightcyan","lightgreen","lightgrey","lightpink","lightyellow","lime","magenta","maroon","navy","olive","orange","pink","purple","violet","red","silver","white","yellow","Canvas","cls","direction","G_vmlCanvasManager","initElement","devicePixelRatio","backingStoreRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","pixelRatio","textContainer","_textCache","Plot","data_","options_","plugins","executeHooks","hook","plot","initPlugins","parseOptions","colors","xaxis","grid","yaxis","tickColor","borderColor","axisOptions","axisCount","fontSize","fontSizeDefault","fontDefaults","variant","xaxes","font","yaxes","noTicks","ticks","x2axis","y2axis","coloredAreas","markings","coloredAreasColor","markingsColor","series","points","bars","shadowSize","highlightColor","getOrCreateAxis","hooks","processOptions","setData","parseData","fillInSeriesOptions","axisNumber","coord","allAxes","canvasToAxisCoords","axis","used","c2p","x1","y1","axisToCanvasCoords","p2c","axes","neededColors","maxIndex","colorPool","colorPoolSize","variation","colori","fill","updateAxis","datamin","fakeInfinity","datamax","ps","topSentry","POSITIVE_INFINITY","bottomSentry","NEGATIVE_INFINITY","MAX_VALUE","datapoints","processRawData","required","autoscale","horizontal","pointsize","insertSteps","steps","nullify","processDatapoints","xmin","ymin","xmax","ymax","barWidth","setupCanvases","surface","overlay","ctx","octx","eventHolder","existing","bindEvents","hoverable","mousemove","onMouseMove","onMouseLeave","clickable","onClick","redrawTimeout","setTransformationHelpers","transform","it","inverseTransform","plotWidth","plotHeight","measureTickLabels","labelWidth","labelHeight","legacyStyles","layer","label","getTextInfo","allocateAxisBoxFirstPhase","lw","lh","isXAxis","tickLength","axisMargin","labelMargin","innermost","outermost","reserveSpace","plotOffset","allocateAxisBoxSecondPhase","adjustLayoutForThingsStickingOut","minMargin","minBorderMargin","radius","lineWidth","margins","setupGrid","showGrid","processOffset","borderWidth","axisOpts","setRange","allocatedAxes","setupTickGeneration","setTicks","snapRangeToTicks","drawAxisLabels","insertLegend","widen","autoscaleMargin","sqrt","dec","LN10","maxDec","tickDecimals","magn","pow","norm","minTickSize","tickSize","tickGenerator","floorInBase","NaN","tickFormatter","factor","formatted","decimal","precision","alignTicksWithAxis","otherAxis","niceTicks","extraDec","oticks","drawBackground","aboveData","drawGrid","drawSeries","triggerRedrawOverlay","extractRange","to","save","translate","fillStyle","getColorOrGradient","fillRect","restore","bw","getAxes","xrange","yrange","xequal","yequal","markingsLineWidth","subPixel","beginPath","strokeStyle","moveTo","lineTo","stroke","xoff","yoff","strokeRect","halign","removeText","addText","drawSeriesLines","drawSeriesBars","drawSeriesPoints","plotLine","xoffset","yoffset","axisx","axisy","prevx","prevy","x2","y2","plotLineArea","areaOpen","ypos","segmentStart","segmentEnd","x1old","x2old","lineJoin","sw","angle","sin","getFillStyle","plotPoints","shadow","arc","closePath","drawBar","barLeft","barRight","fillStyleCallback","drawLeft","drawRight","drawTop","drawBottom","plotBars","filloptions","seriesColor","fillColor","legend","fragments","entries","rowStarted","lf","labelFormatter","sorted","ascending","noColumns","labelBoxBorderColor","backgroundOpacity","findNearbyItem","mouseX","mouseY","seriesFilter","maxDistance","mouseActiveRadius","smallestDistance","mx","my","maxx","maxy","dx","dy","datapoint","dataIndex","seriesIndex","triggerClickHoverEvent","eventname","canvasX","canvasY","autoHighlight","highlights","auto","point","unhighlight","highlight","interaction","redrawOverlayInterval","drawOverlay","hi","drawBarHighlight","drawPointHighlight","indexOfHighlight","pointRadius","defaultColor","gradient","createLinearGradient","co","brightness","addColorStop","getPlaceholder","getCanvas","getPlotOffset","getData","getXAxes","getYAxes","getOptions","pointOffset","clearRect","layerKey","getTextLayer","layerCache","styleKey","styleCache","positions","rendered","font-size","textStyle","text-align","findMatchingSeries","allseries","stackData","px","py","intery","qx","qy","otherps","otherpoints","newpoints","withlines","withbottom","withsteps","fromgap","keyOffset","accumulateOffset","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","webkitCancelRequestAnimationFrame","mozCancelRequestAnimationFrame","oCancelRequestAnimationFrame","msCancelRequestAnimationFrame","onResize","tooltip","tooltipOpts","xDateFormat","yDateFormat","monthNames","dayNames","shifts","defaultTheme","threshold","onHover","$compat","tipPosition","setTooltipPosition","showTooltip","plotOptions","tooltipOptions","distance","hideTooltip","plotPlugins","wfunc","hfunc","getDomElement","stringFormat","z-index","border-radius","white-space","originSeries","percent","percents","adjustValPrecision","hasAxisLabel","axisLabel","isTimeMode","isXDateFormat","timestampToDate","isYDateFormat","hasRotatedXAxisTicks","isCategoriesMode","dateGenerator","formatDate","rotatedTicks","fmt","strftime","leftPad","pad","isAM","hours12","makeUtcWrapper","addProxyMethod","sourceObj","sourceMethod","targetObj","targetMethod","utc","date","timezone","timezoneJS","setTimezone","axisName","minSize","specQuarters","specMonths","timeUnitSize","setSeconds","setMinutes","setHours","setMonth","setFullYear","setMilliseconds","setDate","quarter","carry","timeformat","useQuarters","span","suffix","hourCode","rt","twelveHourClock","baseSpec","_html","TemplateHTML","opt","dateFromString","UTC","n_columns","fixed_user","fixed_group","fixed_group_by","init_group_by","end_time","userfilter","select_val","OpenNebulaVM","_fillAccounting","no_table","setUTCHours","tmp_time","setUTCDate","group_by_fn","group_by_name","group_by_prefix","UID","UNAME","GID","GNAME","OID","group_by","data_points","CPU_HOURS","MEM_HOURS","serie","t_next","ETIME","STIME","stime","etime","n_hours","cpu_plot_series","mem_plot_series","cpu_data","mem_data","cpu_plot","mem_plot","cpu_plot_data","mem_plot_data","cpu_dataTable_data","mem_dataTable_data","cpu_row","mem_row","time_st","time_UTC","cpu_total","mem_total","cpu_v","mem_v","acct_cpu_dataTable","acct_mem_dataTable","fillAccounting","showback_dataTable","showback_vms_dataTable","_fillShowback","SHOWBACK_RECORDS","vms_per_date","SHOWBACK","YEAR","MONTH","TOTAL","VMID","VMNAME","HOURS","TOTAL_COST","showback_data","showback_plot_series","_plotGraph","monitor_resources","labels","attribute","monitoring","derivative","humanize","humanize_figures","div_legend","convert_from_bytes","y_sufix","div_graph","slider","display_selector","vertical","trigger_input_change","on_change","set_active_slider","scroll_offset","scrollY","calculate_position","get_cursor_position","remove_active_slider","xy","pageXY","clientXY","touches","currentPoint","$handle","cursor_x","bar_l","bar_o","pct","limit_to","normalized_value","set_ui","handle_l","norm_pct","normalized_percentage","handle_offset","progress_bar_length","$handle_parent","$hidden_inputs","set_translate","aria-valuemin","aria-valuemax","rem","ele","initialize_settings","decimal_places_match_result","set_initial_position","$ele","set_value","setup_provision_quota_widget","provision_rvms_quota_input","provision_cpu_quota_input","provision_memory_quota_input","provision_memory_quota_tmp_input","update_final_memory_input","reset_provision_quota_widget","retrieve_provision_quota_widget","retrieve_quota","vms_limit","cpu_limit","mem_limit","retrieve","alertBox","accordionId","refresh","show_provision_vm_list","generate_provision_vms_list","setup_provision_vms_list","setup_info_vm","opts_arg","_accordionId","TemplateVmsList","fill_provision_vms_datatable","datatable","item_list","update_provision_vms_datatable","provision_vms_datatable","nRow","aData","iDisplayIndex","iDisplayIndexFull","get_provision_vm_state","get_provision_disk_image","get_provision_ips","filter_expression","update_provision_vm_info","vm_id","vm_graphs","Graphs","template_name","poweroff_action","reboot_action","vm_data","proxy_host","proxy_port","pw","vm_name","host","port","scheme","state_color","state_str","disks","DISK","generate","show_provision_template_list","generate_provision_templates_list","setup_provision_templates_list","TemplateTemplatesList","update_provision_templates_datatable","provision_templates_datatable","VMTEMPLATE","actions_html","PERMISSIONS","GROUP_U","SAVED_TO_IMAGE_ID","DESCRIPTION","REGTIME","ul_context","template_id","group_u","updateDatatable","show_provision_flow_list","generate_provision_flows_list","setup_provision_flows_list","setup_info_flow","TemplateFlowsList","update_provision_flows_datatable","provision_flows_datatable","DOCUMENT","BODY","get_provision_flow_state","get_provision_flow_start_time","roles_li","roles","role","rvms","cardinality","update_provision_flow_info","flow_id","role_id","role_state","li","vms","vm_info","ProvisionVmsList","min_vms","max_vms","provision_cardinality_slider","noUiSlider","handles","connect","slide","show_provision_user_list","generate_provision_users_list","setup_provision_users_list","setup_provision_user_info","TemplateUsersList","update_provision_users_datatable","quotas_list","provision_quotas_list","provision_users_datatable","QuotaWidgets","default_user_quotas","update_provision_vdc_user_info","user_id","Accounting","ProvisionTemplatesList","ProvisionFlowsList","Showback","confirm_password","TemplateProvisionQuotaWidget","ProvisionQuotaWidget","quotas_str","fill_limits","quota_json","generate_custom_attrs","custom_attrs","text_attrs","attrs","mandatory","custom_attr","generate_cardinality_selector","role_template","capacity","cost","CPU_COST","MEMORY_COST","cost_value","generate_provision_instance_type_accordion","memory_value","memory_unit","SUNSTONE_CAPACITY_SELECT","provision_instance_type_accordion_id","provision_instance_types_datatable","cpu","update_provision_instance_types_datatable","generate_provision_network_table","vnet_attr","nic_span","NETWORK_ID","dd_context","provision_nic_accordion_dd_id","provision_networks_datatable","VNET","update_provision_networks_datatable","generate_provision_network_accordion","hide_add_button","provision_nic_accordion_id","show_provision_dashboard","TemplateDashboardQuotas","user_json","user","QuotasDefault","TemplateDashboardVdcQuotas","group_json","default_group_quotas","TemplateDashboardVms","total","running","deploying","vm","TemplateDashboardVdcVms","TemplateDashboardUsers","show_provision_group_info_callback","show_provision_create_vm","provision_system_templates_datatable","provision_vdc_templates_datatable","provision_saved_templates_datatable","show_provision_create_flow","update_provision_flow_templates_datatable","provision_flow_templates_datatable","show_provision_create_user","show_provision_vdc_info","clear_provision_create_user","ProvisionUsersList","appendTemplateCard","tableID","LOGO","initializeTemplateCards","tab_name","TemplateHeader","create_vm_context","template_nic","nics","SUNSTONE_NETWORK_SELECT","USER_INPUTS","instance_type","extra_info","instance_typa_data","missing_attr","user_inputs_values","network_attrs","vm_template","role_html_id","role_context","flow_name","missing_network","elasticity_policies","pol","expression","htmlDecode","merge_template","custom_attrs_values","repeat_password","driver","TemplateContent","povision_actions","Provision.User.create","Provision.User.set_quota","Provision.Group.show","Provision.Flow.instantiate","Provision.instantiate","Tab","list_header","Buttons","User.refresh","User.create_dialog","User.update_password","User.change_authentication","User.quotas_dialog","User.chgrp","tip","User.addgroup","User.delgroup","User.delete","additional_inheritable_classes","tooltip_class","append_to","touch_close_text","disable_for_touch","hover_delay","show_on","tip_template","should_show","is_touch","ie_touch","showTip","convert_to_touch","$tip","getTip","dataSelector","inheritable_classes","reposition","nub","nubHeight","nubWidth","objPos","inheritables","filtered","tip_classes","dataTableId","selectOptions","select_resource","you_selected","select_resource_multiple","you_selected_multiple","conf","dataTableSearchId","TabDatatable","id_index","fixed_ids_map_orig","fixed_ids","starred_ids_map","starred_ids","multiple_choice","TemplateDataTableHTML","TemplateSearchInputHTML","_initialize","dataTableOptions","SunstoneConfig","initCheckAllBoxes","tableCheckboxesListener","oneSelection","onlyOneCheckboxListener","infoListener","_defaultTrListener","customTrListener","initSelectResourceTableSelect","tableObj","_infoListener","info_action","_addElement","element_json","elementArray","_deleteElement","_initCheckAllBoxes","_recountCheckboxes","customTabContext","total_length","checked_length","_tableCheckboxesListener","_onlyOneCheckboxListener","_updateView","fromArray","selected_row_id","checked_row_ids","preUpdateView","row_id_index","dTable_settings","prev_start","new_start","current_id","postUpdateView","_updateElement","xmlRoot","checked_val","_getElementData","resource_tag","_waitingNodes","SPINNER","_elements","forceDataTable","selected_nodes","_filter","columnId","_initSelectResourceTableSelect","row_click","row_id","row_name","name_index","section","unselect_callback","select_callback","dataTable_options","selected_id","updateFn","read_only","Tips","_resetResourceTableSelect","_retrieveResourceTableSelect","_idInput","_refreshResourceTableSelect","_selectResourceTableSelect","selectedResources","refreshResourceTableSelect","data_ids","row_uname","uname","uname_index","_updateFn","success_func","resource_list","list_array","fixed_ids_map","filter_fn","updateView","error_func","_list","TemplateEmptyTable","language","emptyTable","addElement","deleteElement","updateElement","getElementData","waitingNodes","resetResourceTableSelect","selectResourceTableSelect","retrieveResourceTableSelect","idInput","_escapeDoubleQuotes","_htmlDecode","_convert_template_to_string","unshown_values","template_str","current_key","templateToString","escapeDoubleQuotes","Table","TAB_NAME","XML_ROOT","totalUsers","TabDataTable","_elementArray","hidden_template","TemplateUtils","AUTH_DRIVER","_preUpdateView","_postUpdateView","OpenNebulaResource","CREATE_DIALOG_ID","PASSWORD_DIALOG_ID","AUTH_DRIVER_DIALOG_ID","QUOTAS_DIALOG_ID","_actions","User.create","User.list","setParams","selectedElements","User.passwd","User.chauth","User.show","User.update_template","User.update_language","User.update_view","User.fetch_quotas","User.set_quota","BaseDialog","dialogElement","onClose","_show","_hide","_reset","userCreationHTML","idPrefix","UserCreation","_retrieve","user_name","user_password","_disable","_enable","_setName","setName","userCreation","_setParams","_onShow","selElems","quotasHTML","valOrDefault","SSH_PUBLIC_KEY","groupTrHTML","secondaryGroups","TABLE_ORDER","LANG","DEFAULT_VIEW","templateTableHTML","templateJSON","resourceType","tableName","fromJSONtoHTMLTable","vectorial","ocurrence","fromJSONtoHTMLRow","vectorial_key","current_value","ocurrence_str","resourceId","unshownValues","new_value","new_key","templateJSON_bk","ev","list_of_classes","key_str","value_str","TemplateChgrpTr","GROUPS","strippedTemplate","TemplateTable","TemplateInfo","hiddenValues","newGroupId","OpenNebulaUser","view","abide","live_validate","validate_on_blur","focus_on_invalid","error_labels","error_class","patterns","alpha","alpha_numeric","integer","card","cvv","email","domain","datetime","dateISO","month_day_year","day_month_year","validators","equalTo","valid","form","invalid_attr","is_ajax","validate","els","validations","parse_patterns","validation_count","submit_event","el_patterns","pattern","check_validation_and_apply_styles","direct_parent","validator","is_radio","is_checkbox","valid_length","el_validations","valid_radio","valid_checkbox","errorElem","errorID","valid_equal","valid_oneof","doNotValidateOthers","others","_this","BaseFormPanel","wizardElement","htmlWizard","advancedElement","submitWizard","submitAdvanced","_setAction","prevAction","_actionOptions","actionOptions","_title","_buttonText","_resetButton","FormPanel","_htmlWizard","TemplateWizardHTML","_submitWizard","Actions","DATATABLE_ID","_dialogs","_panels","_formPanels","parentTab","languageOptions","TemplateEasyInfo","ssh_key","keypair","groups","groupDropdownOptions","OpenNebulaGroup","fillGroupQuotas","belonging","rights","zone","acl_string","acl_json","acl","onePerRow","threePerRow","twoPerRow","oneFooter","widgetsTemplates","_activeWidgets","_widgets","TemplateDashboard","_initialized","widgetId","VMS_TAB_ID","HOSTS_TAB_ID","USERS_TAB_ID","IMAGES_TAB_ID","VNETS_TAB_ID","VMS_CREATE_FORM_PANEL_ID","HOSTS_CREATE_FORM_PANEL_ID","USERS_CREATE_FORM_PANEL_ID","IMAGES_CREATE_FORM_PANEL_ID","VNETS_CREATE_FORM_PANEL_ID","storage","users","network","hosts","user_quotas","group_quotas","_buttons","Dashboard.refresh","Group.refresh","Group.create_dialog","Group.update_dialog","Group.quotas_dialog","Group.delete","totalGroups","users_str","USERS","Group.create","Group.list","Group.show","Group.update","Group.update_template","resource_id","Group.show_to_update","Group.fetch_quotas","Group.set_quota","Group.add_admin","Group.del_admin","adminViews","userViews","_view_types","advanced","preview","cloud","vcenter","_views_info","admin","groupadmin","admin_vcenter","groupadmin_vcenter","cloud_vcenter","_processViews","GROUP_ADMIN_VIEWS","GROUP_ADMIN_DEFAULT_VIEW","SUNSTONE_VIEWS","hiddenKeys","viewsStr","viewsArray","viewElem","knownView","Views","usersTableHTML","admins","ADMINS","usersTable","UsersTable","USERS_TABLE_ID","usersTableEdit","USERS_EDIT_TABLE_ID","selected_admins_list","admin_id","views","viewTypes","view_info","filtered_views","view_id","view_type","_generateViewsSelect","admin_views","default_view","default_admin_view","_fill","views_str","old_value","Vdc.refresh","Vdc.create_dialog","Vdc.update_dialog","Vdc.delete","_lengthOf","CLUSTERS","CLUSTER","HOSTS","HOST","VNETS","DATASTORES","Vdc.create","group_ids","VDC","clusters","vnets","datastores","Vdc.list","Vdc.show","Vdc.rename","Vdc.show_to_update","Vdc.update","Vdc.update_template","Vdc.add_group","Vdc.del_group","Vdc.add_cluster","Vdc.del_cluster","Vdc.add_host","Vdc.del_host","Vdc.add_vnet","Vdc.del_vnet","Vdc.add_datastore","Vdc.del_datastore","renameTrHTML","resourceName","TemplateRenameTr","valueStr","nameTemplate","RenameTr","groupsTable","GroupsTable","GROUPS_TABLE_ID","_indexedVdcResources","vdc","init_resources_zone","clusters_array","hosts_array","vnets_array","datastores_array","ZONE_ID","CLUSTER_ID","HOST_ID","VNET_ID","DATASTORE_ID","VDC_ALL_RESOURCES","indexedVdcResources","unique_id","clustersTableHTML","hostsTableHTML","vnetsTableHTML","datastoresTableHTML","hostShareFlag","infoStr","allocatedCPUBar","hostShare","HOST_SHARE","maxCPU","MAX_CPU","CPU_USAGE","allocatedCPU","ratioAllocatedCPU","realCPUBar","USED_CPU","realCPU","ratioRealCPU","real","allocated","allocatedMemBar","maxMem","MAX_MEM","MEM_USAGE","allocatedMem","ratioAllocatedMem","realMemBar","USED_MEM","realMem","ratioRealMem","totalHosts","onHosts","offHosts","errorHosts","maxMemory","allocatedMemory","realMemory","cpuBars","CPUBars","memoryBars","MemoryBars","stateSimpleStr","OpenNebulaHost","RUNNING_VMS","IM_MAD","VM_MAD","LAST_MON_TIME","ratio_allocated_cpu","quotaDashboard","ratio_real_cpu","ratio_allocated_mem","ratio_real_mem","html_tag","font_large_size","font_small_size","quota","_getARList","ar_list","AR_POOL","AR","getARList","usedLeases","totalVNets","USED_LEASES","total_size","arList","PARENT_NETWORK_ID","BRIDGE","VLAN_ID","TOTAL_MB","FREE_MB","ratio","DatastoreCapacityBar","BASE_PATH","TM_MAD","DS_MAD","OpenNebulaDatastore","ResourcesZone","zone_name","indexed_resources","_getZoneId","clustersTable","ClustersTable","hostsTable","HostsTable","vnetsTable","VNetsTable","datastoresTable","DatastoresTable","resourcesZone","getZoneId","ResourcesTab","unique_id_prefix","zones","cluster_id","_retrieveIndexed","_addResourcesZone","html_tab_content","zoneSection","retrieveIndexed","addResourcesZone","resourcesTab","OpenNebulaZone","rowCount","insertRow","cell1","insertCell","element1","cell2","element2","cell3","_retrieveCustomTags","_fillCustomTags","_retrieveWizardFields","fields","field_name","_fillWizardFields","customTagsHTML","groupsTableHTML","resourcesTabHTML","CustomTagsTable","_htmlAdvanced","TemplateAdvancedHTML","zone_ids","ZONE","vdc_json","WizardFields","selected_groups_list","original_groups_list","zoneId","originalSelectedZone","originalSelectedResources","selectedZone","_submitAdvanced","vdc_raw","Acl.refresh","Acl.create_dialog","Acl.delete","acl_array","_parseAclString","space_split","user_str","_parseUserAcl","resources_str","resources_array","belonging_to","_parseResourceAcl","ops_str","ops_array","zone_str","_parseZoneAcl","Acl.create","Acl.list","VResourcesTab","VM.refresh","VM.create_dialog","VM.chown","VM.chgrp","VM.deploy","VM.migrate","VM.migrate_live","VM.hold","VM.release","VM.suspend","VM.resume","VM.stop","VM.reboot","VM.reboot_hard","VM.poweroff","VM.poweroff_hard","VM.undeploy","VM.undeploy_hard","VM.shutdown","VM.shutdown_hard","VM.delete","VM.delete_recreate","VM.resched","VM.unresched","VM.recover","custom_select","VM.startvnc","VM.startspice","CommonActions","openNebulaResource","resourceStr","_refresh","_delete","_multipleAction","actionStr","_singleAction","multipleAction","singleAction","Util","addFunc","cl","enumerable","fun","thisp","elt","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","oThis","aArgs","fToBind","fNOP","fBound","requestAnimFrame","_log_level","init_logging","opera","postError","Debug","Info","Warn","get_logging","make_property","proto","getter","setter","make_setter","process_val","0","no","false","make_properties","set_defaults","defaults_keys","conf_keys","keys_obj","decodeUTF8","utf8string","decodeURIComponent","get_include_uri","INCLUDE_URI","_loading_scripts","_pending_scripts","load_scripts","ls","loadFunc","Engine","presto","onscriptsload","trident","getPosition","getStyle","styleProp","scrollDist","myScrollTop","myScrollLeft","curleft","curtop","scr","fixed","scrDist","getEventPosition","docX","docY","changedTouches","realx","realy","addEvent","evType","detachEvent","stopEvent","cancelBubble","Features","xpath","air","detectPresto","detectTrident","detectInitialWebkit","taintEnabled","detectActualWebkit","initial_ver","str_ver","detectGecko","getBoxObjectFor","mozInnerScreenX","webkit","gecko","Flash","err1","GetVariable","err2","build","WebUtil","$D","layers","dirObj","getQueryVar","defVal","createCookie","expires","toGMTString","secure","cookie","readCookie","nameEQ","eraseCookie","initSettings","callbackArgs","chrome","sync","cfg","writeSetting","readSetting","eraseSetting","getStylesheets","sheets","selectStylesheet","link","toBase64Table","base64Pad","encode","lengthpad","toBinaryTable","decode","result_length","leftbits","leftdata","data_length","WEB_SOCKET_FORCE_FLASH","Websock_native","MozWebSocket","WEB_SOCKET_SWF_LOCATION","get_sQ","get_rQ","get_rQi","set_rQi","rQlen","rQpeek8","rQshift8","rQskip8","rQskipBytes","rQunshift8","rQshift16","rQshift32","rQshiftStr","rQshiftBytes","rQslice","rQwait","goback","flush","bufferedAmount","_encode_message","send_string","protocols","ws_schema","bt","wsbt","exc","new_protocols","onmessage","_recv_message","onopen","onclose","CONNECTING","_decode_message","exception_str","keyname","keynames","codepoints","55","56","58","59","60","61","62","64","65","66","67","68","69","71","72","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268","269","270","271","272","273","274","275","278","279","280","281","282","283","284","285","286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302","303","304","305","308","309","310","311","312","313","314","315","316","317","318","321","322","323","324","325","326","327","328","330","331","332","333","336","337","338","339","340","341","342","343","344","345","346","347","348","349","350","351","352","353","354","355","356","357","358","359","360","361","362","363","364","365","366","367","368","369","370","371","372","373","374","375","376","377","378","379","380","381","382","399","402","415","416","417","431","432","437","438","439","466","486","487","601","629","658","711","728","729","731","733","901","902","904","905","906","908","910","911","912","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","931","932","933","934","935","936","937","938","939","940","941","942","943","944","945","946","947","948","949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","969","970","971","972","973","974","1025","1026","1027","1028","1029","1030","1031","1032","1033","1034","1035","1036","1038","1039","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","1050","1051","1052","1053","1054","1055","1056","1057","1058","1059","1060","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1074","1075","1076","1077","1078","1079","1080","1081","1082","1083","1084","1085","1086","1087","1088","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101","1102","1103","1105","1106","1107","1108","1109","1110","1111","1112","1113","1114","1115","1116","1118","1119","1168","1169","1170","1171","1174","1175","1178","1179","1180","1181","1186","1187","1198","1199","1200","1201","1202","1203","1206","1207","1208","1209","1210","1211","1240","1241","1250","1251","1256","1257","1262","1263","1329","1330","1331","1332","1333","1334","1335","1336","1337","1338","1339","1340","1341","1342","1343","1344","1345","1346","1347","1348","1349","1350","1351","1352","1353","1354","1355","1356","1357","1358","1359","1360","1361","1362","1363","1364","1365","1366","1370","1371","1372","1373","1374","1377","1378","1379","1380","1381","1382","1383","1384","1385","1386","1387","1388","1389","1390","1391","1392","1393","1394","1395","1396","1397","1398","1399","1400","1401","1402","1403","1404","1405","1406","1407","1408","1409","1410","1411","1412","1413","1414","1415","1417","1418","1488","1489","1490","1491","1492","1493","1494","1495","1496","1497","1498","1499","1500","1501","1502","1503","1504","1505","1506","1507","1508","1509","1510","1511","1512","1513","1514","1548","1563","1567","1569","1570","1571","1572","1573","1574","1575","1576","1577","1578","1579","1580","1581","1582","1583","1584","1585","1586","1587","1588","1589","1590","1591","1592","1593","1594","1600","1601","1602","1603","1604","1605","1606","1607","1608","1609","1610","1611","1612","1613","1614","1615","1616","1617","1618","1619","1620","1621","1632","1633","1634","1635","1636","1637","1638","1639","1640","1641","1642","1648","1657","1662","1670","1672","1681","1688","1700","1705","1711","1722","1726","1729","1740","1746","1748","1776","1777","1778","1779","1780","1781","1782","1783","1784","1785","3458","3459","3461","3462","3463","3464","3465","3466","3467","3468","3469","3470","3471","3472","3473","3474","3475","3476","3477","3478","3482","3483","3484","3485","3486","3487","3488","3489","3490","3491","3492","3493","3494","3495","3496","3497","3498","3499","3500","3501","3502","3503","3504","3505","3507","3508","3509","3510","3511","3512","3513","3514","3515","3517","3520","3521","3522","3523","3524","3525","3526","3530","3535","3536","3537","3538","3539","3540","3542","3544","3545","3546","3547","3548","3549","3550","3551","3570","3571","3572","3585","3586","3587","3588","3589","3590","3591","3592","3593","3594","3595","3596","3597","3598","3599","3600","3601","3602","3603","3604","3605","3606","3607","3608","3609","3610","3611","3612","3613","3614","3615","3616","3617","3618","3619","3620","3621","3622","3623","3624","3625","3626","3627","3628","3629","3630","3631","3632","3633","3634","3635","3636","3637","3638","3639","3640","3641","3642","3647","3648","3649","3650","3651","3652","3653","3654","3655","3656","3657","3658","3659","3660","3661","3664","3665","3666","3667","3668","3669","3670","3671","3672","3673","4304","4305","4306","4307","4308","4309","4310","4311","4312","4313","4314","4315","4316","4317","4318","4319","4320","4321","4322","4323","4324","4325","4326","4327","4328","4329","4330","4331","4332","4333","4334","4335","4336","4337","4338","4339","4340","4341","4342","7682","7683","7690","7691","7710","7711","7734","7735","7744","7745","7766","7767","7776","7777","7786","7787","7808","7809","7810","7811","7812","7813","7818","7819","7840","7841","7842","7843","7844","7845","7846","7847","7848","7849","7850","7851","7852","7853","7854","7855","7856","7857","7858","7859","7860","7861","7862","7863","7864","7865","7866","7867","7868","7869","7870","7871","7872","7873","7874","7875","7876","7877","7878","7879","7880","7881","7882","7883","7884","7885","7886","7887","7888","7889","7890","7891","7892","7893","7894","7895","7896","7897","7898","7899","7900","7901","7902","7903","7904","7905","7906","7907","7908","7909","7910","7911","7912","7913","7914","7915","7916","7917","7918","7919","7920","7921","7922","7923","7924","7925","7926","7927","7928","7929","8194","8195","8196","8197","8199","8200","8201","8202","8210","8211","8212","8213","8215","8216","8217","8218","8220","8221","8222","8224","8225","8226","8229","8230","8240","8242","8243","8248","8254","8304","8308","8309","8310","8311","8312","8313","8320","8321","8322","8323","8324","8325","8326","8327","8328","8329","8352","8353","8354","8355","8356","8357","8358","8359","8360","8361","8362","8363","8364","8453","8470","8471","8478","8482","8531","8532","8533","8534","8535","8536","8537","8538","8539","8540","8541","8542","8592","8593","8594","8595","8658","8660","8706","8709","8711","8712","8713","8715","8728","8730","8731","8732","8733","8734","8743","8744","8745","8746","8747","8748","8749","8756","8757","8764","8771","8773","8775","8800","8801","8802","8803","8804","8805","8834","8835","8866","8867","8868","8869","8968","8970","8981","8992","8993","9109","9115","9117","9118","9120","9121","9123","9124","9126","9128","9132","9143","9146","9147","9148","9149","9225","9226","9227","9228","9229","9251","9252","9472","9474","9484","9488","9492","9496","9500","9508","9516","9524","9532","9618","9642","9643","9644","9645","9646","9647","9650","9651","9654","9655","9660","9661","9664","9665","9670","9675","9679","9702","9734","9742","9747","9756","9758","9792","9794","9827","9829","9830","9837","9839","10003","10007","10013","10016","10216","10217","10240","10241","10242","10243","10244","10245","10246","10247","10248","10249","10250","10251","10252","10253","10254","10255","10256","10257","10258","10259","10260","10261","10262","10263","10264","10265","10266","10267","10268","10269","10270","10271","10272","10273","10274","10275","10276","10277","10278","10279","10280","10281","10282","10283","10284","10285","10286","10287","10288","10289","10290","10291","10292","10293","10294","10295","10296","10297","10298","10299","10300","10301","10302","10303","10304","10305","10306","10307","10308","10309","10310","10311","10312","10313","10314","10315","10316","10317","10318","10319","10320","10321","10322","10323","10324","10325","10326","10327","10328","10329","10330","10331","10332","10333","10334","10335","10336","10337","10338","10339","10340","10341","10342","10343","10344","10345","10346","10347","10348","10349","10350","10351","10352","10353","10354","10355","10356","10357","10358","10359","10360","10361","10362","10363","10364","10365","10366","10367","10368","10369","10370","10371","10372","10373","10374","10375","10376","10377","10378","10379","10380","10381","10382","10383","10384","10385","10386","10387","10388","10389","10390","10391","10392","10393","10394","10395","10396","10397","10398","10399","10400","10401","10402","10403","10404","10405","10406","10407","10408","10409","10410","10411","10412","10413","10414","10415","10416","10417","10418","10419","10420","10421","10422","10423","10424","10425","10426","10427","10428","10429","10430","10431","10432","10433","10434","10435","10436","10437","10438","10439","10440","10441","10442","10443","10444","10445","10446","10447","10448","10449","10450","10451","10452","10453","10454","10455","10456","10457","10458","10459","10460","10461","10462","10463","10464","10465","10466","10467","10468","10469","10470","10471","10472","10473","10474","10475","10476","10477","10478","10479","10480","10481","10482","10483","10484","10485","10486","10487","10488","10489","10490","10491","10492","10493","10494","10495","12289","12290","12300","12301","12443","12444","12449","12450","12451","12452","12453","12454","12455","12456","12457","12458","12459","12461","12463","12465","12467","12469","12471","12473","12475","12477","12479","12481","12483","12484","12486","12488","12490","12491","12492","12493","12494","12495","12498","12501","12504","12507","12510","12511","12512","12513","12514","12515","12516","12517","12518","12519","12520","12521","12522","12523","12524","12525","12527","12530","12531","12539","12540","fromUnicode","substituteCodepoint","cp","substitutions",536,537,538,539,"sub","isMac","platform","isWindows","isLinux","charModifier","currentModifiers","mods","XK_Shift_L","hasCharModifier","ModifierSync","syncKey","XK_Control_L","XK_Alt_L","altGraphKey","XK_ISO_Level3_Shift","XK_Meta_L","syncKeyEvent","down","codepoint","keysymFromKeyCode","keycode","shiftPressed","XK_KP_0","XK_space","XK_KP_Multiply","XK_KP_Add","XK_KP_Separator","XK_KP_Subtract","XK_KP_Decimal","XK_KP_Divide","XK_plus","XK_comma","XK_minus","XK_period","XK_F1","XK_BackSpace","XK_Return","XK_Tab","XK_Escape","XK_Delete","XK_Home","XK_End","XK_Page_Up","XK_Page_Down","XK_Insert","XK_Left","XK_Up","XK_Right","XK_Down","XK_Super_L","XK_Super_R","XK_Menu","Keyboard","Mouse","_keyDownList","focused","_handler","_handleRfbEvent","_handleKeyUp","_handleKeyDown","_handleKeyPress","_allKeysUp","_onKeyPress","_focused","grab","_target","ungrab","_mouseCaptured","_doubleClickTimer","_lastTouchPos","touchButton","mousedown","_handleMouseDown","mouseup","_handleMouseUp","_handleMouseMove","mousewheel","_handleMouseWheel","mousedisable","_handleMouseDisable","_captureMouse","setCapture","_releaseMouse","releaseCapture","_resetDoubleClickTimer","_handleMouseButton","_notify","bmask","_scale","xs","_touchButton","_onMouseButton","wheelData","detail","wheelDelta","_onMouseMove","Display","_drawCtx","_c_forceCanvas","_renderQ","_fb_width","_fb_height","_viewportLoc","_cleanRect","_prevDrawStyle","_tile","_tile16x16","_tile_x","_tile_y","true_color","colourMap","viewport","render_mode","_render_mode","_prefer_js","curDat","curSave","changeCursor","_cursor_uri","viewportChange","deltaX","vp","cr","_viewport","saveImg","img_width","img_height","vx2","vy2","saveStyle","getCleanDirtyReset","cleanBox","dirtyBoxes","absX","absY","_rescale","_logo","blitStringImage","_setFillColor","copyImage","old_x","old_y","new_x","new_y","startTile","bgr","_true_color","_colourMap","subTile","xend","yend","finishTile","blitImage","_bgrxImageData","_cmapImageData","blitRgbImage","_rgbImageData","img","renderQ_push","_scan_renderQ","pixels","hotx","hoty","defaultCursor","get_context","set_scale","set_width","get_width","set_height","get_height","transform_prop","properties","newStyle","vx","vy","cmap","w0","h0","push16le","push32le","IHDRsz","RGBsz","XORsz","ANDsz","rgb","RFB","_rfb_host","_rfb_port","_rfb_password","_rfb_path","_rfb_state","_rfb_version","_rfb_max_version","_rfb_auth_scheme","_rfb_tightvnc","_rfb_xvp_ver","_encodings","_encHandlers","_encNames","_encStats","_sock","_display","_keyboard","_mouse","_sendTimer","_disconnTimer","_msgTimer","_FBU","rects","subrects","tiles","subencoding","zlib","_fb_Bpp","_fb_depth","_fb_name","_rre_chunk_sz","_timing","last_fbu","fbu_total","fbu_total_cnt","full_fbu_total","full_fbu_cnt","fbu_rt_start","fbu_rt_total","fbu_rt_cnt","_mouse_buttonMask","_mouse_arr","_viewportDragging","_viewportDragPos","focusContainer","local_cursor","shared","view_only","xvp_password_sep","disconnectTimeout","wsProtocols","repeaterID","viewportDrag","onUpdateState","onPasswordRequired","onClipboard","onBell","onFBUReceive","onFBUComplete","onFBResize","onDesktopName","onXvpInit","encodingHandlers","encName","_updateState","_focusContainer","onKeyPress","onMouseButton","_handle_message","_fail","failed","disconnected","_init_vars","rmode","get_render_mode","disconnect","sendPassword","_init_msg","_view_only","messages","keyEvent","xvpOp","ver","xvpShutdown","xvpReboot","xvpReset","sendKey","clipboardPasteFrom","clientCutText","_connect","UsingSocketIO","_encrypt","_wsProtocols","zlibs","_print_stats","statusMsg","oldstate","fatal","cmsg","_disconnectTimeout","_onUpdateState","_normal_msg","_checkEvents","_viewportDrag","pointerEvent","_negotiate_protocol_version","sversion","is_repeater","_repeaterID","cversion","_negotiate_security","num_types","strlen","_negotiate_xvp_auth","xvp_sep","_xvp_password_sep","xvp_auth","_onPasswordRequired","xvp_auth_str","_negotiate_authentication","_negotiate_std_vnc_auth","challenge","genDES","_negotiate_tight_tunnels","numTunnels","clientSupportedTunnelTypes","vendor","signature","serverSupportedTunnelTypes","cap_code","cap_vendor","cap_signature","_negotiate_tight_auth","subAuthCount","clientSupportedTypes","STDVNOAUTH__","STDVVNCAUTH_","serverSupportedTypes","capabilities","authType","_handle_security_result","_negotiate_server_init","bpp","big_endian","red_max","green_max","blue_max","red_shift","green_shift","blue_shift","name_length","numServerMessages","numClientMessages","numEncodings","totalMessagesLength","_onDesktopName","set_true_color","_onFBResize","pixelFormat","clientEncodings","_local_cursor","fbUpdateRequests","_shared","_handle_set_colour_map_msg","first_colour","num_colours","set_colourMap","get_colourMap","_handle_server_cut_text","_onClipboard","_handle_xvp_msg","xvp_ver","xvp_msg","_onXvpInit","msg_type","_framebufferUpdate","_onBell","cur_fbu","hdr","_onFBUReceive","encodingName","fbu_rt_diff","_onFBUComplete","set_local_cursor","get_cursor_uri","get_display","get_keyboard","get_mouse","push8","push16","push32","encodings","encList","cleanDirty","fb_width","fb_height","fbUpdateRequest","incremental","extract_data_uri","RAW","cur_y","curr_height","COPYRECT","RRE","chunk","HEXTILE","rQ","rQi","tiles_x","tiles_y","total_tiles","curr_tile","tile_x","tile_y","lastsubencoding","foreground","sx","sy","wh","getTightCLength","display_tight","isTightPNG","cmode","clength","resetStreams","streamId","decompress","uncompressed","indexedToRGB","numColors","palette","dp","sp","w1","handlePalette","paletteSize","rowSize","handleCopy","ctl","filterId","TIGHT","TIGHT_PNG","last_rect","DesktopSize","Cursor","pixelslength","masklength","JPEG_quality_lo","compress_lo","XK_VoidSymbol","XK_Linefeed","XK_Clear","XK_Pause","XK_Scroll_Lock","XK_Sys_Req","XK_Prior","XK_Next","XK_Begin","XK_Select","XK_Print","XK_Execute","XK_Undo","XK_Redo","XK_Find","XK_Cancel","XK_Help","XK_Break","XK_Mode_switch","XK_script_switch","XK_Num_Lock","XK_KP_Space","XK_KP_Tab","XK_KP_Enter","XK_KP_F1","XK_KP_F2","XK_KP_F3","XK_KP_F4","XK_KP_Home","XK_KP_Left","XK_KP_Up","XK_KP_Right","XK_KP_Down","XK_KP_Prior","XK_KP_Page_Up","XK_KP_Next","XK_KP_Page_Down","XK_KP_End","XK_KP_Begin","XK_KP_Insert","XK_KP_Delete","XK_KP_Equal","XK_KP_1","XK_KP_2","XK_KP_3","XK_KP_4","XK_KP_5","XK_KP_6","XK_KP_7","XK_KP_8","XK_KP_9","XK_F2","XK_F3","XK_F4","XK_F5","XK_F6","XK_F7","XK_F8","XK_F9","XK_F10","XK_F11","XK_L1","XK_F12","XK_L2","XK_F13","XK_L3","XK_F14","XK_L4","XK_F15","XK_L5","XK_F16","XK_L6","XK_F17","XK_L7","XK_F18","XK_L8","XK_F19","XK_L9","XK_F20","XK_L10","XK_F21","XK_R1","XK_F22","XK_R2","XK_F23","XK_R3","XK_F24","XK_R4","XK_F25","XK_R5","XK_F26","XK_R6","XK_F27","XK_R7","XK_F28","XK_R8","XK_F29","XK_R9","XK_F30","XK_R10","XK_F31","XK_R11","XK_F32","XK_R12","XK_F33","XK_R13","XK_F34","XK_R14","XK_F35","XK_R15","XK_Shift_R","XK_Control_R","XK_Caps_Lock","XK_Shift_Lock","XK_Meta_R","XK_Alt_R","XK_Hyper_L","XK_Hyper_R","XK_exclam","XK_quotedbl","XK_numbersign","XK_dollar","XK_percent","XK_ampersand","XK_apostrophe","XK_quoteright","XK_parenleft","XK_parenright","XK_asterisk","XK_slash","XK_0","XK_1","XK_2","XK_3","XK_4","XK_5","XK_6","XK_7","XK_8","XK_9","XK_colon","XK_semicolon","XK_less","XK_equal","XK_greater","XK_question","XK_at","XK_A","XK_B","XK_C","XK_D","XK_E","XK_F","XK_G","XK_H","XK_I","XK_J","XK_K","XK_L","XK_M","XK_N","XK_O","XK_P","XK_Q","XK_R","XK_S","XK_T","XK_U","XK_V","XK_W","XK_X","XK_Y","XK_Z","XK_bracketleft","XK_backslash","XK_bracketright","XK_asciicircum","XK_underscore","XK_grave","XK_quoteleft","XK_a","XK_b","XK_c","XK_d","XK_e","XK_f","XK_g","XK_h","XK_i","XK_j","XK_k","XK_l","XK_m","XK_n","XK_o","XK_p","XK_q","XK_r","XK_s","XK_t","XK_u","XK_v","XK_w","XK_x","XK_y","XK_z","XK_braceleft","XK_bar","XK_braceright","XK_asciitilde","XK_nobreakspace","XK_exclamdown","XK_cent","XK_sterling","XK_currency","XK_yen","XK_brokenbar","XK_section","XK_diaeresis","XK_copyright","XK_ordfeminine","XK_guillemotleft","XK_notsign","XK_hyphen","XK_registered","XK_macron","XK_degree","XK_plusminus","XK_twosuperior","XK_threesuperior","XK_acute","XK_mu","XK_paragraph","XK_periodcentered","XK_cedilla","XK_onesuperior","XK_masculine","XK_guillemotright","XK_onequarter","XK_onehalf","XK_threequarters","XK_questiondown","XK_Agrave","XK_Aacute","XK_Acircumflex","XK_Atilde","XK_Adiaeresis","XK_Aring","XK_AE","XK_Ccedilla","XK_Egrave","XK_Eacute","XK_Ecircumflex","XK_Ediaeresis","XK_Igrave","XK_Iacute","XK_Icircumflex","XK_Idiaeresis","XK_ETH","XK_Eth","XK_Ntilde","XK_Ograve","XK_Oacute","XK_Ocircumflex","XK_Otilde","XK_Odiaeresis","XK_multiply","XK_Oslash","XK_Ooblique","XK_Ugrave","XK_Uacute","XK_Ucircumflex","XK_Udiaeresis","XK_Yacute","XK_THORN","XK_Thorn","XK_ssharp","XK_agrave","XK_aacute","XK_acircumflex","XK_atilde","XK_adiaeresis","XK_aring","XK_ae","XK_ccedilla","XK_egrave","XK_eacute","XK_ecircumflex","XK_ediaeresis","XK_igrave","XK_iacute","XK_icircumflex","XK_idiaeresis","XK_eth","XK_ntilde","XK_ograve","XK_oacute","XK_ocircumflex","XK_otilde","XK_odiaeresis","XK_division","XK_oslash","XK_ooblique","XK_ugrave","XK_uacute","XK_ucircumflex","XK_udiaeresis","XK_yacute","XK_thorn","XK_ydiaeresis","lockStatus","_lock","unlock","vncCallback","_rfb","updateVNCState","rfb","cad","SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION","SPICE_COMMON_CAP_MINI_HEADER","SPICE_CHANNEL_PLAYBACK","SPICE_PLAYBACK_CAP_OPUS","SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS","send_ticket","ticket","SPICE_COMMON_CAP_AUTH_SPICE","saved_header","process_message","save_header","reply_hdr","reply_link","auth_reply","SPICE_LINK_ERR_OK","SPICE_CHANNEL_DISPLAY","dinit","reply","SPICE_MSGC_DISPLAY_INIT","SPICE_LINK_ERR_PERMISSION_DENIED","process_common_messages","SPICE_MSG_SET_ACK","ack_window","msgs_until_ack","ackack","SPICE_MSGC_ACK_SYNC","SPICE_MSG_PING","pong","SPICE_MSGC_PONG","SPICE_MSG_NOTIFY","severity","SPICE_NOTIFY_SEVERITY_ERROR","SPICE_NOTIFY_SEVERITY_WARN","log_warn","process_channel_message","SPICE_MSGC_ACK","SPICE_CHANNEL_INPUTS","SPICE_CHANNEL_CURSOR","known_unimplemented","report_success","cleanup","SPICE_COMMON_CAP_AUTH_SASL","SPICE_TICKET_KEY_PAIR_LENGTH","SPICE_TICKET_PUBKEY_BYTES","SPICE_LINK_ERR_ERROR","SPICE_LINK_ERR_INVALID_MAGIC","SPICE_LINK_ERR_INVALID_DATA","SPICE_LINK_ERR_VERSION_MISMATCH","SPICE_LINK_ERR_NEED_SECURED","SPICE_LINK_ERR_NEED_UNSECURED","SPICE_LINK_ERR_BAD_CONNECTION_ID","SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE","SPICE_MSG_MIGRATE","SPICE_MSG_MIGRATE_DATA","SPICE_MSG_WAIT_FOR_CHANNELS","SPICE_MSG_DISCONNECTING","SPICE_MSG_LIST","SPICE_MSG_MAIN_MIGRATE_BEGIN","SPICE_MSG_MAIN_MIGRATE_CANCEL","SPICE_MSG_MAIN_INIT","SPICE_MSG_MAIN_CHANNELS_LIST","SPICE_MSG_MAIN_MOUSE_MODE","SPICE_MSG_MAIN_MULTI_MEDIA_TIME","SPICE_MSG_MAIN_AGENT_CONNECTED","SPICE_MSG_MAIN_AGENT_DISCONNECTED","SPICE_MSG_MAIN_AGENT_DATA","SPICE_MSG_MAIN_AGENT_TOKEN","SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST","SPICE_MSG_MAIN_MIGRATE_END","SPICE_MSG_MAIN_NAME","SPICE_MSG_MAIN_UUID","SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS","SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS","SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK","SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK","SPICE_MSG_END_MAIN","SPICE_MSGC_MIGRATE_FLUSH_MARK","SPICE_MSGC_MIGRATE_DATA","SPICE_MSGC_DISCONNECTING","SPICE_MSGC_MAIN_CLIENT_INFO","SPICE_MSGC_MAIN_MIGRATE_CONNECTED","SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR","SPICE_MSGC_MAIN_ATTACH_CHANNELS","SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST","SPICE_MSGC_MAIN_AGENT_START","SPICE_MSGC_MAIN_AGENT_DATA","SPICE_MSGC_MAIN_AGENT_TOKEN","SPICE_MSGC_MAIN_MIGRATE_END","SPICE_MSGC_END_MAIN","SPICE_MSG_DISPLAY_MODE","SPICE_MSG_DISPLAY_MARK","SPICE_MSG_DISPLAY_RESET","SPICE_MSG_DISPLAY_COPY_BITS","SPICE_MSG_DISPLAY_INVAL_LIST","SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS","SPICE_MSG_DISPLAY_INVAL_PALETTE","SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES","SPICE_MSG_DISPLAY_STREAM_CREATE","SPICE_MSG_DISPLAY_STREAM_DATA","SPICE_MSG_DISPLAY_STREAM_CLIP","SPICE_MSG_DISPLAY_STREAM_DESTROY","SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL","SPICE_MSG_DISPLAY_DRAW_FILL","SPICE_MSG_DISPLAY_DRAW_OPAQUE","SPICE_MSG_DISPLAY_DRAW_COPY","SPICE_MSG_DISPLAY_DRAW_BLEND","SPICE_MSG_DISPLAY_DRAW_BLACKNESS","SPICE_MSG_DISPLAY_DRAW_WHITENESS","SPICE_MSG_DISPLAY_DRAW_INVERS","SPICE_MSG_DISPLAY_DRAW_ROP3","SPICE_MSG_DISPLAY_DRAW_STROKE","SPICE_MSG_DISPLAY_DRAW_TEXT","SPICE_MSG_DISPLAY_DRAW_TRANSPARENT","SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND","SPICE_MSG_DISPLAY_SURFACE_CREATE","SPICE_MSG_DISPLAY_SURFACE_DESTROY","SPICE_MSG_INPUTS_INIT","SPICE_MSG_INPUTS_KEY_MODIFIERS","SPICE_MSG_INPUTS_MOUSE_MOTION_ACK","SPICE_MSGC_INPUTS_KEY_MODIFIERS","SPICE_MSG_CURSOR_INIT","SPICE_MSG_CURSOR_RESET","SPICE_MSG_CURSOR_SET","SPICE_MSG_CURSOR_MOVE","SPICE_MSG_CURSOR_HIDE","SPICE_MSG_CURSOR_TRAIL","SPICE_MSG_CURSOR_INVAL_ONE","SPICE_MSG_CURSOR_INVAL_ALL","SPICE_MSG_PLAYBACK_DATA","SPICE_MSG_PLAYBACK_MODE","SPICE_MSG_PLAYBACK_START","SPICE_MSG_PLAYBACK_STOP","SPICE_MSG_PLAYBACK_VOLUME","SPICE_MSG_PLAYBACK_MUTE","SPICE_MSG_PLAYBACK_LATENCY","SPICE_PLAYBACK_CAP_CELT_0_5_1","SPICE_PLAYBACK_CAP_VOLUME","SPICE_PLAYBACK_CAP_LATENCY","SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE","SPICE_MAIN_CAP_NAME_AND_UUID","SPICE_MAIN_CAP_SEAMLESS_MIGRATE","SPICE_AUDIO_DATA_MODE_INVALID","SPICE_AUDIO_DATA_MODE_RAW","SPICE_AUDIO_DATA_MODE_CELT_0_5_1","SPICE_AUDIO_DATA_MODE_OPUS","SPICE_AUDIO_FMT_INVALID","SPICE_AUDIO_FMT_S16","SPICE_CHANNEL_RECORD","SPICE_CHANNEL_TUNNEL","SPICE_CHANNEL_SMARTCARD","SPICE_CHANNEL_USBREDIR","SPICE_SURFACE_FLAGS_PRIMARY","SPICE_NOTIFY_SEVERITY_INFO","SPICE_MOUSE_MODE_SERVER","SPICE_MOUSE_MODE_MASK","SPICE_CLIP_TYPE_NONE","SPICE_CLIP_TYPE_RECTS","SPICE_IMAGE_TYPE_BITMAP","SPICE_IMAGE_TYPE_QUIC","SPICE_IMAGE_TYPE_RESERVED","SPICE_IMAGE_TYPE_LZ_PLT","SPICE_IMAGE_TYPE_LZ_RGB","SPICE_IMAGE_TYPE_GLZ_RGB","SPICE_IMAGE_TYPE_FROM_CACHE","SPICE_IMAGE_TYPE_SURFACE","SPICE_IMAGE_TYPE_JPEG","SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS","SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB","SPICE_IMAGE_TYPE_JPEG_ALPHA","SPICE_IMAGE_FLAGS_HIGH_BITS_SET","SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME","SPICE_BITMAP_FLAGS_PAL_CACHE_ME","SPICE_BITMAP_FLAGS_PAL_FROM_CACHE","SPICE_BITMAP_FLAGS_TOP_DOWN","SPICE_BITMAP_FLAGS_MASK","SPICE_BITMAP_FMT_INVALID","SPICE_BITMAP_FMT_1BIT_LE","SPICE_BITMAP_FMT_1BIT_BE","SPICE_BITMAP_FMT_4BIT_LE","SPICE_BITMAP_FMT_4BIT_BE","SPICE_BITMAP_FMT_8BIT","SPICE_BITMAP_FMT_16BIT","SPICE_BITMAP_FMT_24BIT","SPICE_CURSOR_FLAGS_NONE","SPICE_CURSOR_FLAGS_CACHE_ME","SPICE_CURSOR_FLAGS_FROM_CACHE","SPICE_CURSOR_FLAGS_MASK","SPICE_MOUSE_BUTTON_MASK_MIDDLE","SPICE_MOUSE_BUTTON_MASK_RIGHT","SPICE_MOUSE_BUTTON_MASK_MASK","SPICE_MOUSE_BUTTON_INVALID","SPICE_MOUSE_BUTTON_MIDDLE","SPICE_MOUSE_BUTTON_RIGHT","SPICE_BRUSH_TYPE_NONE","SPICE_BRUSH_TYPE_SOLID","SPICE_BRUSH_TYPE_PATTERN","SPICE_SURFACE_FMT_INVALID","SPICE_SURFACE_FMT_1_A","SPICE_SURFACE_FMT_8_A","SPICE_SURFACE_FMT_16_555","SPICE_SURFACE_FMT_32_xRGB","SPICE_SURFACE_FMT_16_565","SPICE_SURFACE_FMT_32_ARGB","SPICE_ROPD_INVERS_SRC","SPICE_ROPD_INVERS_BRUSH","SPICE_ROPD_INVERS_DEST","SPICE_ROPD_OP_PUT","SPICE_ROPD_OP_OR","SPICE_ROPD_OP_AND","SPICE_ROPD_OP_XOR","SPICE_ROPD_OP_BLACKNESS","SPICE_ROPD_OP_WHITENESS","SPICE_ROPD_OP_INVERS","SPICE_ROPD_INVERS_RES","SPICE_ROPD_MASK","LZ_IMAGE_TYPE_INVALID","LZ_IMAGE_TYPE_PLT1_LE","LZ_IMAGE_TYPE_PLT1_BE","LZ_IMAGE_TYPE_PLT4_LE","LZ_IMAGE_TYPE_PLT4_BE","LZ_IMAGE_TYPE_PLT8","LZ_IMAGE_TYPE_RGB16","LZ_IMAGE_TYPE_RGB24","SPICE_CURSOR_TYPE_ALPHA","SPICE_CURSOR_TYPE_MONO","SPICE_CURSOR_TYPE_COLOR4","SPICE_CURSOR_TYPE_COLOR8","SPICE_CURSOR_TYPE_COLOR16","SPICE_CURSOR_TYPE_COLOR24","SPICE_CURSOR_TYPE_COLOR32","SPICE_VIDEO_CODEC_TYPE_MJPEG","VD_AGENT_MAX_DATA_SIZE","VD_AGENT_MOUSE_STATE","VD_AGENT_MONITORS_CONFIG","VD_AGENT_REPLY","VD_AGENT_CLIPBOARD","VD_AGENT_DISPLAY_CONFIG","VD_AGENT_ANNOUNCE_CAPABILITIES","VD_AGENT_CLIPBOARD_GRAB","VD_AGENT_CLIPBOARD_REQUEST","VD_AGENT_CLIPBOARD_RELEASE","VD_AGENT_FILE_XFER_START","VD_AGENT_FILE_XFER_STATUS","VD_AGENT_FILE_XFER_DATA","VD_AGENT_CLIENT_DISCONNECTED","VD_AGENT_MAX_CLIPBOARD","VD_AGENT_CAP_MOUSE_STATE","VD_AGENT_CAP_MONITORS_CONFIG","VD_AGENT_CAP_REPLY","VD_AGENT_CAP_CLIPBOARD","VD_AGENT_CAP_DISPLAY_CONFIG","VD_AGENT_CAP_CLIPBOARD_BY_DEMAND","VD_AGENT_CAP_CLIPBOARD_SELECTION","VD_AGENT_CAP_SPARSE_MONITORS_CONFIG","VD_AGENT_CAP_GUEST_LINEEND_LF","VD_AGENT_CAP_GUEST_LINEEND_CRLF","VD_AGENT_CAP_MAX_CLIPBOARD","VD_AGENT_END_CAP","VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA","VD_AGENT_FILE_XFER_STATUS_CANCELLED","VD_AGENT_FILE_XFER_STATUS_ERROR","VD_AGENT_FILE_XFER_STATUS_SUCCESS","KEY_Escape","KEY_1","KEY_2","KEY_3","KEY_4","KEY_5","KEY_6","KEY_7","KEY_8","KEY_9","KEY_0","KEY_Minus","KEY_Equal","KEY_BackSpace","KEY_Tab","KEY_Q","KEY_W","KEY_E","KEY_R","KEY_T","KEY_Y","KEY_U","KEY_I","KEY_O","KEY_P","KEY_LBrace","KEY_RBrace","KEY_Enter","KEY_A","KEY_S","KEY_D","KEY_F","KEY_G","KEY_H","KEY_J","KEY_K","KEY_L","KEY_SemiColon","KEY_Quote","KEY_Tilde","KEY_BSlash","KEY_Z","KEY_X","KEY_C","KEY_V","KEY_B","KEY_N","KEY_M","KEY_Comma","KEY_Period","KEY_Slash","KEY_ShiftR","KEY_KP_Multiply","KEY_Space","KEY_CapsLock","KEY_F1","KEY_F2","KEY_F3","KEY_F4","KEY_F5","KEY_F6","KEY_F7","KEY_F8","KEY_F9","KEY_F10","KEY_NumLock","KEY_ScrollLock","KEY_KP_7","KEY_KP_8","KEY_KP_9","KEY_KP_Minus","KEY_KP_4","KEY_KP_5","KEY_KP_6","KEY_KP_Plus","KEY_KP_1","KEY_KP_2","KEY_KP_3","KEY_KP_0","KEY_SysReqest","KEY_Less","KEY_F11","KEY_F12","KEY_Prefix0","KEY_Prefix1","DUMP_CANVASES","orig","zsum","DEFevol","DEFwmimax","DEFwminext","need_init","DEFmaxclen","wmimax","wminext","family_5bpc","zeroLUT","besttrigtab","tabrand_chaos","rgb32_pixel_pad","rgb32_pixel_r","rgb32_pixel_g","rgb32_pixel_b","rgb32_pixel_size","bestcode","reste","update_model_8bpc","curval","bestcodelen","ithcodelen","wm_trigger","model","bnumber","__FUNCTION__","waitcnt","tabrand_seed","wmidx","wmileft","melcstate","melclen","melcorder","set_wm_trigger","wm","tabrand","io_idx","io_available_bits","io_word","io_next_word","io_now","io_end","rows_completed","io_ptr","read_io_word","decode_eatbits","decode_eat32bits","reste_channels","quic_decode_begin","quic_rgb32_uncompress_row0_seg","cur_row","waitmask","bpc_mask","stopidx","n_channels","quic_rgb32_uncompress_row0","quic_rgb32_uncompress_row_seg","prev_row","run_index","run_end","pixel","pixelm1","pixelm2","decode_run","runlen","hits","temp","quic_rgb32_uncompress_row","quic_four_uncompress_row0_seg","channel","pbucket","quic_four_uncompress_row0","quic_four_uncompress_row_seg","quic_four_uncompress_row","quic_decode","buf","subarray","simple_quic_decode","from_dv","data_size","getUint32","getUint8","getUint16","littleEndian","getUint64","setUint64","is_same_size","num_rects","num_ents","ents","palette_id","lz_rgb","initial_at","top_down","header_size","bitmap","jpeg","jpeg_alpha","jpeg_size","quic","pat","brush","rop_descriptor","src_bitmap","src_area","scale_mode","hot_spot_x","hot_spot_y","orig_at","num_common_caps","num_channel_caps","caps_offset","u8arr","in_type","extra","chan","session_id","display_channels_hint","supported_mouse_modes","current_mouse_mode","agent_connected","agent_tokens","multi_media_time","ram_hint","supported_modes","current_mode","time_stamp","what","message_len","clip","src_pos","keyboard_modifiers","trail_length","trail_frequency","codec_type","stamp","stream_width","stream_height","src_width","src_height","saved_msg_header","mb1","mb2","clear_header","draw_copy","log_draw","source_img","draw_copy_helper","image_data","has_alpha","source_context","computed_src_area","tmpstr","qdv","draw_fill","color_str","copy_bits","source_canvas","hook_events","delete_surface","streams","strm_base","unhook_events","destroy_surfaces","inputs_init","EBML_HEADER_VERSION","EBML_HEADER_READ_VERSION","EBML_HEADER_MAX_ID_LENGTH","EBML_HEADER_MAX_SIZE_LENGTH","EBML_HEADER_DOC_TYPE","EBML_HEADER_DOC_TYPE_VERSION","EBML_HEADER_DOC_TYPE_READ_VERSION","WEBM_TIMECODE_SCALE","WEBM_MUXING_APP","WEBM_WRITING_APP","WEBM_SEEK_ID","WEBM_SEEK_POSITION","WEBM_TRACK_NUMBER","WEBM_TRACK_UID","WEBM_TRACK_TYPE","WEBM_FLAG_ENABLED","WEBM_FLAG_DEFAULT","WEBM_FLAG_FORCED","WEBM_FLAG_LACING","WEBM_MIN_CACHE","WEBM_MAX_BLOCK_ADDITION_ID","WEBM_CODEC_DECODE_ALL","WEBM_SEEK_PRE_ROLL","WEBM_CODEC_DELAY","WEBM_CODEC_PRIVATE","WEBM_CODEC_ID","WEBM_SAMPLING_FREQUENCY","WEBM_CHANNELS","WEBM_TIME_CODE","CLUSTER_SIMPLEBLOCK_FLAG_KEYFRAME","MAX_CLUSTER_TIME","GAP_DETECTION_THRESHOLD","DataView","MediaSource","media_source","URL","createObjectURL","bytes_written","last_data_time","buffered","start_playback","cluster_time","new_cluster","simple_block","currentTime","paused","play","SpiceSimulateCursor","cursors","unknown_cursors","warned","add_cursor","sha1","unknown_cursor","curdata","simulate_cursor","spicecursor","screen","pngstr","cursor_sha","curstr","create_icondir","spice_screen","handle_sim_mousemove","pointerEvents","duplicate_mouse_event","dispatchEvent","createEvent","initMouseEvent","screenX","screenY","ICONDIR","ICONDIRENTRY","hot_x","hot_y","cursor_init","cursor_set","set_cursor","dbits","canary","j_lm","BI_FP","rr","vv","setPublic","appVersion","crypto","create_progressbar","progressbar_container","progressbar","onclick","cancelled","remove_progressbar","update_progressbar","main_init","handle_mouse_mode","connect_agent","chans","conn","extra_channels","connected_tokens","remaining_tokens","send_agent_message_queue","xfer_task","file_xfer_read","read_bytes","agent_data","agent_caps","announce_agent_capabilities","handle_file_xfer_status","mr","send_agent_message","maxsize","monitors_config","task_id","xfer_start","task","file_xfer_status","xfer_error","file_xfer_completed","file_xfer_task","start_byte","FILE_XFER_CHUNK_SIZE","xfer_status","FileReader","xfer_data","readAsArrayBuffer","agent_start","supported","mode_request","spice_error","_sc","spiceCallback","Vnc","Spice","DEPLOY_DIALOG_ID","MIGRATE_DIALOG_ID","VNC_DIALOG_ID","SPICE_DIALOG_ID","_commonActions","VM.list","VM.show","VM.chmod","VM.rename","VM.update_template","VM.deploy_action","VM.migrate_action","VM.migrate_live_action","VM.attachdisk","VM.detachdisk","VM.attachnic","VM.detachnic","VM.resize","VM.snapshot_create","VM.snapshot_revert","VM.snapshot_delete","VM.create","VM.silent_deploy_action","setLive","VM.startvnc_action","setElement","VM.startspice_action","vncIcon","_emptyElementArray","vmId","_columns","emptyElementArray","disableAllStateActions","resetStateButtons","enableStateButton","button_action","enableStateActions","STATE_ACTIONS","LCM_STATE_ACTIONS","enabledStateAction","VMsTableUtils","totalVms","activeVms","pendingVms","failedVms","offVms","StateActions","live","vm_json","_setLive","capacityInputsHTML","msPointerEnabled","_length","serialization","resolution","orientation","cpu_input","cpu_slider","final_memory_input","memory_input","current_memory_unit","memory_slider_change","memory_slider","memory_unit_val","new_val","vcpu_input","vcpu_slider","CapacityInputs","VCPU","enforce","_setElement","diskTabHTML","totalImages","sizeImages","OpenNebulaImage","PERSISTENT","TARGET","COLUMN_IDS","diskTabId","imageTableSelectHTML","DiskTab","imageTable","ImageTable","imageContext","volatileContext","final_size_input","size_input","size_unit","current_size_unit","update_final_size_input","size_slider_change","size_slider","size_unit_val","IMAGE_ID","IMAGE_UNAME","diskTab","nicTabHTML","nicTabId","secgroupsTableSelectHTML","vnetsTableSelectHTML","secgroupSelectOptions","secgroupsTable","SecgroupsTable","nicJSON","tcp","udp","secgroups","NETWORK_UNAME","nicTab","NicTab","snapshot_name","_onClose","permissionsHTML","ownerHTML","groupHTML","TemplatePermissionsTable","TemplatePermissions","TemplateOwner","TemplateGroup","permissionsTableHTML","_setPermissionsTable","permissionsOctet","octet","_buildOctet","newOwnerId","owner","_ownerUse","OWNER_U","_ownerManage","OWNER_M","_ownerAdmin","OWNER_A","_groupUse","_groupManage","GROUP_M","_groupAdmin","GROUP_A","_otherUse","OTHER_U","_otherManage","OTHER_M","_otherAdmin","OTHER_A","prettyStartTime","deployId","PermissionsTable","DEPLOY_ID","RESCHED","USER_TEMPLATE","humanizeSize","resizeStateEnabled","RESIZE_STATES","RESIZE_DIALOG_ID","vmGraphs","CONTEXT","context_disk","save_as","disk","SAVE_AS_ACTIVE","HOTPLUG_SAVE_AS_ACTIVE","ATTACH","SAVE_AS","SAVE","DISK_ID","FORMAT","ATTACH_DISK_DIALOG_ID","_sgRuleToSt","PROTOCOL","RULE_TYPE","ICMP_TYPE","_icmpToSt","RANGE","MAC","icmp_type","_getRules","RULE","sgRuleToSt","getRules","externalNetworkAttrs","nic_dt_data","nic_secgroups","SECURITY_GROUPS","SECURITY_GROUP_RULE","SECURITY_GROUP_ID","NIC_ID","ACTIONS","SECURITY_GROUP_RULES","defaultContent","rule_st","SecGroupsCommon","new_tr","SECURITY_GROUP_NAME","ATTACH_NIC_DIALOG_ID","snapshots","SNAPSHOT","snapshot","SNAPSHOT_ID","TIME","SNAPSHOT_DIALOG_ID","snapshot_id","SEQ","etime2","dtime","stime2","PSTIME","ptime2","PETIME","dtime2","DS_ID","ACTION","REASON","SCHED_MESSAGE","requirements_str","SCHED_REQUIREMENTS","rank_str","SCHED_RANK","ds_requirements_str","SCHED_DS_REQUIREMENTS","ds_rank_str","SCHED_DS_RANK","fromJSONtoActionsTable","SCHED_ACTION","date_input_value","time_input_value","time_value","max_id","tmp_element","new_action","epoch_str","tmp_tmpl","actions_array","tmp_array","scheduling_action","fromJSONtoActionRow","done_str","message_str","MESSAGE","time_str","log_lines","colored_log","_generateVMTemplateUserInputs","_generateInstantiateUserInputs","_generateServiceTemplateUserInputs","user_inputs","text_header","network_header","vmTemplateInsert","serviceTemplateInsert","templatesTableHTML","templatesTable","TemplatesTable","OpenNebulaTemplate","has_inputs","UserInputs","n_times","n_times_int","extra_msg","tmp_json","Template.refresh","Template.create_dialog","Template.import_dialog","Template.update_dialog","Template.instantiate_vms","Template.chown","Template.chgrp","Template.clone_dialog","Template.delete","CLONE_DIALOG_ID","INSTANTIATE_DIALOG_ID","Template.list","Template.show","Template.create","Template.show_to_update","Template.update","Template.rename","Template.instantiate","Template.instantiate_quiet","Template.clone","Template.chmod","TEMPLATES_TAB_ID","inputs_div","prettyRegTime","prettyTemplateHTML","wizardTabId","contentHTML","wizardTabs","logos","WizardTab","WIZARD_TAB_ID","LOGOS","panelForm","VM_TEMPLATE","linksContainerId","contentsContainerId","LINKS_CONTAINER_ID","CONTENTS_CONTAINER_ID","numberOfDisks","diskTabObjects","dd","dl","diskId","renameTabLinks","addDiskTab","diskJSON","disksJSON","diskContext","_addDiskTab","_renameTabLinks","numberOfNics","nicTabObjects","nicId","addNicTab","nicsJSON","nicDefault","MODEL","nicContext","NIC_DEFAULT","_addNicTab","guestOS","kernelFilesTableHTML","initrdFilesTableHTML","kernelFilesTable","FilesTable","initrdFilesTable","GUESTOS","kernelDSContext","kernelDSInputsContext","initrdDSContext","initrdDSInputsContext","osJSON","featuresJSON","boot_vals","graphicsJSON","inputsJSON","BUS","contextFilesTableHTML","customTagsTableHTML","contextFilesTable","generateContextFiles","contextJSON","public_key","userInputsJSON","attr_type","attr_desc","file_ds_regexp","net_regexp","ssh_regexp","token_regexp","publickey_regexp","customTagsJSON","_generateContextFiles","req_string","selected_files","fileId","hostsTableSelectHTML","clustersTableSelectHTML","generateRequirements","reqJSON","host_id_regexp","cluster_id_regexp","dsReqJSON","dsReq","rankJSON","striping_regexp","packing_regexp","loadaware_regexp","dsRankJSON","_generateRequirements","selected_hosts","selected_clusters","hostId","clusterId","numberOfProviders","addProviderTab","publicCloudJSON","ec2JSON","hybrid","clickButton","PUBLIC_CLOUD","providers","provider","fillProviderTab","EC2","_addProviderTab","provider_id","htmlId","providerSection","required_str","not_required_str","HYBRID_INPUTS","_fillProviderTab","providerType","providerContext","ec2","softlayer","choice_str","rawJSON","wizardTabInstance","WIZARD_TABS","wizardTab","vmtemplate","Image.refresh","Image.create_dialog","Image.chown","Image.chgrp","Image.enable","Image.disable","Image.persistent","Image.nonpersistent","Image.clone_dialog","Image.delete","Image.create","Image.list","Image.show","Image.update_template","Image.chmod","Image.chtype","Image.clone","Image.rename","datastoreTableSelectHTML","datastoreTable","DatastoreTable","targeDS","persistentStr","persistentActionEnabled","fsTypeStr","sizeStr","FS_TYPE","vmsTable","VMsTable","VMS_TABLE_ID","Resumable","ResumableFile","resumableObj","getOpt","_prevProgress","relativePath","webkitRelativePath","uniqueIdentifier","$h","generateUniqueIdentifier","_pause","_error","chunkEvent","chunks","isComplete","abortCount","_chunks","uploadNextChunk","removeFile","retry","bootstrap","firedRetry","upload","maxOffset","ResumableChunk","isUploading","uploading","outstanding","preprocessState","pause","isPaused","fileObj","fileObjSize","fileObjType","lastProgressCallback","tested","retries","pendingRetry","chunkSize","startByte","endByte","testHandler","customQuery","getTarget","withCredentials","preprocessFinished","preprocess","doneHandler","retryInterval","resumableChunkNumber","resumableChunkSize","resumableCurrentChunkSize","resumableTotalSize","resumableType","resumableIdentifier","resumableFilename","resumableRelativePath","resumableTotalChunks","mozSlice","webkitSlice","FormData","Blob","forceChunkSize","simultaneousUploads","fileParameterName","throttleProgressCallbacks","prioritizeFirstAndLastChunk","testChunks","maxChunkRetries","chunkRetryInterval","permanentErrors","maxFiles","xhrTimeout","maxFilesErrorCallback","minFileSize","minFileSizeErrorCallback","formatSize","maxFileSize","maxFileSizeErrorCallback","fileType","fileTypeErrorCallback","$opt","custom","onDrop","items","loadFiles","onDragOver","updateQueueTotal","isFile","isDirectory","getAsEntry","webkitGetAsEntry","getAsFile","enqueueFileAddition","createReader","readDir","readEntries","fullPath","addition","appendFilesFromFileList","fileList","errorCount","getFromUniqueIdentifier","srcElement","assignBrowse","domNodes","domNode","tagName","assignDrop","unAssignDrop","totalDone","totalSize","addFile","getSize","_getInternetExplorerVersion","getInternetExplorerVersion","ds_id_raw","BrowserInfo","uploader","file_input","img_json","desc","dev_prefix","fstype","img_obj","tempfile","image_raw","File.refresh","File.create_dialog","File.chown","File.chgrp","File.enable","File.disable","File.delete","File.create","File.list","File.show","File.update_template","File.chmod","File.chtype","File.rename","InfraTab","Cluster.refresh","Cluster.create_dialog","Cluster.update_dialog","Cluster.delete","Cluster.create","cluster","vnet","datastore","Cluster.list","Cluster.show","Cluster.show_to_update","Cluster.addhost","Cluster.delhost","Cluster.adddatastore","Cluster.deldatastore","Cluster.addvnet","Cluster.delvnet","Cluster.update_template","Cluster.rename","HOSTS_TABLE_ID","VNETS_TABLE_ID","DATASTORES_TABLE_ID","selectedHostsList","selectedVNetsList","selectedDatastoresList","selectedHosts","selectedVNets","selectedDatastores","cluster_json","originalHostsList","clusterUpdateId","vnetId","originalVNetsList","datastoreId","originalDatastoresList","hostIds","vnetIds","dsIds","Host.refresh","Host.create_dialog","Host.addtocluster","Host.enable","Host.disable","Host.delete","OpenNebulaCluster","Host.create","Host.list","Host.show","Host.update_template","current_cluster","Host.rename","clusterName","TemplateClusterTr","newClusterId","datastoreBar","datastoreBars","DS","TemplateDatastoresCapacityTable","_canImportWilds","canImportWilds","IMPORT_TEMPLATE","clusterTrHTML","VN_MAD","datastoresCapacityTableHTML","CanImportWilds","unshownTemplate","unshownKeys","ClusterTr","DatastoresCapacityTable","host_graphs","TemplateWilds","dataTableWildHosts","wilds","VM_NAME","safe_name","deploy_id","wilds_list_array","atob","WILDS","vm_raw","import_host_id","wild_row","HYPERVISOR","TemplateESX","dataTableESX","hostListArray","vmm_mad","im_mad","vnm_mad","host_json","vm_mad","DatastoreButtons","Datastore.refresh","Datastore.create_dialog","Datastore.addtocluster","Datastore.chown","Datastore.chgrp","Datastore.delete","Datastore.enable","Datastore.disable","Datastore.create","Datastore.list","Datastore.show","Datastore.fetch_permissions","Datastore.update_template","Datastore.update","Datastore.chmod","ds_info","Datastore.rename","cluster_id_raw","_hideAll","_selectFilesystem","_selectVmwareVmfs","_selectBlockLvm","_selectFsLvm","_selectCeph","_selectGluster","_selectDevices","_selectCustom","ds_type","ds_mad","tm_mad","safe_dirs","base_path","restricted_dirs","limit_transfer_bw","datastore_capacity_check","no_decompress","bridge_list","ds_tmp_dir","vg_name","limit_mb","gluster_host","gluster_volume","ceph_host","ceph_secret","ceph_user","rbd_format","staging_dir","ds_obj","disk_type","datastore_raw","capacityBar","limitStr","SHARED","LIMIT_MB","imagesDataTable","ImagesTable","IMAGES_TABLE_ID","DatastoresTab","VNetButtons","Network.refresh","Network.create_dialog","Network.import_dialog","Network.update_dialog","Network.reserve_dialog","Network.addtocluster","Network.chown","Network.chgrp","Network.delete","OpenNebulaNetwork","ADD_AR_DIALOG_ID","UPDATE_AR_DIALOG_ID","RESERVE_DIALOG_ID","Network.create","Network.list","Network.show","Network.hold","Network.release","Network.add_ar","Network.rm_ar","Network.update_ar","Network.reserve","Network.chmod","Network.rename","Network.show_to_update","Network.update","Network.update_template","vn","vn_info","arTabHTML","str_ar_tab_id","securityGroupsTableHTML","ArTab","_generate_ar_tab_content","securityGroupsTable","SecurityGroupsTable","_setup_ar_tab_content","ar_section","_retrieve_ar_tab_data","ar_type","_fill_ar_tab_data","ar_json","arTab","_setId","setId","arId","arData","arsTableHTML","ar_list_array","ar","AR_ID","GLOBAL_PREFIX","ULA_PREFIX","arOpts","arsTable","ARsTable","reservationTrHTML","prefixHTML","leasesHTML","first_ip","last_ip","first_ip6_global","last_ip6_global","first_ip6_ula","last_ip6_ula","secgroupTableHTML","arKnownAttr","arExtraAttr","first_mac","last_mac","last_selected_row_ar","secgroupTable","processedARList","leases","TemplateAR","ar_list_dataTable","_arHTML","_arSetup","ar_id","getAR","MAC_END","IP_END","IP6_GLOBAL_END","IP6_ULA_END","PARENT_NETWORK_AR_ID","SG_TABLE_ID","TemplateARInfo","col0HTML","col1HTML","IP6_LINK","processedLeases","LEASE","lease","TemplateLeases","ip","spinner","arTabObjects","number_of_ar","addARTab","_add_ar_tab","ar_tab","network_json","vnet_json","vnet_raw","VNetsTab","SecurityGroup.refresh","SecurityGroup.create_dialog","SecurityGroup.update_dialog","SecurityGroup.chown","SecurityGroup.chgrp","SecurityGroup.clone_dialog","SecurityGroup.delete","SecurityGroup.create","SecurityGroup.list","SecurityGroup.show","SecurityGroup.show_to_update","SecurityGroup.update","SecurityGroup.update_template","SecurityGroup.chmod","SecurityGroup.clone","SecurityGroup.rename","OpenNebulaSecurityGroup","ruleList","ruleTextList","icmp_type_val","defaultSelected","security_group_json","security_group","security_group_raw","ZoneButtons","Zone.refresh","Zone.create_dialog","Zone.delete","ENDPOINT","Zone.create","Zone.list","Zone.show","Zone.show_to_update","Zone.update_template","Zone.fetch_template","Zone.rename","_submit","endpoint","zoneJSON","ZonesTab","Marketplace.refresh","Marketplace.import","publisher","hypervisor","arch","tags","_id","$oid","IMPORT_DIALOG_ID","Marketplace.list","appliances","Marketplace.show","opennebula_template","ContentHTML","number_of_files","template_created","images_information","template_context","local_context","MD5","SHA1","DRIVER","DEV_PREFIX","FROM_APP","FROM_APP_NAME","FROM_APP_FILE","file_index","file_context","try_to_create_template","_try_to_create_template","images_created","image_index","image_info","catalog","short_description","downloads","download","Service.refresh","Service.chown","Service.chgrp","Service.shutdown","Service.recover","Service.delete","roleElements","ROLES_PANEL_ID","roleVMElements","roleCallback","OpenNebulaRole","SCALE_DIALOG_ID","Service.show","Service.chmod","Service.list","Role.scale_dialog","lenght","roleIds","Role.update","Role.hold","Role.release","Role.suspend","Role.resume","Role.stop","Role.reboot_hard","Role.delete_recreate","Role.reboot","Role.poweroff","Role.poweroff_hard","Role.undeploy","Role.undeploy_hard","Role.snapshot_create","Role.shutdown","Role.shutdown_hard","Role.delete","Role.recover","RoleVM.deploy","RoleVM.migrate","RoleVM.migrate_live","RoleVM.hold","RoleVM.release","RoleVM.suspend","RoleVM.resume","RoleVM.stop","RoleVM.reboot_hard","RoleVM.delete_recreate","RoleVM.reboot","RoleVM.poweroff","RoleVM.poweroff_hard","RoleVM.undeploy","RoleVM.undeploy_hard","RoleVM.shutdown","RoleVM.shutdown_hard","RoleVM.delete","RoleVM.recover","RoleVM.resched","RoleVM.unresched","RoleVM.chown","RoleVM.chgrp","OpenNebulaService","deployment","shutdown_action","ready_status_gate","VMButtons","servicePanel","roleList","vmsTableColumns","min_adjust_step","expression_evaluated","period_number","cooldown","true_evals","scheduled_policies","recurrence","selected_row_role_id","last_selected_row_role","servicerolesDataTable","DomDataTable","role_index","roleHTML","roleSetup","roles_buttons","_roleHTML","scale_up","disposed","READY","TemplateRoleInfo","_roleSetup","visibleColumns","serviceroleVMsDataTable","roles_vm_buttons","logs","ServiceTemplate.refresh","ServiceTemplate.create_dialog","ServiceTemplate.instantiate_dialog","ServiceTemplate.update_dialog","ServiceTemplate.chown","ServiceTemplate.chgrp","ServiceTemplate.delete","ServiceTemplate.show","ServiceTemplate.chmod","ServiceTemplate.list","ServiceTemplate.create","ServiceTemplate.show_to_update","ServiceTemplate.update","ServiceTemplate.instantiate","customAttrs","roles_using_net","vm_template_contents","reg","BasePanel","RoleTab","html_role_id","_role_tab_content","_setup_role_tab_content","role_section","TemplateElasticityRowHTML","TemplateScheRowHTML","_removeEmptyObjects","policy","time_format","network_names","obj_length","roleTabObjects","roles_index","_redo_service_networks_selector","addRoleTab","tab_id","parent_role_available","selected_parents","shutdown_action_service","json_template","roles_names","_redo_service_networks_selector_role","selected_networks","service_networks","role_tab_id","_add_role_tab","role_tab","service_template_json","OpenNebulaServiceTemplate","n_roles","n_roles_done","div_id","vm_template_json","service_name","Support.refresh","Support.upload","Support.signout","Support.create_dialog","_show_support_connect","_show_support_list","_startIntervalRefresh","support_interval_function","_stopIntervalRefresh","showSupportConnect","showSupportList","startIntervalRefresh","stopIntervalRefresh","OpenNebulaSupport","SupportUtils","UPLOAD_DIALOG_ID","Support.list","open_requests","pending_requests","REQUEST_POOL","REQUEST","Support.show","Support.create","Support.update","requestId","subject","created_at","tabContext","html_body","html_description","comments","author","request_id","request_json","solved","opennebula_version","TemplateTitle","TemplateSubheader","_setupAccordion","_insertUserAndZoneSelector","zoneRefresh","user_login_content","ZONE_NAME","SETTINGS_TAB_ID","_tabs","DASHBOARD_TAB_ID","PROVISION_TAB_ID","_commonDialogs","datatables","foundation-datatables","jgrowl","foundation.core","foundation.abide","foundation.accordion","foundation.alert","foundation.clearing","foundation.dropdown","foundation.equalizer","foundation.interchange","foundation.joyride","foundation.magellan","foundation.offcanvas","foundation.orbit","foundation.reveal","foundation.slider","foundation.tab","foundation.tooltip","foundation.topbar","jquery.cookie","fastclick","modernizr","resumable","flot","flot.stack","flot.resize","flot.time","flot.tooltip","nouislider","vnc-util","vnc-webutil","vnc-base64","vnc-websock","vnc-des","vnc-keysymdef","vnc-keyboard","vnc-input","vnc-display","vnc-jsunzip","vnc-rfb","vnc-keysym","spice-main","spice-spicearraybuffer","spice-enums","spice-atKeynames","spice-utils","spice-png","spice-lz","spice-quic","spice-bitmap","spice-spicedataview","spice-spicetype","spice-spicemsg","spice-wire","spice-spiceconn","spice-display","spice-inputs","spice-webm","spice-playback","spice-simulatecursor","spice-cursor","spice-jsbn","spice-rsa","spice-prng4","spice-rng","spice-sha1","spice-ticket","spice-resize","spice-filexfer","shim"],"mappings":"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A,gBACA,iBACA,eACA,iBACA,mBACA,cACA,iBACA,0BACA,2BACA,oBACA,kBACA,kBACA,gBACA,0BACA,0BACA,eACA,eACA,uBACA,yBACA,iBACA,iBACA,sBACA,0BACA,0BACA,kCACA,yBACA,iCACA,wBACA,uBACA,wBACA,2BAGAC,GACA,WACA,SACA,OACA,UACA,UACA,OACA,OACA,OACA,UACA,SACA,SACA,SACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,OACA,OACA,OACA,OACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,SACA,SACA,OACA,UACA,UACA,OACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGAH,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGAjB,GACA,WACA,iBACA,eACA,uBAGAI,GACA,WACA,iBACA,eACA,yBACA,uBACA,sBACA,eACA,uBAGAiB,GACA,OACA,QACA,QAGAC,GACA,OACA,UACA,eACA,WACA,gBACA,WACA,gBACA,OACA,UACA,OACA,UACA,SACA,OACA,SACA,kBACA,SACA,cACA,UACA,YACA,WACA,gBACA,cACA,cACA,aACA,cAGApgC,GACAgzB,SAAAoC,EACApxF,OACAq8F,KAAA,EACAC,QAAA,EACAC,KAAA,EACAC,OAAA,EACAC,QAAA,EACAC,UAAA,EACAC,KAAA,EACAC,OAAA,EACAC,SAAA,EACAC,WAAA,GAEAC,WACAC,SAAA,EACAC,OAAA,EACAC,KAAA,EACAC,QAAA,EACAC,QAAA,EACAC,UAAA,EACAC,aAAA,EACAC,aAAA,EACAC,eAAA,EACAC,cAAA,EACAC,YAAA,GACAC,OAAA,GACAC,SAAA,GACAC,OAAA,GACAC,QAAA,GACAC,iBAAA,GACAC,QAAA,GACAC,QAAA,GACAC,kBAAA,GACAC,aAAA,GACAC,cAAA,GACAC,eAAA,GACAC,aAAA,GACAC,eAAA,GACAC,iBAAA,GACAC,YAAA,GACAC,eAAA,GAC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,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,SAAAC,IAAA,KAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,QAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,K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,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAEAjzB,SACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,E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A,QAAA2M,GAAA9sJ,EAAAmgJ,GACA,GAAAszH,GAAAtzH,EAAA,EACA,IAAAszH,EAAA,CAGA,GAFAj7G,EAAA/xC,KAAAzmH,EAAAyzQ,GAEAA,GAAAA,EAAA,KAGA,IAAA,GAFAE,GAAAF,EAAA,KAAAxhP,MAAA,KAEA3mC,EAAA,EAAA,EAAAA,GAAAA,EAAAqoR,EAAAvlR,OAAA9C,IACAy+B,EAAA,SAAAz+B,EAAA0U,GAAAnL,IAAA8+Q,EAAAroR,UAIA60J,GAAA,GAGA,GAAAuzH,GAAAvzH,EAAA,QACAuzH,KACAl7G,EAAA/xC,KAAAzmH,EAAA0zQ,SACAvzH,GAAA,UDxGA99F,EAAA,iBACA,IAAAG,GAAAH,EAAA,mBACAgE,EAAAhE,EAAA,gBACA23F,EAAA33F,EAAA,cACAm2G,EAAAn2G,EAAA,uBACA6wN,EAAA7wN,EAAA,4BChKA06E,EAAA16E,EAAA,iBAMA2uN,EAAA3uN,EAAA,oBACA+wN,GACA,mBACA,gBACA,mBACA,gBACA,gBACA,cACA,gBACA,cACA,kBACA,eACA,kBACA,eACA,WACA,mBACA,iBACA,eACA,kBACA,gBACA,gBACA,gBACA,gBACA,YACA,WACA,mBACA,mBACA,qBACA,mBACA,WACA,uBACA,qBACA,uBACA,qBACA,aACA,eACA,oBACA,kBACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,YACA,iBACA,cACA,iBACA,cACA,cACA,YACA,oBACA,iBACA,gBACA,gBACA,gBACA,gBACA,cACA,YACA,oBACA,kBACA,gBACA,cACA,iBACA,sBACA,kBACA,mBACA,aACA,aACA,aACA,mBACA,gBACA,wBACA,qBACA,mBACA,aACA,sBACA,0BACA,wBACA,0BACA,wBACA,wBACA,sBACA,iBACA,aACA,kBACA,gBACA,iBACA,kBACA,eAsCA,OAPArC,GAAA1/Q,UAAAohC,YAAAs+O,EACAA,EAAA1/Q,UAAA8wC,KAAA26F,EACAi0I,EAAA1/Q,UAAA8sC,MAAAqvB,EACAujN,EAAA1/Q,UAAA+mF,OAAAonE,EACAuxH,EAAA1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","sourcesContent":["/*\n * Websock: high-performance binary WebSockets\n * Copyright (C) 2012 Joel Martin\n * Licensed under MPL 2.0 (see LICENSE.txt)\n *\n * Websock is similar to the standard WebSocket object but Websock\n * enables communication with raw TCP sockets (i.e. the binary stream)\n * via websockify. This is accomplished by base64 encoding the data\n * stream between Websock and websockify.\n *\n * Websock has built-in receive queue buffering; the message event\n * does not contain actual data but is simply a notification that\n * there is new data available. Several rQ* methods are available to\n * read binary data off of the receive queue.\n */\n\n/*jslint browser: true, bitwise: true */\n/*global Util, Base64 */\n\n\n// Load Flash WebSocket emulator if needed\n\n// To force WebSocket emulator even when native WebSocket available\n//window.WEB_SOCKET_FORCE_FLASH = true;\n// To enable WebSocket emulator debug:\n//window.WEB_SOCKET_DEBUG=1;\n\nif (window.WebSocket && !window.WEB_SOCKET_FORCE_FLASH) {\n    Websock_native = true;\n} else if (window.MozWebSocket && !window.WEB_SOCKET_FORCE_FLASH) {\n    Websock_native = true;\n    window.WebSocket = window.MozWebSocket;\n} else {\n    /* no builtin WebSocket so load web_socket.js */\n\n    Websock_native = false;\n    (function () {\n        window.WEB_SOCKET_SWF_LOCATION = Util.get_include_uri() +\n                    \"web-socket-js/WebSocketMain.swf\";\n        if (Util.Engine.trident) {\n            Util.Debug(\"Forcing uncached load of WebSocketMain.swf\");\n            window.WEB_SOCKET_SWF_LOCATION += \"?\" + Math.random();\n        }\n        Util.load_scripts([\"web-socket-js/swfobject.js\",\n                           \"web-socket-js/web_socket.js\"]);\n    })();\n}\n\n\nfunction Websock() {\n    \"use strict\";\n\n    this._websocket = null;  // WebSocket object\n    this._rQ = [];           // Receive queue\n    this._rQi = 0;           // Receive queue index\n    this._rQmax = 10000;     // Max receive queue size before compacting\n    this._sQ = [];           // Send queue\n\n    this._mode = 'base64';    // Current WebSocket mode: 'binary', 'base64'\n    this.maxBufferedAmount = 200;\n\n    this._eventHandlers = {\n        'message': function () {},\n        'open': function () {},\n        'close': function () {},\n        'error': function () {}\n    };\n}\n\n(function () {\n    \"use strict\";\n    Websock.prototype = {\n        // Getters and Setters\n        get_sQ: function () {\n            return this._sQ;\n        },\n\n        get_rQ: function () {\n            return this._rQ;\n        },\n\n        get_rQi: function () {\n            return this._rQi;\n        },\n\n        set_rQi: function (val) {\n            this._rQi = val;\n        },\n\n        // Receive Queue\n        rQlen: function () {\n            return this._rQ.length - this._rQi;\n        },\n\n        rQpeek8: function () {\n            return this._rQ[this._rQi];\n        },\n\n        rQshift8: function () {\n            return this._rQ[this._rQi++];\n        },\n\n        rQskip8: function () {\n            this._rQi++;\n        },\n\n        rQskipBytes: function (num) {\n            this._rQi += num;\n        },\n\n        rQunshift8: function (num) {\n            if (this._rQi === 0) {\n                this._rQ.unshift(num);\n            } else {\n                this._rQi--;\n                this._rQ[this._rQi] = num;\n            }\n        },\n\n        rQshift16: function () {\n            return (this._rQ[this._rQi++] << 8) +\n                   this._rQ[this._rQi++];\n        },\n\n        rQshift32: function () {\n            return (this._rQ[this._rQi++] << 24) +\n                   (this._rQ[this._rQi++] << 16) +\n                   (this._rQ[this._rQi++] << 8) +\n                   this._rQ[this._rQi++];\n        },\n\n        rQshiftStr: function (len) {\n            if (typeof(len) === 'undefined') { len = this.rQlen(); }\n            var arr = this._rQ.slice(this._rQi, this._rQi + len);\n            this._rQi += len;\n            return String.fromCharCode.apply(null, arr);\n        },\n\n        rQshiftBytes: function (len) {\n            if (typeof(len) === 'undefined') { len = this.rQlen(); }\n            this._rQi += len;\n            return this._rQ.slice(this._rQi - len, this._rQi);\n        },\n\n        rQslice: function (start, end) {\n            if (end) {\n                return this._rQ.slice(this._rQi + start, this._rQi + end);\n            } else {\n                return this._rQ.slice(this._rQi + start);\n            }\n        },\n\n        // Check to see if we must wait for 'num' bytes (default to FBU.bytes)\n        // to be available in the receive queue. Return true if we need to\n        // wait (and possibly print a debug message), otherwise false.\n        rQwait: function (msg, num, goback) {\n            var rQlen = this._rQ.length - this._rQi; // Skip rQlen() function call\n            if (rQlen < num) {\n                if (goback) {\n                    if (this._rQi < goback) {\n                        throw new Error(\"rQwait cannot backup \" + goback + \" bytes\");\n                    }\n                    this._rQi -= goback;\n                }\n                return true; // true means need more data\n            }\n            return false;\n        },\n\n        // Send Queue\n\n        flush: function () {\n            if (this._websocket.bufferedAmount !== 0) {\n                Util.Debug(\"bufferedAmount: \" + this._websocket.bufferedAmount);\n            }\n\n            if (this._websocket.bufferedAmount < this.maxBufferedAmount) {\n                if (this._sQ.length > 0) {\n                    this._websocket.send(this._encode_message());\n                    this._sQ = [];\n                }\n\n                return true;\n            } else {\n                Util.Info(\"Delaying send, bufferedAmount: \" +\n                        this._websocket.bufferedAmount);\n                return false;\n            }\n        },\n\n        send: function (arr) {\n           this._sQ = this._sQ.concat(arr);\n           return this.flush();\n        },\n\n        send_string: function (str) {\n            this.send(str.split('').map(function (chr) {\n                return chr.charCodeAt(0);\n            }));\n        },\n\n        // Event Handlers\n        on: function (evt, handler) {\n            this._eventHandlers[evt] = handler;\n        },\n\n        init: function (protocols, ws_schema) {\n            this._rQ = [];\n            this._rQi = 0;\n            this._sQ = [];\n            this._websocket = null;\n\n            // Check for full typed array support\n            var bt = false;\n            if (('Uint8Array' in window) &&\n                    ('set' in Uint8Array.prototype)) {\n                bt = true;\n            }\n\n            // Check for full binary type support in WebSockets\n            // Inspired by:\n            // https://github.com/Modernizr/Modernizr/issues/370\n            // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/websockets/binary.js\n            var wsbt = false;\n            try {\n                if (bt && ('binaryType' in WebSocket.prototype ||\n                           !!(new WebSocket(ws_schema + '://.').binaryType))) {\n                    Util.Info(\"Detected binaryType support in WebSockets\");\n                    wsbt = true;\n                }\n            } catch (exc) {\n                // Just ignore failed test localhost connection\n            }\n\n            // Default protocols if not specified\n            if (typeof(protocols) === \"undefined\") {\n                if (wsbt) {\n                    protocols = ['binary', 'base64'];\n                } else {\n                    protocols = 'base64';\n                }\n            }\n\n            if (!wsbt) {\n                if (protocols === 'binary') {\n                    throw new Error('WebSocket binary sub-protocol requested but not supported');\n                }\n\n                if (typeof(protocols) === 'object') {\n                    var new_protocols = [];\n\n                    for (var i = 0; i < protocols.length; i++) {\n                        if (protocols[i] === 'binary') {\n                            Util.Error('Skipping unsupported WebSocket binary sub-protocol');\n                        } else {\n                            new_protocols.push(protocols[i]);\n                        }\n                    }\n\n                    if (new_protocols.length > 0) {\n                        protocols = new_protocols;\n                    } else {\n                        throw new Error(\"Only WebSocket binary sub-protocol was requested and is not supported.\");\n                    }\n                }\n            }\n\n            return protocols;\n        },\n\n        open: function (uri, protocols) {\n            var ws_schema = uri.match(/^([a-z]+):\\/\\//)[1];\n            protocols = this.init(protocols, ws_schema);\n\n            this._websocket = new WebSocket(uri, protocols);\n\n            if (protocols.indexOf('binary') >= 0) {\n                this._websocket.binaryType = 'arraybuffer';\n            }\n\n            this._websocket.onmessage = this._recv_message.bind(this);\n            this._websocket.onopen = (function () {\n                Util.Debug('>> WebSock.onopen');\n                if (this._websocket.protocol) {\n                    this._mode = this._websocket.protocol;\n                    Util.Info(\"Server choose sub-protocol: \" + this._websocket.protocol);\n                } else {\n                    this._mode = 'base64';\n                    Util.Error('Server select no sub-protocol!: ' + this._websocket.protocol);\n                }\n                this._eventHandlers.open();\n                Util.Debug(\"<< WebSock.onopen\");\n            }).bind(this);\n            this._websocket.onclose = (function (e) {\n                Util.Debug(\">> WebSock.onclose\");\n                this._eventHandlers.close(e);\n                Util.Debug(\"<< WebSock.onclose\");\n            }).bind(this);\n            this._websocket.onerror = (function (e) {\n                Util.Debug(\">> WebSock.onerror: \" + e);\n                this._eventHandlers.error(e);\n                Util.Debug(\"<< WebSock.onerror: \" + e);\n            }).bind(this);\n        },\n\n        close: function () {\n            if (this._websocket) {\n                if ((this._websocket.readyState === WebSocket.OPEN) ||\n                        (this._websocket.readyState === WebSocket.CONNECTING)) {\n                    Util.Info(\"Closing WebSocket connection\");\n                    this._websocket.close();\n                }\n\n                this._websocket.onmessage = function (e) { return; };\n            }\n        },\n\n        // private methods\n        _encode_message: function () {\n            if (this._mode === 'binary') {\n                // Put in a binary arraybuffer\n                return (new Uint8Array(this._sQ)).buffer;\n            } else {\n                // base64 encode\n                return Base64.encode(this._sQ);\n            }\n        },\n\n        _decode_message: function (data) {\n            if (this._mode === 'binary') {\n                // push arraybuffer values onto the end\n                var u8 = new Uint8Array(data);\n                for (var i = 0; i < u8.length; i++) {\n                    this._rQ.push(u8[i]);\n                }\n            } else {\n                // base64 decode and concat to end\n                this._rQ = this._rQ.concat(Base64.decode(data, 0));\n            }\n        },\n\n        _recv_message: function (e) {\n            try {\n                this._decode_message(e.data);\n                if (this.rQlen() > 0) {\n                    this._eventHandlers.message();\n                    // Compact the receive queue\n                    if (this._rQ.length > this._rQmax) {\n                        this._rQ = this._rQ.slice(this._rQi);\n                        this._rQi = 0;\n                    }\n                } else {\n                    Util.Debug(\"Ignoring empty message\");\n                }\n            } catch (exc) {\n                var exception_str = \"\";\n                if (exc.name) {\n                    exception_str += \"\\n    name: \" + exc.name + \"\\n\";\n                    exception_str += \"    message: \" + exc.message + \"\\n\";\n                }\n\n                if (typeof exc.description !== 'undefined') {\n                    exception_str += \"    description: \" + exc.description + \"\\n\";\n                }\n\n                if (typeof exc.stack !== 'undefined') {\n                    exception_str += exc.stack;\n                }\n\n                if (exception_str.length > 0) {\n                    Util.Error(\"recv_message, caught exception: \" + exception_str);\n                } else {\n                    Util.Error(\"recv_message, caught exception: \" + exc);\n                }\n\n                if (typeof exc.name !== 'undefined') {\n                    this._eventHandlers.error(exc.name + \": \" + exc.message);\n                } else {\n                    this._eventHandlers.error(exc);\n                }\n            }\n        }\n    };\n})();\n\ndefine(\"vnc-websock\", [\"vnc-util\"], function(){});\n\n","/*\n * Ported from Flashlight VNC ActionScript implementation:\n *     http://www.wizhelp.com/flashlight-vnc/\n *\n * Full attribution follows:\n *\n * -------------------------------------------------------------------------\n *\n * This DES class has been extracted from package Acme.Crypto for use in VNC.\n * The unnecessary odd parity code has been removed.\n *\n * These changes are:\n *  Copyright (C) 1999 AT&T Laboratories Cambridge.  All Rights Reserved.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n *\n\n * DesCipher - the DES encryption method\n *\n * The meat of this code is by Dave Zimmerman <dzimm@widget.com>, and is:\n *\n * Copyright (c) 1996 Widget Workshop, Inc. All Rights Reserved.\n *\n * Permission to use, copy, modify, and distribute this software\n * and its documentation for NON-COMMERCIAL or COMMERCIAL purposes and\n * without fee is hereby granted, provided that this copyright notice is kept \n * intact. \n * \n * WIDGET WORKSHOP MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY\n * OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\n * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. WIDGET WORKSHOP SHALL NOT BE LIABLE\n * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR\n * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.\n * \n * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE\n * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE\n * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT\n * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE\n * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE\n * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE\n * PHYSICAL OR ENVIRONMENTAL DAMAGE (\"HIGH RISK ACTIVITIES\").  WIDGET WORKSHOP\n * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR\n * HIGH RISK ACTIVITIES.\n *\n *\n * The rest is:\n *\n * Copyright (C) 1996 by Jef Poskanzer <jef@acme.com>.  All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * Visit the ACME Labs Java page for up-to-date versions of this and other\n * fine Java utilities: http://www.acme.com/java/\n */\n\n/* jslint white: false */\n\nfunction DES(passwd) {\n    \"use strict\";\n\n    // Tables, permutations, S-boxes, etc.\n    // jshint -W013\n    var PC2 = [13,16,10,23, 0, 4, 2,27,14, 5,20, 9,22,18,11, 3,\n               25, 7,15, 6,26,19,12, 1,40,51,30,36,46,54,29,39,\n               50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31 ],\n        totrot = [ 1, 2, 4, 6, 8,10,12,14,15,17,19,21,23,25,27,28],\n        z = 0x0, a,b,c,d,e,f, SP1,SP2,SP3,SP4,SP5,SP6,SP7,SP8,\n        keys = [];\n\n    // jshint -W015\n    a=1<<16; b=1<<24; c=a|b; d=1<<2; e=1<<10; f=d|e;\n    SP1 = [c|e,z|z,a|z,c|f,c|d,a|f,z|d,a|z,z|e,c|e,c|f,z|e,b|f,c|d,b|z,z|d,\n           z|f,b|e,b|e,a|e,a|e,c|z,c|z,b|f,a|d,b|d,b|d,a|d,z|z,z|f,a|f,b|z,\n           a|z,c|f,z|d,c|z,c|e,b|z,b|z,z|e,c|d,a|z,a|e,b|d,z|e,z|d,b|f,a|f,\n           c|f,a|d,c|z,b|f,b|d,z|f,a|f,c|e,z|f,b|e,b|e,z|z,a|d,a|e,z|z,c|d];\n    a=1<<20; b=1<<31; c=a|b; d=1<<5; e=1<<15; f=d|e;\n    SP2 = [c|f,b|e,z|e,a|f,a|z,z|d,c|d,b|f,b|d,c|f,c|e,b|z,b|e,a|z,z|d,c|d,\n           a|e,a|d,b|f,z|z,b|z,z|e,a|f,c|z,a|d,b|d,z|z,a|e,z|f,c|e,c|z,z|f,\n           z|z,a|f,c|d,a|z,b|f,c|z,c|e,z|e,c|z,b|e,z|d,c|f,a|f,z|d,z|e,b|z,\n           z|f,c|e,a|z,b|d,a|d,b|f,b|d,a|d,a|e,z|z,b|e,z|f,b|z,c|d,c|f,a|e];\n    a=1<<17; b=1<<27; c=a|b; d=1<<3; e=1<<9; f=d|e;\n    SP3 = [z|f,c|e,z|z,c|d,b|e,z|z,a|f,b|e,a|d,b|d,b|d,a|z,c|f,a|d,c|z,z|f,\n           b|z,z|d,c|e,z|e,a|e,c|z,c|d,a|f,b|f,a|e,a|z,b|f,z|d,c|f,z|e,b|z,\n           c|e,b|z,a|d,z|f,a|z,c|e,b|e,z|z,z|e,a|d,c|f,b|e,b|d,z|e,z|z,c|d,\n           b|f,a|z,b|z,c|f,z|d,a|f,a|e,b|d,c|z,b|f,z|f,c|z,a|f,z|d,c|d,a|e];\n    a=1<<13; b=1<<23; c=a|b; d=1<<0; e=1<<7; f=d|e;\n    SP4 = [c|d,a|f,a|f,z|e,c|e,b|f,b|d,a|d,z|z,c|z,c|z,c|f,z|f,z|z,b|e,b|d,\n           z|d,a|z,b|z,c|d,z|e,b|z,a|d,a|e,b|f,z|d,a|e,b|e,a|z,c|e,c|f,z|f,\n           b|e,b|d,c|z,c|f,z|f,z|z,z|z,c|z,a|e,b|e,b|f,z|d,c|d,a|f,a|f,z|e,\n           c|f,z|f,z|d,a|z,b|d,a|d,c|e,b|f,a|d,a|e,b|z,c|d,z|e,b|z,a|z,c|e];\n    a=1<<25; b=1<<30; c=a|b; d=1<<8; e=1<<19; f=d|e;\n    SP5 = [z|d,a|f,a|e,c|d,z|e,z|d,b|z,a|e,b|f,z|e,a|d,b|f,c|d,c|e,z|f,b|z,\n           a|z,b|e,b|e,z|z,b|d,c|f,c|f,a|d,c|e,b|d,z|z,c|z,a|f,a|z,c|z,z|f,\n           z|e,c|d,z|d,a|z,b|z,a|e,c|d,b|f,a|d,b|z,c|e,a|f,b|f,z|d,a|z,c|e,\n           c|f,z|f,c|z,c|f,a|e,z|z,b|e,c|z,z|f,a|d,b|d,z|e,z|z,b|e,a|f,b|d];\n    a=1<<22; b=1<<29; c=a|b; d=1<<4; e=1<<14; f=d|e;\n    SP6 = [b|d,c|z,z|e,c|f,c|z,z|d,c|f,a|z,b|e,a|f,a|z,b|d,a|d,b|e,b|z,z|f,\n           z|z,a|d,b|f,z|e,a|e,b|f,z|d,c|d,c|d,z|z,a|f,c|e,z|f,a|e,c|e,b|z,\n           b|e,z|d,c|d,a|e,c|f,a|z,z|f,b|d,a|z,b|e,b|z,z|f,b|d,c|f,a|e,c|z,\n           a|f,c|e,z|z,c|d,z|d,z|e,c|z,a|f,z|e,a|d,b|f,z|z,c|e,b|z,a|d,b|f];\n    a=1<<21; b=1<<26; c=a|b; d=1<<1; e=1<<11; f=d|e;\n    SP7 = [a|z,c|d,b|f,z|z,z|e,b|f,a|f,c|e,c|f,a|z,z|z,b|d,z|d,b|z,c|d,z|f,\n           b|e,a|f,a|d,b|e,b|d,c|z,c|e,a|d,c|z,z|e,z|f,c|f,a|e,z|d,b|z,a|e,\n           b|z,a|e,a|z,b|f,b|f,c|d,c|d,z|d,a|d,b|z,b|e,a|z,c|e,z|f,a|f,c|e,\n           z|f,b|d,c|f,c|z,a|e,z|z,z|d,c|f,z|z,a|f,c|z,z|e,b|d,b|e,z|e,a|d];\n    a=1<<18; b=1<<28; c=a|b; d=1<<6; e=1<<12; f=d|e;\n    SP8 = [b|f,z|e,a|z,c|f,b|z,b|f,z|d,b|z,a|d,c|z,c|f,a|e,c|e,a|f,z|e,z|d,\n           c|z,b|d,b|e,z|f,a|e,a|d,c|d,c|e,z|f,z|z,z|z,c|d,b|d,b|e,a|f,a|z,\n           a|f,a|z,c|e,z|e,z|d,c|d,z|e,a|f,b|e,z|d,b|d,c|z,c|d,b|z,a|z,b|f,\n           z|z,c|f,a|d,b|d,c|z,b|e,b|f,z|z,c|f,a|e,a|e,z|f,z|f,a|d,b|z,c|e];\n    // jshint +W013,+W015\n\n    // Set the key.\n    function setKeys(keyBlock) {\n        var i, j, l, m, n, o, pc1m = [], pcr = [], kn = [],\n            raw0, raw1, rawi, KnLi;\n\n        for (j = 0, l = 56; j < 56; ++j, l -= 8) {\n            l += l < -5 ? 65 : l < -3 ? 31 : l < -1 ? 63 : l === 27 ? 35 : 0; // PC1\n            m = l & 0x7;\n            pc1m[j] = ((keyBlock[l >>> 3] & (1<<m)) !== 0) ? 1: 0;\n        }\n\n        for (i = 0; i < 16; ++i) {\n            m = i << 1;\n            n = m + 1;\n            kn[m] = kn[n] = 0;\n            for (o = 28; o < 59; o += 28) {\n                for (j = o - 28; j < o; ++j) {\n                    l = j + totrot[i];\n                    if (l < o) {\n                        pcr[j] = pc1m[l];\n                    } else {\n                        pcr[j] = pc1m[l - 28];\n                    }\n                }\n            }\n            for (j = 0; j < 24; ++j) {\n                if (pcr[PC2[j]] !== 0) {\n                    kn[m] |= 1 << (23 - j);\n                }\n                if (pcr[PC2[j + 24]] !== 0) {\n                    kn[n] |= 1 << (23 - j);\n                }\n            }\n        }\n\n        // cookey\n        for (i = 0, rawi = 0, KnLi = 0; i < 16; ++i) {\n            raw0 = kn[rawi++];\n            raw1 = kn[rawi++];\n            keys[KnLi] = (raw0 & 0x00fc0000) << 6;\n            keys[KnLi] |= (raw0 & 0x00000fc0) << 10;\n            keys[KnLi] |= (raw1 & 0x00fc0000) >>> 10;\n            keys[KnLi] |= (raw1 & 0x00000fc0) >>> 6;\n            ++KnLi;\n            keys[KnLi] = (raw0 & 0x0003f000) << 12;\n            keys[KnLi] |= (raw0 & 0x0000003f) << 16;\n            keys[KnLi] |= (raw1 & 0x0003f000) >>> 4;\n            keys[KnLi] |= (raw1 & 0x0000003f);\n            ++KnLi;\n        }\n    }\n\n    // Encrypt 8 bytes of text\n    function enc8(text) {\n        var i = 0, b = text.slice(), fval, keysi = 0,\n            l, r, x; // left, right, accumulator\n\n        // Squash 8 bytes to 2 ints\n        l = b[i++]<<24 | b[i++]<<16 | b[i++]<<8 | b[i++];\n        r = b[i++]<<24 | b[i++]<<16 | b[i++]<<8 | b[i++];\n\n        x = ((l >>> 4) ^ r) & 0x0f0f0f0f;\n        r ^= x;\n        l ^= (x << 4);\n        x = ((l >>> 16) ^ r) & 0x0000ffff;\n        r ^= x;\n        l ^= (x << 16);\n        x = ((r >>> 2) ^ l) & 0x33333333;\n        l ^= x;\n        r ^= (x << 2);\n        x = ((r >>> 8) ^ l) & 0x00ff00ff;\n        l ^= x;\n        r ^= (x << 8);\n        r = (r << 1) | ((r >>> 31) & 1);\n        x = (l ^ r) & 0xaaaaaaaa;\n        l ^= x;\n        r ^= x;\n        l = (l << 1) | ((l >>> 31) & 1);\n\n        for (i = 0; i < 8; ++i) {\n            x = (r << 28) | (r >>> 4);\n            x ^= keys[keysi++];\n            fval =  SP7[x & 0x3f];\n            fval |= SP5[(x >>> 8) & 0x3f];\n            fval |= SP3[(x >>> 16) & 0x3f];\n            fval |= SP1[(x >>> 24) & 0x3f];\n            x = r ^ keys[keysi++];\n            fval |= SP8[x & 0x3f];\n            fval |= SP6[(x >>> 8) & 0x3f];\n            fval |= SP4[(x >>> 16) & 0x3f];\n            fval |= SP2[(x >>> 24) & 0x3f];\n            l ^= fval;\n            x = (l << 28) | (l >>> 4);\n            x ^= keys[keysi++];\n            fval =  SP7[x & 0x3f];\n            fval |= SP5[(x >>> 8) & 0x3f];\n            fval |= SP3[(x >>> 16) & 0x3f];\n            fval |= SP1[(x >>> 24) & 0x3f];\n            x = l ^ keys[keysi++];\n            fval |= SP8[x & 0x0000003f];\n            fval |= SP6[(x >>> 8) & 0x3f];\n            fval |= SP4[(x >>> 16) & 0x3f];\n            fval |= SP2[(x >>> 24) & 0x3f];\n            r ^= fval;\n        }\n\n        r = (r << 31) | (r >>> 1);\n        x = (l ^ r) & 0xaaaaaaaa;\n        l ^= x;\n        r ^= x;\n        l = (l << 31) | (l >>> 1);\n        x = ((l >>> 8) ^ r) & 0x00ff00ff;\n        r ^= x;\n        l ^= (x << 8);\n        x = ((l >>> 2) ^ r) & 0x33333333;\n        r ^= x;\n        l ^= (x << 2);\n        x = ((r >>> 16) ^ l) & 0x0000ffff;\n        l ^= x;\n        r ^= (x << 16);\n        x = ((r >>> 4) ^ l) & 0x0f0f0f0f;\n        l ^= x;\n        r ^= (x << 4);\n\n        // Spread ints to bytes\n        x = [r, l];\n        for (i = 0; i < 8; i++) {\n            b[i] = (x[i>>>2] >>> (8 * (3 - (i % 4)))) % 256;\n            if (b[i] < 0) { b[i] += 256; } // unsigned\n        }\n        return b;\n    }\n\n    // Encrypt 16 bytes of text using passwd as key\n    function encrypt(t) {\n        return enc8(t.slice(0, 8)).concat(enc8(t.slice(8, 16)));\n    }\n\n    setKeys(passwd);             // Setup keys\n    return {'encrypt': encrypt}; // Public interface\n\n} // function DES\n;\ndefine(\"vnc-des\", [\"vnc-util\"], function(){});\n\n","var kbdUtil = (function() {\n    \"use strict\";\n\n    function substituteCodepoint(cp) {\n        // Any Unicode code points which do not have corresponding keysym entries\n        // can be swapped out for another code point by adding them to this table\n        var substitutions = {\n            // {S,s} with comma below -> {S,s} with cedilla\n            0x218 : 0x15e,\n            0x219 : 0x15f,\n            // {T,t} with comma below -> {T,t} with cedilla\n            0x21a : 0x162,\n            0x21b : 0x163\n        };\n\n        var sub = substitutions[cp];\n        return sub ? sub : cp;\n    }\n\n    function isMac() {\n        return navigator && !!(/mac/i).exec(navigator.platform);\n    }\n    function isWindows() {\n        return navigator && !!(/win/i).exec(navigator.platform);\n    }\n    function isLinux() {\n        return navigator && !!(/linux/i).exec(navigator.platform);\n    }\n\n    // Return true if a modifier which is not the specified char modifier (and is not shift) is down\n    function hasShortcutModifier(charModifier, currentModifiers) {\n        var mods = {};\n        for (var key in currentModifiers) {\n            if (parseInt(key) !== XK_Shift_L) {\n                mods[key] = currentModifiers[key];\n            }\n        }\n\n        var sum = 0;\n        for (var k in currentModifiers) {\n            if (mods[k]) {\n                ++sum;\n            }\n        }\n        if (hasCharModifier(charModifier, mods)) {\n            return sum > charModifier.length;\n        }\n        else {\n            return sum > 0;\n        }\n    }\n\n    // Return true if the specified char modifier is currently down\n    function hasCharModifier(charModifier, currentModifiers) {\n        if (charModifier.length === 0) { return false; }\n\n        for (var i = 0; i < charModifier.length; ++i) {\n            if (!currentModifiers[charModifier[i]]) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    // Helper object tracking modifier key state\n    // and generates fake key events to compensate if it gets out of sync\n    function ModifierSync(charModifier) {\n        if (!charModifier) {\n            if (isMac()) {\n                // on Mac, Option (AKA Alt) is used as a char modifier\n                charModifier = [XK_Alt_L];\n            }\n            else if (isWindows()) {\n                // on Windows, Ctrl+Alt is used as a char modifier\n                charModifier = [XK_Alt_L, XK_Control_L];\n            }\n            else if (isLinux()) {\n                // on Linux, ISO Level 3 Shift (AltGr) is used as a char modifier\n                charModifier = [XK_ISO_Level3_Shift];\n            }\n            else {\n                charModifier = [];\n            }\n        }\n\n        var state = {};\n        state[XK_Control_L] = false;\n        state[XK_Alt_L] = false;\n        state[XK_ISO_Level3_Shift] = false;\n        state[XK_Shift_L] = false;\n        state[XK_Meta_L] = false;\n\n        function sync(evt, keysym) {\n            var result = [];\n            function syncKey(keysym) {\n                return {keysym: keysyms.lookup(keysym), type: state[keysym] ? 'keydown' : 'keyup'};\n            }\n\n            if (evt.ctrlKey !== undefined &&\n                evt.ctrlKey !== state[XK_Control_L] && keysym !== XK_Control_L) {\n                state[XK_Control_L] = evt.ctrlKey;\n                result.push(syncKey(XK_Control_L));\n            }\n            if (evt.altKey !== undefined &&\n                evt.altKey !== state[XK_Alt_L] && keysym !== XK_Alt_L) {\n                state[XK_Alt_L] = evt.altKey;\n                result.push(syncKey(XK_Alt_L));\n            }\n            if (evt.altGraphKey !== undefined &&\n                evt.altGraphKey !== state[XK_ISO_Level3_Shift] && keysym !== XK_ISO_Level3_Shift) {\n                state[XK_ISO_Level3_Shift] = evt.altGraphKey;\n                result.push(syncKey(XK_ISO_Level3_Shift));\n            }\n            if (evt.shiftKey !== undefined &&\n                evt.shiftKey !== state[XK_Shift_L] && keysym !== XK_Shift_L) {\n                state[XK_Shift_L] = evt.shiftKey;\n                result.push(syncKey(XK_Shift_L));\n            }\n            if (evt.metaKey !== undefined &&\n                evt.metaKey !== state[XK_Meta_L] && keysym !== XK_Meta_L) {\n                state[XK_Meta_L] = evt.metaKey;\n                result.push(syncKey(XK_Meta_L));\n            }\n            return result;\n        }\n        function syncKeyEvent(evt, down) {\n            var obj = getKeysym(evt);\n            var keysym = obj ? obj.keysym : null;\n\n            // first, apply the event itself, if relevant\n            if (keysym !== null && state[keysym] !== undefined) {\n                state[keysym] = down;\n            }\n            return sync(evt, keysym);\n        }\n\n        return {\n            // sync on the appropriate keyboard event\n            keydown: function(evt) { return syncKeyEvent(evt, true);},\n            keyup: function(evt) { return syncKeyEvent(evt, false);},\n            // Call this with a non-keyboard event (such as mouse events) to use its modifier state to synchronize anyway\n            syncAny: function(evt) { return sync(evt);},\n\n            // is a shortcut modifier down?\n            hasShortcutModifier: function() { return hasShortcutModifier(charModifier, state); },\n            // if a char modifier is down, return the keys it consists of, otherwise return null\n            activeCharModifier: function() { return hasCharModifier(charModifier, state) ? charModifier : null; }\n        };\n    }\n\n    // Get a key ID from a keyboard event\n    // May be a string or an integer depending on the available properties\n    function getKey(evt){\n        if ('keyCode' in evt && 'key' in evt) {\n            return evt.key + ':' + evt.keyCode;\n        }\n        else if ('keyCode' in evt) {\n            return evt.keyCode;\n        }\n        else {\n            return evt.key;\n        }\n    }\n\n    // Get the most reliable keysym value we can get from a key event\n    // if char/charCode is available, prefer those, otherwise fall back to key/keyCode/which\n    function getKeysym(evt){\n        var codepoint;\n        if (evt.char && evt.char.length === 1) {\n            codepoint = evt.char.charCodeAt();\n        }\n        else if (evt.charCode) {\n            codepoint = evt.charCode;\n        }\n        else if (evt.keyCode && evt.type === 'keypress') {\n            // IE10 stores the char code as keyCode, and has no other useful properties\n            codepoint = evt.keyCode;\n        }\n        if (codepoint) {\n            var res = keysyms.fromUnicode(substituteCodepoint(codepoint));\n            if (res) {\n                return res;\n            }\n        }\n        // we could check evt.key here.\n        // Legal values are defined in http://www.w3.org/TR/DOM-Level-3-Events/#key-values-list,\n        // so we \"just\" need to map them to keysym, but AFAIK this is only available in IE10, which also provides evt.key\n        // so we don't *need* it yet\n        if (evt.keyCode) {\n            return keysyms.lookup(keysymFromKeyCode(evt.keyCode, evt.shiftKey));\n        }\n        if (evt.which) {\n            return keysyms.lookup(keysymFromKeyCode(evt.which, evt.shiftKey));\n        }\n        return null;\n    }\n\n    // Given a keycode, try to predict which keysym it might be.\n    // If the keycode is unknown, null is returned.\n    function keysymFromKeyCode(keycode, shiftPressed) {\n        if (typeof(keycode) !== 'number') {\n            return null;\n        }\n        // won't be accurate for azerty\n        if (keycode >= 0x30 && keycode <= 0x39) {\n            return keycode; // digit\n        }\n        if (keycode >= 0x41 && keycode <= 0x5a) {\n            // remap to lowercase unless shift is down\n            return shiftPressed ? keycode : keycode + 32; // A-Z\n        }\n        if (keycode >= 0x60 && keycode <= 0x69) {\n            return XK_KP_0 + (keycode - 0x60); // numpad 0-9\n        }\n\n        switch(keycode) {\n            case 0x20: return XK_space;\n            case 0x6a: return XK_KP_Multiply;\n            case 0x6b: return XK_KP_Add;\n            case 0x6c: return XK_KP_Separator;\n            case 0x6d: return XK_KP_Subtract;\n            case 0x6e: return XK_KP_Decimal;\n            case 0x6f: return XK_KP_Divide;\n            case 0xbb: return XK_plus;\n            case 0xbc: return XK_comma;\n            case 0xbd: return XK_minus;\n            case 0xbe: return XK_period;\n        }\n\n        return nonCharacterKey({keyCode: keycode});\n    }\n\n    // if the key is a known non-character key (any key which doesn't generate character data)\n    // return its keysym value. Otherwise return null\n    function nonCharacterKey(evt) {\n        // evt.key not implemented yet\n        if (!evt.keyCode) { return null; }\n        var keycode = evt.keyCode;\n\n        if (keycode >= 0x70 && keycode <= 0x87) {\n            return XK_F1 + keycode - 0x70; // F1-F24\n        }\n        switch (keycode) {\n\n            case 8 : return XK_BackSpace;\n            case 13 : return XK_Return;\n\n            case 9 : return XK_Tab;\n\n            case 27 : return XK_Escape;\n            case 46 : return XK_Delete;\n\n            case 36 : return XK_Home;\n            case 35 : return XK_End;\n            case 33 : return XK_Page_Up;\n            case 34 : return XK_Page_Down;\n            case 45 : return XK_Insert;\n\n            case 37 : return XK_Left;\n            case 38 : return XK_Up;\n            case 39 : return XK_Right;\n            case 40 : return XK_Down;\n\n            case 16 : return XK_Shift_L;\n            case 17 : return XK_Control_L;\n            case 18 : return XK_Alt_L; // also: Option-key on Mac\n\n            case 224 : return XK_Meta_L;\n            case 225 : return XK_ISO_Level3_Shift; // AltGr\n            case 91 : return XK_Super_L; // also: Windows-key\n            case 92 : return XK_Super_R; // also: Windows-key\n            case 93 : return XK_Menu; // also: Windows-Menu, Command on Mac\n            default: return null;\n        }\n    }\n    return {\n        hasShortcutModifier : hasShortcutModifier,\n        hasCharModifier : hasCharModifier,\n        ModifierSync : ModifierSync,\n        getKey : getKey,\n        getKeysym : getKeysym,\n        keysymFromKeyCode : keysymFromKeyCode,\n        nonCharacterKey : nonCharacterKey,\n        substituteCodepoint : substituteCodepoint\n    };\n})();\n\n// Takes a DOM keyboard event and:\n// - determines which keysym it represents\n// - determines a keyId  identifying the key that was pressed (corresponding to the key/keyCode properties on the DOM event)\n// - synthesizes events to synchronize modifier key state between which modifiers are actually down, and which we thought were down\n// - marks each event with an 'escape' property if a modifier was down which should be \"escaped\"\n// - generates a \"stall\" event in cases where it might be necessary to wait and see if a keypress event follows a keydown\n// This information is collected into an object which is passed to the next() function. (one call per event)\nfunction KeyEventDecoder(modifierState, next) {\n    \"use strict\";\n    function sendAll(evts) {\n        for (var i = 0; i < evts.length; ++i) {\n            next(evts[i]);\n        }\n    }\n    function process(evt, type) {\n        var result = {type: type};\n        var keyId = kbdUtil.getKey(evt);\n        if (keyId) {\n            result.keyId = keyId;\n        }\n\n        var keysym = kbdUtil.getKeysym(evt);\n\n        var hasModifier = modifierState.hasShortcutModifier() || !!modifierState.activeCharModifier();\n        // Is this a case where we have to decide on the keysym right away, rather than waiting for the keypress?\n        // \"special\" keys like enter, tab or backspace don't send keypress events,\n        // and some browsers don't send keypresses at all if a modifier is down\n        if (keysym && (type !== 'keydown' || kbdUtil.nonCharacterKey(evt) || hasModifier)) {\n            result.keysym = keysym;\n        }\n\n        var isShift = evt.keyCode === 0x10 || evt.key === 'Shift';\n\n        // Should we prevent the browser from handling the event?\n        // Doing so on a keydown (in most browsers) prevents keypress from being generated\n        // so only do that if we have to.\n        var suppress = !isShift && (type !== 'keydown' || modifierState.hasShortcutModifier() || !!kbdUtil.nonCharacterKey(evt));\n\n        // If a char modifier is down on a keydown, we need to insert a stall,\n        // so VerifyCharModifier knows to wait and see if a keypress is comnig\n        var stall = type === 'keydown' && modifierState.activeCharModifier() && !kbdUtil.nonCharacterKey(evt);\n\n        // if a char modifier is pressed, get the keys it consists of (on Windows, AltGr is equivalent to Ctrl+Alt)\n        var active = modifierState.activeCharModifier();\n\n        // If we have a char modifier down, and we're able to determine a keysym reliably\n        // then (a) we know to treat the modifier as a char modifier,\n        // and (b) we'll have to \"escape\" the modifier to undo the modifier when sending the char.\n        if (active && keysym) {\n            var isCharModifier = false;\n            for (var i  = 0; i < active.length; ++i) {\n                if (active[i] === keysym.keysym) {\n                    isCharModifier = true;\n                }\n            }\n            if (type === 'keypress' && !isCharModifier) {\n                result.escape = modifierState.activeCharModifier();\n            }\n        }\n\n        if (stall) {\n            // insert a fake \"stall\" event\n            next({type: 'stall'});\n        }\n        next(result);\n\n        return suppress;\n    }\n\n    return {\n        keydown: function(evt) {\n            sendAll(modifierState.keydown(evt));\n            return process(evt, 'keydown');\n        },\n        keypress: function(evt) {\n            return process(evt, 'keypress');\n        },\n        keyup: function(evt) {\n            sendAll(modifierState.keyup(evt));\n            return process(evt, 'keyup');\n        },\n        syncModifiers: function(evt) {\n            sendAll(modifierState.syncAny(evt));\n        },\n        releaseAll: function() { next({type: 'releaseall'}); }\n    };\n}\n\n// Combines keydown and keypress events where necessary to handle char modifiers.\n// On some OS'es, a char modifier is sometimes used as a shortcut modifier.\n// For example, on Windows, AltGr is synonymous with Ctrl-Alt. On a Danish keyboard layout, AltGr-2 yields a @, but Ctrl-Alt-D does nothing\n// so when used with the '2' key, Ctrl-Alt counts as a char modifier (and should be escaped), but when used with 'D', it does not.\n// The only way we can distinguish these cases is to wait and see if a keypress event arrives\n// When we receive a \"stall\" event, wait a few ms before processing the next keydown. If a keypress has also arrived, merge the two\nfunction VerifyCharModifier(next) {\n    \"use strict\";\n    var queue = [];\n    var timer = null;\n    function process() {\n        if (timer) {\n            return;\n        }\n\n        var delayProcess = function () {\n            clearTimeout(timer);\n            timer = null;\n            process();\n        };\n\n        while (queue.length !== 0) {\n            var cur = queue[0];\n            queue = queue.splice(1);\n            switch (cur.type) {\n            case 'stall':\n                // insert a delay before processing available events.\n                /* jshint loopfunc: true */\n                timer = setTimeout(delayProcess, 5);\n                /* jshint loopfunc: false */\n                return;\n            case 'keydown':\n                // is the next element a keypress? Then we should merge the two\n                if (queue.length !== 0 && queue[0].type === 'keypress') {\n                    // Firefox sends keypress even when no char is generated.\n                    // so, if keypress keysym is the same as we'd have guessed from keydown,\n                    // the modifier didn't have any effect, and should not be escaped\n                    if (queue[0].escape && (!cur.keysym || cur.keysym.keysym !== queue[0].keysym.keysym)) {\n                        cur.escape = queue[0].escape;\n                    }\n                    cur.keysym = queue[0].keysym;\n                    queue = queue.splice(1);\n                }\n                break;\n            }\n\n            // swallow stall events, and pass all others to the next stage\n            if (cur.type !== 'stall') {\n                next(cur);\n            }\n        }\n    }\n    return function(evt) {\n        queue.push(evt);\n        process();\n    };\n}\n\n// Keeps track of which keys we (and the server) believe are down\n// When a keyup is received, match it against this list, to determine the corresponding keysym(s)\n// in some cases, a single key may produce multiple keysyms, so the corresponding keyup event must release all of these chars\n// key repeat events should be merged into a single entry.\n// Because we can't always identify which entry a keydown or keyup event corresponds to, we sometimes have to guess\nfunction TrackKeyState(next) {\n    \"use strict\";\n    var state = [];\n\n    return function (evt) {\n        var last = state.length !== 0 ? state[state.length-1] : null;\n\n        switch (evt.type) {\n        case 'keydown':\n            // insert a new entry if last seen key was different.\n            if (!last || !evt.keyId || last.keyId !== evt.keyId) {\n                last = {keyId: evt.keyId, keysyms: {}};\n                state.push(last);\n            }\n            if (evt.keysym) {\n                // make sure last event contains this keysym (a single \"logical\" keyevent\n                // can cause multiple key events to be sent to the VNC server)\n                last.keysyms[evt.keysym.keysym] = evt.keysym;\n                last.ignoreKeyPress = true;\n                next(evt);\n            }\n            break;\n        case 'keypress':\n            if (!last) {\n                last = {keyId: evt.keyId, keysyms: {}};\n                state.push(last);\n            }\n            if (!evt.keysym) {\n                console.log('keypress with no keysym:', evt);\n            }\n\n            // If we didn't expect a keypress, and already sent a keydown to the VNC server\n            // based on the keydown, make sure to skip this event.\n            if (evt.keysym && !last.ignoreKeyPress) {\n                last.keysyms[evt.keysym.keysym] = evt.keysym;\n                evt.type = 'keydown';\n                next(evt);\n            }\n            break;\n        case 'keyup':\n            if (state.length === 0) {\n                return;\n            }\n            var idx = null;\n            // do we have a matching key tracked as being down?\n            for (var i = 0; i !== state.length; ++i) {\n                if (state[i].keyId === evt.keyId) {\n                    idx = i;\n                    break;\n                }\n            }\n            // if we couldn't find a match (it happens), assume it was the last key pressed\n            if (idx === null) {\n                idx = state.length - 1;\n            }\n\n            var item = state.splice(idx, 1)[0];\n            // for each keysym tracked by this key entry, clone the current event and override the keysym\n            var clone = (function(){\n                function Clone(){}\n                return function (obj) { Clone.prototype=obj; return new Clone(); };\n            }());\n            for (var key in item.keysyms) {\n                var out = clone(evt);\n                out.keysym = item.keysyms[key];\n                next(out);\n            }\n            break;\n        case 'releaseall':\n            /* jshint shadow: true */\n            for (var i = 0; i < state.length; ++i) {\n                for (var key in state[i].keysyms) {\n                    var keysym = state[i].keysyms[key];\n                    next({keyId: 0, keysym: keysym, type: 'keyup'});\n                }\n            }\n            /* jshint shadow: false */\n            state = [];\n        }\n    };\n}\n\n// Handles \"escaping\" of modifiers: if a char modifier is used to produce a keysym (such as AltGr-2 to generate an @),\n// then the modifier must be \"undone\" before sending the @, and \"redone\" afterwards.\nfunction EscapeModifiers(next) {\n    \"use strict\";\n    return function(evt) {\n        if (evt.type !== 'keydown' || evt.escape === undefined) {\n            next(evt);\n            return;\n        }\n        // undo modifiers\n        for (var i = 0; i < evt.escape.length; ++i) {\n            next({type: 'keyup', keyId: 0, keysym: keysyms.lookup(evt.escape[i])});\n        }\n        // send the character event\n        next(evt);\n        // redo modifiers\n        /* jshint shadow: true */\n        for (var i = 0; i < evt.escape.length; ++i) {\n            next({type: 'keydown', keyId: 0, keysym: keysyms.lookup(evt.escape[i])});\n        }\n        /* jshint shadow: false */\n    };\n}\n;\ndefine(\"vnc-keyboard\", [\"vnc-util\"], function(){});\n\n","/*\n * JSUnzip\n *\n * Copyright (c) 2011 by Erik Moller\n * All Rights Reserved\n *\n * This software is provided 'as-is', without any express\n * or implied warranty.  In no event will the authors be\n * held liable for any damages arising from the use of\n * this software.\n *\n * Permission is granted to anyone to use this software\n * for any purpose, including commercial applications,\n * and to alter it and redistribute it freely, subject to\n * the following restrictions:\n *\n * 1. The origin of this software must not be\n *    misrepresented; you must not claim that you\n *    wrote the original software. If you use this\n *    software in a product, an acknowledgment in\n *    the product documentation would be appreciated\n *    but is not required.\n *\n * 2. Altered source versions must be plainly marked\n *    as such, and must not be misrepresented as\n *    being the original software.\n *\n * 3. This notice may not be removed or altered from\n *    any source distribution.\n */\n \nvar tinf;\n\nfunction JSUnzip() {\n\n    this.getInt = function(offset, size) {\n        switch (size) {\n        case 4:\n            return  (this.data.charCodeAt(offset + 3) & 0xff) << 24 | \n                    (this.data.charCodeAt(offset + 2) & 0xff) << 16 | \n                    (this.data.charCodeAt(offset + 1) & 0xff) << 8 | \n                    (this.data.charCodeAt(offset + 0) & 0xff);\n            break;\n        case 2:\n            return  (this.data.charCodeAt(offset + 1) & 0xff) << 8 | \n                    (this.data.charCodeAt(offset + 0) & 0xff);\n            break;\n        default:\n            return this.data.charCodeAt(offset) & 0xff;\n            break;\n        }\n    };\n\n    this.getDOSDate = function(dosdate, dostime) {\n        var day = dosdate & 0x1f;\n        var month = ((dosdate >> 5) & 0xf) - 1;\n        var year = 1980 + ((dosdate >> 9) & 0x7f)\n        var second = (dostime & 0x1f) * 2;\n        var minute = (dostime >> 5) & 0x3f;\n        hour = (dostime >> 11) & 0x1f;\n        return new Date(year, month, day, hour, minute, second);\n    }\n\n    this.open = function(data) {\n        this.data = data;\n        this.files = [];\n\n        if (this.data.length < 22)\n            return { 'status' : false, 'error' : 'Invalid data' };\n        var endOfCentralDirectory = this.data.length - 22;\n        while (endOfCentralDirectory >= 0 && this.getInt(endOfCentralDirectory, 4) != 0x06054b50)\n            --endOfCentralDirectory;\n        if (endOfCentralDirectory < 0)\n            return { 'status' : false, 'error' : 'Invalid data' };\n        if (this.getInt(endOfCentralDirectory + 4, 2) != 0 || this.getInt(endOfCentralDirectory + 6, 2) != 0)\n            return { 'status' : false, 'error' : 'No multidisk support' };\n\n        var entriesInThisDisk = this.getInt(endOfCentralDirectory + 8, 2);\n        var centralDirectoryOffset = this.getInt(endOfCentralDirectory + 16, 4);\n        var globalCommentLength = this.getInt(endOfCentralDirectory + 20, 2);\n        this.comment = this.data.slice(endOfCentralDirectory + 22, endOfCentralDirectory + 22 + globalCommentLength);\n\n        var fileOffset = centralDirectoryOffset;\n\n        for (var i = 0; i < entriesInThisDisk; ++i) {\n            if (this.getInt(fileOffset + 0, 4) != 0x02014b50)\n                return { 'status' : false, 'error' : 'Invalid data' };\n            if (this.getInt(fileOffset + 6, 2) > 20)\n                return { 'status' : false, 'error' : 'Unsupported version' };\n            if (this.getInt(fileOffset + 8, 2) & 1)\n                return { 'status' : false, 'error' : 'Encryption not implemented' };\n\n            var compressionMethod = this.getInt(fileOffset + 10, 2);\n            if (compressionMethod != 0 && compressionMethod != 8)\n                return { 'status' : false, 'error' : 'Unsupported compression method' };\n\n            var lastModFileTime = this.getInt(fileOffset + 12, 2);\n            var lastModFileDate = this.getInt(fileOffset + 14, 2);\n            var lastModifiedDate = this.getDOSDate(lastModFileDate, lastModFileTime);\n\n            var crc = this.getInt(fileOffset + 16, 4);\n            // TODO: crc\n\n            var compressedSize = this.getInt(fileOffset + 20, 4);\n            var uncompressedSize = this.getInt(fileOffset + 24, 4);\n\n            var fileNameLength = this.getInt(fileOffset + 28, 2);\n            var extraFieldLength = this.getInt(fileOffset + 30, 2);\n            var fileCommentLength = this.getInt(fileOffset + 32, 2);\n\n            var relativeOffsetOfLocalHeader = this.getInt(fileOffset + 42, 4);\n\n            var fileName = this.data.slice(fileOffset + 46, fileOffset + 46 + fileNameLength);\n            var fileComment = this.data.slice(fileOffset + 46 + fileNameLength + extraFieldLength, fileOffset + 46 + fileNameLength + extraFieldLength + fileCommentLength);\n\n            if (this.getInt(relativeOffsetOfLocalHeader + 0, 4) != 0x04034b50)\n                return { 'status' : false, 'error' : 'Invalid data' };\n            var localFileNameLength = this.getInt(relativeOffsetOfLocalHeader + 26, 2);\n            var localExtraFieldLength = this.getInt(relativeOffsetOfLocalHeader + 28, 2);\n            var localFileContent = relativeOffsetOfLocalHeader + 30 + localFileNameLength + localExtraFieldLength;\n\n            this.files[fileName] = \n            {\n                'fileComment' : fileComment,\n                'compressionMethod' : compressionMethod,\n                'compressedSize' : compressedSize,\n                'uncompressedSize' : uncompressedSize,\n                'localFileContent' : localFileContent,\n                'lastModifiedDate' : lastModifiedDate\n            };\n\n            fileOffset += 46 + fileNameLength + extraFieldLength + fileCommentLength;\n        }\n        return { 'status' : true }\n    };     \n    \n\n    this.read = function(fileName) {\n        var fileInfo = this.files[fileName];\n        if (fileInfo) {\n            if (fileInfo.compressionMethod == 8) {\n                if (!tinf) {\n                    tinf = new TINF();\n                    tinf.init();\n                }\n                var result = tinf.uncompress(this.data, fileInfo.localFileContent);\n                if (result.status == tinf.OK)\n                    return { 'status' : true, 'data' : result.data };\n                else\n                    return { 'status' : false, 'error' : result.error };\n            } else {\n                return { 'status' : true, 'data' : this.data.slice(fileInfo.localFileContent, fileInfo.localFileContent + fileInfo.uncompressedSize) };\n            }\n        }\n        return { 'status' : false, 'error' : \"File '\" + fileName + \"' doesn't exist in zip\" };\n    };\n    \n};\n\n\n\n/*\n * tinflate  -  tiny inflate\n *\n * Copyright (c) 2003 by Joergen Ibsen / Jibz\n * All Rights Reserved\n *\n * http://www.ibsensoftware.com/\n *\n * This software is provided 'as-is', without any express\n * or implied warranty.  In no event will the authors be\n * held liable for any damages arising from the use of\n * this software.\n *\n * Permission is granted to anyone to use this software\n * for any purpose, including commercial applications,\n * and to alter it and redistribute it freely, subject to\n * the following restrictions:\n *\n * 1. The origin of this software must not be\n *    misrepresented; you must not claim that you\n *    wrote the original software. If you use this\n *    software in a product, an acknowledgment in\n *    the product documentation would be appreciated\n *    but is not required.\n *\n * 2. Altered source versions must be plainly marked\n *    as such, and must not be misrepresented as\n *    being the original software.\n *\n * 3. This notice may not be removed or altered from\n *    any source distribution.\n */\n\n/*\n * tinflate javascript port by Erik Moller in May 2011.\n * emoller@opera.com\n * \n * read_bits() patched by mike@imidio.com to allow\n * reading more then 8 bits (needed in some zlib streams)\n */\n\n\"use strict\";\n\nfunction TINF() {\n    \nthis.OK = 0;\nthis.DATA_ERROR = (-3);\nthis.WINDOW_SIZE = 32768;\n\n/* ------------------------------ *\n * -- internal data structures -- *\n * ------------------------------ */\n\nthis.TREE = function() {\n   this.table = new Array(16);  /* table of code length counts */\n   this.trans = new Array(288); /* code -> symbol translation table */\n};\n\nthis.DATA = function(that) {\n   this.source = '';\n   this.sourceIndex = 0;\n   this.tag = 0;\n   this.bitcount = 0;\n\n   this.dest = [];\n   \n   this.history = [];\n\n   this.ltree = new that.TREE(); /* dynamic length/symbol tree */\n   this.dtree = new that.TREE(); /* dynamic distance tree */\n};\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nthis.sltree = new this.TREE(); /* fixed length/symbol tree */\nthis.sdtree = new this.TREE(); /* fixed distance tree */\n\n/* extra bits and base tables for length codes */\nthis.length_bits = new Array(30);\nthis.length_base = new Array(30);\n\n/* extra bits and base tables for distance codes */\nthis.dist_bits = new Array(30);\nthis.dist_base = new Array(30);\n\n/* special ordering of code length codes */\nthis.clcidx = [\n   16, 17, 18, 0, 8, 7, 9, 6,\n   10, 5, 11, 4, 12, 3, 13, 2,\n   14, 1, 15\n];\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nthis.build_bits_base = function(bits, base, delta, first)\n{\n   var i, sum;\n\n   /* build bits table */\n   for (i = 0; i < delta; ++i) bits[i] = 0;\n   for (i = 0; i < 30 - delta; ++i) bits[i + delta] = Math.floor(i / delta);\n\n   /* build base table */\n   for (sum = first, i = 0; i < 30; ++i)\n   {\n      base[i] = sum;\n      sum += 1 << bits[i];\n   }\n}\n\n/* build the fixed huffman trees */\nthis.build_fixed_trees = function(lt, dt)\n{\n   var i;\n\n   /* build fixed length tree */\n   for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n   lt.table[7] = 24;\n   lt.table[8] = 152;\n   lt.table[9] = 112;\n\n   for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n   for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n   for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n   for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n   /* build fixed distance tree */\n   for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n   dt.table[5] = 32;\n\n   for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nthis.build_tree = function(t, lengths, loffset, num)\n{\n   var offs = new Array(16);\n   var i, sum;\n\n   /* clear code length count table */\n   for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n   /* scan symbol lengths, and sum code length counts */\n   for (i = 0; i < num; ++i) t.table[lengths[loffset + i]]++;\n\n   t.table[0] = 0;\n\n   /* compute offset table for distribution sort */\n   for (sum = 0, i = 0; i < 16; ++i)\n   {\n      offs[i] = sum;\n      sum += t.table[i];\n   }\n\n   /* create code->symbol translation table (symbols sorted by code) */\n   for (i = 0; i < num; ++i)\n   {\n      if (lengths[loffset + i]) t.trans[offs[lengths[loffset + i]]++] = i;\n   }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nthis.getbit = function(d)\n{\n   var bit;\n\n   /* check if tag is empty */\n   if (!d.bitcount--)\n   {\n      /* load next tag */\n      d.tag = d.source[d.sourceIndex++] & 0xff;\n      d.bitcount = 7;\n   }\n\n   /* shift bit out of tag */\n   bit = d.tag & 0x01;\n   d.tag >>= 1;\n\n   return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction read_bits_direct(source, bitcount, tag, idx, num)\n{\n    var val = 0;\n    while (bitcount < 24) {\n        tag = tag | (source[idx++] & 0xff) << bitcount;\n        bitcount += 8;\n    }\n    val = tag & (0xffff >> (16 - num));\n    tag >>= num;\n    bitcount -= num;\n    return [bitcount, tag, idx, val];\n}\nthis.read_bits = function(d, num, base)\n{\n    if (!num)\n        return base;\n\n    var ret = read_bits_direct(d.source, d.bitcount, d.tag, d.sourceIndex, num);\n    d.bitcount = ret[0];\n    d.tag = ret[1];\n    d.sourceIndex = ret[2];\n    return ret[3] + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nthis.decode_symbol = function(d, t)\n{\n    while (d.bitcount < 16) {\n        d.tag = d.tag | (d.source[d.sourceIndex++] & 0xff) << d.bitcount;\n        d.bitcount += 8;\n    }\n    \n    var sum = 0, cur = 0, len = 0;\n    do {\n        cur = 2 * cur + ((d.tag & (1 << len)) >> len);\n\n        ++len;\n\n        sum += t.table[len];\n        cur -= t.table[len];\n\n    } while (cur >= 0);\n\n    d.tag >>= len;\n    d.bitcount -= len;\n\n    return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nthis.decode_trees = function(d, lt, dt)\n{\n   var code_tree = new this.TREE();\n   var lengths = new Array(288+32);\n   var hlit, hdist, hclen;\n   var i, num, length;\n\n   /* get 5 bits HLIT (257-286) */\n   hlit = this.read_bits(d, 5, 257);\n\n   /* get 5 bits HDIST (1-32) */\n   hdist = this.read_bits(d, 5, 1);\n\n   /* get 4 bits HCLEN (4-19) */\n   hclen = this.read_bits(d, 4, 4);\n\n   for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n   /* read code lengths for code length alphabet */\n   for (i = 0; i < hclen; ++i)\n   {\n      /* get 3 bits code length (0-7) */\n      var clen = this.read_bits(d, 3, 0);\n\n      lengths[this.clcidx[i]] = clen;\n   }\n\n   /* build code length tree */\n   this.build_tree(code_tree, lengths, 0, 19);\n\n   /* decode code lengths for the dynamic trees */\n   for (num = 0; num < hlit + hdist; )\n   {\n      var sym = this.decode_symbol(d, code_tree);\n\n      switch (sym)\n      {\n      case 16:\n         /* copy previous code length 3-6 times (read 2 bits) */\n         {\n            var prev = lengths[num - 1];\n            for (length = this.read_bits(d, 2, 3); length; --length)\n            {\n               lengths[num++] = prev;\n            }\n         }\n         break;\n      case 17:\n         /* repeat code length 0 for 3-10 times (read 3 bits) */\n         for (length = this.read_bits(d, 3, 3); length; --length)\n         {\n            lengths[num++] = 0;\n         }\n         break;\n      case 18:\n         /* repeat code length 0 for 11-138 times (read 7 bits) */\n         for (length = this.read_bits(d, 7, 11); length; --length)\n         {\n            lengths[num++] = 0;\n         }\n         break;\n      default:\n         /* values 0-15 represent the actual code lengths */\n         lengths[num++] = sym;\n         break;\n      }\n   }\n\n   /* build dynamic trees */\n   this.build_tree(lt, lengths, 0, hlit);\n   this.build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nthis.inflate_block_data = function(d, lt, dt)\n{\n   // js optimization.\n   var ddest = d.dest;\n   var ddestlength = ddest.length;\n\n   while (1)\n   {\n      var sym = this.decode_symbol(d, lt);\n\n      /* check for end of block */\n      if (sym == 256)\n      {\n         return this.OK;\n      }\n\n      if (sym < 256)\n      {\n         ddest[ddestlength++] = sym; // ? String.fromCharCode(sym);\n         d.history.push(sym);\n      } else {\n\n         var length, dist, offs;\n         var i;\n\n         sym -= 257;\n\n         /* possibly get more bits from length code */\n         length = this.read_bits(d, this.length_bits[sym], this.length_base[sym]);\n\n         dist = this.decode_symbol(d, dt);\n\n         /* possibly get more bits from distance code */\n         offs = d.history.length - this.read_bits(d, this.dist_bits[dist], this.dist_base[dist]);\n\n         if (offs < 0)\n             throw (\"Invalid zlib offset \" + offs);\n         \n         /* copy match */\n         for (i = offs; i < offs + length; ++i) {\n            //ddest[ddestlength++] = ddest[i];\n            ddest[ddestlength++] = d.history[i];\n            d.history.push(d.history[i]);\n         }\n      }\n   }\n}\n\n/* inflate an uncompressed block of data */\nthis.inflate_uncompressed_block = function(d)\n{\n   var length, invlength;\n   var i;\n\n   if (d.bitcount > 7) {\n       var overflow = Math.floor(d.bitcount / 8);\n       d.sourceIndex -= overflow;\n       d.bitcount = 0;\n       d.tag = 0;\n   }\n   \n   /* get length */\n   length = d.source[d.sourceIndex+1];\n   length = 256*length + d.source[d.sourceIndex];\n\n   /* get one's complement of length */\n   invlength = d.source[d.sourceIndex+3];\n   invlength = 256*invlength + d.source[d.sourceIndex+2];\n\n   /* check length */\n   if (length != (~invlength & 0x0000ffff)) return this.DATA_ERROR;\n\n   d.sourceIndex += 4;\n\n   /* copy block */\n   for (i = length; i; --i) {\n       d.history.push(d.source[d.sourceIndex]);\n       d.dest[d.dest.length] = d.source[d.sourceIndex++];\n   }\n\n   /* make sure we start next block on a byte boundary */\n   d.bitcount = 0;\n\n   return this.OK;\n}\n\n/* inflate a block of data compressed with fixed huffman trees */\nthis.inflate_fixed_block = function(d)\n{\n   /* decode block using fixed trees */\n   return this.inflate_block_data(d, this.sltree, this.sdtree);\n}\n\n/* inflate a block of data compressed with dynamic huffman trees */\nthis.inflate_dynamic_block = function(d)\n{\n   /* decode trees from stream */\n   this.decode_trees(d, d.ltree, d.dtree);\n\n   /* decode block using decoded trees */\n   return this.inflate_block_data(d, d.ltree, d.dtree);\n}\n\n/* ---------------------- *\n * -- public functions -- *\n * ---------------------- */\n\n/* initialize global (static) data */\nthis.init = function()\n{\n   /* build fixed huffman trees */\n   this.build_fixed_trees(this.sltree, this.sdtree);\n\n   /* build extra bits and base tables */\n   this.build_bits_base(this.length_bits, this.length_base, 4, 3);\n   this.build_bits_base(this.dist_bits, this.dist_base, 2, 1);\n\n   /* fix a special case */\n   this.length_bits[28] = 0;\n   this.length_base[28] = 258;\n\n   this.reset();   \n}\n\nthis.reset = function()\n{\n   this.d = new this.DATA(this);\n   delete this.header;\n}\n\n/* inflate stream from source to dest */\nthis.uncompress = function(source, offset)\n{\n\n   var d = this.d;\n   var bfinal;\n\n   /* initialise data */\n   d.source = source;\n   d.sourceIndex = offset;\n   d.bitcount = 0;\n\n   d.dest = [];\n\n   // Skip zlib header at start of stream\n   if (typeof this.header == 'undefined') {\n       this.header = this.read_bits(d, 16, 0);\n       /* byte 0: 0x78, 7 = 32k window size, 8 = deflate */\n       /* byte 1: check bits for header and other flags */\n   }\n\n   var blocks = 0;\n   \n   do {\n\n      var btype;\n      var res;\n\n      /* read final block flag */\n      bfinal = this.getbit(d);\n\n      /* read block type (2 bits) */\n      btype = this.read_bits(d, 2, 0);\n\n      /* decompress block */\n      switch (btype)\n      {\n      case 0:\n         /* decompress uncompressed block */\n         res = this.inflate_uncompressed_block(d);\n         break;\n      case 1:\n         /* decompress block with fixed huffman trees */\n         res = this.inflate_fixed_block(d);\n         break;\n      case 2:\n         /* decompress block with dynamic huffman trees */\n         res = this.inflate_dynamic_block(d);\n         break;\n      default:\n         return { 'status' : this.DATA_ERROR };\n      }\n\n      if (res != this.OK) return { 'status' : this.DATA_ERROR };\n      blocks++;\n      \n   } while (!bfinal && d.sourceIndex < d.source.length);\n\n   d.history = d.history.slice(-this.WINDOW_SIZE);\n   \n   return { 'status' : this.OK, 'data' : d.dest };\n}\n\n};\n\ndefine(\"vnc-jsunzip\", [\"vnc-util\"], function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  SpiceConn\n**      This is the base Javascript class for establishing and\n**  managing a connection to a Spice Server.\n**  It is used to provide core functionality to the Spice main,\n**  display, inputs, and cursor channels.  See main.js for \n**  usage.\n**--------------------------------------------------------------------------*/\nfunction SpiceConn(o)\n{\n    if (o === undefined || o.uri === undefined || ! o.uri)\n        throw new Error(\"You must specify a uri\");\n\n    this.ws = new WebSocket(o.uri, 'binary');\n\n    if (! this.ws.binaryType)\n        throw new Error(\"WebSocket doesn't support binaryType.  Try a different browser.\");\n\n    this.connection_id = o.connection_id !== undefined ? o.connection_id : 0;\n    this.type = o.type !== undefined ? o.type : SPICE_CHANNEL_MAIN;\n    this.chan_id = o.chan_id !== undefined ? o.chan_id : 0;\n    if (o.parent !== undefined)\n    {\n        this.parent = o.parent;\n        this.message_id = o.parent.message_id;\n        this.password = o.parent.password;\n    }\n    if (o.screen_id !== undefined)\n        this.screen_id = o.screen_id;\n    if (o.dump_id !== undefined)\n        this.dump_id = o.dump_id;\n    if (o.message_id !== undefined)\n        this.message_id = o.message_id;\n    if (o.password !== undefined)\n        this.password = o.password;\n    if (o.onerror !== undefined)\n        this.onerror = o.onerror;\n    if (o.onsuccess !== undefined)\n        this.onsuccess = o.onsuccess;\n    if (o.onagent !== undefined)\n        this.onagent = o.onagent;\n\n    this.state = \"connecting\";\n    this.ws.parent = this;\n    this.wire_reader = new SpiceWireReader(this, this.process_inbound);\n    this.messages_sent = 0;\n    this.warnings = [];\n\n    this.ws.addEventListener('open', function(e) {\n        DEBUG > 0 && console.log(\">> WebSockets.onopen\");\n        DEBUG > 0 && console.log(\"id \" + this.parent.connection_id +\"; type \" + this.parent.type);\n\n        /***********************************************************************\n        **          WHERE IT ALL REALLY BEGINS\n        ***********************************************************************/\n        this.parent.send_hdr();\n        this.parent.wire_reader.request(SpiceLinkHeader.prototype.buffer_size());\n        this.parent.state = \"start\";\n    });\n    this.ws.addEventListener('error', function(e) {\n        if ('url' in e.target) {\n            this.parent.log_err(\"WebSocket error: Can't connect to websocket on URL: \" + e.target.url);\n        }\n        this.parent.report_error(e);\n    });\n    this.ws.addEventListener('close', function(e) {\n        DEBUG > 0 && console.log(\">> WebSockets.onclose\");\n        DEBUG > 0 && console.log(\"id \" + this.parent.connection_id +\"; type \" + this.parent.type);\n        DEBUG > 0 && console.log(e);\n        if (this.parent.state != \"closing\" && this.parent.state != \"error\" && this.parent.onerror !== undefined)\n        {\n            var e;\n            if (this.parent.state == \"connecting\")\n                e = new Error(\"Connection refused.\");\n            else if (this.parent.state == \"start\" || this.parent.state == \"link\")\n                e = new Error(\"Unexpected protocol mismatch.\");\n            else if (this.parent.state == \"ticket\")\n                e = new Error(\"Bad password.\");\n            else\n                e = new Error(\"Unexpected close while \" + this.parent.state);\n\n            this.parent.onerror(e);\n            this.parent.log_err(e.toString());\n        }\n    });\n\n    if (this.ws.readyState == 2 || this.ws.readyState == 3)\n        throw new Error(\"Unable to connect to \" + o.uri);\n\n    this.timeout = window.setTimeout(spiceconn_timeout, SPICE_CONNECT_TIMEOUT, this);\n}\n\nSpiceConn.prototype =\n{\n    send_hdr : function ()\n    {\n        var hdr = new SpiceLinkHeader;\n        var msg = new SpiceLinkMess;\n\n        msg.connection_id = this.connection_id;\n        msg.channel_type = this.type;\n        // FIXME - we're not setting a channel_id...\n        msg.common_caps.push(\n            (1 << SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION) |\n            (1 << SPICE_COMMON_CAP_MINI_HEADER)\n            );\n\n        if (msg.channel_type == SPICE_CHANNEL_PLAYBACK)\n            msg.channel_caps.push(\n                (1 << SPICE_PLAYBACK_CAP_OPUS)\n            );\n        else if (msg.channel_type == SPICE_CHANNEL_MAIN)\n            msg.channel_caps.push(\n                (1 << SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS)\n            );\n\n        hdr.size = msg.buffer_size();\n\n        var mb = new ArrayBuffer(hdr.buffer_size() + msg.buffer_size());\n        hdr.to_buffer(mb);\n        msg.to_buffer(mb, hdr.buffer_size());\n\n        DEBUG > 1 && console.log(\"Sending header:\");\n        DEBUG > 2 && hexdump_buffer(mb);\n        this.ws.send(mb);\n    },\n\n    send_ticket: function(ticket)\n    {\n        var hdr = new SpiceLinkAuthTicket();\n        hdr.auth_mechanism = SPICE_COMMON_CAP_AUTH_SPICE;\n        // FIXME - we need to implement RSA to make this work right\n        hdr.encrypted_data = ticket;\n        var mb = new ArrayBuffer(hdr.buffer_size());\n\n        hdr.to_buffer(mb);\n        DEBUG > 1 && console.log(\"Sending ticket:\");\n        DEBUG > 2 && hexdump_buffer(mb);\n        this.ws.send(mb);\n    },\n\n    send_msg: function(msg)\n    {\n        var mb = new ArrayBuffer(msg.buffer_size());\n        msg.to_buffer(mb);\n        this.messages_sent++;\n        DEBUG > 0 && console.log(\">> hdr \" + this.channel_type() + \" type \" + msg.type + \" size \" + mb.byteLength);\n        DEBUG > 2 && hexdump_buffer(mb);\n        this.ws.send(mb);\n    },\n\n    process_inbound: function(mb, saved_header)\n    {\n        DEBUG > 2 && console.log(this.type + \": processing message of size \" + mb.byteLength + \"; state is \" + this.state);\n        if (this.state == \"ready\")\n        {\n            if (saved_header == undefined)\n            {\n                var msg = new SpiceMiniData(mb);\n\n                if (msg.type > 500)\n                {\n                    alert(\"Something has gone very wrong; we think we have message of type \" + msg.type);\n                    debugger;\n                }\n\n                if (msg.size == 0)\n                {\n                    this.process_message(msg);\n                    this.wire_reader.request(SpiceMiniData.prototype.buffer_size());\n                }\n                else\n                {\n                    this.wire_reader.request(msg.size);\n                    this.wire_reader.save_header(msg);\n                }\n            }\n            else\n            {\n                saved_header.data = mb;\n                this.process_message(saved_header);\n                this.wire_reader.request(SpiceMiniData.prototype.buffer_size());\n                this.wire_reader.save_header(undefined);\n            }\n        }\n\n        else if (this.state == \"start\")\n        {\n            this.reply_hdr = new SpiceLinkHeader(mb);\n            if (this.reply_hdr.magic != SPICE_MAGIC)\n            {\n                this.state = \"error\";\n                var e = new Error('Error: magic mismatch: ' + this.reply_hdr.magic);\n                this.report_error(e);\n            }\n            else\n            {\n                // FIXME - Determine major/minor version requirements\n                this.wire_reader.request(this.reply_hdr.size);\n                this.state = \"link\";\n            }\n        }\n\n        else if (this.state == \"link\")\n        {\n            this.reply_link = new SpiceLinkReply(mb);\n             // FIXME - Screen the caps - require minihdr at least, right?\n            if (this.reply_link.error)\n            {\n                this.state = \"error\";\n                var e = new Error('Error: reply link error ' + this.reply_link.error);\n                this.report_error(e);\n            }\n            else\n            {\n                this.send_ticket(rsa_encrypt(this.reply_link.pub_key, this.password + String.fromCharCode(0)));\n                this.state = \"ticket\";\n                this.wire_reader.request(SpiceLinkAuthReply.prototype.buffer_size());\n            }\n        }\n\n        else if (this.state == \"ticket\")\n        {\n            this.auth_reply = new SpiceLinkAuthReply(mb);\n            if (this.auth_reply.auth_code == SPICE_LINK_ERR_OK)\n            {\n                DEBUG > 0 && console.log(this.type + ': Connected');\n\n                if (this.type == SPICE_CHANNEL_DISPLAY)\n                {\n                    // FIXME - pixmap and glz dictionary config info?\n                    var dinit = new SpiceMsgcDisplayInit();\n                    var reply = new SpiceMiniData();\n                    reply.build_msg(SPICE_MSGC_DISPLAY_INIT, dinit);\n                    DEBUG > 0 && console.log(\"Request display init\");\n                    this.send_msg(reply);\n                }\n                this.state = \"ready\";\n                this.wire_reader.request(SpiceMiniData.prototype.buffer_size());\n                if (this.timeout)\n                {\n                    window.clearTimeout(this.timeout);\n                    delete this.timeout;\n                }\n            }\n            else\n            {\n                this.state = \"error\";\n                if (this.auth_reply.auth_code == SPICE_LINK_ERR_PERMISSION_DENIED)\n                {\n                    var e = new Error(\"Permission denied.\");\n                }\n                else\n                {\n                    var e = new Error(\"Unexpected link error \" + this.auth_reply.auth_code);\n                }\n                this.report_error(e);\n            }\n        }\n    },\n\n    process_common_messages : function(msg)\n    {\n        if (msg.type == SPICE_MSG_SET_ACK)\n        {\n            var ack = new SpiceMsgSetAck(msg.data);\n            // FIXME - what to do with generation?\n            this.ack_window = ack.window;\n            DEBUG > 1 && console.log(this.type + \": set ack to \" + ack.window);\n            this.msgs_until_ack = this.ack_window;\n            var ackack = new SpiceMsgcAckSync(ack);\n            var reply = new SpiceMiniData();\n            reply.build_msg(SPICE_MSGC_ACK_SYNC, ackack);\n            this.send_msg(reply);\n            return true;\n        }\n\n        if (msg.type == SPICE_MSG_PING)\n        {\n            DEBUG > 1 && console.log(\"ping!\");\n            var pong = new SpiceMiniData;\n            pong.type = SPICE_MSGC_PONG;\n            if (msg.data)\n            {\n                pong.data = msg.data.slice(0, 12);\n            }\n            pong.size = pong.buffer_size();\n            this.send_msg(pong);\n            return true;\n        }\n\n        if (msg.type == SPICE_MSG_NOTIFY)\n        {\n            // FIXME - Visibility + what\n            var notify = new SpiceMsgNotify(msg.data);\n            if (notify.severity == SPICE_NOTIFY_SEVERITY_ERROR)\n                this.log_err(notify.message);\n            else if (notify.severity == SPICE_NOTIFY_SEVERITY_WARN )\n                this.log_warn(notify.message);\n            else\n                this.log_info(notify.message);\n            return true;\n        }\n\n        return false;\n\n    },\n\n    process_message: function(msg)\n    {\n        var rc;\n        DEBUG > 0 && console.log(\"<< hdr \" + this.channel_type() + \" type \" + msg.type + \" size \" + (msg.data && msg.data.byteLength));\n        rc = this.process_common_messages(msg);\n        if (! rc)\n        {\n            if (this.process_channel_message)\n            {\n                rc = this.process_channel_message(msg);\n                if (! rc)\n                    this.log_warn(this.type + \": Unknown message type \" + msg.type + \"!\");\n            }\n            else\n                this.log_err(this.type + \": No message handlers for this channel; message \" + msg.type);\n        }\n\n        if (this.msgs_until_ack !== undefined && this.ack_window)\n        {\n            this.msgs_until_ack--;\n            if (this.msgs_until_ack <= 0)\n            {\n                this.msgs_until_ack = this.ack_window;\n                var ack = new SpiceMiniData();\n                ack.type = SPICE_MSGC_ACK;\n                this.send_msg(ack);\n                DEBUG > 1 && console.log(this.type + \": sent ack\");\n            }\n        }\n\n        return rc;\n    },\n\n    channel_type: function()\n    {\n        if (this.type == SPICE_CHANNEL_MAIN)\n            return \"main\";\n        else if (this.type == SPICE_CHANNEL_DISPLAY)\n            return \"display\";\n        else if (this.type == SPICE_CHANNEL_INPUTS)\n            return \"inputs\";\n        else if (this.type == SPICE_CHANNEL_CURSOR)\n            return \"cursor\";\n        return \"unknown-\" + this.type;\n\n    },\n\n    log_info: function()\n    {\n        var msg = Array.prototype.join.call(arguments, \" \");\n        console.log(msg);\n        if (this.message_id)\n        {\n            var p = document.createElement(\"p\");\n            p.appendChild(document.createTextNode(msg));\n            p.className += \"spice-message-info\";\n            document.getElementById(this.message_id).appendChild(p);\n        }\n    },\n\n    log_warn: function()\n    {\n        var msg = Array.prototype.join.call(arguments, \" \");\n        console.log(\"WARNING: \" + msg);\n        if (this.message_id)\n        {\n            var p = document.createElement(\"p\");\n            p.appendChild(document.createTextNode(msg));\n            p.className += \"spice-message-warning\";\n            document.getElementById(this.message_id).appendChild(p);\n        }\n    },\n\n    log_err: function()\n    {\n        var msg = Array.prototype.join.call(arguments, \" \");\n        console.log(\"ERROR: \" + msg);\n        if (this.message_id)\n        {\n            var p = document.createElement(\"p\");\n            p.appendChild(document.createTextNode(msg));\n            p.className += \"spice-message-error\";\n            document.getElementById(this.message_id).appendChild(p);\n        }\n    },\n\n    known_unimplemented: function(type, msg)\n    {\n        if ( (!this.warnings[type]) || DEBUG > 1)\n        {\n            var str = \"\";\n            if (DEBUG <= 1)\n                str = \" [ further notices suppressed ]\";\n            this.log_warn(\"Unimplemented function \" + type + \"(\" + msg + \")\" + str);\n            this.warnings[type] = true;\n        }\n    },\n\n    report_error: function(e)\n    {\n        this.log_err(e.toString());\n        if (this.onerror != undefined)\n            this.onerror(e);\n        else\n            throw(e);\n    },\n\n    report_success: function(m)\n    {\n        if (this.onsuccess != undefined)\n            this.onsuccess(m);\n    },\n\n    cleanup: function()\n    {\n        if (this.timeout)\n        {\n            window.clearTimeout(this.timeout);\n            delete this.timeout;\n        }\n        if (this.ws)\n        {\n            this.ws.close();\n            this.ws = undefined;\n        }\n    },\n\n    handle_timeout: function()\n    {\n        var e = new Error(\"Connection timed out.\");\n        this.report_error(e);\n    },\n}\n\nfunction spiceconn_timeout(sc)\n{\n    SpiceConn.prototype.handle_timeout.call(sc);\n}\n;\ndefine(\"spice-spiceconn\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  SpiceArrayBufferSlice\n**    This function is a work around for IE 10, which has no slice()\n**    method in it's subclass.\n**--------------------------------------------------------------------------*/\nfunction SpiceArrayBufferSlice(start, end)\n{\n    start = start || 0;\n    end = end || this.byteLength;\n    if (end < 0)\n        end = this.byteLength + end;\n    if (start < 0)\n        start = this.byteLength + start;\n    if (start < 0)\n        start = 0;\n    if (end < 0)\n        end = 0;\n    if (end > this.byteLength)\n        end = this.byteLength;\n    if (start > end)\n        start = end;\n\n    var ret = new ArrayBuffer(end - start);\n    var in1 = new Uint8Array(this, start, end - start);\n    var out = new Uint8Array(ret);\n    var i;\n\n    for (i = 0; i < end - start; i++)\n        out[i] = in1[i];\n\n    return ret;\n}\n\nif (! ArrayBuffer.prototype.slice)\n{\n    ArrayBuffer.prototype.slice = SpiceArrayBufferSlice;\n    console.log(\"WARNING:  ArrayBuffer.slice() is missing; we are extending ArrayBuffer to compensate\");\n}\n;\ndefine(\"spice-spicearraybuffer\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  Utility settings and functions for Spice\n**--------------------------------------------------------------------------*/\nvar DEBUG = 0;\nvar DUMP_DRAWS = false;\nvar DUMP_CANVASES = false;\n\n\n/*----------------------------------------------------------------------------\n**  combine_array_buffers\n**      Combine two array buffers.\n**      FIXME - this can't be optimal.  See wire.js about eliminating the need.\n**--------------------------------------------------------------------------*/\nfunction combine_array_buffers(a1, a2)\n{\n    var in1 = new Uint8Array(a1);\n    var in2 = new Uint8Array(a2);\n    var ret = new ArrayBuffer(a1.byteLength + a2.byteLength);\n    var out = new Uint8Array(ret);\n    var o = 0;\n    var i;\n    for (i = 0; i < in1.length; i++)\n        out[o++] = in1[i];\n    for (i = 0; i < in2.length; i++)\n        out[o++] = in2[i];\n\n    return ret;\n}\n\n/*----------------------------------------------------------------------------\n**  hexdump_buffer\n**--------------------------------------------------------------------------*/\nfunction hexdump_buffer(a)\n{\n    var mg = new Uint8Array(a);\n    var hex = \"\";\n    var str = \"\";\n    var last_zeros = 0;\n    for (var i = 0; i < mg.length; i++)\n    {\n        var h = Number(mg[i]).toString(16);\n        if (h.length == 1)\n            hex += \"0\";\n        hex += h + \" \";\n\n        if (mg[i] == 10 || mg[i] == 13 || mg[i] == 8)\n            str += \".\";\n        else\n            str += String.fromCharCode(mg[i]);\n\n        if ((i % 16 == 15) || (i == (mg.length - 1)))\n        {\n            while (i % 16 != 15)\n            {\n                hex += \"   \";\n                i++;\n            }\n\n            if (last_zeros == 0)\n                console.log(hex + \" | \" + str);\n\n            if (hex == \"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \")\n            {\n                if (last_zeros == 1)\n                {\n                    console.log(\".\");\n                    last_zeros++;\n                }\n                else if (last_zeros == 0)\n                    last_zeros++;\n            }\n            else\n                last_zeros = 0;\n\n            hex = str = \"\";\n        }\n    }\n}\n\n/*----------------------------------------------------------------------------\n** Converting keycodes to AT scancodes is very hard.\n** luckly there are some resources on the web and in the Xorg driver that help\n** us figure out what browser depenend keycodes match to what scancodes.\n**\n** This will most likely not work for non US keyboard and browsers other than\n** modern Chrome and FireFox.\n**--------------------------------------------------------------------------*/\nvar common_scanmap = [];\ncommon_scanmap['Q'.charCodeAt(0)]  = KEY_Q;\ncommon_scanmap['W'.charCodeAt(0)]  = KEY_W;\ncommon_scanmap['E'.charCodeAt(0)]  = KEY_E;\ncommon_scanmap['R'.charCodeAt(0)]  = KEY_R;\ncommon_scanmap['T'.charCodeAt(0)]  = KEY_T;\ncommon_scanmap['Y'.charCodeAt(0)]  = KEY_Y;\ncommon_scanmap['U'.charCodeAt(0)]  = KEY_U;\ncommon_scanmap['I'.charCodeAt(0)]  = KEY_I;\ncommon_scanmap['O'.charCodeAt(0)]  = KEY_O;\ncommon_scanmap['P'.charCodeAt(0)]  = KEY_P;\ncommon_scanmap['A'.charCodeAt(0)]  = KEY_A;\ncommon_scanmap['S'.charCodeAt(0)]  = KEY_S;\ncommon_scanmap['D'.charCodeAt(0)]  = KEY_D;\ncommon_scanmap['F'.charCodeAt(0)]  = KEY_F;\ncommon_scanmap['G'.charCodeAt(0)]  = KEY_G;\ncommon_scanmap['H'.charCodeAt(0)]  = KEY_H;\ncommon_scanmap['J'.charCodeAt(0)]  = KEY_J;\ncommon_scanmap['K'.charCodeAt(0)]  = KEY_K;\ncommon_scanmap['L'.charCodeAt(0)]  = KEY_L;\ncommon_scanmap['Z'.charCodeAt(0)]  = KEY_Z;\ncommon_scanmap['X'.charCodeAt(0)]  = KEY_X;\ncommon_scanmap['C'.charCodeAt(0)]  = KEY_C;\ncommon_scanmap['V'.charCodeAt(0)]  = KEY_V;\ncommon_scanmap['B'.charCodeAt(0)]  = KEY_B;\ncommon_scanmap['N'.charCodeAt(0)]  = KEY_N;\ncommon_scanmap['M'.charCodeAt(0)]  = KEY_M;\ncommon_scanmap[' '.charCodeAt(0)]  = KEY_Space;\ncommon_scanmap[13]                 = KEY_Enter;\ncommon_scanmap[27]                 = KEY_Escape;\ncommon_scanmap[8]                  = KEY_BackSpace;\ncommon_scanmap[9]                  = KEY_Tab;\ncommon_scanmap[16]                 = KEY_ShiftL;\ncommon_scanmap[17]                 = KEY_LCtrl;\ncommon_scanmap[18]                 = KEY_Alt;\ncommon_scanmap[20]                 = KEY_CapsLock;\ncommon_scanmap[144]                = KEY_NumLock;\ncommon_scanmap[112]                = KEY_F1;\ncommon_scanmap[113]                = KEY_F2;\ncommon_scanmap[114]                = KEY_F3;\ncommon_scanmap[115]                = KEY_F4;\ncommon_scanmap[116]                = KEY_F5;\ncommon_scanmap[117]                = KEY_F6;\ncommon_scanmap[118]                = KEY_F7;\ncommon_scanmap[119]                = KEY_F8;\ncommon_scanmap[120]                = KEY_F9;\ncommon_scanmap[121]                = KEY_F10;\ncommon_scanmap[122]                = KEY_F11;\ncommon_scanmap[123]                = KEY_F12;\n\n/* These externded scancodes do not line up with values from atKeynames */\ncommon_scanmap[42]                 = 99;\ncommon_scanmap[19]                 = 101;    // Break\ncommon_scanmap[111]                = 0xE035; // KP_Divide\ncommon_scanmap[106]                = 0xE037; // KP_Multiply\ncommon_scanmap[36]                 = 0xE047; // Home\ncommon_scanmap[38]                 = 0xE048; // Up\ncommon_scanmap[33]                 = 0xE049; // PgUp\ncommon_scanmap[37]                 = 0xE04B; // Left\ncommon_scanmap[39]                 = 0xE04D; // Right\ncommon_scanmap[35]                 = 0xE04F; // End\ncommon_scanmap[40]                 = 0xE050; // Down\ncommon_scanmap[34]                 = 0xE051; // PgDown\ncommon_scanmap[45]                 = 0xE052; // Insert\ncommon_scanmap[46]                 = 0xE053; // Delete\ncommon_scanmap[44]                 = 0x2A37; // Print\n\n/* These are not common between ALL browsers but are between Firefox and DOM3 */\ncommon_scanmap['1'.charCodeAt(0)]  = KEY_1;\ncommon_scanmap['2'.charCodeAt(0)]  = KEY_2;\ncommon_scanmap['3'.charCodeAt(0)]  = KEY_3;\ncommon_scanmap['4'.charCodeAt(0)]  = KEY_4;\ncommon_scanmap['5'.charCodeAt(0)]  = KEY_5;\ncommon_scanmap['6'.charCodeAt(0)]  = KEY_6;\ncommon_scanmap['7'.charCodeAt(0)]  = KEY_7;\ncommon_scanmap['8'.charCodeAt(0)]  = KEY_8;\ncommon_scanmap['9'.charCodeAt(0)]  = KEY_9;\ncommon_scanmap['0'.charCodeAt(0)]  = KEY_0;\ncommon_scanmap[145]                = KEY_ScrollLock;\ncommon_scanmap[103]                = KEY_KP_7;\ncommon_scanmap[104]                = KEY_KP_8;\ncommon_scanmap[105]                = KEY_KP_9;\ncommon_scanmap[100]                = KEY_KP_4;\ncommon_scanmap[101]                = KEY_KP_5;\ncommon_scanmap[102]                = KEY_KP_6;\ncommon_scanmap[107]                = KEY_KP_Plus;\ncommon_scanmap[97]                 = KEY_KP_1;\ncommon_scanmap[98]                 = KEY_KP_2;\ncommon_scanmap[99]                 = KEY_KP_3;\ncommon_scanmap[96]                 = KEY_KP_0;\ncommon_scanmap[110]                = KEY_KP_Decimal;\ncommon_scanmap[191]                = KEY_Slash;\ncommon_scanmap[190]                = KEY_Period;\ncommon_scanmap[188]                = KEY_Comma;\ncommon_scanmap[220]                = KEY_BSlash;\ncommon_scanmap[192]                = KEY_Tilde;\ncommon_scanmap[222]                = KEY_Quote;\ncommon_scanmap[219]                = KEY_LBrace;\ncommon_scanmap[221]                = KEY_RBrace;\n\ncommon_scanmap[91]                 = 0xE05B; //KEY_LMeta\ncommon_scanmap[92]                 = 0xE05C; //KEY_RMeta\ncommon_scanmap[93]                 = 0xE05D; //KEY_Menu\n\n/* Firefox/Mozilla codes */\nvar firefox_scanmap = [];\nfirefox_scanmap[173]                = KEY_Minus;\nfirefox_scanmap[109]                = KEY_Minus;\nfirefox_scanmap[61]                 = KEY_Equal;\nfirefox_scanmap[59]                 = KEY_SemiColon;\n\n/* DOM3 codes */\nvar DOM_scanmap = [];\nDOM_scanmap[189]                = KEY_Minus;\nDOM_scanmap[187]                = KEY_Equal;\nDOM_scanmap[186]                = KEY_SemiColon;\n\nfunction get_scancode(code)\n{\n    if (common_scanmap[code] === undefined)\n    {\n        if (navigator.userAgent.indexOf(\"Firefox\") != -1)\n            return firefox_scanmap[code];\n        else\n            return DOM_scanmap[code];\n    }\n    else\n        return common_scanmap[code];\n}\n\nfunction keycode_to_start_scan(code)\n{\n    var scancode = get_scancode(code);\n    if (scancode === undefined)\n    {\n        alert('no map for ' + code);\n        return 0;\n    }\n\n    if (scancode < 0x100) {\n        return scancode;\n    } else {\n        return 0xe0 | ((scancode - 0x100) << 8);\n    }\n}\n\nfunction keycode_to_end_scan(code)\n{\n    var scancode = get_scancode(code);\n    if (scancode === undefined)\n        return 0;\n\n    if (scancode < 0x100) {\n        return scancode | 0x80;\n    } else {\n        return 0x80e0 | ((scancode - 0x100) << 8);\n    }\n}\n;\ndefine(\"spice-utils\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  crc logic from rfc2083 ported to Javascript\n**--------------------------------------------------------------------------*/\n\nvar rfc2083_crc_table = Array(256);\nvar rfc2083_crc_table_computed = 0;\n/* Make the table for a fast CRC. */\nfunction rfc2083_make_crc_table()\n{\n    var c;\n    var n, k;\n    for (n = 0; n < 256; n++)\n    {\n        c = n;\n        for (k = 0; k < 8; k++)\n        {\n            if (c & 1)\n                c = ((0xedb88320 ^ (c >>> 1)) >>> 0) & 0xffffffff;\n            else\n                c = c >>> 1;\n        }\n        rfc2083_crc_table[n] = c;\n    }\n\n    rfc2083_crc_table_computed = 1;\n}\n\n/* Update a running CRC with the bytes buf[0..len-1]--the CRC\n     should be initialized to all 1's, and the transmitted value\n     is the 1's complement of the final running CRC (see the\n     crc() routine below)). */\n\nfunction rfc2083_update_crc(crc, u8buf, at, len)\n{\n    var c = crc;\n    var n;\n\n    if (!rfc2083_crc_table_computed)\n        rfc2083_make_crc_table();\n\n    for (n = 0; n < len; n++)\n    {\n        c = rfc2083_crc_table[(c ^ u8buf[at + n]) & 0xff] ^ (c >>> 8);\n    }\n\n    return c;\n}\n\nfunction rfc2083_crc(u8buf, at, len)\n{\n    return rfc2083_update_crc(0xffffffff, u8buf, at, len) ^ 0xffffffff;\n}\n\nfunction crc32(mb, at, len)\n{\n    var u8 = new Uint8Array(mb);\n    return rfc2083_crc(u8, at, len);\n}\n\nfunction PngIHDR(width, height)\n{\n    this.width = width;\n    this.height = height;\n    this.depth = 8;\n    this.type = 6;\n    this.compression = 0;\n    this.filter = 0;\n    this.interlace = 0;\n}\n\nPngIHDR.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var orig = at;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.buffer_size() - 12); at += 4;\n        dv.setUint8(at, 'I'.charCodeAt(0)); at++;\n        dv.setUint8(at, 'H'.charCodeAt(0)); at++;\n        dv.setUint8(at, 'D'.charCodeAt(0)); at++;\n        dv.setUint8(at, 'R'.charCodeAt(0)); at++;\n        dv.setUint32(at, this.width); at += 4;\n        dv.setUint32(at, this.height); at += 4;\n        dv.setUint8(at, this.depth); at++;\n        dv.setUint8(at, this.type); at++;\n        dv.setUint8(at, this.compression); at++;\n        dv.setUint8(at, this.filter); at++;\n        dv.setUint8(at, this.interlace); at++;\n        dv.setUint32(at, crc32(a, orig + 4, this.buffer_size() - 8)); at += 4;\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 12 + 13;\n    }\n}\n\n\nfunction adler()\n{\n    this.s1 = 1;\n    this.s2 = 0;\n}\n\nadler.prototype.update = function(b)\n{\n    this.s1 += b;\n    this.s1 %= 65521;\n    this.s2 += this.s1;\n    this.s2 %= 65521;\n}\n\nfunction PngIDAT(width, height, bytes)\n{\n    if (bytes.byteLength > 65535)\n    {\n        throw new Error(\"Cannot handle more than 64K\");\n    }\n    this.data = bytes;\n    this.width = width;\n    this.height = height;\n}\n\nPngIDAT.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var orig = at;\n        var x, y, i, j;\n        var dv = new SpiceDataView(a);\n        var zsum = new adler();\n        dv.setUint32(at, this.buffer_size() - 12); at += 4;\n        dv.setUint8(at, 'I'.charCodeAt(0)); at++;\n        dv.setUint8(at, 'D'.charCodeAt(0)); at++;\n        dv.setUint8(at, 'A'.charCodeAt(0)); at++;\n        dv.setUint8(at, 'T'.charCodeAt(0)); at++;\n\n        /* zlib header.  */\n        dv.setUint8(at, 0x78); at++;\n        dv.setUint8(at, 0x01); at++;\n\n        /* Deflate header.  Specifies uncompressed, final bit */\n        dv.setUint8(at, 0x80); at++;\n        dv.setUint16(at, this.data.byteLength + this.height); at += 2;\n        dv.setUint16(at, ~(this.data.byteLength + this.height)); at += 2;\n        var u8 = new Uint8Array(this.data);\n        for (i = 0, y = 0; y < this.height; y++)\n        {\n            /* Filter type 0 - uncompressed */\n            dv.setUint8(at, 0); at++;\n            zsum.update(0);\n            for (x = 0; x < this.width && i < this.data.byteLength; x++)\n            {\n                zsum.update(u8[i]);\n                dv.setUint8(at, u8[i++]); at++;\n                zsum.update(u8[i]);\n                dv.setUint8(at, u8[i++]); at++;\n                zsum.update(u8[i]);\n                dv.setUint8(at, u8[i++]); at++;\n                zsum.update(u8[i]);\n                dv.setUint8(at, u8[i++]); at++;\n            }\n        }\n\n        /* zlib checksum.   */\n        dv.setUint16(at, zsum.s2); at+=2;\n        dv.setUint16(at, zsum.s1); at+=2;\n\n        /* FIXME - something is not quite right with the zlib code;\n                   you get an error from libpng if you open the image in\n                   gimp.  But it works, so it's good enough for now... */\n\n        dv.setUint32(at, crc32(a, orig + 4, this.buffer_size() - 8)); at += 4;\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 12 + this.data.byteLength + this.height + 4 + 2 + 1 + 2 + 2;\n    }\n}\n\n\nfunction PngIEND()\n{\n}\n\nPngIEND.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var orig = at;\n        var i;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.buffer_size() - 12); at += 4;\n        dv.setUint8(at, 'I'.charCodeAt(0)); at++;\n        dv.setUint8(at, 'E'.charCodeAt(0)); at++;\n        dv.setUint8(at, 'N'.charCodeAt(0)); at++;\n        dv.setUint8(at, 'D'.charCodeAt(0)); at++;\n        dv.setUint32(at, crc32(a, orig + 4, this.buffer_size() - 8)); at += 4;\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 12;\n    }\n}\n\n\nfunction create_rgba_png(width, height, bytes)\n{\n    var i;\n    var ihdr = new PngIHDR(width, height);\n    var idat = new PngIDAT(width, height, bytes);\n    var iend = new PngIEND;\n\n    var mb = new ArrayBuffer(ihdr.buffer_size() + idat.buffer_size() + iend.buffer_size());\n    var at = ihdr.to_buffer(mb);\n    at = idat.to_buffer(mb, at);\n    at = iend.to_buffer(mb, at);\n\n    var u8 = new Uint8Array(mb);\n    var str = \"\";\n    for (i = 0; i < at; i++)\n    {\n        str += \"%\";\n        if (u8[i] < 16)\n            str += \"0\";\n        str += u8[i].toString(16);\n    }\n\n\n    return \"%89PNG%0D%0A%1A%0A\" + str;\n}\n;\ndefine(\"spice-png\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n\n/*----------------------------------------------------------------------------\n**  lz.js\n**      Functions for handling SPICE_IMAGE_TYPE_LZ_RGB\n**  Adapted from lz.c .\n**--------------------------------------------------------------------------*/\nfunction lz_rgb32_decompress(in_buf, at, out_buf, type, default_alpha)\n{\n    var encoder = at;\n    var op = 0;\n    var ctrl;\n    var ctr = 0;\n\n    for (ctrl = in_buf[encoder++]; (op * 4) < out_buf.length; ctrl = in_buf[encoder++])\n    {\n        var ref = op;\n        var len = ctrl >> 5;\n        var ofs = (ctrl & 31) << 8;\n\n//if (type == LZ_IMAGE_TYPE_RGBA)\n//console.log(ctr++ + \": from \" + (encoder + 28) + \", ctrl \" + ctrl + \", len \" + len + \", ofs \" + ofs + \", op \" + op);\n        if (ctrl >= 32) {\n\n            var code;\n            len--;\n\n            if (len == 7 - 1) {\n                do {\n                    code = in_buf[encoder++];\n                    len += code;\n                } while (code == 255);\n            }\n            code = in_buf[encoder++];\n            ofs += code;\n\n\n            if (code == 255) {\n                if ((ofs - code) == (31 << 8)) {\n                    ofs = in_buf[encoder++] << 8;\n                    ofs += in_buf[encoder++];\n                    ofs += 8191;\n                }\n            }\n            len += 1;\n            if (type == LZ_IMAGE_TYPE_RGBA)\n                len += 2;\n\n            ofs += 1;\n\n            ref -= ofs;\n            if (ref == (op - 1)) {\n                var b = ref;\n//if (type == LZ_IMAGE_TYPE_RGBA) console.log(\"alpha \" + out_buf[(b*4)+3] + \" dupped into pixel \" + op + \" through pixel \" + (op + len));\n                for (; len; --len) {\n                    if (type == LZ_IMAGE_TYPE_RGBA)\n                    {\n                        out_buf[(op*4) + 3] = out_buf[(b*4)+3];\n                    }\n                    else\n                    {\n                        for (i = 0; i < 4; i++)\n                            out_buf[(op*4) + i] = out_buf[(b*4)+i];\n                    }\n                    op++;\n                }\n            } else {\n//if (type == LZ_IMAGE_TYPE_RGBA) console.log(\"alpha copied to pixel \" + op + \" through \" + (op + len) + \" from \" + ref);\n                for (; len; --len) {\n                    if (type == LZ_IMAGE_TYPE_RGBA)\n                    {\n                        out_buf[(op*4) + 3] = out_buf[(ref*4)+3];\n                    }\n                    else\n                    {\n                        for (i = 0; i < 4; i++)\n                            out_buf[(op*4) + i] = out_buf[(ref*4)+i];\n                    }\n                    op++; ref++;\n                }\n            }\n        } else {\n            ctrl++;\n\n            if (type == LZ_IMAGE_TYPE_RGBA)\n            {\n//console.log(\"alpha \" + in_buf[encoder] + \" set into pixel \" + op);\n                out_buf[(op*4) + 3] = in_buf[encoder++];\n            }\n            else\n            {\n                out_buf[(op*4) + 0] = in_buf[encoder + 2];\n                out_buf[(op*4) + 1] = in_buf[encoder + 1];\n                out_buf[(op*4) + 2] = in_buf[encoder + 0];\n                if (default_alpha)\n                    out_buf[(op*4) + 3] = 255;\n                encoder += 3;\n            }\n            op++;\n\n\n            for (--ctrl; ctrl; ctrl--) {\n                if (type == LZ_IMAGE_TYPE_RGBA)\n                {\n//console.log(\"alpha \" + in_buf[encoder] + \" set into pixel \" + op);\n                    out_buf[(op*4) + 3] = in_buf[encoder++];\n                }\n                else\n                {\n                    out_buf[(op*4) + 0] = in_buf[encoder + 2];\n                    out_buf[(op*4) + 1] = in_buf[encoder + 1];\n                    out_buf[(op*4) + 2] = in_buf[encoder + 0];\n                    if (default_alpha)\n                        out_buf[(op*4) + 3] = 255;\n                    encoder += 3;\n                }\n                op++;\n            }\n        }\n\n    }\n    return encoder - 1;\n}\n\nfunction convert_spice_lz_to_web(context, lz_image)\n{\n    var at;\n    if (lz_image.type === LZ_IMAGE_TYPE_RGB32 || lz_image.type === LZ_IMAGE_TYPE_RGBA)\n    {\n        var u8 = new Uint8Array(lz_image.data);\n        var ret = context.createImageData(lz_image.width, lz_image.height);\n\n        at = lz_rgb32_decompress(u8, 0, ret.data, LZ_IMAGE_TYPE_RGB32, lz_image.type != LZ_IMAGE_TYPE_RGBA);\n        if (lz_image.type == LZ_IMAGE_TYPE_RGBA)\n            lz_rgb32_decompress(u8, at, ret.data, LZ_IMAGE_TYPE_RGBA, false);\n    }\n    else if (lz_image.type === LZ_IMAGE_TYPE_XXXA)\n    {\n        var u8 = new Uint8Array(lz_image.data);\n        var ret = context.createImageData(lz_image.width, lz_image.height);\n        lz_rgb32_decompress(u8, 0, ret.data, LZ_IMAGE_TYPE_RGBA, false);\n    }\n    else\n        return undefined;\n\n    return ret;\n}\n;\ndefine(\"spice-lz\", function(){});\n\n","/*\"use strict\";*/\n/* use strict is commented out because it results in a 5x slowdone in chrome */\n/*\n *    Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n *    Copyright (C) 2012 by Aric Stewart <aric@codeweavers.com>\n *\n *    This file is part of spice-html5.\n *\n *    spice-html5 is free software: you can redistribute it and/or modify\n *    it under the terms of the GNU Lesser General Public License as published by\n *    the Free Software Foundation, either version 3 of the License, or\n *    (at your option) any later version.\n *\n *    spice-html5 is distributed in the hope that it will be useful,\n *    but WITHOUT ANY WARRANTY; without even the implied warranty of\n *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *    GNU Lesser General Public License for more details.\n *\n *    You should have received a copy of the GNU Lesser General Public License\n *    along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n */\n\nvar encoder;\n\nvar QUIC_IMAGE_TYPE_INVALID = 0;\nvar QUIC_IMAGE_TYPE_GRAY = 1;\nvar QUIC_IMAGE_TYPE_RGB16 = 2;\nvar QUIC_IMAGE_TYPE_RGB24 = 3;\nvar QUIC_IMAGE_TYPE_RGB32 = 4;\nvar QUIC_IMAGE_TYPE_RGBA = 5;\nvar DEFevol = 3;\nvar DEFwmimax = 6;\nvar DEFwminext = 2048;\nvar need_init = true;\nvar DEFmaxclen = 26;\nvar evol = DEFevol;\nvar wmimax = DEFwmimax;\nvar wminext = DEFwminext;\nvar family_5bpc = { nGRcodewords:[0,0,0,0,0,0,0,0],\n                    notGRcwlen:[0,0,0,0,0,0,0,0],\n                    notGRprefixmask:[0,0,0,0,0,0,0,0],\n                    notGRsuffixlen:[0,0,0,0,0,0,0,0],\n                    xlatU2L:[0,0,0,0,0,0,0,0],\n                    xlatL2U:[0,0,0,0,0,0,0,0]\n                  };\nvar family_8bpc = { nGRcodewords:[0,0,0,0,0,0,0,0],\n                    notGRcwlen:[0,0,0,0,0,0,0,0],\n                    notGRprefixmask:[0,0,0,0,0,0,0,0],\n                    notGRsuffixlen:[0,0,0,0,0,0,0,0],\n                    xlatU2L:[0,0,0,0,0,0,0,0],\n                    xlatL2U:[0,0,0,0,0,0,0,0]\n                  };\nvar bppmask = [ 0x00000000,\n    0x00000001, 0x00000003, 0x00000007, 0x0000000f,\n    0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff,\n    0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff,\n    0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff,\n    0x0001ffff, 0x0003ffff, 0x0007ffff, 0x000fffff,\n    0x001fffff, 0x003fffff, 0x007fffff, 0x00ffffff,\n    0x01ffffff, 0x03ffffff, 0x07ffffff, 0x0fffffff,\n    0x1fffffff, 0x3fffffff, 0x7fffffff, 0xffffffff];\n\nvar zeroLUT = [];\n\nvar besttrigtab = [\n            [ 550, 900, 800, 700, 500, 350, 300, 200, 180, 180, 160],\n            [ 110, 550, 900, 800, 550, 400, 350, 250, 140, 160, 140],\n            [ 100, 120, 550, 900, 700, 500, 400, 300, 220, 250, 160]];\n\nvar J = [ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6,\n          7, 7, 8, 9, 10, 11, 12, 13, 14, 15];\n\nvar lzeroes = [\n    8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n    3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n    0, 0, 0, 0, 0, 0];\n\nvar tabrand_chaos = [\n    0x02c57542, 0x35427717, 0x2f5a2153, 0x9244f155, 0x7bd26d07, 0x354c6052,\n    0x57329b28, 0x2993868e, 0x6cd8808c, 0x147b46e0, 0x99db66af, 0xe32b4cac,\n    0x1b671264, 0x9d433486, 0x62a4c192, 0x06089a4b, 0x9e3dce44, 0xdaabee13,\n    0x222425ea, 0xa46f331d, 0xcd589250, 0x8bb81d7f, 0xc8b736b9, 0x35948d33,\n    0xd7ac7fd0, 0x5fbe2803, 0x2cfbc105, 0x013dbc4e, 0x7a37820f, 0x39f88e9e,\n    0xedd58794, 0xc5076689, 0xfcada5a4, 0x64c2f46d, 0xb3ba3243, 0x8974b4f9,\n    0x5a05aebd, 0x20afcd00, 0x39e2b008, 0x88a18a45, 0x600bde29, 0xf3971ace,\n    0xf37b0a6b, 0x7041495b, 0x70b707ab, 0x06beffbb, 0x4206051f, 0xe13c4ee3,\n    0xc1a78327, 0x91aa067c, 0x8295f72a, 0x732917a6, 0x1d871b4d, 0x4048f136,\n    0xf1840e7e, 0x6a6048c1, 0x696cb71a, 0x7ff501c3, 0x0fc6310b, 0x57e0f83d,\n    0x8cc26e74, 0x11a525a2, 0x946934c7, 0x7cd888f0, 0x8f9d8604, 0x4f86e73b,\n    0x04520316, 0xdeeea20c, 0xf1def496, 0x67687288, 0xf540c5b2, 0x22401484,\n    0x3478658a, 0xc2385746, 0x01979c2c, 0x5dad73c8, 0x0321f58b, 0xf0fedbee,\n    0x92826ddf, 0x284bec73, 0x5b1a1975, 0x03df1e11, 0x20963e01, 0xa17cf12b,\n    0x740d776e, 0xa7a6bf3c, 0x01b5cce4, 0x1118aa76, 0xfc6fac0a, 0xce927e9b,\n    0x00bf2567, 0x806f216c, 0xbca69056, 0x795bd3e9, 0xc9dc4557, 0x8929b6c2,\n    0x789d52ec, 0x3f3fbf40, 0xb9197368, 0xa38c15b5, 0xc3b44fa8, 0xca8333b0,\n    0xb7e8d590, 0xbe807feb, 0xbf5f8360, 0xd99e2f5c, 0x372928e1, 0x7c757c4c,\n    0x0db5b154, 0xc01ede02, 0x1fc86e78, 0x1f3985be, 0xb4805c77, 0x00c880fa,\n    0x974c1b12, 0x35ab0214, 0xb2dc840d, 0x5b00ae37, 0xd313b026, 0xb260969d,\n    0x7f4c8879, 0x1734c4d3, 0x49068631, 0xb9f6a021, 0x6b863e6f, 0xcee5debf,\n    0x29f8c9fb, 0x53dd6880, 0x72b61223, 0x1f67a9fd, 0x0a0f6993, 0x13e59119,\n    0x11cca12e, 0xfe6b6766, 0x16b6effc, 0x97918fc4, 0xc2b8a563, 0x94f2f741,\n    0x0bfa8c9a, 0xd1537ae8, 0xc1da349c, 0x873c60ca, 0x95005b85, 0x9b5c080e,\n    0xbc8abbd9, 0xe1eab1d2, 0x6dac9070, 0x4ea9ebf1, 0xe0cf30d4, 0x1ef5bd7b,\n    0xd161043e, 0x5d2fa2e2, 0xff5d3cae, 0x86ed9f87, 0x2aa1daa1, 0xbd731a34,\n    0x9e8f4b22, 0xb1c2c67a, 0xc21758c9, 0xa182215d, 0xccb01948, 0x8d168df7,\n    0x04238cfe, 0x368c3dbc, 0x0aeadca5, 0xbad21c24, 0x0a71fee5, 0x9fc5d872,\n    0x54c152c6, 0xfc329483, 0x6783384a, 0xeddb3e1c, 0x65f90e30, 0x884ad098,\n    0xce81675a, 0x4b372f7d, 0x68bf9a39, 0x43445f1e, 0x40f8d8cb, 0x90d5acb6,\n    0x4cd07282, 0x349eeb06, 0x0c9d5332, 0x520b24ef, 0x80020447, 0x67976491,\n    0x2f931ca3, 0xfe9b0535, 0xfcd30220, 0x61a9e6cc, 0xa487d8d7, 0x3f7c5dd1,\n    0x7d0127c5, 0x48f51d15, 0x60dea871, 0xc9a91cb7, 0x58b53bb3, 0x9d5e0b2d,\n    0x624a78b4, 0x30dbee1b, 0x9bdf22e7, 0x1df5c299, 0x2d5643a7, 0xf4dd35ff,\n    0x03ca8fd6, 0x53b47ed8, 0x6f2c19aa, 0xfeb0c1f4, 0x49e54438, 0x2f2577e6,\n    0xbf876969, 0x72440ea9, 0xfa0bafb8, 0x74f5b3a0, 0x7dd357cd, 0x89ce1358,\n    0x6ef2cdda, 0x1e7767f3, 0xa6be9fdb, 0x4f5f88f8, 0xba994a3a, 0x08ca6b65,\n    0xe0893818, 0x9e00a16a, 0xf42bfc8f, 0x9972eedc, 0x749c8b51, 0x32c05f5e,\n    0xd706805f, 0x6bfbb7cf, 0xd9210a10, 0x31a1db97, 0x923a9559, 0x37a7a1f6,\n    0x059f8861, 0xca493e62, 0x65157e81, 0x8f6467dd, 0xab85ff9f, 0x9331aff2,\n    0x8616b9f5, 0xedbd5695, 0xee7e29b1, 0x313ac44f, 0xb903112f, 0x432ef649,\n    0xdc0a36c0, 0x61cf2bba, 0x81474925, 0xa8b6c7ad, 0xee5931de, 0xb2f8158d,\n    0x59fb7409, 0x2e3dfaed, 0x9af25a3f, 0xe1fed4d5 ];\n\nvar rgb32_pixel_pad = 3;\nvar rgb32_pixel_r = 2;\nvar rgb32_pixel_g = 1;\nvar rgb32_pixel_b = 0;\nvar rgb32_pixel_size = 4;\n\n/* Helper Functions */\n\nfunction ceil_log_2(val)\n{\n    if (val === 1)\n        return 0;\n\n    var result = 1;\n    val -= 1;\n    while (val = val >>> 1)\n        result++;\n\n    return result;\n}\n\nfunction family_init(family, bpc, limit)\n{\n    var l;\n    for (l = 0; l < bpc; l++)\n    {\n        var altprefixlen, altcodewords;\n        altprefixlen = limit - bpc;\n        if (altprefixlen > bppmask[bpc - l])\n            altprefixlen = bppmask[bpc - l];\n\n        altcodewords = bppmask[bpc] + 1 - (altprefixlen << l);\n        family.nGRcodewords[l] = (altprefixlen << l);\n        family.notGRcwlen[l] = altprefixlen + ceil_log_2(altcodewords);\n        family.notGRprefixmask[l] = bppmask[32 - altprefixlen]>>>0;\n        family.notGRsuffixlen[l] = ceil_log_2(altcodewords);\n    }\n\n    /* decorelate_init */\n    var pixelbitmask = bppmask[bpc];\n    var pixelbitmaskshr = pixelbitmask >>> 1;\n    var s;\n    for (s = 0; s <= pixelbitmask; s++) {\n        if (s <= pixelbitmaskshr) {\n            family.xlatU2L[s] = s << 1;\n        } else {\n            family.xlatU2L[s] = ((pixelbitmask - s) << 1) + 1;\n        }\n    }\n\n    /* corelate_init */\n    for (s = 0; s <= pixelbitmask; s++) {\n        if (s & 0x01) {\n            family.xlatL2U[s] = pixelbitmask - (s >>> 1);\n        } else {\n            family.xlatL2U[s] = (s >>> 1);\n        }\n    }\n}\n\nfunction quic_image_bpc(type)\n{\n    switch (type) {\n    case QUIC_IMAGE_TYPE_GRAY:\n        return 8;\n    case QUIC_IMAGE_TYPE_RGB16:\n        return 5;\n    case QUIC_IMAGE_TYPE_RGB24:\n        return 8;\n    case QUIC_IMAGE_TYPE_RGB32:\n        return 8;\n    case QUIC_IMAGE_TYPE_RGBA:\n        return 8;\n    case QUIC_IMAGE_TYPE_INVALID:\n    default:\n        console.log(\"quic: bad image type\\n\");\n        return 0;\n    }\n}\n\nfunction cnt_l_zeroes(bits)\n{\n    if (bits & 0xff800000) {\n        return lzeroes[bits >>> 24];\n    } else if (bits & 0xffff8000) {\n        return 8 + lzeroes[(bits >>> 16) & 0x000000ff];\n    } else if (bits & 0xffffff80) {\n        return 16 + lzeroes[(bits >>> 8) & 0x000000ff];\n    } else {\n        return 24 + lzeroes[bits & 0x000000ff];\n    }\n}\n\nfunction golomb_decoding_8bpc(l, bits)\n{\n    var rc;\n    var cwlen;\n\n    if (bits < 0 || bits > family_8bpc.notGRprefixmask[l])\n    {\n        var zeroprefix = cnt_l_zeroes(bits);\n        cwlen = zeroprefix + 1 + l;\n        rc = (zeroprefix << l) | (bits >> (32-cwlen)) & bppmask[l];\n    }\n    else\n    {\n        cwlen = family_8bpc.notGRcwlen[l];\n        rc = family_8bpc.nGRcodewords[l] + ((bits >> (32-cwlen)) & bppmask[family_8bpc.notGRsuffixlen[l]]);\n    }\n    return {'codewordlen':cwlen, 'rc':rc};\n}\n\nfunction golomb_code_len_8bpc(n, l)\n{\n    if (n < family_8bpc.nGRcodewords[l]) {\n        return (n >>> l) + 1 + l;\n    } else {\n        return family_8bpc.notGRcwlen[l];\n    }\n}\n\nfunction QuicModel(bpc)\n{\n    var bstart;\n    var bend = 0;\n\n    this.levels = 0x1 << bpc;\n    this.n_buckets_ptrs = 0;\n\n    switch (evol) {\n        case 1:\n            this.repfirst = 3;\n            this.firstsize = 1;\n            this.repnext = 2;\n            this.mulsize = 2;\n            break;\n        case 3:\n            this.repfirst = 1;\n            this.firstsize = 1;\n            this.repnext = 1;\n            this.mulsize = 2;\n            break;\n        case 5:\n            this.repfirst = 1;\n            this.firstsize = 1;\n            this.repnext = 1;\n            this.mulsize = 4;\n            break;\n        case 0:\n        case 2:\n        case 4:\n            console.log(\"quic: findmodelparams(): evol value obsolete!!!\\n\");\n        default:\n            console.log(\"quic: findmodelparams(): evol out of range!!!\\n\");\n    }\n\n    this.n_buckets = 0;\n    var repcntr = this.repfirst + 1;\n    var bsize = this.firstsize;\n\n    do {\n        if (this.n_buckets) {\n            bstart = bend + 1;\n        } else {\n            bstart = 0;\n        }\n\n        if (!--repcntr) {\n            repcntr = this.repnext;\n            bsize *= this.mulsize;\n        }\n\n        bend = bstart + bsize - 1;\n        if (bend + bsize >= this.levels) {\n            bend = this.levels - 1;\n        }\n\n        if (!this.n_buckets_ptrs) {\n            this.n_buckets_ptrs = this.levels;\n        }\n\n        (this.n_buckets)++;\n    } while (bend < this.levels - 1);\n}\n\nQuicModel.prototype = {\n    n_buckets : 0,\n    n_buckets_ptrs : 0,\n    repfirst : 0,\n    firstsize : 0,\n    repnext : 0,\n    mulsize : 0,\n    levels :0\n}\n\nfunction QuicBucket()\n{\n    this.counters = [0,0,0,0,0,0,0,0];\n}\n\nQuicBucket.prototype = {\n    bestcode: 0,\n\n    reste : function (bpp)\n    {\n        this.bestcode = bpp;\n        this.counters = [0,0,0,0,0,0,0,0];\n    },\n\n    update_model_8bpc : function (state, curval, bpp)\n    {\n        var i;\n\n        var bestcode = bpp - 1;\n        var bestcodelen = (this.counters[bestcode] += golomb_code_len_8bpc(curval, bestcode));\n\n        for (i = bpp - 2; i >= 0; i--) {\n            var ithcodelen = (this.counters[i] += golomb_code_len_8bpc(curval, i));\n\n            if (ithcodelen < bestcodelen) {\n                bestcode = i;\n                bestcodelen = ithcodelen;\n            }\n        }\n\n        this.bestcode = bestcode;\n\n        if (bestcodelen > state.wm_trigger) {\n            for (i = 0; i < bpp; i++) {\n                this.counters[i] = this.counters[i] >>> 1;\n            }\n        }\n    }\n}\n\nfunction QuicFamilyStat()\n{\n    this.buckets_ptrs = [];\n    this.buckets_buf = [];\n}\n\nQuicFamilyStat.prototype = {\n\n    fill_model_structures : function(model)\n    {\n        var bstart;\n        var bend = 0;\n        var bnumber = 0;\n\n        var repcntr = model.repfirst + 1;\n        var bsize = model.firstsize;\n\n        do {\n            if (bnumber) {\n                bstart = bend + 1;\n            } else {\n                bstart = 0;\n            }\n\n            if (!--repcntr) {\n                repcntr = model.repnext;\n                bsize *= model.mulsize;\n            }\n\n            bend = bstart + bsize - 1;\n            if (bend + bsize >= model.levels) {\n                bend = model.levels - 1;\n            }\n\n            this.buckets_buf[bnumber] = new QuicBucket;\n\n            var i;\n            for (i = bstart; i <= bend; i++) {\n                this.buckets_ptrs[i] = this.buckets_buf[bnumber];\n            }\n\n            bnumber++;\n        } while (bend < model.levels - 1);\n        return true;\n    }\n}\n\nfunction QuicChannel(model_8bpc, model_5bpc)\n{\n    this.state = new CommonState;\n    this.family_stat_8bpc = new QuicFamilyStat;\n    this.family_stat_5bpc = new QuicFamilyStat;\n    this.correlate_row = { zero: 0 , row:[] };\n    this.model_8bpc = model_8bpc;\n    this.model_5bpc = model_5bpc;\n    this.buckets_ptrs = [];\n\n    if (!this.family_stat_8bpc.fill_model_structures(this.model_8bpc))\n        return undefined;\n\n    if (!this.family_stat_5bpc.fill_model_structures(this.model_5bpc))\n        return undefined;\n}\n\nQuicChannel.prototype = {\n\n    reste : function (bpc)\n    {\n        var j;\n        this.correlate_row = { zero: 0 , row: []};\n\n        if (bpc == 8) {\n            for (j = 0; j < this.model_8bpc.n_buckets; j++)\n                this.family_stat_8bpc.buckets_buf[j].reste(7);\n            this.buckets_ptrs = this.family_stat_8bpc.buckets_ptrs;\n        } else if (bpc == 5) {\n            for (j = 0; j < this.model_5bpc.n_buckets; j++)\n                this.family_stat_8bpc.buckets_buf[j].reste(4);\n            this.buckets_ptrs = this.family_stat_5bpc.buckets_ptrs;\n        } else {\n            console.log(\"quic: %s: bad bpc %d\\n\", __FUNCTION__, bpc);\n            return false;\n        }\n\n        this.state.reste();\n        return true;\n    }\n}\n\nfunction CommonState()\n{\n}\n\nCommonState.prototype = {\n    waitcnt: 0,\n    tabrand_seed: 0xff,\n    wm_trigger: 0,\n    wmidx: 0,\n    wmileft: wminext,\n    melcstate: 0,\n    melclen: 0,\n    melcorder: 0,\n\n    set_wm_trigger : function()\n    {\n        var wm = this.wmidx;\n        if (wm > 10) {\n            wm = 10;\n        }\n\n        this.wm_trigger = besttrigtab[Math.floor(evol / 2)][wm];\n    },\n\n    reste : function()\n    {\n        this.waitcnt = 0;\n        this.tabrand_seed = 0x0ff;\n        this.wmidx = 0;\n        this.wmileft = wminext;\n\n        this.set_wm_trigger();\n\n        this.melcstate = 0;\n        this.melclen = J[0];\n        this.melcorder = 1 << this.melclen;\n    },\n\n    tabrand : function()\n    {\n        this.tabrand_seed++;\n        return tabrand_chaos[this.tabrand_seed & 0x0ff];\n    }\n}\n\n\nfunction QuicEncoder()\n{\n    this.rgb_state = new CommonState;\n    this.model_8bpc = new QuicModel(8);\n    this.model_5bpc = new QuicModel(5);\n    this.channels = [];\n\n    var i;\n    for (i = 0; i < 4; i++) {\n        this.channels[i] = new QuicChannel(this.model_8bpc, this.model_5bpc);\n        if (!this.channels[i])\n        {\n            console.log(\"quic: failed to create channel\");\n            return undefined;\n        }\n    }\n}\n\nQuicEncoder.prototype = {\n                    type: 0,\n                    width: 0,\n                    height: 0,\n                    io_idx: 0,\n                    io_available_bits: 0,\n                    io_word: 0,\n                    io_next_word: 0,\n                    io_now: 0,\n                    io_end: 0,\n                    rows_completed: 0,\n              };\n\nQuicEncoder.prototype.reste = function(io_ptr)\n{\n    this.rgb_state.reste();\n\n    this.io_now = io_ptr;\n    this.io_end = this.io_now.length;\n    this.io_idx = 0;\n    this.rows_completed = 0;\n    return true;\n}\n\nQuicEncoder.prototype.read_io_word = function()\n{\n    if (this.io_idx >= this.io_end)\n        throw(\"quic: out of data\");\n    this.io_next_word = this.io_now[this.io_idx++] | this.io_now[this.io_idx++]<<8 | this.io_now[this.io_idx++]<<16 | this.io_now[this.io_idx++]<<24;\n}\n\nQuicEncoder.prototype.decode_eatbits = function (len)\n{\n    this.io_word = this.io_word << len;\n\n    var delta = (this.io_available_bits - len);\n    if (delta >= 0)\n    {\n        this.io_available_bits = delta;\n        this.io_word |= this.io_next_word >>> this.io_available_bits;\n    }\n    else\n    {\n        delta = -1 * delta;\n        this.io_word |= this.io_next_word << delta;\n        this.read_io_word();\n        this.io_available_bits = 32 - delta;\n        this.io_word |= this.io_next_word >>> this.io_available_bits;\n    }\n}\n\nQuicEncoder.prototype.decode_eat32bits = function()\n{\n    this.decode_eatbits(16);\n    this.decode_eatbits(16);\n}\n\nQuicEncoder.prototype.reste_channels = function(bpc)\n{\n    var i;\n\n    for (i = 0; i < 4; i++)\n        if (!this.channels[i].reste(bpc))\n            return false;\n    return true;\n}\n\nQuicEncoder.prototype.quic_decode_begin = function(io_ptr)\n{\n    if (!this.reste(io_ptr)) {\n        return false;\n    }\n\n    this.io_idx = 0;\n    this.io_next_word = this.io_now[this.io_idx++] | this.io_now[this.io_idx++]<<8 | this.io_now[this.io_idx++]<<16 | this.io_now[this.io_idx++]<<24;\n    this.io_word = this.io_next_word;\n    this.io_available_bits = 0;\n\n    var magic = this.io_word;\n    this.decode_eat32bits();\n    if (magic != 0x43495551) /*QUIC*/ {\n        console.log(\"quic: bad magic \"+magic.toString(16));\n        return false;\n    }\n\n    var version = this.io_word;\n    this.decode_eat32bits();\n    if (version != ((0 << 16) | (0 & 0xffff))) {\n        console.log(\"quic: bad version \"+version.toString(16));\n        return false;\n    }\n\n    this.type = this.io_word;\n    this.decode_eat32bits();\n\n    this.width = this.io_word;\n    this.decode_eat32bits();\n\n    this.height = this.io_word;\n    this.decode_eat32bits();\n\n    var bpc = quic_image_bpc(this.type);\n\n    if (!this.reste_channels(bpc))\n        return false;\n\n    return true;\n}\n\nQuicEncoder.prototype.quic_rgb32_uncompress_row0_seg = function (i, cur_row, end,\n                                       waitmask, bpc, bpc_mask)\n{\n    var stopidx;\n    var n_channels = 3;\n    var c;\n    var a;\n\n    if (!i) {\n        cur_row[rgb32_pixel_pad] = 0;\n        c = 0;\n        do\n        {\n            a = golomb_decoding_8bpc(this.channels[c].buckets_ptrs[this.channels[c].correlate_row.zero].bestcode, this.io_word);\n            this.channels[c].correlate_row.row[0] = a.rc;\n            cur_row[2-c] = (family_8bpc.xlatL2U[a.rc]&0xFF);\n            this.decode_eatbits(a.codewordlen);\n        } while (++c < n_channels);\n\n        if (this.rgb_state.waitcnt) {\n            --this.rgb_state.waitcnt;\n        } else {\n            this.rgb_state.waitcnt = (this.rgb_state.tabrand() & waitmask);\n            c = 0;\n            do\n            {\n                this.channels[c].buckets_ptrs[this.channels[c].correlate_row.zero].update_model_8bpc(this.rgb_state, this.channels[c].correlate_row.row[0], bpc);\n            } while (++c < n_channels);\n        }\n        stopidx = ++i + this.rgb_state.waitcnt;\n    } else {\n        stopidx = i + this.rgb_state.waitcnt;\n    }\n\n    while (stopidx < end) {\n        for (; i <= stopidx; i++) {\n            cur_row[(i* rgb32_pixel_size)+rgb32_pixel_pad] = 0;\n            c = 0;\n            do\n            {\n                a = golomb_decoding_8bpc(this.channels[c].buckets_ptrs[this.channels[c].correlate_row.row[i - 1]].bestcode, this.io_word);\n                this.channels[c].correlate_row.row[i] = a.rc;\n                cur_row[(i* rgb32_pixel_size)+(2-c)] = (family_8bpc.xlatL2U[a.rc] + cur_row[((i-1) * rgb32_pixel_size) + (2-c)]) & bpc_mask;\n                this.decode_eatbits(a.codewordlen);\n            } while (++c < n_channels);\n        }\n        c = 0;\n        do\n        {\n            this.channels[c].buckets_ptrs[this.channels[c].correlate_row.row[stopidx - 1]].update_model_8bpc(this.rgb_state, this.channels[c].correlate_row.row[stopidx], bpc);\n        } while (++c < n_channels);\n        stopidx = i + (this.rgb_state.tabrand() & waitmask);\n    }\n\n    for (; i < end; i++) {\n        cur_row[(i* rgb32_pixel_size)+rgb32_pixel_pad] = 0;\n        c = 0;\n        do\n        {\n            a = golomb_decoding_8bpc(this.channels[c].buckets_ptrs[this.channels[c].correlate_row.row[i - 1]].bestcode, this.io_word);\n            this.channels[c].correlate_row.row[i] = a.rc;\n            cur_row[(i* rgb32_pixel_size)+(2-c)] = (family_8bpc.xlatL2U[a.rc] + cur_row[((i-1) * rgb32_pixel_size) + (2-c)]) & bpc_mask;\n            this.decode_eatbits(a.codewordlen);\n        } while (++c < n_channels);\n    }\n    this.rgb_state.waitcnt = stopidx - end;\n}\n\nQuicEncoder.prototype.quic_rgb32_uncompress_row0 = function (cur_row)\n{\n    var bpc = 8;\n    var bpc_mask = 0xff;\n    var pos = 0;\n    var width = this.width;\n\n    while ((wmimax > this.rgb_state.wmidx) && (this.rgb_state.wmileft <= width)) {\n        if (this.rgb_state.wmileft) {\n            this.quic_rgb32_uncompress_row0_seg(pos, cur_row,\n                                       pos + this.rgb_state.wmileft,\n                                       bppmask[this.rgb_state.wmidx],\n                                       bpc, bpc_mask);\n            pos += this.rgb_state.wmileft;\n            width -= this.rgb_state.wmileft;\n        }\n\n        this.rgb_state.wmidx++;\n        this.rgb_state.set_wm_trigger();\n        this.rgb_state.wmileft = wminext;\n    }\n\n    if (width) {\n        this.quic_rgb32_uncompress_row0_seg(pos, cur_row, pos + width,\n                                   bppmask[this.rgb_state.wmidx], bpc, bpc_mask);\n        if (wmimax > this.rgb_state.wmidx) {\n            this.rgb_state.wmileft -= width;\n        }\n    }\n}\n\nQuicEncoder.prototype.quic_rgb32_uncompress_row_seg = function( prev_row, cur_row, i, end, bpc, bpc_mask)\n{\n    var n_channels = 3;\n    var waitmask = bppmask[this.rgb_state.wmidx];\n\n    var a;\n    var run_index = 0;\n    var stopidx = 0;\n    var run_end = 0;\n    var c;\n\n    if (!i)\n    {\n        cur_row[rgb32_pixel_pad] = 0;\n\n        c = 0;\n        do {\n            a = golomb_decoding_8bpc(this.channels[c].buckets_ptrs[this.channels[c].correlate_row.zero].bestcode, this.io_word);\n            this.channels[c].correlate_row.row[0] = a.rc;\n            cur_row[2-c] = (family_8bpc.xlatL2U[this.channels[c].correlate_row.row[0]] + prev_row[2-c]) & bpc_mask;\n            this.decode_eatbits(a.codewordlen);\n        } while (++c < n_channels);\n\n        if (this.rgb_state.waitcnt) {\n            --this.rgb_state.waitcnt;\n        } else {\n            this.rgb_state.waitcnt = (this.rgb_state.tabrand() & waitmask);\n            c = 0;\n            do {\n                this.channels[c].buckets_ptrs[this.channels[c].correlate_row.zero].update_model_8bpc(this.rgb_state, this.channels[c].correlate_row.row[0], bpc);\n            } while (++c < n_channels);\n        }\n        stopidx = ++i + this.rgb_state.waitcnt;\n    } else {\n        stopidx = i + this.rgb_state.waitcnt;\n    }\n    for (;;) {\n        var rc = 0;\n        while (stopidx < end && !rc) {\n            for (; i <= stopidx && !rc; i++) {\n                var pixel = i * rgb32_pixel_size;\n                var pixelm1 = (i-1) * rgb32_pixel_size;\n                var pixelm2 = (i-2) * rgb32_pixel_size;\n\n                if ( prev_row[pixelm1+rgb32_pixel_r] == prev_row[pixel+rgb32_pixel_r] && prev_row[pixelm1+rgb32_pixel_g] == prev_row[pixel+rgb32_pixel_g] && prev_row[pixelm1 + rgb32_pixel_b] == prev_row[pixel+rgb32_pixel_b])\n                {\n                    if (run_index != i && i > 2 && (cur_row[pixelm1+rgb32_pixel_r] == cur_row[pixelm2+rgb32_pixel_r] && cur_row[pixelm1+rgb32_pixel_g] == cur_row[pixelm2+rgb32_pixel_g] && cur_row[pixelm1+rgb32_pixel_b] == cur_row[pixelm2+rgb32_pixel_b]))\n                    {\n                        /* do run */\n                        this.rgb_state.waitcnt = stopidx - i;\n                        run_index = i;\n                        run_end = i + this.decode_run(this.rgb_state);\n\n                        for (; i < run_end; i++) {\n                            var pixel = i * rgb32_pixel_size;\n                            var pixelm1 = (i-1) * rgb32_pixel_size;\n                            cur_row[pixel+rgb32_pixel_pad] = 0;\n                            cur_row[pixel+rgb32_pixel_r] = cur_row[pixelm1+rgb32_pixel_r];\n                            cur_row[pixel+rgb32_pixel_g] = cur_row[pixelm1+rgb32_pixel_g];\n                            cur_row[pixel+rgb32_pixel_b] = cur_row[pixelm1+rgb32_pixel_b];\n                        }\n\n                        if (i == end) {\n                            return;\n                        }\n                        else\n                        {\n                            stopidx = i + this.rgb_state.waitcnt;\n                            rc = 1;\n                            break;\n                        }\n                    }\n                }\n\n                c = 0;\n                cur_row[pixel+rgb32_pixel_pad] = 0;\n                do {\n                    var cc = this.channels[c];\n                    var cr = cc.correlate_row;\n\n                    a = golomb_decoding_8bpc(cc.buckets_ptrs[cr.row[i-1]].bestcode, this.io_word);\n                    cr.row[i] = a.rc;\n                cur_row[pixel+(2-c)] = (family_8bpc.xlatL2U[a.rc] + ((cur_row[pixelm1+(2-c)] + prev_row[pixel+(2-c)]) >> 1)) & bpc_mask;\n                    this.decode_eatbits(a.codewordlen);\n                } while (++c < n_channels);\n            }\n            if (rc)\n                break;\n\n            c = 0;\n            do {\n                this.channels[c].buckets_ptrs[this.channels[c].correlate_row.row[stopidx - 1]].update_model_8bpc(this.rgb_state, this.channels[c].correlate_row.row[stopidx], bpc);\n            } while (++c < n_channels);\n\n            stopidx = i + (this.rgb_state.tabrand() & waitmask);\n        }\n\n        for (; i < end && !rc; i++) {\n            var pixel = i * rgb32_pixel_size;\n            var pixelm1 = (i-1) * rgb32_pixel_size;\n            var pixelm2 = (i-2) * rgb32_pixel_size;\n\n            if (prev_row[pixelm1+rgb32_pixel_r] == prev_row[pixel+rgb32_pixel_r] && prev_row[pixelm1+rgb32_pixel_g] == prev_row[pixel+rgb32_pixel_g] && prev_row[pixelm1+rgb32_pixel_b] == prev_row[pixel+rgb32_pixel_b])\n            {\n                if (run_index != i && i > 2 && (cur_row[pixelm1+rgb32_pixel_r] == cur_row[pixelm2+rgb32_pixel_r] && cur_row[pixelm1+rgb32_pixel_g] == cur_row[pixelm2+rgb32_pixel_g] && cur_row[pixelm1+rgb32_pixel_b] == cur_row[pixelm2+rgb32_pixel_b]))\n                {\n                    /* do run */\n                    this.rgb_state.waitcnt = stopidx - i;\n                    run_index = i;\n                    run_end = i + this.decode_run(this.rgb_state);\n\n                    for (; i < run_end; i++) {\n                        var pixel = i * rgb32_pixel_size;\n                        var pixelm1 = (i-1) * rgb32_pixel_size;\n                        cur_row[pixel+rgb32_pixel_pad] = 0;\n                        cur_row[pixel+rgb32_pixel_r] = cur_row[pixelm1+rgb32_pixel_r];\n                        cur_row[pixel+rgb32_pixel_g] = cur_row[pixelm1+rgb32_pixel_g];\n                        cur_row[pixel+rgb32_pixel_b] = cur_row[pixelm1+rgb32_pixel_b];\n                    }\n\n                    if (i == end) {\n                        return;\n                    }\n                    else\n                    {\n                        stopidx = i + this.rgb_state.waitcnt;\n                        rc = 1;\n                        break;\n                    }\n                }\n            }\n\n            cur_row[pixel+rgb32_pixel_pad] = 0;\n            c = 0;\n            do\n            {\n                a = golomb_decoding_8bpc(this.channels[c].buckets_ptrs[this.channels[c].correlate_row.row[i-1]].bestcode, this.io_word);\n                this.channels[c].correlate_row.row[i] = a.rc;\n                cur_row[pixel+(2-c)] = (family_8bpc.xlatL2U[a.rc] + ((cur_row[pixelm1+(2-c)] + prev_row[pixel+(2-c)]) >> 1)) & bpc_mask;\n                this.decode_eatbits(a.codewordlen);\n            } while (++c < n_channels);\n        }\n\n          if (!rc)\n          {\n            this.rgb_state.waitcnt = stopidx - end;\n            return;\n          }\n        }\n}\n\nQuicEncoder.prototype.decode_run = function(state)\n{\n    var runlen = 0;\n\n    do {\n        var hits;\n        var x = (~(this.io_word >>> 24)>>>0)&0xff;\n        var temp = zeroLUT[x];\n\n        for (hits = 1; hits <= temp; hits++) {\n            runlen += state.melcorder;\n\n            if (state.melcstate < 32) {\n                state.melclen = J[++state.melcstate];\n                state.melcorder = (1 << state.melclen);\n            }\n        }\n        if (temp != 8) {\n            this.decode_eatbits(temp + 1);\n\n            break;\n        }\n        this.decode_eatbits(8);\n    } while (true);\n\n    if (state.melclen) {\n        runlen += this.io_word >>> (32 - state.melclen);\n        this.decode_eatbits(state.melclen);\n    }\n\n    if (state.melcstate) {\n        state.melclen = J[--state.melcstate];\n        state.melcorder = (1 << state.melclen);\n    }\n\n    return runlen;\n}\n\nQuicEncoder.prototype.quic_rgb32_uncompress_row = function (prev_row, cur_row)\n{\n    var bpc = 8;\n    var bpc_mask = 0xff;\n    var pos = 0;\n    var width = this.width;\n\n    while ((wmimax > this.rgb_state.wmidx) && (this.rgb_state.wmileft <= width)) {\n        if (this.rgb_state.wmileft) {\n            this.quic_rgb32_uncompress_row_seg(prev_row, cur_row, pos,\n                                      pos + this.rgb_state.wmileft, bpc, bpc_mask);\n            pos += this.rgb_state.wmileft;\n            width -= this.rgb_state.wmileft;\n        }\n\n        this.rgb_state.wmidx++;\n        this.rgb_state.set_wm_trigger();\n        this.rgb_state.wmileft = wminext;\n    }\n\n    if (width) {\n        this.quic_rgb32_uncompress_row_seg(prev_row, cur_row, pos,\n                                  pos + width, bpc, bpc_mask);\n        if (wmimax > this.rgb_state.wmidx) {\n            this.rgb_state.wmileft -= width;\n        }\n    }\n}\n\nQuicEncoder.prototype.quic_four_uncompress_row0_seg = function (channel, i,\n                                       correlate_row, cur_row, end, waitmask,\n                                       bpc, bpc_mask)\n{\n    var stopidx;\n    var a;\n\n    if (i == 0) {\n        a = golomb_decoding_8bpc(channel.buckets_ptrs[correlate_row.zero].bestcode, this.io_word);\n        correlate_row.row[0] = a.rc;\n        cur_row[rgb32_pixel_pad] = family_8bpc.xlatL2U[a.rc];\n        this.decode_eatbits(a.codewordlen);\n\n        if (channel.state.waitcnt) {\n            --channel.state.waitcnt;\n        } else {\n            channel.state.waitcnt = (channel.state.tabrand() & waitmask);\n            channel.buckets_ptrs[correlate_row.zero].update_model_8bpc(channel.state, correlate_row.row[0], bpc);\n        }\n        stopidx = ++i + channel.state.waitcnt;\n    } else {\n        stopidx = i + channel.state.waitcnt;\n    }\n\n    while (stopidx < end) {\n        var pbucket;\n\n        for (; i <= stopidx; i++) {\n            pbucket = channel.buckets_ptrs[correlate_row.row[i - 1]];\n\n            a = golomb_decoding_8bpc(pbucket.bestcode, this.io_word);\n            correlate_row.row[i] = a.rc;\n            cur_row[(i*rgb32_pixel_size)+rgb32_pixel_pad] = (family_8bpc.xlatL2U[a.rc] + cur_row[((i-1)*rgb32_pixel_size)+rgb32_pixel_pad]) & bpc_mask;\n            this.decode_eatbits(a.codewordlen);\n        }\n\n        pbucket.update_model_8bpc(channel.state, correlate_row.row[stopidx], bpc);\n\n        stopidx = i + (channel.state.tabrand() & waitmask);\n    }\n\n    for (; i < end; i++) {\n        a = golomb_decoding_8bpc(channel.buckets_ptrs[correlate_row.row[i-1]].bestcode, this.io_word);\n\n        correlate_row.row[i] = a.rc;\n        cur_row[(i*rgb32_pixel_size)+rgb32_pixel_pad] = (family_8bpc.xlatL2U[a.rc] + cur_row[((i-1)*rgb32_pixel_size)+rgb32_pixel_pad]) & bpc_mask;\n        this.decode_eatbits(a.codewordlen);\n    }\n    channel.state.waitcnt = stopidx - end;\n}\n\nQuicEncoder.prototype.quic_four_uncompress_row0 = function(channel, cur_row)\n{\n    var bpc = 8;\n    var bpc_mask = 0xff;\n    var correlate_row = channel.correlate_row;\n    var pos = 0;\n    var width = this.width;\n\n    while ((wmimax > channel.state.wmidx) && (channel.state.wmileft <= width)) {\n        if (channel.state.wmileft) {\n            this.quic_four_uncompress_row0_seg(channel, pos, correlate_row, cur_row,\n                                       pos + channel.state.wmileft, bppmask[channel.state.wmidx],\n                                       bpc, bpc_mask);\n            pos += channel.state.wmileft;\n            width -= channel.state.wmileft;\n        }\n\n        channel.state.wmidx++;\n        channel.state.set_wm_trigger();\n        channel.state.wmileft = wminext;\n    }\n\n    if (width) {\n        this.quic_four_uncompress_row0_seg(channel, pos, correlate_row, cur_row, pos + width,\n                                   bppmask[channel.state.wmidx], bpc, bpc_mask);\n        if (wmimax > channel.state.wmidx) {\n            channel.state.wmileft -= width;\n        }\n    }\n}\n\nQuicEncoder.prototype.quic_four_uncompress_row_seg = function (channel,\n                                      correlate_row, prev_row, cur_row, i,\n                                      end, bpc, bpc_mask)\n{\n    var waitmask = bppmask[channel.state.wmidx];\n    var stopidx;\n\n    var run_index = 0;\n    var run_end;\n\n    var a;\n\n    if (i == 0) {\n        a = golomb_decoding_8bpc(channel.buckets_ptrs[correlate_row.zero].bestcode, this.io_word);\n\n        correlate_row.row[0] = a.rc\n        cur_row[rgb32_pixel_pad] = (family_8bpc.xlatL2U[a.rc] + prev_row[rgb32_pixel_pad]) & bpc_mask;\n        this.decode_eatbits(a.codewordlen);\n\n        if (channel.state.waitcnt) {\n            --channel.state.waitcnt;\n        } else {\n            channel.state.waitcnt = (channel.state.tabrand() & waitmask);\n            channel.buckets_ptrs[correlate_row.zero].update_model_8bpc(channel.state, correlate_row.row[0], bpc);\n        }\n        stopidx = ++i + channel.state.waitcnt;\n    } else {\n        stopidx = i + channel.state.waitcnt;\n    }\n    for (;;) {\n        var rc = 0;\n        while (stopidx < end && !rc) {\n            var pbucket;\n            for (; i <= stopidx && !rc; i++) {\n                var pixel = i * rgb32_pixel_size;\n                var pixelm1 = (i-1) * rgb32_pixel_size;\n                var pixelm2 = (i-2) * rgb32_pixel_size;\n\n                if (prev_row[pixelm1+rgb32_pixel_pad] == prev_row[pixel+rgb32_pixel_pad])\n                {\n                    if (run_index != i && i > 2 && cur_row[pixelm1+rgb32_pixel_pad] == cur_row[pixelm2+rgb32_pixel_pad])\n                    {\n                        /* do run */\n                        channel.state.waitcnt = stopidx - i;\n                        run_index = i;\n\n                        run_end = i + this.decode_run(channel.state);\n\n                        for (; i < run_end; i++) {\n                            var pixel = i * rgb32_pixel_size;\n                            var pixelm1 = (i-1) * rgb32_pixel_size;\n                            cur_row[pixel+rgb32_pixel_pad] = cur_row[pixelm1+rgb32_pixel_pad];\n                        }\n\n                        if (i == end) {\n                            return;\n                        }\n                        else\n                        {\n                            stopidx = i + channel.state.waitcnt;\n                            rc = 1;\n                            break;\n                        }\n                    }\n                }\n\n                pbucket = channel.buckets_ptrs[correlate_row.row[i - 1]];\n                a = golomb_decoding_8bpc(pbucket.bestcode, this.io_word);\n                correlate_row.row[i] = a.rc\n                cur_row[pixel+rgb32_pixel_pad] = (family_8bpc.xlatL2U[a.rc] + ((cur_row[pixelm1+rgb32_pixel_pad] + prev_row[pixel+rgb32_pixel_pad]) >> 1)) & bpc_mask;\n                this.decode_eatbits(a.codewordlen);\n            }\n            if (rc)\n                break;\n\n            pbucket.update_model_8bpc(channel.state, correlate_row.row[stopidx], bpc);\n\n            stopidx = i + (channel.state.tabrand() & waitmask);\n        }\n\n        for (; i < end && !rc; i++) {\n            var pixel = i * rgb32_pixel_size;\n            var pixelm1 = (i-1) * rgb32_pixel_size;\n            var pixelm2 = (i-2) * rgb32_pixel_size;\n            if (prev_row[pixelm1+rgb32_pixel_pad] == prev_row[pixel+rgb32_pixel_pad])\n            {\n                if (run_index != i && i > 2 && cur_row[pixelm1+rgb32_pixel_pad] == cur_row[pixelm2+rgb32_pixel_pad])\n                {\n                    /* do run */\n                    channel.state.waitcnt = stopidx - i;\n                    run_index = i;\n\n                    run_end = i + this.decode_run(channel.state);\n\n                    for (; i < run_end; i++) {\n                        var pixel = i * rgb32_pixel_size;\n                        var pixelm1 = (i-1) * rgb32_pixel_size;\n                        cur_row[pixel+rgb32_pixel_pad] = cur_row[pixelm1+rgb32_pixel_pad];\n                    }\n\n                    if (i == end) {\n                        return;\n                    }\n                    else\n                    {\n                        stopidx = i + channel.state.waitcnt;\n                        rc = 1;\n                        break;\n                    }\n                }\n            }\n\n            a = golomb_decoding_8bpc(channel.buckets_ptrs[correlate_row.row[i-1]].bestcode, this.io_word);\n            correlate_row.row[i] = a.rc;\n            cur_row[pixel+rgb32_pixel_pad] = (family_8bpc.xlatL2U[a.rc] + ((cur_row[pixelm1+rgb32_pixel_pad] + prev_row[pixel+rgb32_pixel_pad]) >> 1)) & bpc_mask;\n            this.decode_eatbits(a.codewordlen);\n        }\n\n        if (!rc)\n        {\n            channel.state.waitcnt = stopidx - end;\n            return;\n        }\n    }\n}\n\nQuicEncoder.prototype.quic_four_uncompress_row = function(channel, prev_row,\n                                                        cur_row)\n{\n    var bpc = 8;\n    var bpc_mask = 0xff;\n    var correlate_row = channel.correlate_row;\n    var pos = 0;\n    var width = this.width;\n\n    while ((wmimax > channel.state.wmidx) && (channel.state.wmileft <= width)) {\n        if (channel.state.wmileft) {\n            this.quic_four_uncompress_row_seg(channel, correlate_row, prev_row, cur_row, pos,\n                                      pos + channel.state.wmileft, bpc, bpc_mask);\n            pos += channel.state.wmileft;\n            width -= channel.state.wmileft;\n        }\n\n        channel.state.wmidx++;\n        channel.state.set_wm_trigger();\n        channel.state.wmileft = wminext;\n    }\n\n    if (width) {\n        this.quic_four_uncompress_row_seg(channel, correlate_row, prev_row, cur_row, pos,\n                                  pos + width, bpc, bpc_mask);\n        if (wmimax > channel.state.wmidx) {\n            channel.state.wmileft -= width;\n        }\n    }\n}\n\n/* We need to be generating rgb32 or rgba */\nQuicEncoder.prototype.quic_decode = function(buf, stride)\n{\n    var row;\n\n    switch (this.type)\n    {\n        case QUIC_IMAGE_TYPE_RGB32:\n        case QUIC_IMAGE_TYPE_RGB24:\n            this.channels[0].correlate_row.zero = 0;\n            this.channels[1].correlate_row.zero = 0;\n            this.channels[2].correlate_row.zero = 0;\n            this.quic_rgb32_uncompress_row0(buf);\n\n            this.rows_completed++;\n            for (row = 1; row < this.height; row++)\n            {\n                var prev = buf;\n                buf = prev.subarray(stride);\n                this.channels[0].correlate_row.zero = this.channels[0].correlate_row.row[0];\n                this.channels[1].correlate_row.zero = this.channels[1].correlate_row.row[0];\n                this.channels[2].correlate_row.zero = this.channels[2].correlate_row.row[0];\n                this.quic_rgb32_uncompress_row(prev, buf);\n                this.rows_completed++;\n            };\n            break;\n        case QUIC_IMAGE_TYPE_RGB16:\n            console.log(\"quic: unsupported output format\\n\");\n            return false;\n            break;\n        case QUIC_IMAGE_TYPE_RGBA:\n            this.channels[0].correlate_row.zero = 0;\n            this.channels[1].correlate_row.zero = 0;\n            this.channels[2].correlate_row.zero = 0;\n            this.quic_rgb32_uncompress_row0(buf);\n\n            this.channels[3].correlate_row.zero = 0;\n            this.quic_four_uncompress_row0(this.channels[3], buf);\n\n            this.rows_completed++;\n            for (row = 1; row < this.height; row++) {\n                var prev = buf;\n                buf = prev.subarray(stride);\n\n                this.channels[0].correlate_row.zero = this.channels[0].correlate_row.row[0];\n                this.channels[1].correlate_row.zero = this.channels[1].correlate_row.row[0];\n                this.channels[2].correlate_row.zero = this.channels[2].correlate_row.row[0];\n                this.quic_rgb32_uncompress_row(prev, buf);\n\n                this.channels[3].correlate_row.zero = this.channels[3].correlate_row.row[0];\n                this.quic_four_uncompress_row(encoder.channels[3], prev, buf);\n                this.rows_completed++;\n            }\n            break;\n\n        case QUIC_IMAGE_TYPE_GRAY:\n            console.log(\"quic: unsupported output format\\n\");\n            return false;\n            break;\n\n        case QUIC_IMAGE_TYPE_INVALID:\n        default:\n            console.log(\"quic: bad image type\\n\");\n            return false;\n    }\n    return true;\n}\n\nQuicEncoder.prototype.simple_quic_decode = function(buf)\n{\n    var stride = 4; /* FIXME - proper stride calc please */\n    if (!this.quic_decode_begin(buf))\n        return undefined;\n    if (this.type != QUIC_IMAGE_TYPE_RGB32 && this.type != QUIC_IMAGE_TYPE_RGB24\n        && this.type != QUIC_IMAGE_TYPE_RGBA)\n        return undefined;\n    var out = new Uint8Array(this.width*this.height*4);\n    out[0] = 69;\n    if (this.quic_decode( out, (this.width * stride)))\n        return out;\n    return undefined;\n}\n\nfunction SpiceQuic()\n{\n}\n\nSpiceQuic.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        if (!encoder)\n            throw(\"quic: no quic encoder\");\n        this.data_size = dv.getUint32(at, true);\n        at += 4;\n        var buf = new Uint8Array(mb.slice(at));\n        this.outptr = encoder.simple_quic_decode(buf);\n        if (this.outptr)\n        {\n            this.type = encoder.type;\n            this.width = encoder.width;\n            this.height = encoder.height;\n        }\n        at += buf.length;\n        return at;\n    },\n}\n\nfunction convert_spice_quic_to_web(context, spice_quic)\n{\n    var ret = context.createImageData(spice_quic.width, spice_quic.height);\n    var i;\n    for (i = 0; i < (ret.width * ret.height * 4); i+=4)\n    {\n        ret.data[i + 0] = spice_quic.outptr[i + 2];\n        ret.data[i + 1] = spice_quic.outptr[i + 1];\n        ret.data[i + 2] = spice_quic.outptr[i + 0];\n        if (spice_quic.type !== QUIC_IMAGE_TYPE_RGBA)\n            ret.data[i + 3] = 255;\n        else\n            ret.data[i + 3] = 255 - spice_quic.outptr[i + 3];\n    }\n   return ret;\n}\n\n/* Module initialization */\nif (need_init)\n{\n    need_init = false;\n\n    family_init(family_8bpc, 8, DEFmaxclen);\n    family_init(family_5bpc, 5, DEFmaxclen);\n    /* init_zeroLUT */\n    var i, j, k, l;\n\n    j = k = 1;\n    l = 8;\n    for (i = 0; i < 256; ++i) {\n        zeroLUT[i] = l;\n        --k;\n        if (k == 0) {\n            k = j;\n            --l;\n            j *= 2;\n        }\n    }\n\n    encoder = new QuicEncoder;\n\n    if (!encoder)\n        throw(\"quic: failed to create encoder\");\n}\n;\ndefine(\"spice-quic\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n\n/*----------------------------------------------------------------------------\n**  bitmap.js\n**      Handle SPICE_IMAGE_TYPE_BITMAP\n**--------------------------------------------------------------------------*/\nfunction convert_spice_bitmap_to_web(context, spice_bitmap)\n{\n    var ret;\n    var offset, x;\n    var u8 = new Uint8Array(spice_bitmap.data);\n    if (spice_bitmap.format != SPICE_BITMAP_FMT_32BIT &&\n        spice_bitmap.format != SPICE_BITMAP_FMT_RGBA)\n        return undefined;\n\n    ret = context.createImageData(spice_bitmap.x, spice_bitmap.y);\n    for (offset = 0; offset < (spice_bitmap.y * spice_bitmap.stride); )\n        for (x = 0; x < spice_bitmap.x; x++, offset += 4)\n        {\n            ret.data[offset + 0 ] = u8[offset + 2];\n            ret.data[offset + 1 ] = u8[offset + 1];\n            ret.data[offset + 2 ] = u8[offset + 0];\n\n            // FIXME - We effectively treat all images as having SPICE_IMAGE_FLAGS_HIGH_BITS_SET\n            if (spice_bitmap.format == SPICE_BITMAP_FMT_32BIT)\n                ret.data[offset + 3] = 255;\n            else\n                ret.data[offset + 3] = u8[offset];\n        }\n\n    return ret;\n}\n;\ndefine(\"spice-bitmap\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  SpiceDataView\n** FIXME FIXME \n**    This is used because Firefox does not have DataView yet.\n**    We should use DataView if we have it, because it *has* to \n**    be faster than this code \n**--------------------------------------------------------------------------*/\nfunction SpiceDataView(buffer, byteOffset, byteLength)\n{\n    if (byteOffset !== undefined)\n    {\n        if (byteLength !== undefined)\n            this.u8 = new Uint8Array(buffer, byteOffset, byteLength);\n        else\n            this.u8 = new Uint8Array(buffer, byteOffset);\n    }\n    else\n        this.u8 = new Uint8Array(buffer);\n};\n\nSpiceDataView.prototype = {\n    getUint8:  function(byteOffset)\n    {\n        return this.u8[byteOffset];\n    },\n    getUint16:  function(byteOffset, littleEndian)\n    {\n        var low = 1, high = 0;\n        if (littleEndian)\n        {\n            low = 0;\n            high = 1;\n        }\n\n        return (this.u8[byteOffset + high] << 8) | this.u8[byteOffset + low];\n    },\n    getUint32:  function(byteOffset, littleEndian)\n    {\n        var low = 2, high = 0;\n        if (littleEndian)\n        {\n            low = 0;\n            high = 2;\n        }\n\n        return (this.getUint16(byteOffset + high, littleEndian) << 16) | \n                this.getUint16(byteOffset + low, littleEndian);\n    },\n    getUint64: function (byteOffset, littleEndian)\n    {\n        var low = 4, high = 0;\n        if (littleEndian)\n        {\n            low = 0;\n            high = 4;\n        }\n\n        return (this.getUint32(byteOffset + high, littleEndian) << 32) |\n                this.getUint32(byteOffset + low, littleEndian);\n    },\n    setUint8:  function(byteOffset, b)\n    {\n        this.u8[byteOffset] = (b & 0xff);\n    },\n    setUint16:  function(byteOffset, i, littleEndian)\n    {\n        var low = 1, high = 0;\n        if (littleEndian)\n        {\n            low = 0;\n            high = 1;\n        }\n        this.u8[byteOffset + high] = (i & 0xffff) >> 8;\n        this.u8[byteOffset + low]  = (i & 0x00ff);\n    },\n    setUint32:  function(byteOffset, w, littleEndian)\n    {\n        var low = 2, high = 0;\n        if (littleEndian)\n        {\n            low = 0;\n            high = 2;\n        }\n\n        this.setUint16(byteOffset + high, (w & 0xffffffff) >> 16, littleEndian);\n        this.setUint16(byteOffset + low,  (w & 0x0000ffff), littleEndian);\n    },\n    setUint64:  function(byteOffset, w, littleEndian)\n    {\n        var low = 4, high = 0;\n        if (littleEndian)\n        {\n            low = 0;\n            high = 4;\n        }\n\n        this.setUint32(byteOffset + high, (w & 0xffffffffffffffff) >> 32, littleEndian);\n        this.setUint32(byteOffset + low,  (w & 0x00000000ffffffff), littleEndian);\n    },\n}\n;\ndefine(\"spice-spicedataview\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  Spice types\n**      This file contains classes for common spice types.\n**  Generally, they are used as helpers in reading and writing messages\n**  to and from the server.\n**--------------------------------------------------------------------------*/\n\nfunction SpiceChannelId()\n{\n}\nSpiceChannelId.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.type = dv.getUint8(at, true); at ++;\n        this.id = dv.getUint8(at, true); at ++;\n        return at;\n    },\n}\n\nfunction SpiceRect()\n{\n}\n\nSpiceRect.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.top = dv.getUint32(at, true); at += 4;\n        this.left = dv.getUint32(at, true); at += 4;\n        this.bottom = dv.getUint32(at, true); at += 4;\n        this.right = dv.getUint32(at, true); at += 4;\n        return at;\n    },\n    is_same_size : function(r)\n    {\n        if ((this.bottom - this.top) == (r.bottom - r.top) &&\n            (this.right - this.left) == (r.right - r.left) )\n            return true;\n\n        return false;\n    },\n}\n\nfunction SpiceClipRects()\n{\n}\n\nSpiceClipRects.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        var i;\n        this.num_rects = dv.getUint32(at, true); at += 4;\n        if (this.num_rects > 0)\n            this.rects = [];\n        for (i = 0; i < this.num_rects; i++)\n        {\n            this.rects[i] = new SpiceRect();\n            at = this.rects[i].from_dv(dv, at, mb);\n        }\n        return at;\n    },\n}\n\nfunction SpiceClip()\n{\n}\n\nSpiceClip.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.type = dv.getUint8(at, true); at ++;\n        if (this.type == SPICE_CLIP_TYPE_RECTS)\n        {\n            this.rects = new SpiceClipRects();\n            at = this.rects.from_dv(dv, at, mb);\n        }\n        return at;\n    },\n}\n\nfunction SpiceImageDescriptor()\n{\n}\n\nSpiceImageDescriptor.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.id = dv.getUint64(at, true); at += 8;\n        this.type  = dv.getUint8(at, true); at ++;\n        this.flags = dv.getUint8(at, true); at ++;\n        this.width = dv.getUint32(at, true); at += 4;\n        this.height= dv.getUint32(at, true); at += 4;\n        return at;\n    },\n}\n\nfunction SpicePalette()\n{\n}\n\nSpicePalette.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        var i;\n        this.unique = dv.getUint64(at, true); at += 8;\n        this.num_ents = dv.getUint16(at, true); at += 2;\n        this.ents = [];\n        for (i = 0; i < this.num_ents; i++)\n        {\n            this.ents[i] = dv.getUint32(at, true); at += 4;\n        }\n        return at;\n    },\n}\n\nfunction SpiceBitmap()\n{\n}\n\nSpiceBitmap.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.format = dv.getUint8(at, true); at++;\n        this.flags  = dv.getUint8(at, true); at++;\n        this.x = dv.getUint32(at, true); at += 4;\n        this.y = dv.getUint32(at, true); at += 4;\n        this.stride = dv.getUint32(at, true); at += 4;\n        if (this.flags & SPICE_BITMAP_FLAGS_PAL_FROM_CACHE)\n        {\n            this.palette_id = dv.getUint64(at, true); at += 8;\n        }\n        else\n        {\n            var offset = dv.getUint32(at, true); at += 4;\n            if (offset == 0)\n                this.palette = null;\n            else\n            {\n                this.palette = new SpicePalette;\n                this.palette.from_dv(dv, offset, mb);\n            }\n        }\n        // FIXME - should probably constrain this to the offset\n        //          of palette, if non zero\n        this.data   = mb.slice(at);\n        at += this.data.byteLength;\n        return at;\n    },\n}\n\nfunction SpiceImage()\n{\n}\n\nSpiceImage.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.descriptor = new SpiceImageDescriptor;\n        at = this.descriptor.from_dv(dv, at, mb);\n\n        if (this.descriptor.type == SPICE_IMAGE_TYPE_LZ_RGB)\n        {\n            this.lz_rgb = new Object();\n            this.lz_rgb.length = dv.getUint32(at, true); at += 4;\n            var initial_at = at;\n            this.lz_rgb.magic = \"\";\n            for (var i = 3; i >= 0; i--)\n                this.lz_rgb.magic += String.fromCharCode(dv.getUint8(at + i));\n            at += 4;\n\n            // NOTE:  The endian change is *correct*\n            this.lz_rgb.version = dv.getUint32(at); at += 4;\n            this.lz_rgb.type = dv.getUint32(at); at += 4;\n            this.lz_rgb.width = dv.getUint32(at); at += 4;\n            this.lz_rgb.height = dv.getUint32(at); at += 4;\n            this.lz_rgb.stride = dv.getUint32(at); at += 4;\n            this.lz_rgb.top_down = dv.getUint32(at); at += 4;\n\n            var header_size = at - initial_at;\n\n            this.lz_rgb.data   = mb.slice(at, this.lz_rgb.length + at - header_size);\n            at += this.lz_rgb.data.byteLength;\n\n        }\n\n        if (this.descriptor.type == SPICE_IMAGE_TYPE_BITMAP)\n        {\n            this.bitmap = new SpiceBitmap;\n            at = this.bitmap.from_dv(dv, at, mb);\n        }\n\n        if (this.descriptor.type == SPICE_IMAGE_TYPE_SURFACE)\n        {\n            this.surface_id = dv.getUint32(at, true); at += 4;\n        }\n\n        if (this.descriptor.type == SPICE_IMAGE_TYPE_JPEG)\n        {\n            this.jpeg = new Object;\n            this.jpeg.data_size = dv.getUint32(at, true); at += 4;\n            this.jpeg.data = mb.slice(at);\n            at += this.jpeg.data.byteLength;\n        }\n\n        if (this.descriptor.type == SPICE_IMAGE_TYPE_JPEG_ALPHA)\n        {\n            this.jpeg_alpha = new Object;\n            this.jpeg_alpha.flags = dv.getUint8(at, true); at += 1;\n            this.jpeg_alpha.jpeg_size = dv.getUint32(at, true); at += 4;\n            this.jpeg_alpha.data_size = dv.getUint32(at, true); at += 4;\n            this.jpeg_alpha.data = mb.slice(at, this.jpeg_alpha.jpeg_size + at);\n            at += this.jpeg_alpha.data.byteLength;\n            // Alpha channel is an LZ image\n            this.jpeg_alpha.alpha = new Object();\n            this.jpeg_alpha.alpha.length = this.jpeg_alpha.data_size - this.jpeg_alpha.jpeg_size;\n            var initial_at = at;\n            this.jpeg_alpha.alpha.magic = \"\";\n            for (var i = 3; i >= 0; i--)\n                this.jpeg_alpha.alpha.magic += String.fromCharCode(dv.getUint8(at + i));\n            at += 4;\n\n            // NOTE:  The endian change is *correct*\n            this.jpeg_alpha.alpha.version = dv.getUint32(at); at += 4;\n            this.jpeg_alpha.alpha.type = dv.getUint32(at); at += 4;\n            this.jpeg_alpha.alpha.width = dv.getUint32(at); at += 4;\n            this.jpeg_alpha.alpha.height = dv.getUint32(at); at += 4;\n            this.jpeg_alpha.alpha.stride = dv.getUint32(at); at += 4;\n            this.jpeg_alpha.alpha.top_down = dv.getUint32(at); at += 4;\n\n            var header_size = at - initial_at;\n\n            this.jpeg_alpha.alpha.data   = mb.slice(at, this.jpeg_alpha.alpha.length + at - header_size);\n            at += this.jpeg_alpha.alpha.data.byteLength;\n        }\n\n        if (this.descriptor.type == SPICE_IMAGE_TYPE_QUIC)\n        {\n            this.quic = new SpiceQuic;\n            at = this.quic.from_dv(dv, at, mb);\n        }\n        return at;\n    },\n}\n\n\nfunction SpiceQMask()\n{\n}\n\nSpiceQMask.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.flags  = dv.getUint8(at, true); at++;\n        this.pos = new SpicePoint;\n        at = this.pos.from_dv(dv, at, mb);\n        var offset = dv.getUint32(at, true); at += 4;\n        if (offset == 0)\n        {\n            this.bitmap = null;\n            return at;\n        }\n\n        this.bitmap = new SpiceImage;\n        return this.bitmap.from_dv(dv, offset, mb);\n    },\n}\n\n\nfunction SpicePattern()\n{\n}\n\nSpicePattern.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        var offset = dv.getUint32(at, true); at += 4;\n        if (offset == 0)\n        {\n            this.pat = null;\n        }\n        else\n        {\n            this.pat = new SpiceImage;\n            this.pat.from_dv(dv, offset, mb);\n        }\n\n        this.pos = new SpicePoint;\n        return this.pos.from_dv(dv, at, mb);\n    }\n}\n\nfunction SpiceBrush()\n{\n}\n\nSpiceBrush.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.type = dv.getUint8(at, true); at ++;\n        if (this.type == SPICE_BRUSH_TYPE_SOLID)\n        {\n            this.color = dv.getUint32(at, true); at += 4;\n        }\n        else if (this.type == SPICE_BRUSH_TYPE_PATTERN)\n        {\n            this.pattern = new SpicePattern;\n            at = this.pattern.from_dv(dv, at, mb);\n        }\n        return at;\n    },\n}\n\nfunction SpiceFill()\n{\n}\n\nSpiceFill.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.brush = new SpiceBrush;\n        at = this.brush.from_dv(dv, at, mb);\n        this.rop_descriptor = dv.getUint16(at, true); at += 2;\n        this.mask = new SpiceQMask;\n        return this.mask.from_dv(dv, at, mb);\n    },\n}\n\n\nfunction SpiceCopy()\n{\n}\n\nSpiceCopy.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        var offset = dv.getUint32(at, true); at += 4;\n        if (offset == 0)\n        {\n            this.src_bitmap = null;\n        }\n        else\n        {\n            this.src_bitmap = new SpiceImage;\n            this.src_bitmap.from_dv(dv, offset, mb);\n        }\n        this.src_area = new SpiceRect;\n        at = this.src_area.from_dv(dv, at, mb);\n        this.rop_descriptor = dv.getUint16(at, true); at += 2;\n        this.scale_mode = dv.getUint8(at, true); at ++;\n        this.mask = new SpiceQMask;\n        return this.mask.from_dv(dv, at, mb);\n    },\n}\n\nfunction SpicePoint16()\n{\n}\n\nSpicePoint16.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.x = dv.getUint16(at, true); at += 2;\n        this.y = dv.getUint16(at, true); at += 2;\n        return at;\n    },\n}\n\nfunction SpicePoint()\n{\n}\n\nSpicePoint.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.x = dv.getUint32(at, true); at += 4;\n        this.y = dv.getUint32(at, true); at += 4;\n        return at;\n    },\n}\n\nfunction SpiceCursorHeader()\n{\n}\n\nSpiceCursorHeader.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.unique = dv.getUint64(at, true); at += 8;\n        this.type = dv.getUint8(at, true); at ++;\n        this.width = dv.getUint16(at, true); at += 2;\n        this.height = dv.getUint16(at, true); at += 2;\n        this.hot_spot_x = dv.getUint16(at, true); at += 2;\n        this.hot_spot_y = dv.getUint16(at, true); at += 2;\n        return at;\n    },\n}\n\nfunction SpiceCursor()\n{\n}\n\nSpiceCursor.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.flags = dv.getUint16(at, true); at += 2;\n        if (this.flags & SPICE_CURSOR_FLAGS_NONE)\n            this.header = null;\n        else\n        {\n            this.header = new SpiceCursorHeader;\n            at = this.header.from_dv(dv, at, mb);\n            this.data   = mb.slice(at);\n            at += this.data.byteLength;\n        }\n        return at;\n    },\n}\n\nfunction SpiceSurface()\n{\n}\n\nSpiceSurface.prototype =\n{\n    from_dv: function(dv, at, mb)\n    {\n        this.surface_id = dv.getUint32(at, true); at += 4;\n        this.width = dv.getUint32(at, true); at += 4;\n        this.height = dv.getUint32(at, true); at += 4;\n        this.format = dv.getUint32(at, true); at += 4;\n        this.flags = dv.getUint32(at, true); at += 4;\n        return at;\n    },\n}\n\n/* FIXME - SpiceImage  types lz_plt, jpeg, zlib_glz, and jpeg_alpha are \n           completely unimplemented */\n;\ndefine(\"spice-spicetype\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  Spice messages\n**      This file contains classes for passing messages to and from\n**  a spice server.  This file should arguably be generated from \n**  spice.proto, but it was instead put together by hand.\n**--------------------------------------------------------------------------*/\nfunction SpiceLinkHeader(a, at)\n{\n    this.magic = SPICE_MAGIC;\n    this.major_version = SPICE_VERSION_MAJOR;\n    this.minor_version = SPICE_VERSION_MINOR;\n    this.size = 0;\n    if (a !== undefined)\n        this.from_buffer(a, at);\n}\n\nSpiceLinkHeader.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.magic = \"\";\n        for (var i = 0; i < 4; i++)\n            this.magic += String.fromCharCode(dv.getUint8(at + i));\n        at += 4;\n\n        this.major_version = dv.getUint32(at, true); at += 4;\n        this.minor_version = dv.getUint32(at, true); at += 4;\n        this.size = dv.getUint32(at, true); at += 4;\n    },\n\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        for (var i = 0; i < 4; i++)\n            dv.setUint8(at + i, this.magic.charCodeAt(i));\n        at += 4;\n\n        dv.setUint32(at, this.major_version, true); at += 4;\n        dv.setUint32(at, this.minor_version, true); at += 4;\n        dv.setUint32(at, this.size, true); at += 4;\n    },\n    buffer_size: function()\n    { \n        return 16;\n    },\n}\n\nfunction SpiceLinkMess(a, at)\n{\n    this.connection_id = 0;\n    this.channel_type = 0;\n    this.channel_id = 0;\n    this.common_caps = [];\n    this.channel_caps = [];\n\n    if (a !== undefined)\n        this.from_buffer(a, at);\n}\n\nSpiceLinkMess.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var i;\n        var orig_at = at;\n        var dv = new SpiceDataView(a);\n        this.connection_id = dv.getUint32(at, true); at += 4;\n        this.channel_type = dv.getUint8(at, true); at++;\n        this.channel_id = dv.getUint8(at, true); at++;\n        var num_common_caps = dv.getUint32(at, true); at += 4;\n        var num_channel_caps  = dv.getUint32(at, true); at += 4;\n        var caps_offset = dv.getUint32(at, true); at += 4;\n\n        at = orig_at + caps_offset;\n        this.common_caps = [];\n        for (i = 0; i < num_common_caps; i++)\n        {\n            this.common_caps.unshift(dv.getUint32(at, true)); at += 4;\n        }\n\n        this.channel_caps = [];\n        for (i = 0; i < num_channel_caps; i++)\n        {\n            this.channel_caps.unshift(dv.getUint32(at, true)); at += 4;\n        }\n    },\n\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var orig_at = at;\n        var i;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.connection_id, true); at += 4;\n        dv.setUint8(at, this.channel_type, true); at++;\n        dv.setUint8(at, this.channel_id, true); at++;\n        dv.setUint32(at, this.common_caps.length, true); at += 4;\n        dv.setUint32(at, this.channel_caps.length, true); at += 4;\n        dv.setUint32(at, (at - orig_at) + 4, true); at += 4;\n\n        for (i = 0; i < this.common_caps.length; i++)\n        {\n            dv.setUint32(at, this.common_caps[i], true); at += 4;\n        }\n\n        for (i = 0; i < this.channel_caps.length; i++)\n        {\n            dv.setUint32(at, this.channel_caps[i], true); at += 4;\n        }\n    },\n    buffer_size: function()\n    {\n        return 18 + (4 * this.common_caps.length) + (4 * this.channel_caps.length);\n    }\n}\n\nfunction SpiceLinkReply(a, at)\n{\n    this.error = 0;\n    this.pub_key = undefined;\n    this.common_caps = [];\n    this.channel_caps = [];\n\n    if (a !== undefined)\n        this.from_buffer(a, at);\n}\n\nSpiceLinkReply.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var i;\n        var orig_at = at;\n        var dv = new SpiceDataView(a);\n        this.error = dv.getUint32(at, true); at += 4;\n\n        this.pub_key = create_rsa_from_mb(a, at);\n        at += SPICE_TICKET_PUBKEY_BYTES;\n\n        var num_common_caps = dv.getUint32(at, true); at += 4;\n        var num_channel_caps  = dv.getUint32(at, true); at += 4;\n        var caps_offset = dv.getUint32(at, true); at += 4;\n\n        at = orig_at + caps_offset;\n        this.common_caps = [];\n        for (i = 0; i < num_common_caps; i++)\n        {\n            this.common_caps.unshift(dv.getUint32(at, true)); at += 4;\n        }\n\n        this.channel_caps = [];\n        for (i = 0; i < num_channel_caps; i++)\n        {\n            this.channel_caps.unshift(dv.getUint32(at, true)); at += 4;\n        }\n    },\n}\n\nfunction SpiceLinkAuthTicket(a, at)\n{\n    this.auth_mechanism = 0;\n    this.encrypted_data = undefined;\n}\n\nSpiceLinkAuthTicket.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var i;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.auth_mechanism, true); at += 4;\n        for (i = 0; i < SPICE_TICKET_KEY_PAIR_LENGTH / 8; i++)\n        {\n            if (this.encrypted_data && i < this.encrypted_data.length)\n                dv.setUint8(at, this.encrypted_data[i], true);\n            else\n                dv.setUint8(at, 0, true);\n            at++;\n        }\n    },\n    buffer_size: function()\n    {\n        return 4 + (SPICE_TICKET_KEY_PAIR_LENGTH / 8);\n    }\n}\n\nfunction SpiceLinkAuthReply(a, at)\n{\n    this.auth_code = 0;\n    if (a !== undefined)\n        this.from_buffer(a, at);\n}\n\nSpiceLinkAuthReply.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.auth_code = dv.getUint32(at, true); at += 4;\n    },\n    buffer_size: function()\n    {\n        return 4;\n    }\n}\n\nfunction SpiceMiniData(a, at)\n{\n    this.type = 0;\n    this.size = 0;\n    this.data = undefined;\n    if (a !== undefined)\n        this.from_buffer(a, at);\n}\n\nSpiceMiniData.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var i;\n        var dv = new SpiceDataView(a);\n        this.type = dv.getUint16(at, true); at += 2;\n        this.size = dv.getUint32(at, true); at += 4;\n        if (a.byteLength > at)\n        {\n            this.data = a.slice(at);\n            at += this.data.byteLength;\n        }\n    },\n    to_buffer : function(a, at)\n    {\n        at = at || 0;\n        var i;\n        var dv = new SpiceDataView(a);\n        dv.setUint16(at, this.type, true); at += 2;\n        dv.setUint32(at, this.data ? this.data.byteLength : 0, true); at += 4;\n        if (this.data && this.data.byteLength > 0)\n        {\n            var u8arr = new Uint8Array(this.data);\n            for (i = 0; i < u8arr.length; i++, at++)\n                dv.setUint8(at, u8arr[i], true);\n        }\n    },\n    build_msg : function(in_type,  extra)\n    {\n        this.type = in_type;\n        this.size = extra.buffer_size();\n        this.data = new ArrayBuffer(this.size);\n        extra.to_buffer(this.data);\n    },\n    buffer_size: function()\n    {\n        if (this.data)\n            return 6 + this.data.byteLength;\n        else\n            return 6;\n    },\n}\n\nfunction SpiceMsgChannels(a, at)\n{\n    this.num_of_channels = 0;\n    this.channels = [];\n    if (a !== undefined)\n        this.from_buffer(a, at);\n}\n\nSpiceMsgChannels.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var i;\n        var dv = new SpiceDataView(a);\n        this.num_of_channels = dv.getUint32(at, true); at += 4;\n        for (i = 0; i < this.num_of_channels; i++)\n        {\n            var chan = new SpiceChannelId();\n            at = chan.from_dv(dv, at, a);\n            this.channels.push(chan);\n        }\n    },\n}\n\nfunction SpiceMsgMainInit(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgMainInit.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.session_id = dv.getUint32(at, true); at += 4;\n        this.display_channels_hint = dv.getUint32(at, true); at += 4;\n        this.supported_mouse_modes = dv.getUint32(at, true); at += 4;\n        this.current_mouse_mode = dv.getUint32(at, true); at += 4;\n        this.agent_connected = dv.getUint32(at, true); at += 4;\n        this.agent_tokens = dv.getUint32(at, true); at += 4;\n        this.multi_media_time = dv.getUint32(at, true); at += 4;\n        this.ram_hint = dv.getUint32(at, true); at += 4;\n    },\n}\n\nfunction SpiceMsgMainMouseMode(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgMainMouseMode.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.supported_modes = dv.getUint16(at, true); at += 2;\n        this.current_mode = dv.getUint16(at, true); at += 2;\n    },\n}\n\nfunction SpiceMsgMainAgentData(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgMainAgentData.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.protocol = dv.getUint32(at, true); at += 4;\n        this.type = dv.getUint32(at, true); at += 4;\n        this.opaque = dv.getUint64(at, true); at += 8;\n        this.size = dv.getUint32(at, true); at += 4;\n        if (a.byteLength > at)\n        {\n            this.data = a.slice(at);\n            at += this.data.byteLength;\n        }\n    }\n}\n\nfunction SpiceMsgMainAgentTokens(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgMainAgentTokens.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.num_tokens = dv.getUint32(at, true); at += 4;\n    },\n}\n\nfunction SpiceMsgSetAck(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgSetAck.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.generation = dv.getUint32(at, true); at += 4;\n        this.window = dv.getUint32(at, true); at += 4;\n    },\n}\n\nfunction SpiceMsgcAckSync(ack)\n{\n    this.generation = ack.generation;\n}\n\nSpiceMsgcAckSync.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.generation, true); at += 4;\n    },\n    buffer_size: function()\n    {\n        return 4;\n    }\n}\n\nfunction SpiceMsgcMainMouseModeRequest(mode)\n{\n    this.mode = mode;\n}\n\nSpiceMsgcMainMouseModeRequest.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint16(at, this.mode, true); at += 2;\n    },\n    buffer_size: function()\n    {\n        return 2;\n    }\n}\n\nfunction SpiceMsgcMainAgentStart(num_tokens)\n{\n    this.num_tokens = num_tokens;\n}\n\nSpiceMsgcMainAgentStart.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.num_tokens, true); at += 4;\n    },\n    buffer_size: function()\n    {\n        return 4;\n    }\n}\n\nfunction SpiceMsgcMainAgentData(type, data)\n{\n    this.protocol = VD_AGENT_PROTOCOL;\n    this.type = type;\n    this.opaque = 0;\n    this.size = data.buffer_size();\n    this.data = data;\n}\n\nSpiceMsgcMainAgentData.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.protocol, true); at += 4;\n        dv.setUint32(at, this.type, true); at += 4;\n        dv.setUint64(at, this.opaque, true); at += 8;\n        dv.setUint32(at, this.size, true); at += 4;\n        this.data.to_buffer(a, at);\n    },\n    buffer_size: function()\n    {\n        return 4 + 4 + 8 + 4 + this.data.buffer_size();\n    }\n}\n\nfunction VDAgentAnnounceCapabilities(request, caps)\n{\n    if (caps)\n    {\n        this.request = request;\n        this.caps = caps;\n    }\n    else\n        this.from_buffer(request);\n}\n\nVDAgentAnnounceCapabilities.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.request, true); at += 4;\n        dv.setUint32(at, this.caps, true); at += 4;\n    },\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.request = dv.getUint32(at, true); at += 4;\n        this.caps = dv.getUint32(at, true); at += 4;\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 8;\n    }\n}\n\nfunction VDAgentMonitorsConfig(flags, width, height, depth, x, y)\n{\n    this.num_mon = 1;\n    this.flags = flags;\n    this.width = width;\n    this.height = height;\n    this.depth = depth;\n    this.x = x;\n    this.y = y;\n}\n\nVDAgentMonitorsConfig.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.num_mon, true); at += 4;\n        dv.setUint32(at, this.flags, true); at += 4;\n        dv.setUint32(at, this.height, true); at += 4;\n        dv.setUint32(at, this.width, true); at += 4;\n        dv.setUint32(at, this.depth, true); at += 4;\n        dv.setUint32(at, this.x, true); at += 4;\n        dv.setUint32(at, this.y, true); at += 4;\n    },\n    buffer_size: function()\n    {\n        return 28;\n    }\n}\n\nfunction VDAgentFileXferStatusMessage(data, result)\n{\n    if (result)\n    {\n        this.id = data;\n        this.result = result;\n    }\n    else\n        this.from_buffer(data);\n}\n\nVDAgentFileXferStatusMessage.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.id, true); at += 4;\n        dv.setUint32(at, this.result, true); at += 4;\n    },\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.id = dv.getUint32(at, true); at += 4;\n        this.result = dv.getUint32(at, true); at += 4;\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 8;\n    }\n}\n\nfunction VDAgentFileXferStartMessage(id, name, size)\n{\n    this.id = id;\n    this.string = \"[vdagent-file-xfer]\\n\"+\"name=\"+name+\"\\nsize=\"+size+\"\\n\";\n}\n\nVDAgentFileXferStartMessage.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.id, true); at += 4;\n        for (var i = 0; i < this.string.length; i++, at++)\n            dv.setUint8(at, this.string.charCodeAt(i));\n    },\n    buffer_size: function()\n    {\n        return 4 + this.string.length + 1;\n    }\n}\n\nfunction VDAgentFileXferDataMessage(id, size, data)\n{\n    this.id = id;\n    this.size = size;\n    this.data = data;\n}\n\nVDAgentFileXferDataMessage.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.id, true); at += 4;\n        dv.setUint64(at, this.size, true); at += 8;\n        if (this.data && this.data.byteLength > 0)\n        {\n            var u8arr = new Uint8Array(this.data);\n            for (var i = 0; i < u8arr.length; i++, at++)\n                dv.setUint8(at, u8arr[i]);\n        }\n    },\n    buffer_size: function()\n    {\n        return 12 + this.size;\n    }\n}\n\nfunction SpiceMsgNotify(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgNotify.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var i;\n        var dv = new SpiceDataView(a);\n        this.time_stamp = dv.getUint64(at, true); at += 8;\n        this.severity = dv.getUint32(at, true); at += 4;\n        this.visibility = dv.getUint32(at, true); at += 4;\n        this.what = dv.getUint32(at, true); at += 4;\n        this.message_len = dv.getUint32(at, true); at += 4;\n        this.message = \"\";\n        for (i = 0; i < this.message_len; i++)\n        {\n            var c = dv.getUint8(at, true); at++;\n            this.message += String.fromCharCode(c);\n        }\n    },\n}\n\nfunction SpiceMsgcDisplayInit()\n{\n    this.pixmap_cache_id = 1;\n    this.glz_dictionary_id = 0;\n    this.pixmap_cache_size = 10 * 1024 * 1024;\n    this.glz_dictionary_window_size = 0;\n}\n\nSpiceMsgcDisplayInit.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint8(at, this.pixmap_cache_id, true); at++;\n        dv.setUint64(at, this.pixmap_cache_size, true); at += 8;\n        dv.setUint8(at, this.glz_dictionary_id, true); at++;\n        dv.setUint32(at, this.glz_dictionary_window_size, true); at += 4;\n    },\n    buffer_size: function()\n    {\n        return 14;\n    }\n}\n\nfunction SpiceMsgDisplayBase()\n{\n}\n\nSpiceMsgDisplayBase.prototype =\n{\n    from_dv : function(dv, at, mb)\n    {\n        this.surface_id = dv.getUint32(at, true); at += 4;\n        this.box = new SpiceRect;\n        at = this.box.from_dv(dv, at, mb);\n        this.clip = new SpiceClip;\n        return this.clip.from_dv(dv, at, mb);\n    },\n}\n\nfunction SpiceMsgDisplayDrawCopy(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayDrawCopy.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.base = new SpiceMsgDisplayBase;\n        at = this.base.from_dv(dv, at, a);\n        this.data = new SpiceCopy;\n        return this.data.from_dv(dv, at, a);\n    },\n}\n\nfunction SpiceMsgDisplayDrawFill(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayDrawFill.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.base = new SpiceMsgDisplayBase;\n        at = this.base.from_dv(dv, at, a);\n        this.data = new SpiceFill;\n        return this.data.from_dv(dv, at, a);\n    },\n}\n\nfunction SpiceMsgDisplayCopyBits(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayCopyBits.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.base = new SpiceMsgDisplayBase;\n        at = this.base.from_dv(dv, at, a);\n        this.src_pos = new SpicePoint;\n        return this.src_pos.from_dv(dv, at, a);\n    },\n}\n\n\nfunction SpiceMsgSurfaceCreate(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgSurfaceCreate.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.surface = new SpiceSurface;\n        return this.surface.from_dv(dv, at, a);\n    },\n}\n\nfunction SpiceMsgSurfaceDestroy(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgSurfaceDestroy.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.surface_id = dv.getUint32(at, true); at += 4;\n    },\n}\n\nfunction SpiceMsgInputsInit(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgInputsInit.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.keyboard_modifiers = dv.getUint16(at, true); at += 2;\n        return at;\n    },\n}\n\nfunction SpiceMsgInputsKeyModifiers(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgInputsKeyModifiers.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.keyboard_modifiers = dv.getUint16(at, true); at += 2;\n        return at;\n    },\n}\n\nfunction SpiceMsgCursorInit(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgCursorInit.prototype =\n{\n    from_buffer: function(a, at, mb)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.position = new SpicePoint16;\n        at = this.position.from_dv(dv, at, mb);\n        this.trail_length = dv.getUint16(at, true); at += 2;\n        this.trail_frequency = dv.getUint16(at, true); at += 2;\n        this.visible = dv.getUint8(at, true); at ++;\n        this.cursor = new SpiceCursor;\n        return this.cursor.from_dv(dv, at, a);\n    },\n}\n\nfunction SpiceMsgPlaybackData(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgPlaybackData.prototype =\n{\n    from_buffer: function(a, at, mb)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.time = dv.getUint32(at, true); at += 4;\n        if (a.byteLength > at)\n        {\n            this.data = a.slice(at);\n            at += this.data.byteLength;\n        }\n        return at;\n    },\n}\n\nfunction SpiceMsgPlaybackMode(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgPlaybackMode.prototype =\n{\n    from_buffer: function(a, at, mb)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.time = dv.getUint32(at, true); at += 4;\n        this.mode = dv.getUint16(at, true); at += 2;\n        if (a.byteLength > at)\n        {\n            this.data = a.slice(at);\n            at += this.data.byteLength;\n        }\n        return at;\n    },\n}\n\nfunction SpiceMsgPlaybackStart(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgPlaybackStart.prototype =\n{\n    from_buffer: function(a, at, mb)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.channels = dv.getUint32(at, true); at += 4;\n        this.format = dv.getUint16(at, true); at += 2;\n        this.frequency = dv.getUint32(at, true); at += 4;\n        this.time = dv.getUint32(at, true); at += 4;\n        return at;\n    },\n}\n\n\n\nfunction SpiceMsgCursorSet(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgCursorSet.prototype =\n{\n    from_buffer: function(a, at, mb)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.position = new SpicePoint16;\n        at = this.position.from_dv(dv, at, mb);\n        this.visible = dv.getUint8(at, true); at ++;\n        this.cursor = new SpiceCursor;\n        return this.cursor.from_dv(dv, at, a);\n    },\n}\n\n\nfunction SpiceMsgcMousePosition(sc, e)\n{\n    // FIXME - figure out how to correctly compute display_id\n    this.display_id = 0;\n    this.buttons_state = sc.buttons_state;\n    if (e)\n    {\n        var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n        var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;\n\n        this.x = e.clientX - sc.display.surfaces[sc.display.primary_surface].canvas.offsetLeft + scrollLeft;\n        this.y = e.clientY - sc.display.surfaces[sc.display.primary_surface].canvas.offsetTop + scrollTop;\n        sc.mousex = this.x;\n        sc.mousey = this.y; \n    }\n    else\n    {\n        this.x = this.y = this.buttons_state = 0;\n    }\n}\n\nSpiceMsgcMousePosition.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.x, true); at += 4;\n        dv.setUint32(at, this.y, true); at += 4;\n        dv.setUint16(at, this.buttons_state, true); at += 2;\n        dv.setUint8(at, this.display_id, true); at += 1;\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 11;\n    }\n}\n\nfunction SpiceMsgcMouseMotion(sc, e)\n{\n    // FIXME - figure out how to correctly compute display_id\n    this.display_id = 0;\n    this.buttons_state = sc.buttons_state;\n    if (e)\n    {\n        this.x = e.clientX - sc.display.surfaces[sc.display.primary_surface].canvas.offsetLeft;\n        this.y = e.clientY - sc.display.surfaces[sc.display.primary_surface].canvas.offsetTop;\n\n        if (sc.mousex !== undefined)\n        {\n            this.x -= sc.mousex;\n            this.y -= sc.mousey;\n        }\n        sc.mousex = e.clientX - sc.display.surfaces[sc.display.primary_surface].canvas.offsetLeft;\n        sc.mousey = e.clientY - sc.display.surfaces[sc.display.primary_surface].canvas.offsetTop;\n    }\n    else\n    {\n        this.x = this.y = this.buttons_state = 0;\n    }\n}\n\n/* Use the same functions as for MousePosition */\nSpiceMsgcMouseMotion.prototype.to_buffer = SpiceMsgcMousePosition.prototype.to_buffer;\nSpiceMsgcMouseMotion.prototype.buffer_size = SpiceMsgcMousePosition.prototype.buffer_size;\n\nfunction SpiceMsgcMousePress(sc, e)\n{\n    if (e)\n    {\n        this.button = e.button + 1;\n        this.buttons_state = 1 << e.button;\n        sc.buttons_state = this.buttons_state;\n    }\n    else\n    {\n        this.button = SPICE_MOUSE_BUTTON_LEFT;\n        this.buttons_state = SPICE_MOUSE_BUTTON_MASK_LEFT;\n    }\n}\n\nSpiceMsgcMousePress.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint8(at, this.button, true); at ++;\n        dv.setUint16(at, this.buttons_state, true); at += 2;\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 3;\n    }\n}\n\nfunction SpiceMsgcMouseRelease(sc, e)\n{\n    if (e)\n    {\n        this.button = e.button + 1;\n        this.buttons_state = 0;\n        sc.buttons_state = this.buttons_state;\n    }\n    else\n    {\n        this.button = SPICE_MOUSE_BUTTON_LEFT;\n        this.buttons_state = 0;\n    }\n}\n\n/* Use the same functions as for MousePress */\nSpiceMsgcMouseRelease.prototype.to_buffer = SpiceMsgcMousePress.prototype.to_buffer;\nSpiceMsgcMouseRelease.prototype.buffer_size = SpiceMsgcMousePress.prototype.buffer_size;\n\n\nfunction SpiceMsgcKeyDown(e)\n{\n    if (e)\n    {\n        this.code = keycode_to_start_scan(e.keyCode);\n    }\n    else\n    {\n        this.code = 0;\n    }\n}\n\nSpiceMsgcKeyDown.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint32(at, this.code, true); at += 4;\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 4;\n    }\n}\n\nfunction SpiceMsgcKeyUp(e)\n{\n    if (e)\n    {\n        this.code = keycode_to_end_scan(e.keyCode);\n    }\n    else\n    {\n        this.code = 0;\n    }\n}\n\n/* Use the same functions as for KeyDown */\nSpiceMsgcKeyUp.prototype.to_buffer = SpiceMsgcKeyDown.prototype.to_buffer;\nSpiceMsgcKeyUp.prototype.buffer_size = SpiceMsgcKeyDown.prototype.buffer_size;\n\nfunction SpiceMsgDisplayStreamCreate(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayStreamCreate.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.surface_id = dv.getUint32(at, true); at += 4;\n        this.id = dv.getUint32(at, true); at += 4;\n        this.flags = dv.getUint8(at, true); at += 1;\n        this.codec_type = dv.getUint8(at, true); at += 1;\n        this.stamp = dv.getUint64(at, true); at += 8;\n        this.stream_width = dv.getUint32(at, true); at += 4;\n        this.stream_height = dv.getUint32(at, true); at += 4;\n        this.src_width = dv.getUint32(at, true); at += 4;\n        this.src_height = dv.getUint32(at, true); at += 4;\n\n        this.dest = new SpiceRect;\n        at = this.dest.from_dv(dv, at, a);\n        this.clip = new SpiceClip;\n        this.clip.from_dv(dv, at, a);\n    },\n}\n\nfunction SpiceStreamDataHeader(a, at)\n{\n}\n\nSpiceStreamDataHeader.prototype =\n{\n    from_dv : function(dv, at, mb)\n    {\n        this.id = dv.getUint32(at, true); at += 4;\n        this.multi_media_time = dv.getUint32(at, true); at += 4;\n        return at;\n    },\n}\n\nfunction SpiceMsgDisplayStreamData(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayStreamData.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.base = new SpiceStreamDataHeader;\n        at = this.base.from_dv(dv, at, a);\n        this.data_size = dv.getUint32(at, true); at += 4;\n        this.data = dv.u8.subarray(at, at + this.data_size);\n    },\n}\n\nfunction SpiceMsgDisplayStreamClip(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayStreamClip.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.id = dv.getUint32(at, true); at += 4;\n        this.clip = new SpiceClip;\n        this.clip.from_dv(dv, at, a);\n    },\n}\n\nfunction SpiceMsgDisplayStreamDestroy(a, at)\n{\n    this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayStreamDestroy.prototype =\n{\n    from_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.id = dv.getUint32(at, true); at += 4;\n    },\n}\n\nfunction SpiceMsgDisplayInvalList(a, at)\n{\n    this.count = 0;\n    this.resources = [];\n    this.from_buffer(a,at);\n}\n\nSpiceMsgDisplayInvalList.prototype =\n{\n    from_buffer: function (a, at)\n    {\n        var i;\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        this.count = dv.getUint16(at, true); at += 2;\n        for (i = 0; i < this.count; i++)\n        {\n            this.resources[i] = {};\n            this.resources[i].type = dv.getUint8(at, true); at++;\n            this.resources[i].id = dv.getUint64(at, true); at += 8;\n        }\n    },\n}\n;\ndefine(\"spice-spicemsg\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*--------------------------------------------------------------------------------------\n**  SpiceWireReader\n**      This class will receive messages from a WebSocket and relay it to a given\n**  callback.  It will optionally save and pass along a header, useful in processing\n**  the mini message format.\n**--------------------------------------------------------------------------------------*/\nfunction SpiceWireReader(sc, callback)\n{\n    this.sc = sc;\n    this.callback = callback;\n    this.needed = 0;\n\n    this.buffers = [];\n\n    this.sc.ws.wire_reader = this;\n    this.sc.ws.binaryType = \"arraybuffer\";\n    this.sc.ws.addEventListener('message', wire_blob_catcher);\n}\n\nSpiceWireReader.prototype =\n{\n\n    /*------------------------------------------------------------------------\n    **  Process messages coming in from our WebSocket\n    **----------------------------------------------------------------------*/\n    inbound: function (mb)\n    {\n        var at;\n\n        /* Just buffer if we don't need anything yet */\n        if (this.needed == 0)\n        {\n            this.buffers.push(mb);\n            return;\n        }\n\n        /* Optimization - if we have just one inbound block, and it's\n            suitable for our needs, just use it.  */\n        if (this.buffers.length == 0 && mb.byteLength >= this.needed)\n        {\n            if (mb.byteLength > this.needed)\n            {\n                this.buffers.push(mb.slice(this.needed));\n                mb = mb.slice(0, this.needed);\n            }\n            this.callback.call(this.sc, mb,\n                        this.saved_msg_header || undefined);\n        }\n        else\n        {\n            this.buffers.push(mb);\n        }\n\n\n        /* If we have fragments that add up to what we need, combine them */\n        /*  FIXME - it would be faster to revise the processing code to handle\n        **          multiple fragments directly.  Essentially, we should be\n        **          able to do this without any slice() or combine_array_buffers() calls */\n        while (this.buffers.length > 1 && this.buffers[0].byteLength < this.needed)\n        {\n            var mb1 = this.buffers.shift();\n            var mb2 = this.buffers.shift();\n\n            this.buffers.unshift(combine_array_buffers(mb1, mb2));\n        }\n\n\n        while (this.buffers.length > 0 && this.buffers[0].byteLength >= this.needed)\n        {\n            mb = this.buffers.shift();\n            if (mb.byteLength > this.needed)\n            {\n                this.buffers.unshift(mb.slice(this.needed));\n                mb = mb.slice(0, this.needed);\n            }\n            this.callback.call(this.sc, mb,\n                        this.saved_msg_header || undefined);\n        }\n        \n    },\n\n    request: function(n)\n    {\n        this.needed = n;\n    },\n\n    save_header: function(h)\n    {\n        this.saved_msg_header = h;\n    },\n\n    clear_header: function()\n    {\n        this.saved_msg_header = undefined;\n    },\n}\n\nfunction wire_blob_catcher(e)\n{\n    DEBUG > 1 && console.log(\">> WebSockets.onmessage\");\n    DEBUG > 1 && console.log(\"id \" + this.wire_reader.sc.connection_id +\"; type \" + this.wire_reader.sc.type);\n    SpiceWireReader.prototype.inbound.call(this.wire_reader, e.data);\n}\n;\ndefine(\"spice-wire\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n\n/*----------------------------------------------------------------------------\n**  FIXME: putImageData  does not support Alpha blending\n**           or compositing.  So if we have data in an ImageData\n**           format, we have to draw it onto a context,\n**           and then use drawImage to put it onto the target,\n**           as drawImage does alpha.\n**--------------------------------------------------------------------------*/\nfunction putImageDataWithAlpha(context, d, x, y)\n{\n    var c = document.createElement(\"canvas\");\n    var t = c.getContext(\"2d\");\n    c.setAttribute('width', d.width);\n    c.setAttribute('height', d.height);\n    t.putImageData(d, 0, 0);\n    context.drawImage(c, x, y, d.width, d.height);\n}\n\n/*----------------------------------------------------------------------------\n**  FIXME: Spice will send an image with '0' alpha when it is intended to\n**           go on a surface w/no alpha.  So in that case, we have to strip\n**           out the alpha.  The test case for this was flux box; in a Xspice\n**           server, right click on the desktop to get the menu; the top bar\n**           doesn't paint/highlight correctly w/out this change.\n**--------------------------------------------------------------------------*/\nfunction stripAlpha(d)\n{\n    var i;\n    for (i = 0; i < (d.width * d.height * 4); i += 4)\n        d.data[i + 3] = 255;\n}\n\n/*----------------------------------------------------------------------------\n**  SpiceDisplayConn\n**      Drive the Spice Display Channel\n**--------------------------------------------------------------------------*/\nfunction SpiceDisplayConn()\n{\n    SpiceConn.apply(this, arguments);\n}\n\nSpiceDisplayConn.prototype = Object.create(SpiceConn.prototype);\nSpiceDisplayConn.prototype.process_channel_message = function(msg)\n{\n    if (msg.type == SPICE_MSG_DISPLAY_MARK)\n    {\n        // FIXME - DISPLAY_MARK not implemented (may be hard or impossible)\n        this.known_unimplemented(msg.type, \"Display Mark\");\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_RESET)\n    {\n        DEBUG > 2 && console.log(\"Display reset\");\n        this.surfaces[this.primary_surface].canvas.context.restore();\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_DRAW_COPY)\n    {\n        var draw_copy = new SpiceMsgDisplayDrawCopy(msg.data);\n\n        DEBUG > 1 && this.log_draw(\"DrawCopy\", draw_copy);\n\n        if (! draw_copy.base.box.is_same_size(draw_copy.data.src_area))\n            this.log_warn(\"FIXME: DrawCopy src_area is a different size than base.box; we do not handle that yet.\");\n        if (draw_copy.base.clip.type != SPICE_CLIP_TYPE_NONE)\n            this.log_warn(\"FIXME: DrawCopy we don't handle clipping yet\");\n        if (draw_copy.data.rop_descriptor != SPICE_ROPD_OP_PUT)\n            this.log_warn(\"FIXME: DrawCopy we don't handle ropd type: \" + draw_copy.data.rop_descriptor);\n        if (draw_copy.data.mask.flags)\n            this.log_warn(\"FIXME: DrawCopy we don't handle mask flag: \" + draw_copy.data.mask.flags);\n        if (draw_copy.data.mask.bitmap)\n            this.log_warn(\"FIXME: DrawCopy we don't handle mask\");\n\n        if (draw_copy.data && draw_copy.data.src_bitmap)\n        {\n            if (draw_copy.data.src_bitmap.descriptor.flags &&\n                draw_copy.data.src_bitmap.descriptor.flags != SPICE_IMAGE_FLAGS_CACHE_ME &&\n                draw_copy.data.src_bitmap.descriptor.flags != SPICE_IMAGE_FLAGS_HIGH_BITS_SET)\n            {\n                this.log_warn(\"FIXME: DrawCopy unhandled image flags: \" + draw_copy.data.src_bitmap.descriptor.flags);\n                DEBUG <= 1 && this.log_draw(\"DrawCopy\", draw_copy);\n            }\n\n            if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_QUIC)\n            {\n                var canvas = this.surfaces[draw_copy.base.surface_id].canvas;\n                if (! draw_copy.data.src_bitmap.quic)\n                {\n                    this.log_warn(\"FIXME: DrawCopy could not handle this QUIC file.\");\n                    return false;\n                }\n                var source_img = convert_spice_quic_to_web(canvas.context,\n                                        draw_copy.data.src_bitmap.quic);\n\n                return this.draw_copy_helper(\n                    { base: draw_copy.base,\n                      src_area: draw_copy.data.src_area,\n                      image_data: source_img,\n                      tag: \"copyquic.\" + draw_copy.data.src_bitmap.quic.type,\n                      has_alpha: (draw_copy.data.src_bitmap.quic.type == QUIC_IMAGE_TYPE_RGBA ? true : false) ,\n                      descriptor : draw_copy.data.src_bitmap.descriptor\n                    });\n            }\n            else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_FROM_CACHE ||\n                    draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS)\n            {\n                if (! this.cache || ! this.cache[draw_copy.data.src_bitmap.descriptor.id])\n                {\n                    this.log_warn(\"FIXME: DrawCopy did not find image id \" + draw_copy.data.src_bitmap.descriptor.id + \" in cache.\");\n                    return false;\n                }\n\n                return this.draw_copy_helper(\n                    { base: draw_copy.base,\n                      src_area: draw_copy.data.src_area,\n                      image_data: this.cache[draw_copy.data.src_bitmap.descriptor.id],\n                      tag: \"copycache.\" + draw_copy.data.src_bitmap.descriptor.id, \n                      has_alpha: true, /* FIXME - may want this to be false... */\n                      descriptor : draw_copy.data.src_bitmap.descriptor\n                    });\n\n                /* FIXME - LOSSLESS CACHE ramifications not understood or handled */\n            }\n            else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_SURFACE)\n            {\n                var source_context = this.surfaces[draw_copy.data.src_bitmap.surface_id].canvas.context;\n                var target_context = this.surfaces[draw_copy.base.surface_id].canvas.context;\n\n                var source_img = source_context.getImageData(\n                        draw_copy.data.src_area.left, draw_copy.data.src_area.top,\n                        draw_copy.data.src_area.right - draw_copy.data.src_area.left,\n                        draw_copy.data.src_area.bottom - draw_copy.data.src_area.top);\n                var computed_src_area = new SpiceRect;\n                computed_src_area.top = computed_src_area.left = 0;\n                computed_src_area.right = source_img.width;\n                computed_src_area.bottom = source_img.height;\n\n                /* FIXME - there is a potential optimization here.\n                           That is, if the surface is from 0,0, and\n                           both surfaces are alpha surfaces, you should\n                           be able to just do a drawImage, which should\n                           save time.  */\n\n                return this.draw_copy_helper(\n                    { base: draw_copy.base,\n                      src_area: computed_src_area,\n                      image_data: source_img,\n                      tag: \"copysurf.\" + draw_copy.data.src_bitmap.surface_id,\n                      has_alpha: this.surfaces[draw_copy.data.src_bitmap.surface_id].format == SPICE_SURFACE_FMT_32_xRGB ? false : true,\n                      descriptor : draw_copy.data.src_bitmap.descriptor\n                    });\n\n                return true;\n            }\n            else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_JPEG)\n            {\n                if (! draw_copy.data.src_bitmap.jpeg)\n                {\n                    this.log_warn(\"FIXME: DrawCopy could not handle this JPEG file.\");\n                    return false;\n                }\n\n                // FIXME - how lame is this.  Be have it in binary format, and we have\n                //         to put it into string to get it back into jpeg.  Blech.\n                var tmpstr = \"data:image/jpeg,\";\n                var img = new Image;\n                var i;\n                var qdv = new Uint8Array(draw_copy.data.src_bitmap.jpeg.data);\n                for (i = 0; i < qdv.length; i++)\n                {\n                    tmpstr +=  '%';\n                    if (qdv[i] < 16)\n                        tmpstr += '0';\n                    tmpstr += qdv[i].toString(16);\n                }\n\n                img.o = \n                    { base: draw_copy.base,\n                      tag: \"jpeg.\" + draw_copy.data.src_bitmap.surface_id,\n                      descriptor : draw_copy.data.src_bitmap.descriptor,\n                      sc : this,\n                    };\n                img.onload = handle_draw_jpeg_onload;\n                img.src = tmpstr;\n\n                return true;\n            }\n            else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_JPEG_ALPHA)\n            {\n                if (! draw_copy.data.src_bitmap.jpeg_alpha)\n                {\n                    this.log_warn(\"FIXME: DrawCopy could not handle this JPEG ALPHA file.\");\n                    return false;\n                }\n\n                // FIXME - how lame is this.  Be have it in binary format, and we have\n                //         to put it into string to get it back into jpeg.  Blech.\n                var tmpstr = \"data:image/jpeg,\";\n                var img = new Image;\n                var i;\n                var qdv = new Uint8Array(draw_copy.data.src_bitmap.jpeg_alpha.data);\n                for (i = 0; i < qdv.length; i++)\n                {\n                    tmpstr +=  '%';\n                    if (qdv[i] < 16)\n                        tmpstr += '0';\n                    tmpstr += qdv[i].toString(16);\n                }\n\n                img.o = \n                    { base: draw_copy.base,\n                      tag: \"jpeg.\" + draw_copy.data.src_bitmap.surface_id,\n                      descriptor : draw_copy.data.src_bitmap.descriptor,\n                      sc : this,\n                    };\n\n                if (this.surfaces[draw_copy.base.surface_id].format == SPICE_SURFACE_FMT_32_ARGB)\n                {\n\n                    var canvas = this.surfaces[draw_copy.base.surface_id].canvas;\n                    img.alpha_img = convert_spice_lz_to_web(canvas.context,\n                                            draw_copy.data.src_bitmap.jpeg_alpha.alpha);\n                }\n                img.onload = handle_draw_jpeg_onload;\n                img.src = tmpstr;\n\n                return true;\n            }\n            else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_BITMAP)\n            {\n                var canvas = this.surfaces[draw_copy.base.surface_id].canvas;\n                if (! draw_copy.data.src_bitmap.bitmap)\n                {\n                    this.log_err(\"null bitmap\");\n                    return false;\n                }\n\n                var source_img = convert_spice_bitmap_to_web(canvas.context,\n                                        draw_copy.data.src_bitmap.bitmap);\n                if (! source_img)\n                {\n                    this.log_warn(\"FIXME: Unable to interpret bitmap of format: \" + \n                        draw_copy.data.src_bitmap.bitmap.format);\n                    return false;\n                }\n\n                return this.draw_copy_helper(\n                    { base: draw_copy.base,\n                      src_area: draw_copy.data.src_area,\n                      image_data: source_img,\n                      tag: \"bitmap.\" + draw_copy.data.src_bitmap.bitmap.format,\n                      has_alpha: draw_copy.data.src_bitmap.bitmap == SPICE_BITMAP_FMT_32BIT ? false : true,\n                      descriptor : draw_copy.data.src_bitmap.descriptor\n                    });\n            }\n            else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_LZ_RGB)\n            {\n                var canvas = this.surfaces[draw_copy.base.surface_id].canvas;\n                if (! draw_copy.data.src_bitmap.lz_rgb)\n                {\n                    this.log_err(\"null lz_rgb \");\n                    return false;\n                }\n\n                if (draw_copy.data.src_bitmap.lz_rgb.top_down != 1)\n                    this.log_warn(\"FIXME: Implement non top down support for lz_rgb\");\n\n                var source_img = convert_spice_lz_to_web(canvas.context,\n                                            draw_copy.data.src_bitmap.lz_rgb);\n                if (! source_img)\n                {\n                    this.log_warn(\"FIXME: Unable to interpret bitmap of type: \" + \n                        draw_copy.data.src_bitmap.lz_rgb.type);\n                    return false;\n                }\n\n                return this.draw_copy_helper(\n                    { base: draw_copy.base,\n                      src_area: draw_copy.data.src_area,\n                      image_data: source_img,\n                      tag: \"lz_rgb.\" + draw_copy.data.src_bitmap.lz_rgb.type,\n                      has_alpha: draw_copy.data.src_bitmap.lz_rgb.type == LZ_IMAGE_TYPE_RGBA ? true : false ,\n                      descriptor : draw_copy.data.src_bitmap.descriptor\n                    });\n            }\n            else\n            {\n                this.log_warn(\"FIXME: DrawCopy unhandled image type: \" + draw_copy.data.src_bitmap.descriptor.type);\n                this.log_draw(\"DrawCopy\", draw_copy);\n                return false;\n            }\n        }\n\n        this.log_warn(\"FIXME: DrawCopy no src_bitmap.\");\n        return false;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_DRAW_FILL)\n    {\n        var draw_fill = new SpiceMsgDisplayDrawFill(msg.data);\n\n        DEBUG > 1 && this.log_draw(\"DrawFill\", draw_fill);\n\n        if (draw_fill.data.rop_descriptor != SPICE_ROPD_OP_PUT)\n            this.log_warn(\"FIXME: DrawFill we don't handle ropd type: \" + draw_fill.data.rop_descriptor);\n        if (draw_fill.data.mask.flags)\n            this.log_warn(\"FIXME: DrawFill we don't handle mask flag: \" + draw_fill.data.mask.flags);\n        if (draw_fill.data.mask.bitmap)\n            this.log_warn(\"FIXME: DrawFill we don't handle mask\");\n\n        if (draw_fill.data.brush.type == SPICE_BRUSH_TYPE_SOLID)\n        {\n            // FIXME - do brushes ever have alpha?\n            var color = draw_fill.data.brush.color & 0xffffff;\n            var color_str = \"rgb(\" + (color >> 16) + \", \" + ((color >> 8) & 0xff) + \", \" + (color & 0xff) + \")\";\n            this.surfaces[draw_fill.base.surface_id].canvas.context.fillStyle = color_str;\n\n            this.surfaces[draw_fill.base.surface_id].canvas.context.fillRect(\n                draw_fill.base.box.left, draw_fill.base.box.top,\n                draw_fill.base.box.right - draw_fill.base.box.left,\n                draw_fill.base.box.bottom - draw_fill.base.box.top);\n\n            if (DUMP_DRAWS && this.parent.dump_id)\n            {\n                var debug_canvas = document.createElement(\"canvas\");\n                debug_canvas.setAttribute('width', this.surfaces[draw_fill.base.surface_id].canvas.width);\n                debug_canvas.setAttribute('height', this.surfaces[draw_fill.base.surface_id].canvas.height);\n                debug_canvas.setAttribute('id', \"fillbrush.\" + draw_fill.base.surface_id + \".\" + this.surfaces[draw_fill.base.surface_id].draw_count);\n                debug_canvas.getContext(\"2d\").fillStyle = color_str;\n                debug_canvas.getContext(\"2d\").fillRect(\n                    draw_fill.base.box.left, draw_fill.base.box.top,\n                    draw_fill.base.box.right - draw_fill.base.box.left,\n                    draw_fill.base.box.bottom - draw_fill.base.box.top);\n                document.getElementById(this.parent.dump_id).appendChild(debug_canvas);\n            }\n                \n            this.surfaces[draw_fill.base.surface_id].draw_count++;\n\n        }\n        else\n        {\n            this.log_warn(\"FIXME: DrawFill can't handle brush type: \" + draw_fill.data.brush.type);\n        }\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_COPY_BITS)\n    {\n        var copy_bits = new SpiceMsgDisplayCopyBits(msg.data);\n\n        DEBUG > 1 && this.log_draw(\"CopyBits\", copy_bits);\n\n        var source_canvas = this.surfaces[copy_bits.base.surface_id].canvas;\n        var source_context = source_canvas.context;\n\n        var width = source_canvas.width - copy_bits.src_pos.x;\n        var height = source_canvas.height - copy_bits.src_pos.y;\n        if (width > (copy_bits.base.box.right - copy_bits.base.box.left))\n            width = copy_bits.base.box.right - copy_bits.base.box.left;\n        if (height > (copy_bits.base.box.bottom - copy_bits.base.box.top))\n            height = copy_bits.base.box.bottom - copy_bits.base.box.top;\n\n        var source_img = source_context.getImageData(\n                copy_bits.src_pos.x, copy_bits.src_pos.y, width, height);\n        //source_context.putImageData(source_img, copy_bits.base.box.left, copy_bits.base.box.top);\n        putImageDataWithAlpha(source_context, source_img, copy_bits.base.box.left, copy_bits.base.box.top);\n\n        if (DUMP_DRAWS && this.parent.dump_id)\n        {\n            var debug_canvas = document.createElement(\"canvas\");\n            debug_canvas.setAttribute('width', width);\n            debug_canvas.setAttribute('height', height);\n            debug_canvas.setAttribute('id', \"copybits\" + copy_bits.base.surface_id + \".\" + this.surfaces[copy_bits.base.surface_id].draw_count);\n            debug_canvas.getContext(\"2d\").putImageData(source_img, 0, 0);\n            document.getElementById(this.parent.dump_id).appendChild(debug_canvas);\n        }\n\n\n        this.surfaces[copy_bits.base.surface_id].draw_count++;\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES)\n    {\n        this.known_unimplemented(msg.type, \"Inval All Palettes\");\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_SURFACE_CREATE)\n    {\n        if (! (\"surfaces\" in this))\n            this.surfaces = [];\n\n        var m = new SpiceMsgSurfaceCreate(msg.data);\n        DEBUG > 1 && console.log(this.type + \": MsgSurfaceCreate id \" + m.surface.surface_id \n                                    + \"; \" + m.surface.width + \"x\" + m.surface.height\n                                    + \"; format \" + m.surface.format \n                                    + \"; flags \" + m.surface.flags);\n        if (m.surface.format != SPICE_SURFACE_FMT_32_xRGB &&\n            m.surface.format != SPICE_SURFACE_FMT_32_ARGB)\n        {\n            this.log_warn(\"FIXME: cannot handle surface format \" + m.surface.format + \" yet.\");\n            return false;\n        }\n\n        var canvas = document.createElement(\"canvas\");\n        canvas.setAttribute('width', m.surface.width);\n        canvas.setAttribute('height', m.surface.height);\n        canvas.setAttribute('id', \"spice_surface_\" + m.surface.surface_id);\n        canvas.setAttribute('tabindex', m.surface.surface_id);\n        canvas.context = canvas.getContext(\"2d\");\n\n        if (DUMP_CANVASES && this.parent.dump_id)\n            document.getElementById(this.parent.dump_id).appendChild(canvas);\n\n        m.surface.canvas = canvas;\n        m.surface.draw_count = 0;\n        this.surfaces[m.surface.surface_id] = m.surface;\n\n        if (m.surface.flags & SPICE_SURFACE_FLAGS_PRIMARY)\n        {\n            this.primary_surface = m.surface.surface_id;\n\n            /* This .save() is done entirely to enable SPICE_MSG_DISPLAY_RESET */\n            canvas.context.save();\n            document.getElementById(this.parent.screen_id).appendChild(canvas);\n\n            /* We're going to leave width dynamic, but correctly set the height */\n            document.getElementById(this.parent.screen_id).style.height = m.surface.height + \"px\";\n            this.hook_events();\n        }\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_SURFACE_DESTROY)\n    {\n        var m = new SpiceMsgSurfaceDestroy(msg.data);\n        DEBUG > 1 && console.log(this.type + \": MsgSurfaceDestroy id \" + m.surface_id);\n        this.delete_surface(m.surface_id);\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_STREAM_CREATE)\n    {\n        var m = new SpiceMsgDisplayStreamCreate(msg.data);\n        DEBUG > 1 && console.log(this.type + \": MsgStreamCreate id\" + m.id);\n        if (!this.streams)\n            this.streams = new Array();\n        if (this.streams[m.id])\n            console.log(\"Stream already exists\");\n        else\n            this.streams[m.id] = m;\n        if (m.codec_type != SPICE_VIDEO_CODEC_TYPE_MJPEG)\n            console.log(\"Unhandled stream codec: \"+m.codec_type);\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_STREAM_DATA)\n    {\n        var m = new SpiceMsgDisplayStreamData(msg.data);\n        if (!this.streams[m.base.id])\n        {\n            console.log(\"no stream for data\");\n            return false;\n        }\n        if (this.streams[m.base.id].codec_type === SPICE_VIDEO_CODEC_TYPE_MJPEG)\n        {\n            var tmpstr = \"data:image/jpeg,\";\n            var img = new Image;\n            var i;\n            for (i = 0; i < m.data.length; i++)\n            {\n                tmpstr +=  '%';\n                if (m.data[i] < 16)\n                tmpstr += '0';\n                tmpstr += m.data[i].toString(16);\n            }\n            var strm_base = new SpiceMsgDisplayBase();\n            strm_base.surface_id = this.streams[m.base.id].surface_id;\n            strm_base.box = this.streams[m.base.id].dest;\n            strm_base.clip = this.streams[m.base.id].clip;\n            img.o =\n                { base: strm_base,\n                  tag: \"mjpeg.\" + m.base.id,\n                  descriptor: null,\n                  sc : this,\n                };\n            img.onload = handle_draw_jpeg_onload;\n            img.src = tmpstr;\n        }\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_STREAM_CLIP)\n    {\n        var m = new SpiceMsgDisplayStreamClip(msg.data);\n        DEBUG > 1 && console.log(this.type + \": MsgStreamClip id\" + m.id);\n        this.streams[m.id].clip = m.clip;\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_DISPLAY_STREAM_DESTROY)\n    {\n        var m = new SpiceMsgDisplayStreamDestroy(msg.data);\n        DEBUG > 1 && console.log(this.type + \": MsgStreamDestroy id\" + m.id);\n        this.streams[m.id] = undefined;\n        return true;\n    }\n    if (msg.type == SPICE_MSG_DISPLAY_INVAL_LIST)\n    {\n        var m = new SpiceMsgDisplayInvalList(msg.data);\n        var i;\n        DEBUG > 1 && console.log(this.type + \": MsgInvalList \" + m.count + \" items\");\n        for (i = 0; i < m.count; i++)\n            if (this.cache[m.resources[i].id] != undefined)\n                delete this.cache[m.resources[i].id];\n        return true;\n    }\n\n    return false;\n}\n\nSpiceDisplayConn.prototype.delete_surface = function(surface_id)\n{\n    var canvas = document.getElementById(\"spice_surface_\" + surface_id);\n    if (DUMP_CANVASES && this.parent.dump_id)\n        document.getElementById(this.parent.dump_id).removeChild(canvas);\n    if (this.primary_surface == surface_id)\n    {\n        this.unhook_events();\n        this.primary_surface = undefined;\n        document.getElementById(this.parent.screen_id).removeChild(canvas);\n    }\n\n    delete this.surfaces[surface_id];\n}\n\n\nSpiceDisplayConn.prototype.draw_copy_helper = function(o)\n{\n\n    var canvas = this.surfaces[o.base.surface_id].canvas;\n    if (o.has_alpha)\n    {\n        /* FIXME - This is based on trial + error, not a serious thoughtful\n                   analysis of what Spice requires.  See display.js for more. */\n        if (this.surfaces[o.base.surface_id].format == SPICE_SURFACE_FMT_32_xRGB)\n        {\n            stripAlpha(o.image_data);\n            canvas.context.putImageData(o.image_data, o.base.box.left, o.base.box.top);\n        }\n        else\n            putImageDataWithAlpha(canvas.context, o.image_data,\n                    o.base.box.left, o.base.box.top);\n    }\n    else\n        canvas.context.putImageData(o.image_data, o.base.box.left, o.base.box.top);\n\n    if (o.src_area.left > 0 || o.src_area.top > 0)\n    {\n        this.log_warn(\"FIXME: DrawCopy not shifting draw copies just yet...\");\n    }\n\n    if (o.descriptor && (o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))\n    {\n        if (! (\"cache\" in this))\n            this.cache = {};\n        this.cache[o.descriptor.id] = o.image_data;\n    }\n\n    if (DUMP_DRAWS && this.parent.dump_id)\n    {\n        var debug_canvas = document.createElement(\"canvas\");\n        debug_canvas.setAttribute('width', o.image_data.width);\n        debug_canvas.setAttribute('height', o.image_data.height);\n        debug_canvas.setAttribute('id', o.tag + \".\" +\n            this.surfaces[o.base.surface_id].draw_count + \".\" +\n            o.base.surface_id + \"@\" + o.base.box.left + \"x\" +  o.base.box.top);\n        debug_canvas.getContext(\"2d\").putImageData(o.image_data, 0, 0);\n        document.getElementById(this.parent.dump_id).appendChild(debug_canvas);\n    }\n\n    this.surfaces[o.base.surface_id].draw_count++;\n\n    return true;\n}\n\n\nSpiceDisplayConn.prototype.log_draw = function(prefix, draw)\n{\n    var str = prefix + \".\" + draw.base.surface_id + \".\" + this.surfaces[draw.base.surface_id].draw_count + \": \";\n    str += \"base.box \" + draw.base.box.left + \", \" + draw.base.box.top + \" to \" + \n                           draw.base.box.right + \", \" + draw.base.box.bottom;\n    str += \"; clip.type \" + draw.base.clip.type;\n\n    if (draw.data)\n    {\n        if (draw.data.src_area)\n            str += \"; src_area \" + draw.data.src_area.left + \", \" + draw.data.src_area.top + \" to \"\n                                 + draw.data.src_area.right + \", \" + draw.data.src_area.bottom;\n\n        if (draw.data.src_bitmap && draw.data.src_bitmap != null)\n        {\n            str += \"; src_bitmap id: \" + draw.data.src_bitmap.descriptor.id;\n            str += \"; src_bitmap width \" + draw.data.src_bitmap.descriptor.width + \", height \" + draw.data.src_bitmap.descriptor.height;\n            str += \"; src_bitmap type \" + draw.data.src_bitmap.descriptor.type + \", flags \" + draw.data.src_bitmap.descriptor.flags;\n            if (draw.data.src_bitmap.surface_id !== undefined)\n                str += \"; src_bitmap surface_id \" + draw.data.src_bitmap.surface_id;\n            if (draw.data.src_bitmap.quic)\n                str += \"; QUIC type \" + draw.data.src_bitmap.quic.type + \n                        \"; width \" + draw.data.src_bitmap.quic.width + \n                        \"; height \" + draw.data.src_bitmap.quic.height ;\n            if (draw.data.src_bitmap.lz_rgb)\n                str += \"; LZ_RGB length \" + draw.data.src_bitmap.lz_rgb.length +\n                       \"; magic \" + draw.data.src_bitmap.lz_rgb.magic + \n                       \"; version 0x\" + draw.data.src_bitmap.lz_rgb.version.toString(16) +\n                       \"; type \" + draw.data.src_bitmap.lz_rgb.type +\n                       \"; width \" + draw.data.src_bitmap.lz_rgb.width +\n                       \"; height \" + draw.data.src_bitmap.lz_rgb.height +\n                       \"; stride \" + draw.data.src_bitmap.lz_rgb.stride +\n                       \"; top down \" + draw.data.src_bitmap.lz_rgb.top_down;\n        }\n        else\n            str += \"; src_bitmap is null\";\n\n        if (draw.data.brush)\n        {\n            if (draw.data.brush.type == SPICE_BRUSH_TYPE_SOLID)\n                str += \"; brush.color 0x\" + draw.data.brush.color.toString(16);\n            if (draw.data.brush.type == SPICE_BRUSH_TYPE_PATTERN)\n            {\n                str += \"; brush.pat \";\n                if (draw.data.brush.pattern.pat != null)\n                    str += \"[SpiceImage]\";\n                else\n                    str += \"[null]\";\n                str += \" at \" + draw.data.brush.pattern.pos.x + \", \" + draw.data.brush.pattern.pos.y;\n            }\n        }\n\n        str += \"; rop_descriptor \" + draw.data.rop_descriptor;\n        if (draw.data.scale_mode !== undefined)\n            str += \"; scale_mode \" + draw.data.scale_mode;\n        str += \"; mask.flags \" + draw.data.mask.flags;\n        str += \"; mask.pos \" + draw.data.mask.pos.x + \", \" + draw.data.mask.pos.y;\n        if (draw.data.mask.bitmap != null)\n        {\n            str += \"; mask.bitmap width \" + draw.data.mask.bitmap.descriptor.width + \", height \" + draw.data.mask.bitmap.descriptor.height;\n            str += \"; mask.bitmap type \" + draw.data.mask.bitmap.descriptor.type + \", flags \" + draw.data.mask.bitmap.descriptor.flags;\n        }\n        else\n            str += \"; mask.bitmap is null\";\n    }\n\n    console.log(str);\n}\n\nSpiceDisplayConn.prototype.hook_events = function()\n{\n    if (this.primary_surface !== undefined)\n    {\n        var canvas = this.surfaces[this.primary_surface].canvas;\n        canvas.sc = this.parent;\n        canvas.addEventListener('mousemove', handle_mousemove);\n        canvas.addEventListener('mousedown', handle_mousedown);\n        canvas.addEventListener('contextmenu', handle_contextmenu);\n        canvas.addEventListener('mouseup', handle_mouseup);\n        canvas.addEventListener('keydown', handle_keydown);\n        canvas.addEventListener('keyup', handle_keyup);\n        canvas.addEventListener('mouseout', handle_mouseout);\n        canvas.addEventListener('mouseover', handle_mouseover);\n        canvas.addEventListener('wheel', handle_mousewheel);\n        canvas.focus();\n    }\n}\n\nSpiceDisplayConn.prototype.unhook_events = function()\n{\n    if (this.primary_surface !== undefined)\n    {\n        var canvas = this.surfaces[this.primary_surface].canvas;\n        canvas.removeEventListener('mousemove', handle_mousemove);\n        canvas.removeEventListener('mousedown', handle_mousedown);\n        canvas.removeEventListener('contextmenu', handle_contextmenu);\n        canvas.removeEventListener('mouseup', handle_mouseup);\n        canvas.removeEventListener('keydown', handle_keydown);\n        canvas.removeEventListener('keyup', handle_keyup);\n        canvas.removeEventListener('mouseout', handle_mouseout);\n        canvas.removeEventListener('mouseover', handle_mouseover);\n        canvas.removeEventListener('wheel', handle_mousewheel);\n    }\n}\n\n\nSpiceDisplayConn.prototype.destroy_surfaces = function()\n{\n    for (var s in this.surfaces)\n    {\n        this.delete_surface(this.surfaces[s].surface_id);\n    }\n\n    this.surfaces = undefined;\n}\n\n\nfunction handle_mouseover(e)\n{\n    this.focus();\n}\n\nfunction handle_mouseout(e)\n{\n    if (this.sc && this.sc.cursor && this.sc.cursor.spice_simulated_cursor)\n        this.sc.cursor.spice_simulated_cursor.style.display = 'none';\n    this.blur();\n}\n\nfunction handle_draw_jpeg_onload()\n{\n    var temp_canvas = null;\n    var context;\n\n    /*------------------------------------------------------------\n    ** FIXME:\n    **  The helper should be extended to be able to handle actual HtmlImageElements\n    **  ...and the cache should be modified to do so as well\n    **----------------------------------------------------------*/\n    if (this.o.sc.surfaces[this.o.base.surface_id] === undefined)\n    {\n        // This can happen; if the jpeg image loads after our surface\n        //  has been destroyed (e.g. open a menu, close it quickly),\n        //  we'll find we have no surface.  \n        DEBUG > 2 && this.o.sc.log_info(\"Discarding jpeg; presumed lost surface \" + this.o.base.surface_id);\n        temp_canvas = document.createElement(\"canvas\");\n        temp_canvas.setAttribute('width', this.o.base.box.right);\n        temp_canvas.setAttribute('height', this.o.base.box.bottom);\n        context = temp_canvas.getContext(\"2d\");\n    }\n    else\n        context = this.o.sc.surfaces[this.o.base.surface_id].canvas.context;\n\n    if (this.alpha_img)\n    {\n        var c = document.createElement(\"canvas\");\n        var t = c.getContext(\"2d\");\n        c.setAttribute('width', this.alpha_img.width);\n        c.setAttribute('height', this.alpha_img.height);\n        t.putImageData(this.alpha_img, 0, 0);\n        t.globalCompositeOperation = 'source-in';\n        t.drawImage(this, 0, 0);\n     \n        context.drawImage(c, this.o.base.box.left, this.o.base.box.top);\n\n        if (this.o.descriptor && \n            (this.o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))\n        {\n            if (! (\"cache\" in this.o.sc))\n                this.o.sc.cache = {};\n\n            this.o.sc.cache[this.o.descriptor.id] = \n                t.getImageData(0, 0,\n                    this.alpha_img.width,\n                    this.alpha_img.height);\n        }\n    }\n    else\n    {\n        context.drawImage(this, this.o.base.box.left, this.o.base.box.top);\n\n        // Give the Garbage collector a clue to recycle this; avoids\n        //  fairly massive memory leaks during video playback\n        this.src = null;\n\n        if (this.o.descriptor && \n            (this.o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))\n        {\n            if (! (\"cache\" in this.o.sc))\n                this.o.sc.cache = {};\n\n            this.o.sc.cache[this.o.descriptor.id] = \n                context.getImageData(this.o.base.box.left, this.o.base.box.top,\n                    this.o.base.box.right - this.o.base.box.left,\n                    this.o.base.box.bottom - this.o.base.box.top);\n        }\n    }\n\n    if (temp_canvas == null)\n    {\n        if (DUMP_DRAWS && this.o.sc.parent.dump_id)\n        {\n            var debug_canvas = document.createElement(\"canvas\");\n            debug_canvas.setAttribute('id', this.o.tag + \".\" +\n                this.o.sc.surfaces[this.o.base.surface_id].draw_count + \".\" +\n                this.o.base.surface_id + \"@\" + this.o.base.box.left + \"x\" +  this.o.base.box.top);\n            debug_canvas.getContext(\"2d\").drawImage(this, 0, 0);\n            document.getElementById(this.o.sc.parent.dump_id).appendChild(debug_canvas);\n        }\n\n        this.o.sc.surfaces[this.o.base.surface_id].draw_count++;\n    }\n}\n;\ndefine(\"spice-display\", [\"spice-spiceconn\"], function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n ** Modifier Keystates\n **     These need to be tracked because focus in and out can get the keyboard\n **     out of sync.\n **------------------------------------------------------------------------*/\nvar Shift_state = -1;\nvar Ctrl_state = -1;\nvar Alt_state = -1;\nvar Meta_state = -1;\n\n/*----------------------------------------------------------------------------\n**  SpiceInputsConn\n**      Drive the Spice Inputs channel (e.g. mouse + keyboard)\n**--------------------------------------------------------------------------*/\nfunction SpiceInputsConn()\n{\n    SpiceConn.apply(this, arguments);\n\n    this.mousex = undefined;\n    this.mousey = undefined;\n    this.button_state = 0;\n    this.waiting_for_ack = 0;\n}\n\nSpiceInputsConn.prototype = Object.create(SpiceConn.prototype);\nSpiceInputsConn.prototype.process_channel_message = function(msg)\n{\n    if (msg.type == SPICE_MSG_INPUTS_INIT)\n    {\n        var inputs_init = new SpiceMsgInputsInit(msg.data);\n        this.keyboard_modifiers = inputs_init.keyboard_modifiers;\n        DEBUG > 1 && console.log(\"MsgInputsInit - modifier \" + this.keyboard_modifiers);\n        // FIXME - We don't do anything with the keyboard modifiers...\n        return true;\n    }\n    if (msg.type == SPICE_MSG_INPUTS_KEY_MODIFIERS)\n    {\n        var key = new SpiceMsgInputsKeyModifiers(msg.data);\n        this.keyboard_modifiers = key.keyboard_modifiers;\n        DEBUG > 1 && console.log(\"MsgInputsKeyModifiers - modifier \" + this.keyboard_modifiers);\n        // FIXME - We don't do anything with the keyboard modifiers...\n        return true;\n    }\n    if (msg.type == SPICE_MSG_INPUTS_MOUSE_MOTION_ACK)\n    {\n        DEBUG > 1 && console.log(\"mouse motion ack\");\n        this.waiting_for_ack -= SPICE_INPUT_MOTION_ACK_BUNCH;\n        return true;\n    }\n    return false;\n}\n\n\n\nfunction handle_mousemove(e)\n{\n    var msg = new SpiceMiniData();\n    var move;\n    if (this.sc.mouse_mode == SPICE_MOUSE_MODE_CLIENT)\n    {\n        move = new SpiceMsgcMousePosition(this.sc, e)\n        msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_POSITION, move);\n    }\n    else\n    {\n        move = new SpiceMsgcMouseMotion(this.sc, e)\n        msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_MOTION, move);\n    }\n    if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n    {\n        if (this.sc.inputs.waiting_for_ack < (2 * SPICE_INPUT_MOTION_ACK_BUNCH))\n        {\n            this.sc.inputs.send_msg(msg);\n            this.sc.inputs.waiting_for_ack++;\n        }\n        else\n        {\n            DEBUG > 0 && this.sc.log_info(\"Discarding mouse motion\");\n        }\n    }\n\n    if (this.sc && this.sc.cursor && this.sc.cursor.spice_simulated_cursor)\n    {\n        this.sc.cursor.spice_simulated_cursor.style.display = 'block';\n        this.sc.cursor.spice_simulated_cursor.style.left = e.pageX - this.sc.cursor.spice_simulated_cursor.spice_hot_x + 'px';\n        this.sc.cursor.spice_simulated_cursor.style.top = e.pageY - this.sc.cursor.spice_simulated_cursor.spice_hot_y + 'px';\n        e.preventDefault();\n    }\n\n}\n\nfunction handle_mousedown(e)\n{\n    var press = new SpiceMsgcMousePress(this.sc, e)\n    var msg = new SpiceMiniData();\n    msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_PRESS, press);\n    if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n        this.sc.inputs.send_msg(msg);\n\n    e.preventDefault();\n}\n\nfunction handle_contextmenu(e)\n{\n    e.preventDefault();\n    return false;\n}\n\nfunction handle_mouseup(e)\n{\n    var release = new SpiceMsgcMouseRelease(this.sc, e)\n    var msg = new SpiceMiniData();\n    msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_RELEASE, release);\n    if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n        this.sc.inputs.send_msg(msg);\n\n    e.preventDefault();\n}\n\nfunction handle_mousewheel(e)\n{\n    var press = new SpiceMsgcMousePress;\n    var release = new SpiceMsgcMouseRelease;\n    if (e.deltaY < 0)\n        press.button = release.button = SPICE_MOUSE_BUTTON_UP;\n    else\n        press.button = release.button = SPICE_MOUSE_BUTTON_DOWN;\n    press.buttons_state = 0;\n    release.buttons_state = 0;\n\n    var msg = new SpiceMiniData();\n    msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_PRESS, press);\n    if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n        this.sc.inputs.send_msg(msg);\n\n    msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_RELEASE, release);\n    if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n        this.sc.inputs.send_msg(msg);\n\n    e.preventDefault();\n}\n\nfunction handle_keydown(e)\n{\n    var key = new SpiceMsgcKeyDown(e)\n    var msg = new SpiceMiniData();\n    check_and_update_modifiers(e, key.code, this.sc);\n    msg.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN, key);\n    if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n        this.sc.inputs.send_msg(msg);\n\n    e.preventDefault();\n}\n\nfunction handle_keyup(e)\n{\n    var key = new SpiceMsgcKeyUp(e)\n    var msg = new SpiceMiniData();\n    check_and_update_modifiers(e, key.code, this.sc);\n    msg.build_msg(SPICE_MSGC_INPUTS_KEY_UP, key);\n    if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n        this.sc.inputs.send_msg(msg);\n\n    e.preventDefault();\n}\n\nfunction sendCtrlAltDel()\n{\n    if (sc && sc.inputs && sc.inputs.state === \"ready\"){\n        var key = new SpiceMsgcKeyDown();\n        var msg = new SpiceMiniData();\n\n        update_modifier(true, KEY_LCtrl, sc);\n        update_modifier(true, KEY_Alt, sc);\n\n        key.code = KEY_KP_Decimal;\n        msg.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN, key);\n        sc.inputs.send_msg(msg);\n        msg.build_msg(SPICE_MSGC_INPUTS_KEY_UP, key);\n        sc.inputs.send_msg(msg);\n\n        if(Ctrl_state == false) update_modifier(false, KEY_LCtrl, sc);\n        if(Alt_state == false) update_modifier(false, KEY_Alt, sc);\n    }\n}\n\nfunction update_modifier(state, code, sc)\n{\n    var msg = new SpiceMiniData();\n    if (!state)\n    {\n        var key = new SpiceMsgcKeyUp()\n        key.code =(0x80|code);\n        msg.build_msg(SPICE_MSGC_INPUTS_KEY_UP, key);\n    }\n    else\n    {\n        var key = new SpiceMsgcKeyDown()\n        key.code = code;\n        msg.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN, key);\n    }\n\n    sc.inputs.send_msg(msg);\n}\n\nfunction check_and_update_modifiers(e, code, sc)\n{\n    if (Shift_state === -1)\n    {\n        Shift_state = e.shiftKey;\n        Ctrl_state = e.ctrlKey;\n        Alt_state = e.altKey;\n        Meta_state = e.metaKey;\n    }\n\n    if (code === KEY_ShiftL)\n        Shift_state = true;\n    else if (code === KEY_Alt)\n        Alt_state = true;\n    else if (code === KEY_LCtrl)\n        Ctrl_state = true;\n    else if (code === 0xE0B5)\n        Meta_state = true;\n    else if (code === (0x80|KEY_ShiftL))\n        Shift_state = false;\n    else if (code === (0x80|KEY_Alt))\n        Alt_state = false;\n    else if (code === (0x80|KEY_LCtrl))\n        Ctrl_state = false;\n    else if (code === (0x80|0xE0B5))\n        Meta_state = false;\n\n    if (sc && sc.inputs && sc.inputs.state === \"ready\")\n    {\n        if (Shift_state != e.shiftKey)\n        {\n            console.log(\"Shift state out of sync\");\n            update_modifier(e.shiftKey, KEY_ShiftL, sc);\n            Shift_state = e.shiftKey;\n        }\n        if (Alt_state != e.altKey)\n        {\n            console.log(\"Alt state out of sync\");\n            update_modifier(e.altKey, KEY_Alt, sc);\n            Alt_state = e.altKey;\n        }\n        if (Ctrl_state != e.ctrlKey)\n        {\n            console.log(\"Ctrl state out of sync\");\n            update_modifier(e.ctrlKey, KEY_LCtrl, sc);\n            Ctrl_state = e.ctrlKey;\n        }\n        if (Meta_state != e.metaKey)\n        {\n            console.log(\"Meta state out of sync\");\n            update_modifier(e.metaKey, 0xE0B5, sc);\n            Meta_state = e.metaKey;\n        }\n    }\n}\n;\ndefine(\"spice-inputs\", [\"spice-spiceconn\"], function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2014 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n\n/*----------------------------------------------------------------------------\n**  EBML identifiers\n**--------------------------------------------------------------------------*/\nvar EBML_HEADER =                           [ 0x1a, 0x45, 0xdf, 0xa3 ];\nvar EBML_HEADER_VERSION =                   [ 0x42, 0x86 ];\nvar EBML_HEADER_READ_VERSION =              [ 0x42, 0xf7 ];\nvar EBML_HEADER_MAX_ID_LENGTH =             [ 0x42, 0xf2 ];\nvar EBML_HEADER_MAX_SIZE_LENGTH =           [ 0x42, 0xf3 ];\nvar EBML_HEADER_DOC_TYPE =                  [ 0x42, 0x82 ];\nvar EBML_HEADER_DOC_TYPE_VERSION =          [ 0x42, 0x87 ];\nvar EBML_HEADER_DOC_TYPE_READ_VERSION =     [ 0x42, 0x85 ];\n\nvar WEBM_SEGMENT_HEADER =                   [ 0x18, 0x53, 0x80, 0x67 ];\nvar WEBM_SEGMENT_INFORMATION =              [ 0x15, 0x49, 0xA9, 0x66 ];\n\nvar WEBM_TIMECODE_SCALE =                   [ 0x2A, 0xD7, 0xB1 ];\nvar WEBM_MUXING_APP =                       [ 0x4D, 0x80 ];\nvar WEBM_WRITING_APP =                      [ 0x57, 0x41 ];\n\nvar WEBM_SEEK_HEAD =                        [ 0x11, 0x4D, 0x9B, 0x74 ];\nvar WEBM_SEEK =                             [ 0x4D, 0xBB ];\nvar WEBM_SEEK_ID =                          [ 0x53, 0xAB ];\nvar WEBM_SEEK_POSITION =                    [ 0x53, 0xAC ];\n\nvar WEBM_TRACKS =                           [ 0x16, 0x54, 0xAE, 0x6B ];\nvar WEBM_TRACK_ENTRY =                      [ 0xAE ];\nvar WEBM_TRACK_NUMBER =                     [ 0xD7 ];\nvar WEBM_TRACK_UID =                        [ 0x73, 0xC5 ];\nvar WEBM_TRACK_TYPE =                       [ 0x83 ];\nvar WEBM_FLAG_ENABLED =                     [ 0xB9 ];\nvar WEBM_FLAG_DEFAULT =                     [ 0x88 ];\nvar WEBM_FLAG_FORCED =                      [ 0x55, 0xAA ];\nvar WEBM_FLAG_LACING =                      [ 0x9C ];\nvar WEBM_MIN_CACHE =                        [ 0x6D, 0xE7 ];\n\nvar WEBM_MAX_BLOCK_ADDITION_ID =            [ 0x55, 0xEE ];\nvar WEBM_CODEC_DECODE_ALL =                 [ 0xAA ];\nvar WEBM_SEEK_PRE_ROLL =                    [ 0x56, 0xBB ];\nvar WEBM_CODEC_DELAY =                      [ 0x56, 0xAA ];\nvar WEBM_CODEC_PRIVATE =                    [ 0x63, 0xA2 ];\nvar WEBM_CODEC_ID =                         [ 0x86 ];\n\nvar WEBM_AUDIO =                            [ 0xE1 ] ;\nvar WEBM_SAMPLING_FREQUENCY =               [ 0xB5 ] ;\nvar WEBM_CHANNELS =                         [ 0x9F ] ;\n\nvar WEBM_CLUSTER =                          [ 0x1F, 0x43, 0xB6, 0x75 ];\nvar WEBM_TIME_CODE =                        [ 0xE7 ] ;\nvar WEBM_SIMPLE_BLOCK =                     [ 0xA3 ] ;\n\n/*----------------------------------------------------------------------------\n**  Various OPUS / Webm constants\n**--------------------------------------------------------------------------*/\nvar CLUSTER_SIMPLEBLOCK_FLAG_KEYFRAME       = 1 << 7;\n\nvar OPUS_FREQUENCY                          = 48000;\nvar OPUS_CHANNELS                           = 2;\n\nvar SPICE_PLAYBACK_CODEC                    = 'audio/webm; codecs=\"opus\"';\nvar MAX_CLUSTER_TIME                        = 1000;\n\nvar GAP_DETECTION_THRESHOLD                 = 50;\n\n/*----------------------------------------------------------------------------\n**  EBML utility functions\n**      These classes can create the binary representation of a webm file\n**--------------------------------------------------------------------------*/\nfunction EBML_write_u1_data_len(len, dv, at)\n{\n    var b = 0x80 | len;\n    dv.setUint8(at, b);\n    return at + 1;\n}\n\nfunction EBML_write_u8_value(id, val, dv, at)\n{\n    at = EBML_write_array(id, dv, at);\n    at = EBML_write_u1_data_len(1, dv, at);\n    dv.setUint8(at, val);\n    return at + 1;\n}\n\nfunction EBML_write_u32_value(id, val, dv, at)\n{\n    at = EBML_write_array(id, dv, at);\n    at = EBML_write_u1_data_len(4, dv, at);\n    dv.setUint32(at, val);\n    return at + 4;\n}\n\nfunction EBML_write_u16_value(id, val, dv, at)\n{\n    at = EBML_write_array(id, dv, at);\n    at = EBML_write_u1_data_len(2, dv, at);\n    dv.setUint16(at, val);\n    return at + 2;\n}\n\nfunction EBML_write_float_value(id, val, dv, at)\n{\n    at = EBML_write_array(id, dv, at);\n    at = EBML_write_u1_data_len(4, dv, at);\n    dv.setFloat32(at, val);\n    return at + 4;\n}\n\n\n\nfunction EBML_write_u64_data_len(len, dv, at)\n{\n    /* Javascript doesn't do 64 bit ints, so this cheats and\n        just has a max of 32 bits.  Fine for our purposes */\n    dv.setUint8(at++, 0x01);\n    dv.setUint8(at++, 0x00);\n    dv.setUint8(at++, 0x00);\n    dv.setUint8(at++, 0x00);\n    var val = len & 0xFFFFFFFF;\n    for (var shift = 24; shift >= 0; shift -= 8)\n        dv.setUint8(at++, val >> shift);\n    return at;\n}\n\nfunction EBML_write_array(arr, dv, at)\n{\n    for (var i = 0; i < arr.length; i++)\n        dv.setUint8(at + i, arr[i]);\n    return at + arr.length;\n}\n\nfunction EBML_write_string(str, dv, at)\n{\n    for (var i = 0; i < str.length; i++)\n        dv.setUint8(at + i, str.charCodeAt(i));\n    return at + str.length;\n}\n\nfunction EBML_write_data(id, data, dv, at)\n{\n    at = EBML_write_array(id, dv, at);\n    if (data.length < 127)\n        at = EBML_write_u1_data_len(data.length, dv, at);\n    else\n        at = EBML_write_u64_data_len(data.length, dv, at);\n    if ((typeof data) == \"string\")\n        at = EBML_write_string(data, dv, at);\n    else\n        at = EBML_write_array(data, dv, at);\n    return at;\n}\n\n/*----------------------------------------------------------------------------\n**  Webm objects\n**      These classes can create the binary representation of a webm file\n**--------------------------------------------------------------------------*/\nfunction EBMLHeader()\n{\n    this.id = EBML_HEADER;\n    this.Version = 1;\n    this.ReadVersion = 1;\n    this.MaxIDLength = 4;\n    this.MaxSizeLength = 8;\n    this.DocType = \"webm\";\n    this.DocTypeVersion = 2;  /* Not well specified by the WebM guys, but functionally required for Firefox */\n    this.DocTypeReadVersion = 2;\n}\n\nEBMLHeader.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new DataView(a);\n\n        at = EBML_write_array(this.id, dv, at);\n        at = EBML_write_u64_data_len(0x1f, dv, at);\n        at = EBML_write_u8_value(EBML_HEADER_VERSION, this.Version, dv, at);\n        at = EBML_write_u8_value(EBML_HEADER_READ_VERSION, this.ReadVersion, dv, at);\n        at = EBML_write_u8_value(EBML_HEADER_MAX_ID_LENGTH, this.MaxIDLength, dv, at);\n        at = EBML_write_u8_value(EBML_HEADER_MAX_SIZE_LENGTH, this.MaxSizeLength, dv, at);\n        at = EBML_write_data(EBML_HEADER_DOC_TYPE, this.DocType, dv, at);\n        at = EBML_write_u8_value(EBML_HEADER_DOC_TYPE_VERSION, this.DocTypeVersion, dv, at);\n        at = EBML_write_u8_value(EBML_HEADER_DOC_TYPE_READ_VERSION, this.DocTypeReadVersion, dv, at);\n\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 0x1f + 8 + this.id.length;\n    },\n}\n\nfunction webm_Segment()\n{\n    this.id = WEBM_SEGMENT_HEADER;\n}\n\nwebm_Segment.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new DataView(a);\n\n        at = EBML_write_array(this.id, dv, at);\n        dv.setUint8(at++, 0xff);\n        return at;\n    },\n    buffer_size: function()\n    {\n        return this.id.length + 1;\n    },\n}\n\nfunction webm_SegmentInformation()\n{\n    this.id = WEBM_SEGMENT_INFORMATION;\n    this.timecode_scale = 1000000; /* 1 ms */\n    this.muxing_app = \"spice\";\n    this.writing_app = \"spice-html5\";\n\n}\n\nwebm_SegmentInformation.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new DataView(a);\n\n        at = EBML_write_array(this.id, dv, at);\n        at = EBML_write_u64_data_len(this.buffer_size() - 8 - this.id.length, dv, at);\n        at = EBML_write_u32_value(WEBM_TIMECODE_SCALE, this.timecode_scale, dv, at);\n        at = EBML_write_data(WEBM_MUXING_APP, this.muxing_app, dv, at);\n        at = EBML_write_data(WEBM_WRITING_APP, this.writing_app, dv, at);\n        return at;\n    },\n    buffer_size: function()\n    {\n        return this.id.length + 8 +\n                 WEBM_TIMECODE_SCALE.length + 1 + 4 +\n                 WEBM_MUXING_APP.length + 1 + this.muxing_app.length +\n                 WEBM_WRITING_APP.length + 1 + this.writing_app.length;\n    },\n}\n\nfunction webm_Audio(frequency)\n{\n    this.id = WEBM_AUDIO;\n    this.sampling_frequency = frequency;\n    this.channels = OPUS_CHANNELS;\n}\n\nwebm_Audio.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new DataView(a);\n        at = EBML_write_array(this.id, dv, at);\n        at = EBML_write_u64_data_len(this.buffer_size() - 8 - this.id.length, dv, at);\n        at = EBML_write_u8_value(WEBM_CHANNELS, this.channels, dv, at);\n        at = EBML_write_float_value(WEBM_SAMPLING_FREQUENCY, this.sampling_frequency, dv, at);\n        return at;\n    },\n    buffer_size: function()\n    {\n        return this.id.length + 8 +\n            WEBM_SAMPLING_FREQUENCY.length + 1 + 4 +\n            WEBM_CHANNELS.length + 1 + 1;\n    },\n}\n\n\n/* ---------------------------\n   SeekHead not currently used.  Hopefully not needed.\n*/\nfunction webm_Seek(seekid, pos)\n{\n    this.id = WEBM_SEEK;\n    this.pos = pos;\n    this.seekid = seekid;\n}\n\nwebm_Seek.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new DataView(a);\n        at = EBML_write_array(this.id, dv, at);\n        at = EBML_write_u1_data_len(this.buffer_size() - 1 - this.id.length, dv, at);\n\n        at = EBML_write_data(WEBM_SEEK_ID, this.seekid, dv, at)\n        at = EBML_write_u16_value(WEBM_SEEK_POSITION, this.pos, dv, at)\n\n        return at;\n    },\n    buffer_size: function()\n    {\n        return this.id.length + 1 +\n                WEBM_SEEK_ID.length + 1 + this.seekid.length +\n                WEBM_SEEK_POSITION.length + 1 + 2;\n    },\n}\nfunction webm_SeekHead(info_pos, track_pos)\n{\n    this.id = WEBM_SEEK_HEAD;\n    this.info = new webm_Seek(WEBM_SEGMENT_INFORMATION, info_pos);\n    this.track = new webm_Seek(WEBM_TRACKS, track_pos);\n}\n\nwebm_SeekHead.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new DataView(a);\n        at = EBML_write_array(this.id, dv, at);\n        at = EBML_write_u64_data_len(this.buffer_size() - 8 - this.id.length, dv, at);\n\n        at = this.info.to_buffer(a, at);\n        at = this.track.to_buffer(a, at);\n\n        return at;\n    },\n    buffer_size: function()\n    {\n        return this.id.length + 8 +\n                this.info.buffer_size() +\n                this.track.buffer_size();\n    },\n}\n\n/* -------------------------------\n   End of Seek Head\n*/\n\nfunction webm_TrackEntry()\n{\n    this.id = WEBM_TRACK_ENTRY;\n    this.number = 1;\n    this.uid = 1;\n    this.type = 2; // Audio\n    this.flag_enabled = 1;\n    this.flag_default = 1;\n    this.flag_forced = 1;\n    this.flag_lacing = 0;\n    this.min_cache = 0; // fixme - check\n    this.max_block_addition_id = 0;\n    this.codec_decode_all = 0; // fixme - check\n    this.seek_pre_roll = 0; // 80000000; // fixme - check\n    this.codec_delay =   80000000; // Must match codec_private.preskip\n    this.codec_id = \"A_OPUS\";\n    this.audio = new webm_Audio(OPUS_FREQUENCY);\n\n    // See:  http://tools.ietf.org/html/draft-terriberry-oggopus-01\n    this.codec_private = [ 0x4f, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64,  // OpusHead\n                           0x01, // Version\n                           OPUS_CHANNELS,\n                           0x00, 0x0F, // Preskip - 3840 samples - should be 8ms at 48kHz\n                           0x80, 0xbb, 0x00, 0x00,  // 48000\n                           0x00, 0x00, // Output gain\n                           0x00  // Channel mapping family\n                           ];\n}\n\nwebm_TrackEntry.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new DataView(a);\n        at = EBML_write_array(this.id, dv, at);\n        at = EBML_write_u64_data_len(this.buffer_size() - 8 - this.id.length, dv, at);\n        at = EBML_write_u8_value(WEBM_TRACK_NUMBER, this.number, dv, at);\n        at = EBML_write_u8_value(WEBM_TRACK_UID, this.uid, dv, at);\n        at = EBML_write_u8_value(WEBM_FLAG_ENABLED, this.flag_enabled, dv, at);\n        at = EBML_write_u8_value(WEBM_FLAG_DEFAULT, this.flag_default, dv, at);\n        at = EBML_write_u8_value(WEBM_FLAG_FORCED, this.flag_forced, dv, at);\n        at = EBML_write_u8_value(WEBM_FLAG_LACING, this.flag_lacing, dv, at);\n        at = EBML_write_data(WEBM_CODEC_ID, this.codec_id, dv, at);\n        at = EBML_write_u8_value(WEBM_MIN_CACHE, this.min_cache, dv, at);\n        at = EBML_write_u8_value(WEBM_MAX_BLOCK_ADDITION_ID, this.max_block_addition_id, dv, at);\n        at = EBML_write_u8_value(WEBM_CODEC_DECODE_ALL, this.codec_decode_all, dv, at);\n        at = EBML_write_u32_value(WEBM_CODEC_DELAY, this.codec_delay, dv, at);\n        at = EBML_write_u32_value(WEBM_SEEK_PRE_ROLL, this.seek_pre_roll, dv, at);\n        at = EBML_write_u8_value(WEBM_TRACK_TYPE, this.type, dv, at);\n        at = EBML_write_data(WEBM_CODEC_PRIVATE, this.codec_private, dv, at);\n\n        at = this.audio.to_buffer(a, at);\n        return at;\n    },\n    buffer_size: function()\n    {\n        return this.id.length + 8 +\n            WEBM_TRACK_NUMBER.length + 1 + 1 +\n            WEBM_TRACK_UID.length + 1 + 1 +\n            WEBM_TRACK_TYPE.length + 1 + 1 +\n            WEBM_FLAG_ENABLED.length + 1 + 1 +\n            WEBM_FLAG_DEFAULT.length + 1 + 1 +\n            WEBM_FLAG_FORCED.length + 1 + 1 +\n            WEBM_FLAG_LACING.length + 1 + 1 +\n            WEBM_MIN_CACHE.length + 1 + 1 +\n            WEBM_MAX_BLOCK_ADDITION_ID.length + 1 + 1 +\n            WEBM_CODEC_DECODE_ALL.length + 1 + 1 +\n            WEBM_SEEK_PRE_ROLL.length + 1 + 4 +\n            WEBM_CODEC_DELAY.length + 1 + 4 +\n            WEBM_CODEC_ID.length + this.codec_id.length + 1 +\n            WEBM_CODEC_PRIVATE.length + 1 + this.codec_private.length +\n            this.audio.buffer_size();\n    },\n}\nfunction webm_Tracks(entry)\n{\n    this.id = WEBM_TRACKS;\n    this.track_entry = entry;\n}\n\nwebm_Tracks.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new DataView(a);\n        at = EBML_write_array(this.id, dv, at);\n        at = EBML_write_u64_data_len(this.buffer_size() - 8 - this.id.length, dv, at);\n        at = this.track_entry.to_buffer(a, at);\n        return at;\n    },\n    buffer_size: function()\n    {\n        return this.id.length + 8 +\n                 this.track_entry.buffer_size();\n    },\n}\n\nfunction webm_Cluster(timecode, data)\n{\n    this.id = WEBM_CLUSTER;\n    this.timecode = timecode;\n    this.data = data;\n}\n\nwebm_Cluster.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new DataView(a);\n        at = EBML_write_array(this.id, dv, at);\n        dv.setUint8(at++, 0xff);\n        at = EBML_write_u32_value(WEBM_TIME_CODE, this.timecode, dv, at);\n        return at;\n    },\n    buffer_size: function()\n    {\n        return this.id.length + 1 +\n                 WEBM_TIME_CODE.length + 1 + 4;\n    },\n}\n\nfunction webm_SimpleBlock(timecode, data, keyframe)\n{\n    this.id = WEBM_SIMPLE_BLOCK;\n    this.timecode = timecode;\n    this.data = data;\n    this.keyframe = keyframe;\n}\n\nwebm_SimpleBlock.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new DataView(a);\n        at = EBML_write_array(this.id, dv, at);\n        at = EBML_write_u64_data_len(this.data.byteLength + 4, dv, at);\n        at = EBML_write_u1_data_len(1, dv, at); // Track #\n        dv.setUint16(at, this.timecode); at += 2; // timecode - relative to cluster\n        dv.setUint8(at, this.keyframe ? CLUSTER_SIMPLEBLOCK_FLAG_KEYFRAME : 0); at += 1;  // flags\n\n        // FIXME - There should be a better way to copy\n        var u8 = new Uint8Array(this.data);\n        for (var i = 0; i < this.data.byteLength; i++)\n            dv.setUint8(at++, u8[i]);\n\n        return at;\n    },\n    buffer_size: function()\n    {\n        return this.id.length + 8 +\n                 1 + 2 + 1 +\n                 this.data.byteLength;\n    },\n}\n\nfunction webm_Header()\n{\n    this.ebml = new EBMLHeader;\n    this.segment = new webm_Segment;\n    this.seek_head = new webm_SeekHead(0, 0);\n\n    this.seek_head.info.pos = this.segment.buffer_size() + this.seek_head.buffer_size();\n\n    this.info = new webm_SegmentInformation;\n\n    this.seek_head.track.pos = this.seek_head.info.pos + this.info.buffer_size();\n\n    this.track_entry = new webm_TrackEntry;\n    this.tracks = new webm_Tracks(this.track_entry);\n}\n\nwebm_Header.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        at = this.ebml.to_buffer(a, at);\n        at = this.segment.to_buffer(a, at);\n        at = this.info.to_buffer(a, at);\n        at = this.tracks.to_buffer(a, at);\n\n        return at;\n    },\n    buffer_size: function()\n    {\n        return this.ebml.buffer_size() +\n               this.segment.buffer_size() +\n               this.info.buffer_size() +\n               this.tracks.buffer_size();\n    },\n}\n;\ndefine(\"spice-webm\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2014 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  SpicePlaybackConn\n**      Drive the Spice Playback channel (sound out)\n**--------------------------------------------------------------------------*/\nfunction SpicePlaybackConn()\n{\n    SpiceConn.apply(this, arguments);\n\n    this.queue = new Array();\n    this.append_okay = false;\n    this.start_time = 0;\n    this.skip_until = 0;\n    this.gap_time = 0;\n}\n\nSpicePlaybackConn.prototype = Object.create(SpiceConn.prototype);\nSpicePlaybackConn.prototype.process_channel_message = function(msg)\n{\n    if (!!!window.MediaSource)\n    {\n        this.log_err('MediaSource API is not available');\n        return false;\n    }\n\n    if (msg.type == SPICE_MSG_PLAYBACK_START)\n    {\n        var start = new SpiceMsgPlaybackStart(msg.data);\n\n        DEBUG > 0 && console.log(\"PlaybackStart; frequency \" + start.frequency);\n\n        if (start.frequency != OPUS_FREQUENCY)\n        {\n            this.log_err('This player cannot handle frequency ' + start.frequency);\n            return false;\n        }\n\n        if (start.channels != OPUS_CHANNELS)\n        {\n            this.log_err('This player cannot handle ' + start.channels + ' channels');\n            return false;\n        }\n\n        if (start.format != SPICE_AUDIO_FMT_S16)\n        {\n            this.log_err('This player cannot format ' + start.format);\n            return false;\n        }\n\n        if (! this.source_buffer)\n        {\n            this.media_source = new MediaSource();\n            this.media_source.spiceconn = this;\n\n            this.audio = document.createElement(\"audio\");\n            this.audio.setAttribute('autoplay', true);\n            this.audio.src = window.URL.createObjectURL(this.media_source);\n            document.getElementById(this.parent.screen_id).appendChild(this.audio);\n\n            this.media_source.addEventListener('sourceopen', handle_source_open, false);\n            this.media_source.addEventListener('sourceended', handle_source_ended, false);\n            this.media_source.addEventListener('sourceclosed', handle_source_closed, false);\n\n            this.bytes_written = 0;\n\n            return true;\n        }\n    }\n\n    if (msg.type == SPICE_MSG_PLAYBACK_DATA)\n    {\n        var data = new SpiceMsgPlaybackData(msg.data);\n\n        // If this packet has the same time as the last, just bump up by one.\n        if (this.last_data_time && data.time <= this.last_data_time)\n        {\n            // FIXME - this is arguably wrong.  But delaying the transmission was worse,\n            //          in initial testing.  Could use more research.\n            DEBUG > 1 && console.log(\"Hacking time of \" + data.time + \" to \" + this.last_data_time + 1);\n            data.time = this.last_data_time + 1;\n        }\n\n        /* Gap detection:  If there has been a delay since our last packet, then audio must\n             have paused.  Handling that gets tricky.  In Chrome, you can seek forward,\n             but you cannot in Firefox.  And seeking forward in Chrome is nice, as it keeps\n             Chrome from being overly cautious in it's buffer strategy.\n\n             So we do two things.  First, we seek forward.  Second, we compute how much of a gap\n             there would have been, and essentially eliminate it.\n        */\n        if (this.last_data_time && data.time >= (this.last_data_time + GAP_DETECTION_THRESHOLD))\n        {\n            this.skip_until = data.time;\n            this.gap_time = (data.time - this.start_time) - \n              (this.source_buffer.buffered.end(this.source_buffer.buffered.end.length - 1) * 1000.0).toFixed(0);\n        }\n\n        this.last_data_time = data.time;\n\n\n        DEBUG > 1 && console.log(\"PlaybackData; time \" + data.time + \"; length \" + data.data.byteLength);\n\n        if (! this.source_buffer)\n            return true;\n\n        if (this.start_time == 0)\n            this.start_playback(data);\n\n        else if (data.time - this.cluster_time >= MAX_CLUSTER_TIME || this.skip_until > 0)\n            this.new_cluster(data);\n\n        else\n            this.simple_block(data, false);\n\n        if (this.skip_until > 0)\n        {\n            this.audio.currentTime = (this.skip_until - this.start_time - this.gap_time) / 1000.0;\n            this.skip_until = 0;\n        }\n\n        if (this.audio.paused)\n            this.audio.play();\n\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_PLAYBACK_MODE)\n    {\n        var mode = new SpiceMsgPlaybackMode(msg.data);\n        if (mode.mode != SPICE_AUDIO_DATA_MODE_OPUS)\n        {\n            this.log_err('This player cannot handle mode ' + mode.mode);\n            delete this.source_buffer;\n        }\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_PLAYBACK_STOP)\n    {\n        return true;\n    }\n\n    return false;\n}\n\nSpicePlaybackConn.prototype.start_playback = function(data)\n{\n    this.start_time = data.time;\n\n    var h = new webm_Header();\n\n    var mb = new ArrayBuffer(h.buffer_size())\n\n    this.bytes_written = h.to_buffer(mb);\n\n    this.source_buffer.addEventListener('error', handle_sourcebuffer_error, false);\n    this.source_buffer.addEventListener('updateend', handle_append_buffer_done, false);\n    playback_append_buffer(this, mb);\n\n    this.new_cluster(data);\n}\n\nSpicePlaybackConn.prototype.new_cluster = function(data)\n{\n    this.cluster_time = data.time;\n\n    var c = new webm_Cluster(data.time - this.start_time - this.gap_time);\n\n    var mb = new ArrayBuffer(c.buffer_size());\n    this.bytes_written += c.to_buffer(mb);\n\n    if (this.append_okay)\n        playback_append_buffer(this, mb);\n    else\n        this.queue.push(mb);\n\n    this.simple_block(data, true);\n}\n\nSpicePlaybackConn.prototype.simple_block = function(data, keyframe)\n{\n    var sb = new webm_SimpleBlock(data.time - this.cluster_time, data.data, keyframe);\n    var mb = new ArrayBuffer(sb.buffer_size());\n\n    this.bytes_written += sb.to_buffer(mb);\n\n    if (this.append_okay)\n        playback_append_buffer(this, mb);\n    else\n        this.queue.push(mb);\n}\n\nfunction handle_source_open(e)\n{\n    var p = this.spiceconn;\n\n    if (p.source_buffer)\n        return;\n\n    p.source_buffer = this.addSourceBuffer(SPICE_PLAYBACK_CODEC);\n    if (! p.source_buffer)\n    {\n        p.log_err('Codec ' + SPICE_PLAYBACK_CODEC + ' not available.');\n        return;\n    }\n    p.source_buffer.spiceconn = p;\n    p.source_buffer.mode = \"segments\";\n\n    // FIXME - Experimentation with segments and sequences was unsatisfying.\n    //         Switching to sequence did not solve our gap problem,\n    //         but the browsers didn't fully support the time seek capability\n    //         we would expect to gain from 'segments'.\n    //         Segments worked at the time of this patch, so segments it is for now.\n\n}\n\nfunction handle_source_ended(e)\n{\n    var p = this.spiceconn;\n    p.log_err('Audio source unexpectedly ended.');\n}\n\nfunction handle_source_closed(e)\n{\n    var p = this.spiceconn;\n    p.log_err('Audio source unexpectedly closed.');\n}\n\nfunction handle_append_buffer_done(b)\n{\n    var p = this.spiceconn;\n    if (p.queue.length > 0)\n    {\n        var mb = p.queue.shift();\n        playback_append_buffer(p, mb);\n    }\n    else\n        p.append_okay = true;\n\n}\n\nfunction handle_sourcebuffer_error(e)\n{\n    var p = this.spiceconn;\n    p.log_err('source_buffer error ' + e.message);\n}\n\nfunction playback_append_buffer(p, b)\n{\n    try\n    {\n        p.source_buffer.appendBuffer(b);\n        p.append_okay = false;\n    }\n    catch (e)\n    {\n        p.log_err(\"Error invoking appendBuffer: \" + e.message);\n    }\n}\n;\ndefine(\"spice-playback\", [\"spice-spiceconn\"], function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n\n/*----------------------------------------------------------------------------\n**  SpiceCursorConn\n**      Drive the Spice Cursor Channel\n**--------------------------------------------------------------------------*/\nfunction SpiceCursorConn()\n{\n    SpiceConn.apply(this, arguments);\n}\n\nSpiceCursorConn.prototype = Object.create(SpiceConn.prototype);\nSpiceCursorConn.prototype.process_channel_message = function(msg)\n{\n    if (msg.type == SPICE_MSG_CURSOR_INIT)\n    {\n        var cursor_init = new SpiceMsgCursorInit(msg.data);\n        DEBUG > 1 && console.log(\"SpiceMsgCursorInit\");\n        if (this.parent && this.parent.inputs &&\n            this.parent.inputs.mouse_mode == SPICE_MOUSE_MODE_SERVER)\n        {\n            // FIXME - this imagines that the server actually\n            //          provides the current cursor position,\n            //          instead of 0,0.  As of May 11, 2012,\n            //          that assumption was false :-(.\n            this.parent.inputs.mousex = cursor_init.position.x;\n            this.parent.inputs.mousey = cursor_init.position.y;\n        }\n        // FIXME - We don't handle most of the parameters here...\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_CURSOR_SET)\n    {\n        var cursor_set = new SpiceMsgCursorSet(msg.data);\n        DEBUG > 1 && console.log(\"SpiceMsgCursorSet\");\n        if (cursor_set.flags & SPICE_CURSOR_FLAGS_NONE)\n        {\n            document.getElementById(this.parent.screen_id).style.cursor = \"none\";\n            return true;\n        }\n\n        if (cursor_set.flags > 0)\n            this.log_warn(\"FIXME: No support for cursor flags \" + cursor_set.flags);\n\n        if (cursor_set.cursor.header.type != SPICE_CURSOR_TYPE_ALPHA)\n        {\n            this.log_warn(\"FIXME: No support for cursor type \" + cursor_set.cursor.header.type);\n            return false;\n        }\n\n        this.set_cursor(cursor_set.cursor);\n\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_CURSOR_HIDE)\n    {\n        DEBUG > 1 && console.log(\"SpiceMsgCursorHide\");\n        document.getElementById(this.parent.screen_id).style.cursor = \"none\";\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_CURSOR_RESET)\n    {\n        DEBUG > 1 && console.log(\"SpiceMsgCursorReset\");\n        document.getElementById(this.parent.screen_id).style.cursor = \"auto\";\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_CURSOR_INVAL_ALL)\n    {\n        DEBUG > 1 && console.log(\"SpiceMsgCursorInvalAll\");\n        // FIXME - There may be something useful to do here...\n        return true;\n    }\n\n    return false;\n}\n\nSpiceCursorConn.prototype.set_cursor = function(cursor)\n{\n    var pngstr = create_rgba_png(cursor.header.height, cursor.header.width, cursor.data);\n    var curstr = 'url(data:image/png,' + pngstr + ') ' + \n        cursor.header.hot_spot_x + ' ' + cursor.header.hot_spot_y + \", default\";\n    var screen = document.getElementById(this.parent.screen_id);\n    screen.style.cursor = 'auto';\n    screen.style.cursor = curstr;\n    if (window.getComputedStyle(screen, null).cursor == 'auto')\n        SpiceSimulateCursor.simulate_cursor(this, cursor, screen, pngstr);\n}\n;\ndefine(\"spice-cursor\", [\"spice-spiceconn\"], function(){});\n\n","// Downloaded from http://www-cs-students.stanford.edu/~tjw/jsbn/ by Jeremy White on 6/1/2012\n\n/*\n * Copyright (c) 2003-2005  Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary&0xffffff)==0xefcafe);\n\n// (public) Constructor\nfunction BigInteger(a,b,c) {\n  if(a != null)\n    if(\"number\" == typeof a) this.fromNumber(a,b,c);\n    else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n    else this.fromString(a,b);\n}\n\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i,x,w,j,c,n) {\n  while(--n >= 0) {\n    var v = x*this[i++]+w[j]+c;\n    c = Math.floor(v/0x4000000);\n    w[j++] = v&0x3ffffff;\n  }\n  return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i,x,w,j,c,n) {\n  var xl = x&0x7fff, xh = x>>15;\n  while(--n >= 0) {\n    var l = this[i]&0x7fff;\n    var h = this[i++]>>15;\n    var m = xh*l+h*xl;\n    l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n    c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n    w[j++] = l&0x3fffffff;\n  }\n  return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i,x,w,j,c,n) {\n  var xl = x&0x3fff, xh = x>>14;\n  while(--n >= 0) {\n    var l = this[i]&0x3fff;\n    var h = this[i++]>>14;\n    var m = xh*l+h*xl;\n    l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n    c = (l>>28)+(m>>14)+xh*h;\n    w[j++] = l&0xfffffff;\n  }\n  return c;\n}\nif(j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n  BigInteger.prototype.am = am2;\n  dbits = 30;\n}\nelse if(j_lm && (navigator.appName != \"Netscape\")) {\n  BigInteger.prototype.am = am1;\n  dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n  BigInteger.prototype.am = am3;\n  dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<<dbits)-1);\nBigInteger.prototype.DV = (1<<dbits);\n\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2,BI_FP);\nBigInteger.prototype.F1 = BI_FP-dbits;\nBigInteger.prototype.F2 = 2*dbits-BI_FP;\n\n// Digit conversions\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nvar BI_RC = new Array();\nvar rr,vv;\nrr = \"0\".charCodeAt(0);\nfor(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\nrr = \"a\".charCodeAt(0);\nfor(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nrr = \"A\".charCodeAt(0);\nfor(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n\nfunction int2char(n) { return BI_RM.charAt(n); }\nfunction intAt(s,i) {\n  var c = BI_RC[s.charCodeAt(i)];\n  return (c==null)?-1:c;\n}\n\n// (protected) copy this to r\nfunction bnpCopyTo(r) {\n  for(var i = this.t-1; i >= 0; --i) r[i] = this[i];\n  r.t = this.t;\n  r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n  this.t = 1;\n  this.s = (x<0)?-1:0;\n  if(x > 0) this[0] = x;\n  else if(x < -1) this[0] = x+DV;\n  else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n// (protected) set from string and radix\nfunction bnpFromString(s,b) {\n  var k;\n  if(b == 16) k = 4;\n  else if(b == 8) k = 3;\n  else if(b == 256) k = 8; // byte array\n  else if(b == 2) k = 1;\n  else if(b == 32) k = 5;\n  else if(b == 4) k = 2;\n  else { this.fromRadix(s,b); return; }\n  this.t = 0;\n  this.s = 0;\n  var i = s.length, mi = false, sh = 0;\n  while(--i >= 0) {\n    var x = (k==8)?s[i]&0xff:intAt(s,i);\n    if(x < 0) {\n      if(s.charAt(i) == \"-\") mi = true;\n      continue;\n    }\n    mi = false;\n    if(sh == 0)\n      this[this.t++] = x;\n    else if(sh+k > this.DB) {\n      this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;\n      this[this.t++] = (x>>(this.DB-sh));\n    }\n    else\n      this[this.t-1] |= x<<sh;\n    sh += k;\n    if(sh >= this.DB) sh -= this.DB;\n  }\n  if(k == 8 && (s[0]&0x80) != 0) {\n    this.s = -1;\n    if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;\n  }\n  this.clamp();\n  if(mi) BigInteger.ZERO.subTo(this,this);\n}\n\n// (protected) clamp off excess high words\nfunction bnpClamp() {\n  var c = this.s&this.DM;\n  while(this.t > 0 && this[this.t-1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n  if(this.s < 0) return \"-\"+this.negate().toString(b);\n  var k;\n  if(b == 16) k = 4;\n  else if(b == 8) k = 3;\n  else if(b == 2) k = 1;\n  else if(b == 32) k = 5;\n  else if(b == 4) k = 2;\n  else return this.toRadix(b);\n  var km = (1<<k)-1, d, m = false, r = \"\", i = this.t;\n  var p = this.DB-(i*this.DB)%k;\n  if(i-- > 0) {\n    if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n    while(i >= 0) {\n      if(p < k) {\n        d = (this[i]&((1<<p)-1))<<(k-p);\n        d |= this[--i]>>(p+=this.DB-k);\n      }\n      else {\n        d = (this[i]>>(p-=k))&km;\n        if(p <= 0) { p += this.DB; --i; }\n      }\n      if(d > 0) m = true;\n      if(m) r += int2char(d);\n    }\n  }\n  return m?r:\"0\";\n}\n\n// (public) -this\nfunction bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n// (public) |this|\nfunction bnAbs() { return (this.s<0)?this.negate():this; }\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n  var r = this.s-a.s;\n  if(r != 0) return r;\n  var i = this.t;\n  r = i-a.t;\n  if(r != 0) return r;\n  while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n  return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n  var r = 1, t;\n  if((t=x>>>16) != 0) { x = t; r += 16; }\n  if((t=x>>8) != 0) { x = t; r += 8; }\n  if((t=x>>4) != 0) { x = t; r += 4; }\n  if((t=x>>2) != 0) { x = t; r += 2; }\n  if((t=x>>1) != 0) { x = t; r += 1; }\n  return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n  if(this.t <= 0) return 0;\n  return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n,r) {\n  var i;\n  for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n  for(i = n-1; i >= 0; --i) r[i] = 0;\n  r.t = this.t+n;\n  r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n,r) {\n  for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n  r.t = Math.max(this.t-n,0);\n  r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n,r) {\n  var bs = n%this.DB;\n  var cbs = this.DB-bs;\n  var bm = (1<<cbs)-1;\n  var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;\n  for(i = this.t-1; i >= 0; --i) {\n    r[i+ds+1] = (this[i]>>cbs)|c;\n    c = (this[i]&bm)<<bs;\n  }\n  for(i = ds-1; i >= 0; --i) r[i] = 0;\n  r[ds] = c;\n  r.t = this.t+ds+1;\n  r.s = this.s;\n  r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n,r) {\n  r.s = this.s;\n  var ds = Math.floor(n/this.DB);\n  if(ds >= this.t) { r.t = 0; return; }\n  var bs = n%this.DB;\n  var cbs = this.DB-bs;\n  var bm = (1<<bs)-1;\n  r[0] = this[ds]>>bs;\n  for(var i = ds+1; i < this.t; ++i) {\n    r[i-ds-1] |= (this[i]&bm)<<cbs;\n    r[i-ds] = this[i]>>bs;\n  }\n  if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;\n  r.t = this.t-ds;\n  r.clamp();\n}\n\n// (protected) r = this - a\nfunction bnpSubTo(a,r) {\n  var i = 0, c = 0, m = Math.min(a.t,this.t);\n  while(i < m) {\n    c += this[i]-a[i];\n    r[i++] = c&this.DM;\n    c >>= this.DB;\n  }\n  if(a.t < this.t) {\n    c -= a.s;\n    while(i < this.t) {\n      c += this[i];\n      r[i++] = c&this.DM;\n      c >>= this.DB;\n    }\n    c += this.s;\n  }\n  else {\n    c += this.s;\n    while(i < a.t) {\n      c -= a[i];\n      r[i++] = c&this.DM;\n      c >>= this.DB;\n    }\n    c -= a.s;\n  }\n  r.s = (c<0)?-1:0;\n  if(c < -1) r[i++] = this.DV+c;\n  else if(c > 0) r[i++] = c;\n  r.t = i;\n  r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a,r) {\n  var x = this.abs(), y = a.abs();\n  var i = x.t;\n  r.t = i+y.t;\n  while(--i >= 0) r[i] = 0;\n  for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n  r.s = 0;\n  r.clamp();\n  if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n  var x = this.abs();\n  var i = r.t = 2*x.t;\n  while(--i >= 0) r[i] = 0;\n  for(i = 0; i < x.t-1; ++i) {\n    var c = x.am(i,x[i],r,2*i,0,1);\n    if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n      r[i+x.t] -= x.DV;\n      r[i+x.t+1] = 1;\n    }\n  }\n  if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n  r.s = 0;\n  r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m.  q or r may be null.\nfunction bnpDivRemTo(m,q,r) {\n  var pm = m.abs();\n  if(pm.t <= 0) return;\n  var pt = this.abs();\n  if(pt.t < pm.t) {\n    if(q != null) q.fromInt(0);\n    if(r != null) this.copyTo(r);\n    return;\n  }\n  if(r == null) r = nbi();\n  var y = nbi(), ts = this.s, ms = m.s;\n  var nsh = this.DB-nbits(pm[pm.t-1]);\t// normalize modulus\n  if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n  else { pm.copyTo(y); pt.copyTo(r); }\n  var ys = y.t;\n  var y0 = y[ys-1];\n  if(y0 == 0) return;\n  var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);\n  var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;\n  var i = r.t, j = i-ys, t = (q==null)?nbi():q;\n  y.dlShiftTo(j,t);\n  if(r.compareTo(t) >= 0) {\n    r[r.t++] = 1;\n    r.subTo(t,r);\n  }\n  BigInteger.ONE.dlShiftTo(ys,t);\n  t.subTo(y,y);\t// \"negative\" y so we can replace sub with am later\n  while(y.t < ys) y[y.t++] = 0;\n  while(--j >= 0) {\n    // Estimate quotient digit\n    var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n    if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {\t// Try it out\n      y.dlShiftTo(j,t);\n      r.subTo(t,r);\n      while(r[i] < --qd) r.subTo(t,r);\n    }\n  }\n  if(q != null) {\n    r.drShiftTo(ys,q);\n    if(ts != ms) BigInteger.ZERO.subTo(q,q);\n  }\n  r.t = ys;\n  r.clamp();\n  if(nsh > 0) r.rShiftTo(nsh,r);\t// Denormalize remainder\n  if(ts < 0) BigInteger.ZERO.subTo(r,r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n  var r = nbi();\n  this.abs().divRemTo(a,null,r);\n  if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n  return r;\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) { this.m = m; }\nfunction cConvert(x) {\n  if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n  else return x;\n}\nfunction cRevert(x) { return x; }\nfunction cReduce(x) { x.divRemTo(this.m,null,x); }\nfunction cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\nfunction cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n//         xy == 1 (mod m)\n//         xy =  1+km\n//   xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n  if(this.t < 1) return 0;\n  var x = this[0];\n  if((x&1) == 0) return 0;\n  var y = x&3;\t\t// y == 1/x mod 2^2\n  y = (y*(2-(x&0xf)*y))&0xf;\t// y == 1/x mod 2^4\n  y = (y*(2-(x&0xff)*y))&0xff;\t// y == 1/x mod 2^8\n  y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;\t// y == 1/x mod 2^16\n  // last step - calculate inverse mod DV directly;\n  // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n  y = (y*(2-x*y%this.DV))%this.DV;\t\t// y == 1/x mod 2^dbits\n  // we really want the negative inverse, and -DV < y < DV\n  return (y>0)?this.DV-y:-y;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n  this.m = m;\n  this.mp = m.invDigit();\n  this.mpl = this.mp&0x7fff;\n  this.mph = this.mp>>15;\n  this.um = (1<<(m.DB-15))-1;\n  this.mt2 = 2*m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n  var r = nbi();\n  x.abs().dlShiftTo(this.m.t,r);\n  r.divRemTo(this.m,null,r);\n  if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n  return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n  var r = nbi();\n  x.copyTo(r);\n  this.reduce(r);\n  return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n  while(x.t <= this.mt2)\t// pad x so am has enough room later\n    x[x.t++] = 0;\n  for(var i = 0; i < this.m.t; ++i) {\n    // faster way of calculating u0 = x[i]*mp mod DV\n    var j = x[i]&0x7fff;\n    var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n    // use am to combine the multiply-shift-add into one call\n    j = i+this.m.t;\n    x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n    // propagate carry\n    while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n  }\n  x.clamp();\n  x.drShiftTo(this.m.t,x);\n  if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (protected) true iff this is even\nfunction bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e,z) {\n  if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n  var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n  g.copyTo(r);\n  while(--i >= 0) {\n    z.sqrTo(r,r2);\n    if((e&(1<<i)) > 0) z.mulTo(r2,g,r);\n    else { var t = r; r = r2; r2 = t; }\n  }\n  return z.revert(r);\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e,m) {\n  var z;\n  if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n  return this.exp(e,z);\n}\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\n\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\ndefine(\"spice-jsbn\", function(){});\n\n","// Downloaded from http://www-cs-students.stanford.edu/~tjw/jsbn/ by Jeremy White on 6/1/2012\n\n/*\n * Copyright (c) 2003-2005  Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n\n// Depends on jsbn.js and rng.js\n\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n\n// convert a (hex) string to a bignum object\nfunction parseBigInt(str,r) {\n  return new BigInteger(str,r);\n}\n\nfunction linebrk(s,n) {\n  var ret = \"\";\n  var i = 0;\n  while(i + n < s.length) {\n    ret += s.substring(i,i+n) + \"\\n\";\n    i += n;\n  }\n  return ret + s.substring(i,s.length);\n}\n\nfunction byte2Hex(b) {\n  if(b < 0x10)\n    return \"0\" + b.toString(16);\n  else\n    return b.toString(16);\n}\n\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s,n) {\n  if(n < s.length + 11) { // TODO: fix for utf-8\n    alert(\"Message too long for RSA\");\n    return null;\n  }\n  var ba = new Array();\n  var i = s.length - 1;\n  while(i >= 0 && n > 0) {\n    var c = s.charCodeAt(i--);\n    if(c < 128) { // encode using utf-8\n      ba[--n] = c;\n    }\n    else if((c > 127) && (c < 2048)) {\n      ba[--n] = (c & 63) | 128;\n      ba[--n] = (c >> 6) | 192;\n    }\n    else {\n      ba[--n] = (c & 63) | 128;\n      ba[--n] = ((c >> 6) & 63) | 128;\n      ba[--n] = (c >> 12) | 224;\n    }\n  }\n  ba[--n] = 0;\n  var rng = new SecureRandom();\n  var x = new Array();\n  while(n > 2) { // random non-zero pad\n    x[0] = 0;\n    while(x[0] == 0) rng.nextBytes(x);\n    ba[--n] = x[0];\n  }\n  ba[--n] = 2;\n  ba[--n] = 0;\n  return new BigInteger(ba);\n}\n\n// \"empty\" RSA key constructor\nfunction RSAKey() {\n  this.n = null;\n  this.e = 0;\n  this.d = null;\n  this.p = null;\n  this.q = null;\n  this.dmp1 = null;\n  this.dmq1 = null;\n  this.coeff = null;\n}\n\n// Set the public key fields N and e from hex strings\nfunction RSASetPublic(N,E) {\n  if(N != null && E != null && N.length > 0 && E.length > 0) {\n    this.n = parseBigInt(N,16);\n    this.e = parseInt(E,16);\n  }\n  else\n    alert(\"Invalid RSA public key\");\n}\n\n// Perform raw public operation on \"x\": return x^e (mod n)\nfunction RSADoPublic(x) {\n  return x.modPowInt(this.e, this.n);\n}\n\n// Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\nfunction RSAEncrypt(text) {\n  var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);\n  if(m == null) return null;\n  var c = this.doPublic(m);\n  if(c == null) return null;\n  var h = c.toString(16);\n  if((h.length & 1) == 0) return h; else return \"0\" + h;\n}\n\n// Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n//function RSAEncryptB64(text) {\n//  var h = this.encrypt(text);\n//  if(h) return hex2b64(h); else return null;\n//}\n\n// protected\nRSAKey.prototype.doPublic = RSADoPublic;\n\n// public\nRSAKey.prototype.setPublic = RSASetPublic;\nRSAKey.prototype.encrypt = RSAEncrypt;\n//RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\ndefine(\"spice-rsa\", function(){});\n\n","// Downloaded from http://www-cs-students.stanford.edu/~tjw/jsbn/ by Jeremy White on 6/1/2012\n\n/*\n * Copyright (c) 2003-2005  Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n\n// prng4.js - uses Arcfour as a PRNG\n\nfunction Arcfour() {\n  this.i = 0;\n  this.j = 0;\n  this.S = new Array();\n}\n\n// Initialize arcfour context from key, an array of ints, each from [0..255]\nfunction ARC4init(key) {\n  var i, j, t;\n  for(i = 0; i < 256; ++i)\n    this.S[i] = i;\n  j = 0;\n  for(i = 0; i < 256; ++i) {\n    j = (j + this.S[i] + key[i % key.length]) & 255;\n    t = this.S[i];\n    this.S[i] = this.S[j];\n    this.S[j] = t;\n  }\n  this.i = 0;\n  this.j = 0;\n}\n\nfunction ARC4next() {\n  var t;\n  this.i = (this.i + 1) & 255;\n  this.j = (this.j + this.S[this.i]) & 255;\n  t = this.S[this.i];\n  this.S[this.i] = this.S[this.j];\n  this.S[this.j] = t;\n  return this.S[(t + this.S[this.i]) & 255];\n}\n\nArcfour.prototype.init = ARC4init;\nArcfour.prototype.next = ARC4next;\n\n// Plug in your RNG constructor here\nfunction prng_newstate() {\n  return new Arcfour();\n}\n\n// Pool size must be a multiple of 4 and greater than 32.\n// An array of bytes the size of the pool will be passed to init()\nvar rng_psize = 256;\n\ndefine(\"spice-prng4\", function(){});\n\n","// Downloaded from http://www-cs-students.stanford.edu/~tjw/jsbn/ by Jeremy White on 6/1/2012\n\n/*\n * Copyright (c) 2003-2005  Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n\n// Random number generator - requires a PRNG backend, e.g. prng4.js\n\n// For best results, put code like\n// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>\n// in your main HTML document.\n\nvar rng_state;\nvar rng_pool;\nvar rng_pptr;\n\n// Mix in a 32-bit integer into the pool\nfunction rng_seed_int(x) {\n  rng_pool[rng_pptr++] ^= x & 255;\n  rng_pool[rng_pptr++] ^= (x >> 8) & 255;\n  rng_pool[rng_pptr++] ^= (x >> 16) & 255;\n  rng_pool[rng_pptr++] ^= (x >> 24) & 255;\n  if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\n}\n\n// Mix in the current time (w/milliseconds) into the pool\nfunction rng_seed_time() {\n  rng_seed_int(new Date().getTime());\n}\n\n// Initialize the pool with junk if needed.\nif(rng_pool == null) {\n  rng_pool = new Array();\n  rng_pptr = 0;\n  var t;\n  if(navigator.appName == \"Netscape\" && navigator.appVersion < \"5\" && window.crypto) {\n    // Extract entropy (256 bits) from NS4 RNG if available\n    var z = window.crypto.random(32);\n    for(t = 0; t < z.length; ++t)\n      rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n  }  \n  while(rng_pptr < rng_psize) {  // extract some randomness from Math.random()\n    t = Math.floor(65536 * Math.random());\n    rng_pool[rng_pptr++] = t >>> 8;\n    rng_pool[rng_pptr++] = t & 255;\n  }\n  rng_pptr = 0;\n  rng_seed_time();\n  //rng_seed_int(window.screenX);\n  //rng_seed_int(window.screenY);\n}\n\nfunction rng_get_byte() {\n  if(rng_state == null) {\n    rng_seed_time();\n    rng_state = prng_newstate();\n    rng_state.init(rng_pool);\n    for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\n      rng_pool[rng_pptr] = 0;\n    rng_pptr = 0;\n    //rng_pool = null;\n  }\n  // TODO: allow reseeding after first request\n  return rng_state.next();\n}\n\nfunction rng_get_bytes(ba) {\n  var i;\n  for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\n}\n\nfunction SecureRandom() {}\n\nSecureRandom.prototype.nextBytes = rng_get_bytes;\n\ndefine(\"spice-rng\", function(){});\n\n","/*\r\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\r\n * in FIPS 180-1\r\n * Version 2.2 Copyright Paul Johnston 2000 - 2009.\r\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\r\n * Distributed under the BSD License\r\n * See http://pajhome.org.uk/crypt/md5 for details.\r\n */\r\n\r\n /* Downloaded 6/1/2012 from the above address by Jeremy White.\r\n    License reproduce here for completeness:\r\n\r\nCopyright (c) 1998 - 2009, Paul Johnston & Contributors\r\nAll rights reserved.\r\n\r\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\r\n\r\nRedistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\r\n\r\nNeither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\r\n\r\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n\r\n */\r\n\r\n/*\r\n * Configurable variables. You may need to tweak these to be compatible with\r\n * the server-side, but the defaults work in most cases.\r\n */\r\nvar hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */\r\nvar b64pad  = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance   */\r\n\r\n/*\r\n * These are the functions you'll usually want to call\r\n * They take string arguments and return either hex or base-64 encoded strings\r\n */\r\nfunction hex_sha1(s)    { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); }\r\nfunction b64_sha1(s)    { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); }\r\nfunction any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); }\r\nfunction hex_hmac_sha1(k, d)\r\n  { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\r\nfunction b64_hmac_sha1(k, d)\r\n  { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\r\nfunction any_hmac_sha1(k, d, e)\r\n  { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\r\n\r\n/*\r\n * Perform a simple self-test to see if the VM is working\r\n */\r\nfunction sha1_vm_test()\r\n{\r\n  return hex_sha1(\"abc\").toLowerCase() == \"a9993e364706816aba3e25717850c26c9cd0d89d\";\r\n}\r\n\r\n/*\r\n * Calculate the SHA1 of a raw string\r\n */\r\nfunction rstr_sha1(s)\r\n{\r\n  return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8));\r\n}\r\n\r\n/*\r\n * Calculate the HMAC-SHA1 of a key and some data (raw strings)\r\n */\r\nfunction rstr_hmac_sha1(key, data)\r\n{\r\n  var bkey = rstr2binb(key);\r\n  if(bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8);\r\n\r\n  var ipad = Array(16), opad = Array(16);\r\n  for(var i = 0; i < 16; i++)\r\n  {\r\n    ipad[i] = bkey[i] ^ 0x36363636;\r\n    opad[i] = bkey[i] ^ 0x5C5C5C5C;\r\n  }\r\n\r\n  var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\r\n  return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160));\r\n}\r\n\r\n/*\r\n * Convert a raw string to a hex string\r\n */\r\nfunction rstr2hex(input)\r\n{\r\n  try { hexcase } catch(e) { hexcase=0; }\r\n  var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\r\n  var output = \"\";\r\n  var x;\r\n  for(var i = 0; i < input.length; i++)\r\n  {\r\n    x = input.charCodeAt(i);\r\n    output += hex_tab.charAt((x >>> 4) & 0x0F)\r\n           +  hex_tab.charAt( x        & 0x0F);\r\n  }\r\n  return output;\r\n}\r\n\r\n/*\r\n * Convert a raw string to a base-64 string\r\n */\r\nfunction rstr2b64(input)\r\n{\r\n  try { b64pad } catch(e) { b64pad=''; }\r\n  var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n  var output = \"\";\r\n  var len = input.length;\r\n  for(var i = 0; i < len; i += 3)\r\n  {\r\n    var triplet = (input.charCodeAt(i) << 16)\r\n                | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)\r\n                | (i + 2 < len ? input.charCodeAt(i+2)      : 0);\r\n    for(var j = 0; j < 4; j++)\r\n    {\r\n      if(i * 8 + j * 6 > input.length * 8) output += b64pad;\r\n      else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);\r\n    }\r\n  }\r\n  return output;\r\n}\r\n\r\n/*\r\n * Convert a raw string to an arbitrary string encoding\r\n */\r\nfunction rstr2any(input, encoding)\r\n{\r\n  var divisor = encoding.length;\r\n  var remainders = Array();\r\n  var i, q, x, quotient;\r\n\r\n  /* Convert to an array of 16-bit big-endian values, forming the dividend */\r\n  var dividend = Array(Math.ceil(input.length / 2));\r\n  for(i = 0; i < dividend.length; i++)\r\n  {\r\n    dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\r\n  }\r\n\r\n  /*\r\n   * Repeatedly perform a long division. The binary array forms the dividend,\r\n   * the length of the encoding is the divisor. Once computed, the quotient\r\n   * forms the dividend for the next step. We stop when the dividend is zero.\r\n   * All remainders are stored for later use.\r\n   */\r\n  while(dividend.length > 0)\r\n  {\r\n    quotient = Array();\r\n    x = 0;\r\n    for(i = 0; i < dividend.length; i++)\r\n    {\r\n      x = (x << 16) + dividend[i];\r\n      q = Math.floor(x / divisor);\r\n      x -= q * divisor;\r\n      if(quotient.length > 0 || q > 0)\r\n        quotient[quotient.length] = q;\r\n    }\r\n    remainders[remainders.length] = x;\r\n    dividend = quotient;\r\n  }\r\n\r\n  /* Convert the remainders to the output string */\r\n  var output = \"\";\r\n  for(i = remainders.length - 1; i >= 0; i--)\r\n    output += encoding.charAt(remainders[i]);\r\n\r\n  /* Append leading zero equivalents */\r\n  var full_length = Math.ceil(input.length * 8 /\r\n                                    (Math.log(encoding.length) / Math.log(2)))\r\n  for(i = output.length; i < full_length; i++)\r\n    output = encoding[0] + output;\r\n\r\n  return output;\r\n}\r\n\r\n/*\r\n * Encode a string as utf-8.\r\n * For efficiency, this assumes the input is valid utf-16.\r\n */\r\nfunction str2rstr_utf8(input)\r\n{\r\n  var output = \"\";\r\n  var i = -1;\r\n  var x, y;\r\n\r\n  while(++i < input.length)\r\n  {\r\n    /* Decode utf-16 surrogate pairs */\r\n    x = input.charCodeAt(i);\r\n    y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\r\n    if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)\r\n    {\r\n      x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\r\n      i++;\r\n    }\r\n\r\n    /* Encode output as utf-8 */\r\n    if(x <= 0x7F)\r\n      output += String.fromCharCode(x);\r\n    else if(x <= 0x7FF)\r\n      output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),\r\n                                    0x80 | ( x         & 0x3F));\r\n    else if(x <= 0xFFFF)\r\n      output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\r\n                                    0x80 | ((x >>> 6 ) & 0x3F),\r\n                                    0x80 | ( x         & 0x3F));\r\n    else if(x <= 0x1FFFFF)\r\n      output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\r\n                                    0x80 | ((x >>> 12) & 0x3F),\r\n                                    0x80 | ((x >>> 6 ) & 0x3F),\r\n                                    0x80 | ( x         & 0x3F));\r\n  }\r\n  return output;\r\n}\r\n\r\n/*\r\n * Encode a string as utf-16\r\n */\r\nfunction str2rstr_utf16le(input)\r\n{\r\n  var output = \"\";\r\n  for(var i = 0; i < input.length; i++)\r\n    output += String.fromCharCode( input.charCodeAt(i)        & 0xFF,\r\n                                  (input.charCodeAt(i) >>> 8) & 0xFF);\r\n  return output;\r\n}\r\n\r\nfunction str2rstr_utf16be(input)\r\n{\r\n  var output = \"\";\r\n  for(var i = 0; i < input.length; i++)\r\n    output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\r\n                                   input.charCodeAt(i)        & 0xFF);\r\n  return output;\r\n}\r\n\r\n/*\r\n * Convert a raw string to an array of big-endian words\r\n * Characters >255 have their high-byte silently ignored.\r\n */\r\nfunction rstr2binb(input)\r\n{\r\n  var output = Array(input.length >> 2);\r\n  for(var i = 0; i < output.length; i++)\r\n    output[i] = 0;\r\n  for(var i = 0; i < input.length * 8; i += 8)\r\n    output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\r\n  return output;\r\n}\r\n\r\n/*\r\n * Convert an array of big-endian words to a string\r\n */\r\nfunction binb2rstr(input)\r\n{\r\n  var output = \"\";\r\n  for(var i = 0; i < input.length * 32; i += 8)\r\n    output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);\r\n  return output;\r\n}\r\n\r\n/*\r\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\r\n */\r\nfunction binb_sha1(x, len)\r\n{\r\n  /* append padding */\r\n  x[len >> 5] |= 0x80 << (24 - len % 32);\r\n  x[((len + 64 >> 9) << 4) + 15] = len;\r\n\r\n  var w = Array(80);\r\n  var a =  1732584193;\r\n  var b = -271733879;\r\n  var c = -1732584194;\r\n  var d =  271733878;\r\n  var e = -1009589776;\r\n\r\n  for(var i = 0; i < x.length; i += 16)\r\n  {\r\n    var olda = a;\r\n    var oldb = b;\r\n    var oldc = c;\r\n    var oldd = d;\r\n    var olde = e;\r\n\r\n    for(var j = 0; j < 80; j++)\r\n    {\r\n      if(j < 16) w[j] = x[i + j];\r\n      else w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);\r\n      var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\r\n                       safe_add(safe_add(e, w[j]), sha1_kt(j)));\r\n      e = d;\r\n      d = c;\r\n      c = bit_rol(b, 30);\r\n      b = a;\r\n      a = t;\r\n    }\r\n\r\n    a = safe_add(a, olda);\r\n    b = safe_add(b, oldb);\r\n    c = safe_add(c, oldc);\r\n    d = safe_add(d, oldd);\r\n    e = safe_add(e, olde);\r\n  }\r\n  return Array(a, b, c, d, e);\r\n\r\n}\r\n\r\n/*\r\n * Perform the appropriate triplet combination function for the current\r\n * iteration\r\n */\r\nfunction sha1_ft(t, b, c, d)\r\n{\r\n  if(t < 20) return (b & c) | ((~b) & d);\r\n  if(t < 40) return b ^ c ^ d;\r\n  if(t < 60) return (b & c) | (b & d) | (c & d);\r\n  return b ^ c ^ d;\r\n}\r\n\r\n/*\r\n * Determine the appropriate additive constant for the current iteration\r\n */\r\nfunction sha1_kt(t)\r\n{\r\n  return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :\r\n         (t < 60) ? -1894007588 : -899497514;\r\n}\r\n\r\n/*\r\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\r\n * to work around bugs in some JS interpreters.\r\n */\r\nfunction safe_add(x, y)\r\n{\r\n  var lsw = (x & 0xFFFF) + (y & 0xFFFF);\r\n  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\r\n  return (msw << 16) | (lsw & 0xFFFF);\r\n}\r\n\r\n/*\r\n * Bitwise rotate a 32-bit number to the left.\r\n */\r\nfunction bit_rol(num, cnt)\r\n{\r\n  return (num << cnt) | (num >>> (32 - cnt));\r\n}\r\n;\ndefine(\"spice-sha1\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\nvar SHA_DIGEST_LENGTH = 20;\n\n/*----------------------------------------------------------------------------\n**  General ticket RSA encryption functions - just good enough to\n**      support what we need to send back an encrypted ticket.\n**--------------------------------------------------------------------------*/\n\n\n/*----------------------------------------------------------------------------\n**  OAEP padding functions.  Inspired by the OpenSSL implementation.\n**--------------------------------------------------------------------------*/\nfunction MGF1(mask, seed)\n{\n    var i, j, outlen;\n    for (i = 0, outlen = 0; outlen < mask.length; i++)\n    {\n        var combo_buf = new String;\n\n        for (j = 0; j < seed.length; j++)\n            combo_buf += String.fromCharCode(seed[j]);\n        combo_buf += String.fromCharCode((i >> 24) & 255);\n        combo_buf += String.fromCharCode((i >> 16) & 255);\n        combo_buf += String.fromCharCode((i >> 8)  & 255);\n        combo_buf += String.fromCharCode((i)       & 255);\n\n        var combo_hash = rstr_sha1(combo_buf);\n        for (j = 0; j < combo_hash.length && outlen < mask.length; j++, outlen++)\n        {\n            mask[outlen] = combo_hash.charCodeAt(j);\n        }\n    }\n}\n\n\nfunction RSA_padding_add_PKCS1_OAEP(tolen, from, param)\n{\n    var seed = new Array(SHA_DIGEST_LENGTH);\n    var rand = new SecureRandom();\n    rand.nextBytes(seed);\n\n    var dblen = tolen - 1 - seed.length;\n    var db = new Array(dblen);\n    var padlen = dblen - from.length - 1;\n    var i;\n\n    if (param === undefined)\n        param = \"\";\n\n    if (padlen < SHA_DIGEST_LENGTH)\n    {\n        console.log(\"Error - data too large for key size.\");\n        return null;\n    }\n\n    for (i = 0; i < padlen; i++)\n        db[i] = 0;\n\n    var param_hash = rstr_sha1(param);\n    for (i = 0; i < param_hash.length; i++)\n        db[i] = param_hash.charCodeAt(i);\n\n    db[padlen] = 1;\n    for (i = 0; i < from.length; i++)\n        db[i + padlen + 1] = from.charCodeAt(i);\n\n    var dbmask = new Array(dblen);\n    if (MGF1(dbmask, seed) < 0)\n            return null;\n\n    for (i = 0; i < dbmask.length; i++)\n        db[i] ^= dbmask[i];\n\n\n    var seedmask = Array(SHA_DIGEST_LENGTH);\n    if (MGF1(seedmask, db) < 0)\n            return null;\n\n    for (i = 0; i < seedmask.length; i++)\n        seed[i] ^= seedmask[i];\n\n    var ret = new String;\n    ret += String.fromCharCode(0);\n    for (i = 0; i < seed.length; i++)\n        ret += String.fromCharCode(seed[i]);\n    for (i = 0; i < db.length; i++)\n        ret += String.fromCharCode(db[i]);\n    return ret;\n}\n\n\nfunction asn_get_length(u8, at)\n{\n    var len = u8[at++];\n    if (len > 0x80)\n    {\n        if (len != 0x81)\n        {\n            console.log(\"Error:  we lazily don't support keys bigger than 255 bytes.  It'd be easy to fix.\");\n            return null;\n        }\n        len = u8[at++];\n    }\n\n    return [ at, len];\n}\n\nfunction find_sequence(u8, at)\n{\n    var lenblock;\n    at = at || 0;\n    if (u8[at++] != 0x30)\n    {\n        console.log(\"Error:  public key should start with a sequence flag.\");\n        return null;\n    }\n\n    lenblock = asn_get_length(u8, at);\n    if (! lenblock)\n        return null;\n    return lenblock;\n}\n\n/*----------------------------------------------------------------------------\n**  Extract an RSA key from a memory buffer\n**--------------------------------------------------------------------------*/\nfunction create_rsa_from_mb(mb, at)\n{\n    var u8 = new Uint8Array(mb);\n    var lenblock;\n    var seq;\n    var ba;\n    var i;\n    var ret;\n\n    /* We have a sequence which contains a sequence followed by a bit string */\n    seq = find_sequence(u8, at);\n    if (! seq)\n        return null;\n\n    at = seq[0];\n    seq = find_sequence(u8, at);\n    if (! seq)\n        return null;\n\n    /* Skip over the contained sequence */\n    at = seq[0] + seq[1];\n    if (u8[at++] != 0x3)\n    {\n        console.log(\"Error: expecting bit string next.\");\n        return null;\n    }\n\n    /* Get the bit string, which is *itself* a sequence.  Having fun yet? */\n    lenblock = asn_get_length(u8, at);\n    if (! lenblock)\n        return null;\n\n    at = lenblock[0];\n    if (u8[at] != 0 && u8[at + 1] != 0x30)\n    {\n        console.log(\"Error: unexpected values in bit string.\");\n        return null;\n    }\n\n    /* Okay, now we have a sequence of two binary values, we hope. */\n    seq = find_sequence(u8, at + 1);\n    if (! seq)\n        return null;\n\n    at = seq[0];\n    if (u8[at++] != 0x02)\n    {\n        console.log(\"Error: expecting integer n next.\");\n        return null;\n    }\n    lenblock = asn_get_length(u8, at);\n    if (! lenblock)\n        return null;\n    at = lenblock[0];\n\n    ba = new Array(lenblock[1]);\n    for (i = 0; i < lenblock[1]; i++)\n        ba[i] = u8[at + i];\n\n    ret = new RSAKey();\n    ret.n = new BigInteger(ba);\n\n    at += lenblock[1];\n\n    if (u8[at++] != 0x02)\n    {\n        console.log(\"Error: expecting integer e next.\");\n        return null;\n    }\n    lenblock = asn_get_length(u8, at);\n    if (! lenblock)\n        return null;\n    at = lenblock[0];\n\n    ret.e = u8[at++];\n    for (i = 1; i < lenblock[1]; i++)\n    {\n        ret.e <<= 8;\n        ret.e |= u8[at++];\n    }\n\n    return ret;\n}\n\nfunction rsa_encrypt(rsa, str)\n{\n    var i;\n    var ret = [];\n    var oaep = RSA_padding_add_PKCS1_OAEP((rsa.n.bitLength()+7)>>3, str);\n    if (! oaep)\n        return null;\n\n    var ba = new Array(oaep.length);\n\n    for (i = 0; i < oaep.length; i++)\n        ba[i] = oaep.charCodeAt(i);\n    var bigint = new BigInteger(ba);\n    var enc = rsa.doPublic(bigint);\n    var h = enc.toString(16);\n    if ((h.length & 1) != 0)\n        h = \"0\" + h;\n    for (i = 0; i < h.length; i += 2)\n        ret[i / 2] = parseInt(h.substring(i, i + 2), 16);\n    return ret;\n}\n;\ndefine(\"spice-ticket\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2014 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  resize.js\n**      This bit of Javascript is a set of logic to help with window\n**  resizing, using the agent channel to request screen resizes.\n**\n**  It's a bit tricky, as we want to wait for resizing to settle down\n**  before sending a size.  Further, while horizontal resizing to use the whole\n**  browser width is fairly easy to arrange with css, resizing an element to use\n**  the whole vertical space (or to force a middle div to consume the bulk of the browser\n**  window size) is tricky, and the consensus seems to be that Javascript is\n**  the only right way to do it.\n**--------------------------------------------------------------------------*/\nfunction resize_helper(sc)\n{\n    var w = document.getElementById(sc.screen_id).clientWidth;\n    var h = document.getElementById(sc.screen_id).clientHeight;\n\n    var m = document.getElementById(sc.message_id);\n\n    /* Resize vertically; basically we leave a 20 pixel margin\n         at the bottom, and use the position of the message window\n         to figure out how to resize */\n    var hd = window.innerHeight - m.offsetHeight - m.offsetTop - 20;\n\n    /* Xorg requires height be a multiple of 8; round up */\n    h = h + hd;\n    if (h % 8 > 0)\n        h += (8 - (h % 8));\n\n    /* Xorg requires width be a multiple of 8; round up */\n    if (w % 8 > 0)\n        w += (8 - (w % 8));\n\n\n    sc.resize_window(0, w, h, 32, 0, 0);\n    sc.spice_resize_timer = undefined;\n}\n\nfunction handle_resize(e)\n{\n    var sc = window.spice_connection;\n\n    if (sc && sc.spice_resize_timer)\n    {\n        window.clearTimeout(sc.spice_resize_timer);\n        sc.spice_resize_timer = undefined;\n    }\n\n    sc.spice_resize_timer = window.setTimeout(resize_helper, 200, sc);\n}\n;\ndefine(\"spice-resize\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2014 Red Hat, Inc.\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\nfunction SpiceFileXferTask(id, file)\n{\n    this.id = id;\n    this.file = file;\n}\n\nSpiceFileXferTask.prototype.create_progressbar = function()\n{\n    var _this = this;\n    var cancel = document.createElement(\"input\");\n    this.progressbar_container = document.createElement(\"div\");\n    this.progressbar = document.createElement(\"progress\");\n\n    cancel.type = 'button';\n    cancel.value = 'Cancel';\n    cancel.style.float = 'right';\n    cancel.onclick = function()\n    {\n        _this.cancelled = true;\n        _this.remove_progressbar();\n    };\n\n    this.progressbar.setAttribute('max', this.file.size);\n    this.progressbar.setAttribute('value', 0);\n    this.progressbar.style.width = '100%';\n    this.progressbar.style.margin = '4px auto';\n    this.progressbar.style.display = 'inline-block';\n    this.progressbar_container.style.width = '90%';\n    this.progressbar_container.style.margin = 'auto';\n    this.progressbar_container.style.padding = '4px';\n    this.progressbar_container.textContent = this.file.name;\n    this.progressbar_container.appendChild(cancel);\n    this.progressbar_container.appendChild(this.progressbar);\n    document.getElementById('spice-xfer-area').appendChild(this.progressbar_container);\n}\n\nSpiceFileXferTask.prototype.update_progressbar = function(value)\n{\n    this.progressbar.setAttribute('value', value);\n}\n\nSpiceFileXferTask.prototype.remove_progressbar = function()\n{\n    if (this.progressbar_container && this.progressbar_container.parentNode)\n        this.progressbar_container.parentNode.removeChild(this.progressbar_container);\n}\n\nfunction handle_file_dragover(e)\n{\n    e.stopPropagation();\n    e.preventDefault();\n    e.dataTransfer.dropEffect = 'copy';\n}\n\nfunction handle_file_drop(e)\n{\n    var sc = window.spice_connection;\n    var files = e.dataTransfer.files;\n\n    e.stopPropagation();\n    e.preventDefault();\n    for (var i = files.length - 1; i >= 0; i--)\n    {\n        if (files[i].type); // do not copy a directory\n            sc.file_xfer_start(files[i]);\n    }\n\n}\n;\ndefine(\"spice-filexfer\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  SpiceMainConn\n**      This is the master Javascript class for establishing and\n**  managing a connection to a Spice Server.\n**  \n**      Invocation:  You must pass an object with properties as follows:\n**          uri         (required)  Uri of a WebSocket listener that is\n**                                  connected to a spice server.\n**          password    (required)  Password to send to the spice server\n**          message_id  (optional)  Identifier of an element in the DOM\n**                                  where SpiceConn will write messages.\n**                                  It will use classes spice-messages-x,\n**                                  where x is one of info, warning, or error.\n**          screen_id   (optional)  Identifier of an element in the DOM\n**                                  where SpiceConn will create any new\n**                                  client screens.  This is the main UI.\n**          dump_id     (optional)  If given, an element to use for\n**                                  dumping every single image + canvas drawn.\n**                                  Sometimes useful for debugging.\n**          onerror     (optional)  If given, a function to receive async\n**                                  errors.  Note that you should also catch\n**                                  errors for ones that occur inline\n**          onagent     (optional)  If given, a function to be called when\n**                                  a VD agent is connected; a good opportunity\n**                                  to request a resize\n**\n**  Throws error if there are troubles.  Requires a modern (by 2012 standards)\n**      browser, including WebSocket and WebSocket.binaryType == arraybuffer\n**\n**--------------------------------------------------------------------------*/\nfunction SpiceMainConn()\n{\n    if (typeof WebSocket === \"undefined\")\n        throw new Error(\"WebSocket unavailable.  You need to use a different browser.\");\n\n    SpiceConn.apply(this, arguments);\n\n    this.agent_msg_queue = [];\n    this.file_xfer_tasks = {};\n    this.file_xfer_task_id = 0;\n    this.file_xfer_read_queue = [];\n}\n\nSpiceMainConn.prototype = Object.create(SpiceConn.prototype);\nSpiceMainConn.prototype.process_channel_message = function(msg)\n{\n    if (msg.type == SPICE_MSG_MAIN_INIT)\n    {\n        this.log_info(\"Connected to \" + this.ws.url);\n        this.report_success(\"Connected\")\n        this.main_init = new SpiceMsgMainInit(msg.data);\n        this.connection_id = this.main_init.session_id;\n        this.agent_tokens = this.main_init.agent_tokens;\n\n        if (DEBUG > 0)\n        {\n            // FIXME - there is a lot here we don't handle; mouse modes, agent,\n            //          ram_hint, multi_media_time\n            this.log_info(\"session id \"                 + this.main_init.session_id +\n                          \" ; display_channels_hint \"   + this.main_init.display_channels_hint +\n                          \" ; supported_mouse_modes \"   + this.main_init.supported_mouse_modes +\n                          \" ; current_mouse_mode \"      + this.main_init.current_mouse_mode +\n                          \" ; agent_connected \"         + this.main_init.agent_connected +\n                          \" ; agent_tokens \"            + this.main_init.agent_tokens +\n                          \" ; multi_media_time \"        + this.main_init.multi_media_time +\n                          \" ; ram_hint \"                + this.main_init.ram_hint);\n        }\n\n        this.handle_mouse_mode(this.main_init.current_mouse_mode,\n                               this.main_init.supported_mouse_modes);\n\n        if (this.main_init.agent_connected)\n            this.connect_agent();\n\n        var attach = new SpiceMiniData;\n        attach.type = SPICE_MSGC_MAIN_ATTACH_CHANNELS;\n        attach.size = attach.buffer_size();\n        this.send_msg(attach);\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_MAIN_MOUSE_MODE)\n    {\n        var mode = new SpiceMsgMainMouseMode(msg.data);\n        DEBUG > 0 && this.log_info(\"Mouse supported modes \" + mode.supported_modes + \"; current \" + mode.current_mode);\n        this.handle_mouse_mode(mode.current_mode, mode.supported_modes);\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_MAIN_CHANNELS_LIST)\n    {\n        var i;\n        var chans;\n        DEBUG > 0 && console.log(\"channels\");\n        chans = new SpiceMsgChannels(msg.data);\n        for (i = 0; i < chans.channels.length; i++)\n        {\n            var conn = {\n                        uri: this.ws.url,\n                        parent: this,\n                        connection_id : this.connection_id,\n                        type : chans.channels[i].type,\n                        chan_id : chans.channels[i].id\n                    };\n            if (chans.channels[i].type == SPICE_CHANNEL_DISPLAY)\n                this.display = new SpiceDisplayConn(conn);\n            else if (chans.channels[i].type == SPICE_CHANNEL_INPUTS)\n            {\n                this.inputs = new SpiceInputsConn(conn);\n                this.inputs.mouse_mode = this.mouse_mode;\n            }\n            else if (chans.channels[i].type == SPICE_CHANNEL_CURSOR)\n                this.cursor = new SpiceCursorConn(conn);\n            else if (chans.channels[i].type == SPICE_CHANNEL_PLAYBACK)\n                this.cursor = new SpicePlaybackConn(conn);\n            else\n            {\n                this.log_err(\"Channel type \" + chans.channels[i].type + \" unknown.\");\n                if (! (\"extra_channels\" in this))\n                    this.extra_channels = [];\n                this.extra_channels[i] = new SpiceConn(conn);\n            }\n\n        }\n\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_MAIN_AGENT_CONNECTED)\n    {\n        this.connect_agent();\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS)\n    {\n        var connected_tokens = new SpiceMsgMainAgentTokens(msg.data);\n        this.agent_tokens = connected_tokens.num_tokens;\n        this.connect_agent();\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_MAIN_AGENT_TOKEN)\n    {\n        var remaining_tokens, tokens = new SpiceMsgMainAgentTokens(msg.data);\n        this.agent_tokens += tokens.num_tokens;\n        this.send_agent_message_queue();\n\n        remaining_tokens = this.agent_tokens;\n        while (remaining_tokens > 0 && this.file_xfer_read_queue.length > 0)\n        {\n            var xfer_task = this.file_xfer_read_queue.shift();\n            this.file_xfer_read(xfer_task, xfer_task.read_bytes);\n            remaining_tokens--;\n        }\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_MAIN_AGENT_DISCONNECTED)\n    {\n        this.agent_connected = false;\n        return true;\n    }\n\n    if (msg.type == SPICE_MSG_MAIN_AGENT_DATA)\n    {\n        var agent_data = new SpiceMsgMainAgentData(msg.data);\n        if (agent_data.type == VD_AGENT_ANNOUNCE_CAPABILITIES)\n        {\n            var agent_caps = new VDAgentAnnounceCapabilities(agent_data.data);\n            if (agent_caps.request)\n                this.announce_agent_capabilities(0);\n            return true;\n        }\n        else if (agent_data.type == VD_AGENT_FILE_XFER_STATUS)\n        {\n            this.handle_file_xfer_status(new VDAgentFileXferStatusMessage(agent_data.data));\n            return true;\n        }\n\n        return false;\n    }\n\n    return false;\n}\n\nSpiceMainConn.prototype.stop = function(msg)\n{\n    this.state = \"closing\";\n\n    if (this.inputs)\n    {\n        this.inputs.cleanup();\n        this.inputs = undefined;\n    }\n\n    if (this.cursor)\n    {\n        this.cursor.cleanup();\n        this.cursor = undefined;\n    }\n\n    if (this.display)\n    {\n        this.display.cleanup();\n        this.display.destroy_surfaces();\n        this.display = undefined;\n    }\n\n    this.cleanup();\n\n    if (\"extra_channels\" in this)\n        for (var e in this.extra_channels)\n            this.extra_channels[e].cleanup();\n    this.extra_channels = undefined;\n}\n\nSpiceMainConn.prototype.send_agent_message_queue = function(message)\n{\n    if (!this.agent_connected)\n        return;\n\n    if (message)\n        this.agent_msg_queue.push(message);\n\n    while (this.agent_tokens > 0 && this.agent_msg_queue.length > 0)\n    {\n        var mr = this.agent_msg_queue.shift();\n        this.send_msg(mr);\n        this.agent_tokens--;\n    }\n}\n\nSpiceMainConn.prototype.send_agent_message = function(type, message)\n{\n    var agent_data = new SpiceMsgcMainAgentData(type, message);\n    var sb = 0, maxsize = VD_AGENT_MAX_DATA_SIZE - SpiceMiniData.prototype.buffer_size();\n    var data = new ArrayBuffer(agent_data.buffer_size());\n    agent_data.to_buffer(data);\n    while (sb < agent_data.buffer_size())\n    {\n        var eb = Math.min(sb + maxsize, agent_data.buffer_size());\n        var mr = new SpiceMiniData();\n        mr.type = SPICE_MSGC_MAIN_AGENT_DATA;\n        mr.size = eb - sb;\n        mr.data = data.slice(sb, eb);\n        this.send_agent_message_queue(mr);\n        sb = eb;\n    }\n}\n\nSpiceMainConn.prototype.announce_agent_capabilities = function(request)\n{\n    var caps = new VDAgentAnnounceCapabilities(request, (1 << VD_AGENT_CAP_MOUSE_STATE) |\n                                                        (1 << VD_AGENT_CAP_MONITORS_CONFIG) |\n                                                        (1 << VD_AGENT_CAP_REPLY));\n    this.send_agent_message(VD_AGENT_ANNOUNCE_CAPABILITIES, caps);\n}\n\nSpiceMainConn.prototype.resize_window = function(flags, width, height, depth, x, y)\n{\n    var monitors_config = new VDAgentMonitorsConfig(flags, width, height, depth, x, y);\n    this.send_agent_message(VD_AGENT_MONITORS_CONFIG, monitors_config);\n}\n\nSpiceMainConn.prototype.file_xfer_start = function(file)\n{\n    var task_id, xfer_start, task;\n\n    task_id = this.file_xfer_task_id++;\n    task = new SpiceFileXferTask(task_id, file);\n    task.create_progressbar();\n    this.file_xfer_tasks[task_id] = task;\n    xfer_start = new VDAgentFileXferStartMessage(task_id, file.name, file.size);\n    this.send_agent_message(VD_AGENT_FILE_XFER_START, xfer_start);\n}\n\nSpiceMainConn.prototype.handle_file_xfer_status = function(file_xfer_status)\n{\n    var xfer_error, xfer_task;\n    if (!this.file_xfer_tasks[file_xfer_status.id])\n    {\n        return;\n    }\n    xfer_task = this.file_xfer_tasks[file_xfer_status.id];\n    switch (file_xfer_status.result)\n    {\n        case VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA:\n            this.file_xfer_read(xfer_task);\n            return;\n        case VD_AGENT_FILE_XFER_STATUS_CANCELLED:\n            xfer_error = \"transfer is cancelled by spice agent\";\n            break;\n        case VD_AGENT_FILE_XFER_STATUS_ERROR:\n            xfer_error = \"some errors occurred in the spice agent\";\n            break;\n        case VD_AGENT_FILE_XFER_STATUS_SUCCESS:\n            break;\n        default:\n            xfer_error = \"unhandled status type: \" + file_xfer_status.result;\n            break;\n    }\n\n    this.file_xfer_completed(xfer_task, xfer_error)\n}\n\nSpiceMainConn.prototype.file_xfer_read = function(file_xfer_task, start_byte)\n{\n    var FILE_XFER_CHUNK_SIZE = 32 * VD_AGENT_MAX_DATA_SIZE;\n    var _this = this;\n    var sb, eb;\n    var slice, reader;\n\n    if (!file_xfer_task ||\n        !this.file_xfer_tasks[file_xfer_task.id] ||\n        (start_byte > 0 && start_byte == file_xfer_task.file.size))\n    {\n        return;\n    }\n\n    if (file_xfer_task.cancelled)\n    {\n        var xfer_status = new VDAgentFileXferStatusMessage(file_xfer_task.id,\n                                                           VD_AGENT_FILE_XFER_STATUS_CANCELLED);\n        this.send_agent_message(VD_AGENT_FILE_XFER_STATUS, xfer_status);\n        delete this.file_xfer_tasks[file_xfer_task.id];\n        return;\n    }\n\n    sb = start_byte || 0,\n    eb = Math.min(sb + FILE_XFER_CHUNK_SIZE, file_xfer_task.file.size);\n\n    if (!this.agent_tokens)\n    {\n        file_xfer_task.read_bytes = sb;\n        this.file_xfer_read_queue.push(file_xfer_task);\n        return;\n    }\n\n    reader = new FileReader();\n    reader.onload = function(e)\n    {\n        var xfer_data = new VDAgentFileXferDataMessage(file_xfer_task.id,\n                                                       e.target.result.byteLength,\n                                                       e.target.result);\n        _this.send_agent_message(VD_AGENT_FILE_XFER_DATA, xfer_data);\n        _this.file_xfer_read(file_xfer_task, eb);\n        file_xfer_task.update_progressbar(eb);\n    };\n\n    slice = file_xfer_task.file.slice(sb, eb);\n    reader.readAsArrayBuffer(slice);\n}\n\nSpiceMainConn.prototype.file_xfer_completed = function(file_xfer_task, error)\n{\n    if (error)\n        this.log_err(error);\n    else\n        this.log_info(\"transfer of '\" + file_xfer_task.file.name +\"' was successful\");\n\n    file_xfer_task.remove_progressbar();\n\n    delete this.file_xfer_tasks[file_xfer_task.id];\n}\n\nSpiceMainConn.prototype.connect_agent = function()\n{\n    this.agent_connected = true;\n\n    var agent_start = new SpiceMsgcMainAgentStart(~0);\n    var mr = new SpiceMiniData();\n    mr.build_msg(SPICE_MSGC_MAIN_AGENT_START, agent_start);\n    this.send_msg(mr);\n\n    this.announce_agent_capabilities(1);\n\n    if (this.onagent !== undefined)\n        this.onagent(this);\n\n}\n\nSpiceMainConn.prototype.handle_mouse_mode = function(current, supported)\n{\n    this.mouse_mode = current;\n    if (current != SPICE_MOUSE_MODE_CLIENT && (supported & SPICE_MOUSE_MODE_CLIENT))\n    {\n        var mode_request = new SpiceMsgcMainMouseModeRequest(SPICE_MOUSE_MODE_CLIENT);\n        var mr = new SpiceMiniData();\n        mr.build_msg(SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST, mode_request);\n        this.send_msg(mr);\n    }\n\n    if (this.inputs)\n        this.inputs.mouse_mode = current;\n}\n\n;\ndefine(\"spice-main\", [\"spice-spiceconn\",\"spice-spicearraybuffer\",\"spice-enums\",\"spice-atKeynames\",\"spice-utils\",\"spice-png\",\"spice-lz\",\"spice-quic\",\"spice-bitmap\",\"spice-spicedataview\",\"spice-spicetype\",\"spice-spicemsg\",\"spice-wire\",\"spice-display\",\"spice-inputs\",\"spice-webm\",\"spice-playback\",\"spice-simulatecursor\",\"spice-cursor\",\"spice-jsbn\",\"spice-rsa\",\"spice-prng4\",\"spice-rng\",\"spice-sha1\",\"spice-ticket\",\"spice-resize\",\"spice-filexfer\"], (function (global) {\n    return function () {\n        var ret, fn;\n        return ret || global.SpiceMainConn;\n    };\n}(this)));\n\n","/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */\n!function(a,b){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error(\"jQuery requires a window with a document\");return b(a)}:b(a)}(\"undefined\"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m=\"2.1.3\",n=function(a,b){return new n.fn.init(a,b)},o=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,p=/^-ms-/,q=/-([\\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:\"\",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(\"boolean\"==typeof g&&(j=g,g=arguments[h]||{},h++),\"object\"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:\"jQuery\"+(m+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return\"function\"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return\"object\"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,\"isPrototypeOf\")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+\"\":\"object\"==typeof a||\"function\"==typeof a?h[i.call(a)]||\"object\":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf(\"use strict\")?(b=l.createElement(\"script\"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,\"ms-\").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?\"\":(a+\"\").replace(o,\"\")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,\"string\"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return\"string\"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),function(a,b){h[\"[object \"+b+\"]\"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return\"function\"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:\"array\"===c||0===b||\"number\"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u=\"sizzle\"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",L=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",M=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",N=M.replace(\"w\",\"w#\"),O=\"\\\\[\"+L+\"*(\"+M+\")(?:\"+L+\"*([*^$|!~]?=)\"+L+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+N+\"))|)\"+L+\"*\\\\]\",P=\":(\"+M+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+O+\")*)|.*)\\\\)|)\",Q=new RegExp(L+\"+\",\"g\"),R=new RegExp(\"^\"+L+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+L+\"+$\",\"g\"),S=new RegExp(\"^\"+L+\"*,\"+L+\"*\"),T=new RegExp(\"^\"+L+\"*([>+~]|\"+L+\")\"+L+\"*\"),U=new RegExp(\"=\"+L+\"*([^\\\\]'\\\"]*?)\"+L+\"*\\\\]\",\"g\"),V=new RegExp(P),W=new RegExp(\"^\"+N+\"$\"),X={ID:new RegExp(\"^#(\"+M+\")\"),CLASS:new RegExp(\"^\\\\.(\"+M+\")\"),TAG:new RegExp(\"^(\"+M.replace(\"w\",\"w*\")+\")\"),ATTR:new RegExp(\"^\"+O),PSEUDO:new RegExp(\"^\"+P),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+L+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+L+\"*(?:([+-]|)\"+L+\"*(\\\\d+)|))\"+L+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+K+\")$\",\"i\"),needsContext:new RegExp(\"^\"+L+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+L+\"*((?:-\\\\d)?\\\\d*)\"+L+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\\d$/i,$=/^[^{]+\\{\\s*\\[native \\w/,_=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ab=/[+~]/,bb=/'|\\\\/g,cb=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+L+\"?|(\"+L+\")|.)\",\"ig\"),db=function(a,b,c){var d=\"0x\"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,\"string\"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&\"object\"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute(\"id\"))?s=r.replace(bb,\"\\\\$&\"):b.setAttribute(\"id\",s),s=\"[id='\"+s+\"'] \",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(\",\")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute(\"id\")}}}return i(a.replace(R,\"$1\"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+\" \")>d.cacheLength&&delete b[a.shift()],b[c+\" \"]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement(\"div\");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split(\"|\"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return\"input\"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return(\"input\"===c||\"button\"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&\"undefined\"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?\"HTML\"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener(\"unload\",eb,!1):e.attachEvent&&e.attachEvent(\"onunload\",eb)),p=!f(g),c.attributes=jb(function(a){return a.className=\"i\",!a.getAttribute(\"className\")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute(\"id\")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=\"undefined\"!=typeof a.getAttributeNode&&a.getAttributeNode(\"id\");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return\"undefined\"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if(\"*\"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML=\"<a id='\"+u+\"'></a><select id='\"+u+\"-\\f]' msallowcapture=''><option selected=''></option></select>\",a.querySelectorAll(\"[msallowcapture^='']\").length&&q.push(\"[*^$]=\"+L+\"*(?:''|\\\"\\\")\"),a.querySelectorAll(\"[selected]\").length||q.push(\"\\\\[\"+L+\"*(?:value|\"+K+\")\"),a.querySelectorAll(\"[id~=\"+u+\"-]\").length||q.push(\"~=\"),a.querySelectorAll(\":checked\").length||q.push(\":checked\"),a.querySelectorAll(\"a#\"+u+\"+*\").length||q.push(\".#.+[+~]\")}),jb(function(a){var b=g.createElement(\"input\");b.setAttribute(\"type\",\"hidden\"),a.appendChild(b).setAttribute(\"name\",\"D\"),a.querySelectorAll(\"[name=d]\").length&&q.push(\"name\"+L+\"*[*^$|!~]?=\"),a.querySelectorAll(\":enabled\").length||q.push(\":enabled\",\":disabled\"),a.querySelectorAll(\"*,:x\"),q.push(\",.*:\")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,\"div\"),s.call(a,\"[s!='']:x\"),r.push(\"!=\",P)}),q=q.length&&new RegExp(q.join(\"|\")),r=r.length&&new RegExp(r.join(\"|\")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,\"='$1']\"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c=\"\",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if(\"string\"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||\"\").replace(cb,db),\"~=\"===a[2]&&(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),\"nth\"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*(\"even\"===a[3]||\"odd\"===a[3])),a[5]=+(a[7]+a[8]||\"odd\"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||\"\":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(\")\",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return\"*\"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+\" \"];return b||(b=new RegExp(\"(^|\"+L+\")\"+a+\"(\"+L+\"|$)\"))&&y(a,function(a){return b.test(\"string\"==typeof a.className&&a.className||\"undefined\"!=typeof a.getAttribute&&a.getAttribute(\"class\")||\"\")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?\"!=\"===b:b?(e+=\"\",\"=\"===b?e===c:\"!=\"===b?e!==c:\"^=\"===b?c&&0===e.indexOf(c):\"*=\"===b?c&&e.indexOf(c)>-1:\"$=\"===b?c&&e.slice(-c.length)===c:\"~=\"===b?(\" \"+e.replace(Q,\" \")+\" \").indexOf(c)>-1:\"|=\"===b?e===c||e.slice(0,c.length+1)===c+\"-\":!1):!0}},CHILD:function(a,b,c,d,e){var f=\"nth\"!==a.slice(0,3),g=\"last\"!==a.slice(-4),h=\"of-type\"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?\"nextSibling\":\"previousSibling\",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p=\"only\"===a&&!o&&\"nextSibling\"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error(\"unsupported pseudo: \"+a);return e[u]?e(b):e.length>1?(c=[a,a,\"\",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,\"$1\"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||\"\")||gb.error(\"unsupported lang: \"+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute(\"xml:lang\")||b.getAttribute(\"lang\"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+\"-\");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&!!a.checked||\"option\"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&\"button\"===a.type||\"button\"===b},text:function(a){var b;return\"input\"===a.nodeName.toLowerCase()&&\"text\"===a.type&&(null==(b=a.getAttribute(\"type\"))||\"text\"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+\" \"];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R,\" \")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d=\"\";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&\"parentNode\"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||\"*\",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[\" \"],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:\" \"===a[i-2].type?\"*\":\"\"})).replace(R,\"$1\"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q=\"0\",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG(\"*\",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+\" \"];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n=\"function\"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&\"ID\"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split(\"\").sort(B).join(\"\")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement(\"div\"))}),jb(function(a){return a.innerHTML=\"<a href='#'></a>\",\"#\"===a.firstChild.getAttribute(\"href\")})||kb(\"type|href|height|width\",function(a,b,c){return c?void 0:a.getAttribute(b,\"type\"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML=\"<input/>\",a.firstChild.setAttribute(\"value\",\"\"),\"\"===a.firstChild.getAttribute(\"value\")})||kb(\"value\",function(a,b,c){return c||\"input\"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute(\"disabled\")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[\":\"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,w=/^.[^:#\\[\\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if(\"string\"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=\":not(\"+a+\")\"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if(\"string\"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+\" \"+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,\"string\"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if(\"string\"==typeof a){if(c=\"<\"===a[0]&&\">\"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?\"undefined\"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||\"string\"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?\"string\"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return n.dir(a,\"parentNode\",c)},next:function(a){return D(a,\"nextSibling\")},prev:function(a){return D(a,\"previousSibling\")},nextAll:function(a){return n.dir(a,\"nextSibling\")},prevAll:function(a){return n.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return n.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return n.dir(a,\"previousSibling\",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return\"Until\"!==a.slice(-5)&&(d=c),d&&\"string\"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a=\"string\"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);\"function\"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&\"string\"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[[\"resolve\",\"done\",n.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",n.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",n.Callbacks(\"memory\")]],c=\"pending\",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+\"With\"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+\"With\"](this===e?d:this,arguments),this},e[f[0]+\"With\"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler(\"ready\"),n(l).off(\"ready\"))))}});function I(){l.removeEventListener(\"DOMContentLoaded\",I,!1),a.removeEventListener(\"load\",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),\"complete\"===l.readyState?setTimeout(n.ready):(l.addEventListener(\"DOMContentLoaded\",I,!1),a.addEventListener(\"load\",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if(\"object\"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if(\"string\"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&\"string\"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d=\"data-\"+b.replace(O,\"-$1\").toLowerCase(),c=a.getAttribute(d),\"string\"==typeof c){try{c=\"true\"===c?!0:\"false\"===c?!1:\"null\"===c?null:+c+\"\"===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)\n},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,\"hasDataAttrs\"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf(\"data-\")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,\"hasDataAttrs\",!0)}return e}return\"object\"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf(\"-\")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||\"fx\")+\"queue\",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||\"fx\";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};\"inprogress\"===e&&(e=c.shift(),d--),e&&(\"fx\"===b&&c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks(\"once memory\").add(function(){L.remove(a,[b+\"queue\",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return\"string\"!=typeof a&&(b=a,a=\"fx\",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),\"fx\"===a&&\"inprogress\"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};\"string\"!=typeof a&&(b=a,a=void 0),a=a||\"fx\";while(g--)c=L.get(f[g],a+\"queueHooks\"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,R=[\"Top\",\"Right\",\"Bottom\",\"Left\"],S=function(a,b){return a=b||a,\"none\"===n.css(a,\"display\")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement(\"div\")),c=l.createElement(\"input\");c.setAttribute(\"type\",\"radio\"),c.setAttribute(\"checked\",\"checked\"),c.setAttribute(\"name\",\"t\"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML=\"<textarea>x</textarea>\",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U=\"undefined\";k.focusinBubbles=\"onfocusin\"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||\"\").match(E)||[\"\"],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||\"\").split(\".\").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(\".\")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||\"\").match(E)||[\"\"],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||\"\").split(\".\").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp(\"(^|\\\\.)\"+p.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&(\"**\"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,\"events\"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,\"type\")?b.type:b,r=j.call(b,\"namespace\")?b.namespace.split(\".\"):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(\".\")>=0&&(r=q.split(\".\"),q=r.shift(),r.sort()),k=q.indexOf(\":\")<0&&\"on\"+q,b=b[n.expando]?b:new n.Event(q,\"object\"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join(\".\"),b.namespace_re=b.namespace?new RegExp(\"(^|\\\\.)\"+r.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,\"events\")||{})[b.type]&&L.get(g,\"handle\"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,\"events\")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||\"click\"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||\"click\"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+\" \",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:\"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:\"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:\"focusin\"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:\"focusout\"},click:{trigger:function(){return\"checkbox\"===this.type&&this.click&&n.nodeName(this,\"input\")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,\"a\")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if(\"object\"==typeof a){\"string\"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&(\"string\"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+\".\"+d.namespace:d.origType,d.selector,d.handler),this;if(\"object\"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||\"function\"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,bb=/<([\\w:]+)/,cb=/<|&#?\\w+;/,db=/<(?:script|style|link)/i,eb=/checked\\s*(?:[^=]|=\\s*.checked.)/i,fb=/^$|\\/(?:java|ecma)script/i,gb=/^true\\/(.*)/,hb=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,ib={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,\"table\")&&n.nodeName(11!==b.nodeType?b:b.firstChild,\"tr\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function kb(a){return a.type=(null!==a.getAttribute(\"type\"))+\"/\"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute(\"type\"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],\"globalEval\",!b||L.get(b[c],\"globalEval\"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||\"*\"):a.querySelectorAll?a.querySelectorAll(b||\"*\"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();\"input\"===c&&T.test(a.type)?b.checked=a.checked:(\"input\"===c||\"textarea\"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,\"script\"),g.length>0&&mb(g,!i&&ob(a,\"script\")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if(\"object\"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement(\"div\")),g=(bb.exec(e)||[\"\",\"\"])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,\"<$1></$2>\")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=\"\"}else l.push(b.createTextNode(e));k.textContent=\"\",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),\"script\"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||\"\")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,\"script\")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent=\"\");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if(\"string\"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(ab,\"<$1></$2>\");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&\"string\"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,\"script\"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,\"script\"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||\"\")&&!L.access(h,\"globalEval\")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,\"\")))}return this}}),n.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],\"display\");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),\"none\"!==c&&c||(qb=(qb||n(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp(\"^(\"+Q+\")(?!px)[a-z%]+$\",\"i\"),wb=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(\"\"!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+\"\":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement(\"div\"),f=l.createElement(\"div\");if(f.style){f.style.backgroundClip=\"content-box\",f.cloneNode(!0).style.backgroundClip=\"\",k.clearCloneStyle=\"content-box\"===f.style.backgroundClip,e.style.cssText=\"border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute\",e.appendChild(f);function g(){f.style.cssText=\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute\",f.innerHTML=\"\",d.appendChild(e);var g=a.getComputedStyle(f,null);b=\"1%\"!==g.top,c=\"4px\"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement(\"div\"));return c.style.cssText=f.style.cssText=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0\",c.style.marginRight=c.style.width=\"0\",f.style.width=\"1px\",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp(\"^(\"+Q+\")(.*)$\",\"i\"),Bb=new RegExp(\"^([+-])=(\"+Q+\")\",\"i\"),Cb={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Db={letterSpacing:\"0\",fontWeight:\"400\"},Eb=[\"Webkit\",\"O\",\"Moz\",\"ms\"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||\"px\"):b}function Hb(a,b,c,d,e){for(var f=c===(d?\"border\":\"content\")?4:\"width\"===b?1:0,g=0;4>f;f+=2)\"margin\"===c&&(g+=n.css(a,c+R[f],!0,e)),d?(\"content\"===c&&(g-=n.css(a,\"padding\"+R[f],!0,e)),\"margin\"!==c&&(g-=n.css(a,\"border\"+R[f]+\"Width\",!0,e))):(g+=n.css(a,\"padding\"+R[f],!0,e),\"padding\"!==c&&(g+=n.css(a,\"border\"+R[f]+\"Width\",!0,e)));return g}function Ib(a,b,c){var d=!0,e=\"width\"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g=\"border-box\"===n.css(a,\"boxSizing\",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?\"border\":\"content\"),d,f)+\"px\"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,\"olddisplay\"),c=d.style.display,b?(f[g]||\"none\"!==c||(d.style.display=\"\"),\"\"===d.style.display&&S(d)&&(f[g]=L.access(d,\"olddisplay\",tb(d.nodeName)))):(e=S(d),\"none\"===c&&e||L.set(d,\"olddisplay\",e?c:n.css(d,\"display\"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&\"none\"!==d.style.display&&\"\"!==d.style.display||(d.style.display=b?f[g]||\"\":\"none\"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,\"opacity\");return\"\"===c?\"1\":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":\"cssFloat\"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&\"get\"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,\"string\"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f=\"number\"),null!=c&&c===c&&(\"number\"!==f||n.cssNumber[h]||(c+=\"px\"),k.clearCloneStyle||\"\"!==c||0!==b.indexOf(\"background\")||(i[b]=\"inherit\"),g&&\"set\"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&\"get\"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),\"normal\"===e&&b in Db&&(e=Db[b]),\"\"===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each([\"height\",\"width\"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,\"display\"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,\"border-box\"===n.css(a,\"boxSizing\",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:\"inline-block\"},xb,[a,\"marginRight\"]):void 0}),n.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f=\"string\"==typeof c?c.split(\" \"):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return\"boolean\"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||\"swing\",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?\"\":\"px\")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,\"\"),b&&\"auto\"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp(\"^(?:([+-])=|)(\"+Q+\")([a-z%]*)$\",\"i\"),Pb=/queueHooks$/,Qb=[Vb],Rb={\"*\":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?\"\":\"px\"),g=(n.cssNumber[a]||\"px\"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||\".5\",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e[\"margin\"+c]=e[\"padding\"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb[\"*\"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,\"fxshow\");c.queue||(h=n._queueHooks(a,\"fx\"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,\"fx\").length||h.empty.fire()})})),1===a.nodeType&&(\"height\"in b||\"width\"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,\"display\"),k=\"none\"===j?L.get(a,\"olddisplay\")||tb(a.nodeName):j,\"inline\"===k&&\"none\"===n.css(a,\"float\")&&(o.display=\"inline-block\")),c.overflow&&(o.overflow=\"hidden\",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||\"toggle\"===e,e===(p?\"hide\":\"show\")){if(\"show\"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))\"inline\"===(\"none\"===j?tb(a.nodeName):j)&&(o.display=j);else{q?\"hidden\"in q&&(p=q.hidden):q=L.access(a,\"fxshow\",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,\"fxshow\");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start=\"width\"===d||\"height\"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=[\"*\"]):a=a.split(\" \");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&\"object\"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:\"number\"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue=\"fx\"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,\"finish\"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return\"string\"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||\"fx\",[]),this.each(function(){var b=!0,e=null!=a&&a+\"queueHooks\",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||\"fx\"),this.each(function(){var b,c=L.get(this),d=c[a+\"queue\"],e=c[a+\"queueHooks\"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||\"boolean\"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb(\"show\"),slideUp:Tb(\"hide\"),slideToggle:Tb(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||\"fx\",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement(\"input\"),b=l.createElement(\"select\"),c=b.appendChild(l.createElement(\"option\"));a.type=\"checkbox\",k.checkOn=\"\"!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement(\"input\"),a.value=\"t\",a.type=\"radio\",k.radioValue=\"t\"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&\"get\"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&\"set\"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+\"\"),c):void n.removeAttr(a,b))\n},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&\"radio\"===b&&n.nodeName(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{\"for\":\"htmlFor\",\"class\":\"className\"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&\"set\"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&\"get\"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute(\"tabindex\")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\\t\\r\\n\\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=\"string\"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||\"\").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(\" \"+c.className+\" \").replace(ac,\" \"):\" \")){f=0;while(e=b[f++])d.indexOf(\" \"+e+\" \")<0&&(d+=e+\" \");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||\"string\"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||\"\").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(\" \"+c.className+\" \").replace(ac,\" \"):\"\")){f=0;while(e=b[f++])while(d.indexOf(\" \"+e+\" \")>=0)d=d.replace(\" \"+e+\" \",\" \");g=a?n.trim(d):\"\",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return\"boolean\"==typeof b&&\"string\"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if(\"string\"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||\"boolean\"===c)&&(this.className&&L.set(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":L.get(this,\"__className__\")||\"\")})},hasClass:function(a){for(var b=\" \"+a+\" \",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(\" \"+this[c].className+\" \").replace(ac,\" \").indexOf(b)>=0)return!0;return!1}});var bc=/\\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e=\"\":\"number\"==typeof e?e+=\"\":n.isArray(e)&&(e=n.map(e,function(a){return null==a?\"\":a+\"\"})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&\"set\"in b&&void 0!==b.set(this,e,\"value\")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&\"get\"in b&&void 0!==(c=b.get(e,\"value\"))?c:(c=e.value,\"string\"==typeof c?c.replace(bc,\"\"):null==c?\"\":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,\"value\");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f=\"select-one\"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute(\"disabled\"))||c.parentNode.disabled&&n.nodeName(c.parentNode,\"optgroup\"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each([\"radio\",\"checkbox\"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute(\"value\")?\"on\":a.value})}),n.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,\"**\"):this.off(b,a||\"**\",c)}});var cc=n.now(),dc=/\\?/;n.parseJSON=function(a){return JSON.parse(a+\"\")},n.parseXML=function(a){var b,c;if(!a||\"string\"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,\"text/xml\")}catch(d){b=void 0}return(!b||b.getElementsByTagName(\"parsererror\").length)&&n.error(\"Invalid XML: \"+a),b};var ec=/#.*$/,fc=/([?&])_=[^&]*/,gc=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,hc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ic=/^(?:GET|HEAD)$/,jc=/^\\/\\//,kc=/^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,lc={},mc={},nc=\"*/\".concat(\"*\"),oc=a.location.href,pc=kc.exec(oc.toLowerCase())||[];function qc(a){return function(b,c){\"string\"!=typeof b&&(c=b,b=\"*\");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])\"+\"===d[0]?(d=d.slice(1)||\"*\",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rc(a,b,c,d){var e={},f=a===mc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return\"string\"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e[\"*\"]&&g(\"*\")}function sc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(\"*\"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader(\"Content-Type\"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+\" \"+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function uc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(\"*\"===f)f=i;else if(\"*\"!==i&&i!==f){if(g=j[i+\" \"+f]||j[\"* \"+f],!g)for(e in j)if(h=e.split(\" \"),h[1]===f&&(g=j[i+\" \"+h[0]]||j[\"* \"+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a[\"throws\"])b=g(b);else try{b=g(b)}catch(l){return{state:\"parsererror\",error:g?l:\"No conversion from \"+i+\" to \"+f}}}return{state:\"success\",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:oc,type:\"GET\",isLocal:hc.test(pc[1]),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":nc,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":n.parseJSON,\"text xml\":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sc(sc(a,n.ajaxSettings),b):sc(n.ajaxSettings,a)},ajaxPrefilter:qc(lc),ajaxTransport:qc(mc),ajax:function(a,b){\"object\"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks(\"once memory\"),q=k.statusCode||{},r={},s={},t=0,u=\"canceled\",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gc.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||oc)+\"\").replace(ec,\"\").replace(jc,pc[1]+\"//\"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||\"*\").toLowerCase().match(E)||[\"\"],null==k.crossDomain&&(h=kc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pc[1]&&h[2]===pc[2]&&(h[3]||(\"http:\"===h[1]?\"80\":\"443\"))===(pc[3]||(\"http:\"===pc[1]?\"80\":\"443\")))),k.data&&k.processData&&\"string\"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rc(lc,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger(\"ajaxStart\"),k.type=k.type.toUpperCase(),k.hasContent=!ic.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?\"&\":\"?\")+k.data,delete k.data),k.cache===!1&&(k.url=fc.test(d)?d.replace(fc,\"$1_=\"+cc++):d+(dc.test(d)?\"&\":\"?\")+\"_=\"+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader(\"If-Modified-Since\",n.lastModified[d]),n.etag[d]&&v.setRequestHeader(\"If-None-Match\",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader(\"Content-Type\",k.contentType),v.setRequestHeader(\"Accept\",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+(\"*\"!==k.dataTypes[0]?\", \"+nc+\"; q=0.01\":\"\"):k.accepts[\"*\"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u=\"abort\";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rc(mc,k,b,v)){v.readyState=1,i&&m.trigger(\"ajaxSend\",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort(\"timeout\")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,\"No Transport\");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||\"\",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tc(k,v,f)),u=uc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader(\"Last-Modified\"),w&&(n.lastModified[d]=w),w=v.getResponseHeader(\"etag\"),w&&(n.etag[d]=w)),204===a||\"HEAD\"===k.type?x=\"nocontent\":304===a?x=\"notmodified\":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x=\"error\",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+\"\",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?\"ajaxSuccess\":\"ajaxError\",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger(\"ajaxComplete\",[v,k]),--n.active||n.event.trigger(\"ajaxStop\")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,\"json\")},getScript:function(a,b){return n.get(a,void 0,b,\"script\")}}),n.each([\"get\",\"post\"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,\"body\")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vc=/%20/g,wc=/\\[\\]$/,xc=/\\r?\\n/g,yc=/^(?:submit|button|image|reset|file)$/i,zc=/^(?:input|select|textarea|keygen)/i;function Ac(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wc.test(a)?d(a,e):Ac(a+\"[\"+(\"object\"==typeof e?b:\"\")+\"]\",e,c,d)});else if(c||\"object\"!==n.type(b))d(a,b);else for(e in b)Ac(a+\"[\"+e+\"]\",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?\"\":b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ac(c,a[c],b,e);return d.join(\"&\").replace(vc,\"+\")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,\"elements\");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(\":disabled\")&&zc.test(this.nodeName)&&!yc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xc,\"\\r\\n\")}}):{name:b.name,value:c.replace(xc,\"\\r\\n\")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bc=0,Cc={},Dc={0:200,1223:204},Ec=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent(\"onunload\",function(){for(var a in Cc)Cc[a]()}),k.cors=!!Ec&&\"withCredentials\"in Ec,k.ajax=Ec=!!Ec,n.ajaxTransport(function(a){var b;return k.cors||Ec&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c[\"X-Requested-With\"]||(c[\"X-Requested-With\"]=\"XMLHttpRequest\");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cc[g],b=f.onload=f.onerror=null,\"abort\"===a?f.abort():\"error\"===a?d(f.status,f.statusText):d(Dc[f.status]||f.status,f.statusText,\"string\"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b(\"error\"),b=Cc[g]=b(\"abort\");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/(?:java|ecma)script/},converters:{\"text script\":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter(\"script\",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type=\"GET\")}),n.ajaxTransport(\"script\",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n(\"<script>\").prop({async:!0,charset:a.scriptCharset,src:a.url}).on(\"load error\",c=function(a){b.remove(),c=null,a&&e(\"error\"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fc=[],Gc=/(=)\\?(?=&|$)|\\?\\?/;n.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=Fc.pop()||n.expando+\"_\"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gc.test(b.url)?\"url\":\"string\"==typeof b.data&&!(b.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Gc.test(b.data)&&\"data\");return h||\"jsonp\"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gc,\"$1\"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?\"&\":\"?\")+b.jsonp+\"=\"+e),b.converters[\"script json\"]=function(){return g||n.error(e+\" was not called\"),g[0]},b.dataTypes[0]=\"json\",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),\"script\"):void 0}),n.parseHTML=function(a,b,c){if(!a||\"string\"!=typeof a)return null;\"boolean\"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hc=n.fn.load;n.fn.load=function(a,b,c){if(\"string\"!=typeof a&&Hc)return Hc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(\" \");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&\"object\"==typeof b&&(e=\"POST\"),g.length>0&&n.ajax({url:a,type:e,dataType:\"html\",data:b}).done(function(a){f=arguments,g.html(d?n(\"<div>\").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ic=a.document.documentElement;function Jc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,\"position\"),l=n(a),m={};\"static\"===k&&(a.style.position=\"relative\"),h=l.offset(),f=n.css(a,\"top\"),i=n.css(a,\"left\"),j=(\"absolute\"===k||\"fixed\"===k)&&(f+i).indexOf(\"auto\")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),\"using\"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return\"fixed\"===n.css(c,\"position\")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],\"html\")||(d=a.offset()),d.top+=n.css(a[0],\"borderTopWidth\",!0),d.left+=n.css(a[0],\"borderLeftWidth\",!0)),{top:b.top-d.top-n.css(c,\"marginTop\",!0),left:b.left-d.left-n.css(c,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ic;while(a&&!n.nodeName(a,\"html\")&&\"static\"===n.css(a,\"position\"))a=a.offsetParent;return a||Ic})}}),n.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(b,c){var d=\"pageYOffset\"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each([\"top\",\"left\"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+\"px\":c):void 0})}),n.each({Height:\"height\",Width:\"width\"},function(a,b){n.each({padding:\"inner\"+a,content:b,\"\":\"outer\"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||\"boolean\"!=typeof d),g=c||(d===!0||e===!0?\"margin\":\"border\");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement[\"client\"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body[\"scroll\"+a],e[\"scroll\"+a],b.body[\"offset\"+a],e[\"offset\"+a],e[\"client\"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return n});var Kc=a.jQuery,Lc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lc),b&&a.jQuery===n&&(a.jQuery=Kc),n},typeof b===U&&(a.jQuery=a.$=n),n});\n//# sourceMappingURL=jquery.min.map;\n","define('tabs/dashboard-tab/tabId',['require'],function(require) {\n  return 'dashboard-tab';\n});\n\n","define('tabs/settings-tab/tabId',['require'],function(require){\n  return 'settings-tab';\n});\n","define('tabs/provision-tab/tabId',['require'],function(require) {\n  return 'provision-tab';\n});\n\n","/*!\n * Modernizr v2.8.3\n * www.modernizr.com\n *\n * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton\n * Available under the BSD and MIT licenses: www.modernizr.com/license/\n */\nwindow.Modernizr=function(a,b,c){function d(a){t.cssText=a}function e(a,b){return d(x.join(a+\";\")+(b||\"\"))}function f(a,b){return typeof a===b}function g(a,b){return!!~(\"\"+a).indexOf(b)}function h(a,b){for(var d in a){var e=a[d];if(!g(e,\"-\")&&t[e]!==c)return\"pfx\"==b?e:!0}return!1}function i(a,b,d){for(var e in a){var g=b[a[e]];if(g!==c)return d===!1?a[e]:f(g,\"function\")?g.bind(d||b):g}return!1}function j(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+\" \"+z.join(d+\" \")+d).split(\" \");return f(b,\"string\")||f(b,\"undefined\")?h(e,b):(e=(a+\" \"+A.join(d+\" \")+d).split(\" \"),i(e,b,c))}function k(){o.input=function(c){for(var d=0,e=c.length;e>d;d++)E[c[d]]=!!(c[d]in u);return E.list&&(E.list=!(!b.createElement(\"datalist\")||!a.HTMLDataListElement)),E}(\"autocomplete autofocus list placeholder max min multiple pattern required step\".split(\" \")),o.inputtypes=function(a){for(var d,e,f,g=0,h=a.length;h>g;g++)u.setAttribute(\"type\",e=a[g]),d=\"text\"!==u.type,d&&(u.value=v,u.style.cssText=\"position:absolute;visibility:hidden;\",/^range$/.test(e)&&u.style.WebkitAppearance!==c?(q.appendChild(u),f=b.defaultView,d=f.getComputedStyle&&\"textfield\"!==f.getComputedStyle(u,null).WebkitAppearance&&0!==u.offsetHeight,q.removeChild(u)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?u.checkValidity&&u.checkValidity()===!1:u.value!=v)),D[a[g]]=!!d;return D}(\"search tel url email datetime date month week time datetime-local number range color\".split(\" \"))}var l,m,n=\"2.8.3\",o={},p=!0,q=b.documentElement,r=\"modernizr\",s=b.createElement(r),t=s.style,u=b.createElement(\"input\"),v=\":)\",w={}.toString,x=\" -webkit- -moz- -o- -ms- \".split(\" \"),y=\"Webkit Moz O ms\",z=y.split(\" \"),A=y.toLowerCase().split(\" \"),B={svg:\"http://www.w3.org/2000/svg\"},C={},D={},E={},F=[],G=F.slice,H=function(a,c,d,e){var f,g,h,i,j=b.createElement(\"div\"),k=b.body,l=k||b.createElement(\"body\");if(parseInt(d,10))for(;d--;)h=b.createElement(\"div\"),h.id=e?e[d]:r+(d+1),j.appendChild(h);return f=[\"&#173;\",'<style id=\"s',r,'\">',a,\"</style>\"].join(\"\"),j.id=r,(k?j:l).innerHTML+=f,l.appendChild(j),k||(l.style.background=\"\",l.style.overflow=\"hidden\",i=q.style.overflow,q.style.overflow=\"hidden\",q.appendChild(l)),g=c(j,a),k?j.parentNode.removeChild(j):(l.parentNode.removeChild(l),q.style.overflow=i),!!g},I=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return H(\"@media \"+b+\" { #\"+r+\" { position: absolute; } }\",function(b){d=\"absolute\"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position}),d},J=function(){function a(a,e){e=e||b.createElement(d[a]||\"div\"),a=\"on\"+a;var g=a in e;return g||(e.setAttribute||(e=b.createElement(\"div\")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(a,\"\"),g=f(e[a],\"function\"),f(e[a],\"undefined\")||(e[a]=c),e.removeAttribute(a))),e=null,g}var d={select:\"input\",change:\"input\",submit:\"form\",reset:\"form\",error:\"img\",load:\"img\",abort:\"img\"};return a}(),K={}.hasOwnProperty;m=f(K,\"undefined\")||f(K.call,\"undefined\")?function(a,b){return b in a&&f(a.constructor.prototype[b],\"undefined\")}:function(a,b){return K.call(a,b)},Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if(\"function\"!=typeof b)throw new TypeError;var c=G.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(G.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(G.call(arguments)))};return d}),C.flexbox=function(){return j(\"flexWrap\")},C.flexboxlegacy=function(){return j(\"boxDirection\")},C.canvas=function(){var a=b.createElement(\"canvas\");return!(!a.getContext||!a.getContext(\"2d\"))},C.canvastext=function(){return!(!o.canvas||!f(b.createElement(\"canvas\").getContext(\"2d\").fillText,\"function\"))},C.webgl=function(){return!!a.WebGLRenderingContext},C.touch=function(){var c;return\"ontouchstart\"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:H([\"@media (\",x.join(\"touch-enabled),(\"),r,\")\",\"{#modernizr{top:9px;position:absolute}}\"].join(\"\"),function(a){c=9===a.offsetTop}),c},C.geolocation=function(){return\"geolocation\"in navigator},C.postmessage=function(){return!!a.postMessage},C.websqldatabase=function(){return!!a.openDatabase},C.indexedDB=function(){return!!j(\"indexedDB\",a)},C.hashchange=function(){return J(\"hashchange\",a)&&(b.documentMode===c||b.documentMode>7)},C.history=function(){return!(!a.history||!history.pushState)},C.draganddrop=function(){var a=b.createElement(\"div\");return\"draggable\"in a||\"ondragstart\"in a&&\"ondrop\"in a},C.websockets=function(){return\"WebSocket\"in a||\"MozWebSocket\"in a},C.rgba=function(){return d(\"background-color:rgba(150,255,150,.5)\"),g(t.backgroundColor,\"rgba\")},C.hsla=function(){return d(\"background-color:hsla(120,40%,100%,.5)\"),g(t.backgroundColor,\"rgba\")||g(t.backgroundColor,\"hsla\")},C.multiplebgs=function(){return d(\"background:url(https://),url(https://),red url(https://)\"),/(url\\s*\\(.*?){3}/.test(t.background)},C.backgroundsize=function(){return j(\"backgroundSize\")},C.borderimage=function(){return j(\"borderImage\")},C.borderradius=function(){return j(\"borderRadius\")},C.boxshadow=function(){return j(\"boxShadow\")},C.textshadow=function(){return\"\"===b.createElement(\"div\").style.textShadow},C.opacity=function(){return e(\"opacity:.55\"),/^0.55$/.test(t.opacity)},C.cssanimations=function(){return j(\"animationName\")},C.csscolumns=function(){return j(\"columnCount\")},C.cssgradients=function(){var a=\"background-image:\",b=\"gradient(linear,left top,right bottom,from(#9f9),to(white));\",c=\"linear-gradient(left top,#9f9, white);\";return d((a+\"-webkit- \".split(\" \").join(b+a)+x.join(c+a)).slice(0,-a.length)),g(t.backgroundImage,\"gradient\")},C.cssreflections=function(){return j(\"boxReflect\")},C.csstransforms=function(){return!!j(\"transform\")},C.csstransforms3d=function(){var a=!!j(\"perspective\");return a&&\"webkitPerspective\"in q.style&&H(\"@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}\",function(b){a=9===b.offsetLeft&&3===b.offsetHeight}),a},C.csstransitions=function(){return j(\"transition\")},C.fontface=function(){var a;return H('@font-face {font-family:\"font\";src:url(\"https://\")}',function(c,d){var e=b.getElementById(\"smodernizr\"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||\"\":\"\";a=/src/i.test(g)&&0===g.indexOf(d.split(\" \")[0])}),a},C.generatedcontent=function(){var a;return H([\"#\",r,\"{font:0/0 a}#\",r,':after{content:\"',v,'\";visibility:hidden;font:3px/1 a}'].join(\"\"),function(b){a=b.offsetHeight>=3}),a},C.video=function(){var a=b.createElement(\"video\"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs=\"theora\"').replace(/^no$/,\"\"),c.h264=a.canPlayType('video/mp4; codecs=\"avc1.42E01E\"').replace(/^no$/,\"\"),c.webm=a.canPlayType('video/webm; codecs=\"vp8, vorbis\"').replace(/^no$/,\"\"))}catch(d){}return c},C.audio=function(){var a=b.createElement(\"audio\"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/,\"\"),c.mp3=a.canPlayType(\"audio/mpeg;\").replace(/^no$/,\"\"),c.wav=a.canPlayType('audio/wav; codecs=\"1\"').replace(/^no$/,\"\"),c.m4a=(a.canPlayType(\"audio/x-m4a;\")||a.canPlayType(\"audio/aac;\")).replace(/^no$/,\"\"))}catch(d){}return c},C.localstorage=function(){try{return localStorage.setItem(r,r),localStorage.removeItem(r),!0}catch(a){return!1}},C.sessionstorage=function(){try{return sessionStorage.setItem(r,r),sessionStorage.removeItem(r),!0}catch(a){return!1}},C.webworkers=function(){return!!a.Worker},C.applicationcache=function(){return!!a.applicationCache},C.svg=function(){return!!b.createElementNS&&!!b.createElementNS(B.svg,\"svg\").createSVGRect},C.inlinesvg=function(){var a=b.createElement(\"div\");return a.innerHTML=\"<svg/>\",(a.firstChild&&a.firstChild.namespaceURI)==B.svg},C.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(w.call(b.createElementNS(B.svg,\"animate\")))},C.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(w.call(b.createElementNS(B.svg,\"clipPath\")))};for(var L in C)m(C,L)&&(l=L.toLowerCase(),o[l]=C[L](),F.push((o[l]?\"\":\"no-\")+l));return o.input||k(),o.addTest=function(a,b){if(\"object\"==typeof a)for(var d in a)m(a,d)&&o.addTest(d,a[d]);else{if(a=a.toLowerCase(),o[a]!==c)return o;b=\"function\"==typeof b?b():b,\"undefined\"!=typeof p&&p&&(q.className+=\" \"+(b?\"\":\"no-\")+a),o[a]=b}return o},d(\"\"),s=u=null,function(a,b){function c(a,b){var c=a.createElement(\"p\"),d=a.getElementsByTagName(\"head\")[0]||a.documentElement;return c.innerHTML=\"x<style>\"+b+\"</style>\",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=s.elements;return\"string\"==typeof a?a.split(\" \"):a}function e(a){var b=r[a[p]];return b||(b={},q++,a[p]=q,r[q]=b),b}function f(a,c,d){if(c||(c=b),k)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():o.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!f.canHaveChildren||n.test(a)||f.tagUrn?f:d.frag.appendChild(f)}function g(a,c){if(a||(a=b),k)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function(\"h,f\",\"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(\"+d().join().replace(/[\\w\\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c(\"'+a+'\")'})+\");return n}\")(s,b.frag)}function i(a){a||(a=b);var d=e(a);return!s.shivCSS||j||d.hasCSS||(d.hasCSS=!!c(a,\"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}\")),k||h(a,d),a}var j,k,l=\"3.7.0\",m=a.html5||{},n=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,o=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,p=\"_html5shiv\",q=0,r={};!function(){try{var a=b.createElement(\"a\");a.innerHTML=\"<xyz></xyz>\",j=\"hidden\"in a,k=1==a.childNodes.length||function(){b.createElement(\"a\");var a=b.createDocumentFragment();return\"undefined\"==typeof a.cloneNode||\"undefined\"==typeof a.createDocumentFragment||\"undefined\"==typeof a.createElement}()}catch(c){j=!0,k=!0}}();var s={elements:m.elements||\"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video\",version:l,shivCSS:m.shivCSS!==!1,supportsUnknownElements:k,shivMethods:m.shivMethods!==!1,type:\"default\",shivDocument:i,createElement:f,createDocumentFragment:g};a.html5=s,i(b)}(this,b),o._version=n,o._prefixes=x,o._domPrefixes=A,o._cssomPrefixes=z,o.mq=I,o.hasEvent=J,o.testProp=function(a){return h([a])},o.testAllProps=j,o.testStyles=H,o.prefixed=function(a,b,c){return b?j(a,b,c):j(a,\"pfx\")},q.className=q.className.replace(/(^|\\s)no-js(\\s|$)/,\"$1$2\")+(p?\" js \"+F.join(\" \"):\"\"),o}(this,this.document);\ndefine(\"modernizr\", (function (global) {\n    return function () {\n        var ret, fn;\n        return ret || global.Modernizr;\n    };\n}(this)));\n\n","/*\n * Foundation Responsive Library\n * http://foundation.zurb.com\n * Copyright 2014, ZURB\n * Free to use under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n*/\n\n(function ($, window, document, undefined) {\n  'use strict';\n\n  var header_helpers = function (class_array) {\n    var i = class_array.length;\n    var head = $('head');\n\n    while (i--) {\n      if (head.has('.' + class_array[i]).length === 0) {\n        head.append('<meta class=\"' + class_array[i] + '\" />');\n      }\n    }\n  };\n\n  header_helpers([\n    'foundation-mq-small',\n    'foundation-mq-small-only',\n    'foundation-mq-medium',\n    'foundation-mq-medium-only',\n    'foundation-mq-large',\n    'foundation-mq-large-only',\n    'foundation-mq-xlarge',\n    'foundation-mq-xlarge-only',\n    'foundation-mq-xxlarge',\n    'foundation-data-attribute-namespace']);\n\n  // Enable FastClick if present\n\n  $(function () {\n    if (typeof FastClick !== 'undefined') {\n      // Don't attach to body if undefined\n      if (typeof document.body !== 'undefined') {\n        FastClick.attach(document.body);\n      }\n    }\n  });\n\n  // private Fast Selector wrapper,\n  // returns jQuery object. Only use where\n  // getElementById is not available.\n  var S = function (selector, context) {\n    if (typeof selector === 'string') {\n      if (context) {\n        var cont;\n        if (context.jquery) {\n          cont = context[0];\n          if (!cont) {\n            return context;\n          }\n        } else {\n          cont = context;\n        }\n        return $(cont.querySelectorAll(selector));\n      }\n\n      return $(document.querySelectorAll(selector));\n    }\n\n    return $(selector, context);\n  };\n\n  // Namespace functions.\n\n  var attr_name = function (init) {\n    var arr = [];\n    if (!init) {\n      arr.push('data');\n    }\n    if (this.namespace.length > 0) {\n      arr.push(this.namespace);\n    }\n    arr.push(this.name);\n\n    return arr.join('-');\n  };\n\n  var add_namespace = function (str) {\n    var parts = str.split('-'),\n        i = parts.length,\n        arr = [];\n\n    while (i--) {\n      if (i !== 0) {\n        arr.push(parts[i]);\n      } else {\n        if (this.namespace.length > 0) {\n          arr.push(this.namespace, parts[i]);\n        } else {\n          arr.push(parts[i]);\n        }\n      }\n    }\n\n    return arr.reverse().join('-');\n  };\n\n  // Event binding and data-options updating.\n\n  var bindings = function (method, options) {\n    var self = this,\n        bind = function(){\n          var $this = S(this),\n              should_bind_events = !$this.data(self.attr_name(true) + '-init');\n          $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this)));\n\n          if (should_bind_events) {\n            self.events(this);\n          }\n        };\n\n    if (S(this.scope).is('[' + this.attr_name() +']')) {\n      bind.call(this.scope);\n    } else {\n      S('[' + this.attr_name() +']', this.scope).each(bind);\n    }\n    // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.\n    if (typeof method === 'string') {\n      return this[method].call(this, options);\n    }\n\n  };\n\n  var single_image_loaded = function (image, callback) {\n    function loaded () {\n      callback(image[0]);\n    }\n\n    function bindLoad () {\n      this.one('load', loaded);\n\n      if (/MSIE (\\d+\\.\\d+);/.test(navigator.userAgent)) {\n        var src = this.attr( 'src' ),\n            param = src.match( /\\?/ ) ? '&' : '?';\n\n        param += 'random=' + (new Date()).getTime();\n        this.attr('src', src + param);\n      }\n    }\n\n    if (!image.attr('src')) {\n      loaded();\n      return;\n    }\n\n    if (image[0].complete || image[0].readyState === 4) {\n      loaded();\n    } else {\n      bindLoad.call(image);\n    }\n  };\n\n  /*\n    https://github.com/paulirish/matchMedia.js\n  */\n\n  window.matchMedia = window.matchMedia || (function ( doc ) {\n\n    'use strict';\n\n    var bool,\n        docElem = doc.documentElement,\n        refNode = docElem.firstElementChild || docElem.firstChild,\n        // fakeBody required for <FF4 when executed in <head>\n        fakeBody = doc.createElement( 'body' ),\n        div = doc.createElement( 'div' );\n\n    div.id = 'mq-test-1';\n    div.style.cssText = 'position:absolute;top:-100em';\n    fakeBody.style.background = 'none';\n    fakeBody.appendChild(div);\n\n    return function (q) {\n\n      div.innerHTML = '&shy;<style media=\"' + q + '\"> #mq-test-1 { width: 42px; }</style>';\n\n      docElem.insertBefore( fakeBody, refNode );\n      bool = div.offsetWidth === 42;\n      docElem.removeChild( fakeBody );\n\n      return {\n        matches : bool,\n        media : q\n      };\n\n    };\n\n  }( document ));\n\n  /*\n   * jquery.requestAnimationFrame\n   * https://github.com/gnarf37/jquery-requestAnimationFrame\n   * Requires jQuery 1.8+\n   *\n   * Copyright (c) 2012 Corey Frang\n   * Licensed under the MIT license.\n   */\n\n  (function(jQuery) {\n\n\n  // requestAnimationFrame polyfill adapted from Erik Möller\n  // fixes from Paul Irish and Tino Zijdel\n  // http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n  // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n  var animating,\n      lastTime = 0,\n      vendors = ['webkit', 'moz'],\n      requestAnimationFrame = window.requestAnimationFrame,\n      cancelAnimationFrame = window.cancelAnimationFrame,\n      jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;\n\n  for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {\n    requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ];\n    cancelAnimationFrame = cancelAnimationFrame ||\n      window[ vendors[lastTime] + 'CancelAnimationFrame' ] ||\n      window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ];\n  }\n\n  function raf() {\n    if (animating) {\n      requestAnimationFrame(raf);\n\n      if (jqueryFxAvailable) {\n        jQuery.fx.tick();\n      }\n    }\n  }\n\n  if (requestAnimationFrame) {\n    // use rAF\n    window.requestAnimationFrame = requestAnimationFrame;\n    window.cancelAnimationFrame = cancelAnimationFrame;\n\n    if (jqueryFxAvailable) {\n      jQuery.fx.timer = function (timer) {\n        if (timer() && jQuery.timers.push(timer) && !animating) {\n          animating = true;\n          raf();\n        }\n      };\n\n      jQuery.fx.stop = function () {\n        animating = false;\n      };\n    }\n  } else {\n    // polyfill\n    window.requestAnimationFrame = function (callback) {\n      var currTime = new Date().getTime(),\n        timeToCall = Math.max(0, 16 - (currTime - lastTime)),\n        id = window.setTimeout(function () {\n          callback(currTime + timeToCall);\n        }, timeToCall);\n      lastTime = currTime + timeToCall;\n      return id;\n    };\n\n    window.cancelAnimationFrame = function (id) {\n      clearTimeout(id);\n    };\n\n  }\n\n  }( $ ));\n\n  function removeQuotes (string) {\n    if (typeof string === 'string' || string instanceof String) {\n      string = string.replace(/^['\\\\/\"]+|(;\\s?})+|['\\\\/\"]+$/g, '');\n    }\n\n    return string;\n  }\n\n  window.Foundation = {\n    name : 'Foundation',\n\n    version : '5.5.1',\n\n    media_queries : {\n      'small'       : S('.foundation-mq-small').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'small-only'  : S('.foundation-mq-small-only').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'medium'      : S('.foundation-mq-medium').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'medium-only' : S('.foundation-mq-medium-only').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'large'       : S('.foundation-mq-large').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'large-only'  : S('.foundation-mq-large-only').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'xlarge'      : S('.foundation-mq-xlarge').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'xlarge-only' : S('.foundation-mq-xlarge-only').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'xxlarge'     : S('.foundation-mq-xxlarge').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, '')\n    },\n\n    stylesheet : $('<style></style>').appendTo('head')[0].sheet,\n\n    global : {\n      namespace : undefined\n    },\n\n    init : function (scope, libraries, method, options, response) {\n      var args = [scope, method, options, response],\n          responses = [];\n\n      // check RTL\n      this.rtl = /rtl/i.test(S('html').attr('dir'));\n\n      // set foundation global scope\n      this.scope = scope || this.scope;\n\n      this.set_namespace();\n\n      if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {\n        if (this.libs.hasOwnProperty(libraries)) {\n          responses.push(this.init_lib(libraries, args));\n        }\n      } else {\n        for (var lib in this.libs) {\n          responses.push(this.init_lib(lib, libraries));\n        }\n      }\n\n      S(window).load(function () {\n        S(window)\n          .trigger('resize.fndtn.clearing')\n          .trigger('resize.fndtn.dropdown')\n          .trigger('resize.fndtn.equalizer')\n          .trigger('resize.fndtn.interchange')\n          .trigger('resize.fndtn.joyride')\n          .trigger('resize.fndtn.magellan')\n          .trigger('resize.fndtn.topbar')\n          .trigger('resize.fndtn.slider');\n      });\n\n      return scope;\n    },\n\n    init_lib : function (lib, args) {\n      if (this.libs.hasOwnProperty(lib)) {\n        this.patch(this.libs[lib]);\n\n        if (args && args.hasOwnProperty(lib)) {\n            if (typeof this.libs[lib].settings !== 'undefined') {\n              $.extend(true, this.libs[lib].settings, args[lib]);\n            } else if (typeof this.libs[lib].defaults !== 'undefined') {\n              $.extend(true, this.libs[lib].defaults, args[lib]);\n            }\n          return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);\n        }\n\n        args = args instanceof Array ? args : new Array(args);\n        return this.libs[lib].init.apply(this.libs[lib], args);\n      }\n\n      return function () {};\n    },\n\n    patch : function (lib) {\n      lib.scope = this.scope;\n      lib.namespace = this.global.namespace;\n      lib.rtl = this.rtl;\n      lib['data_options'] = this.utils.data_options;\n      lib['attr_name'] = attr_name;\n      lib['add_namespace'] = add_namespace;\n      lib['bindings'] = bindings;\n      lib['S'] = this.utils.S;\n    },\n\n    inherit : function (scope, methods) {\n      var methods_arr = methods.split(' '),\n          i = methods_arr.length;\n\n      while (i--) {\n        if (this.utils.hasOwnProperty(methods_arr[i])) {\n          scope[methods_arr[i]] = this.utils[methods_arr[i]];\n        }\n      }\n    },\n\n    set_namespace : function () {\n\n      // Description:\n      //    Don't bother reading the namespace out of the meta tag\n      //    if the namespace has been set globally in javascript\n      //\n      // Example:\n      //    Foundation.global.namespace = 'my-namespace';\n      // or make it an empty string:\n      //    Foundation.global.namespace = '';\n      //\n      //\n\n      // If the namespace has not been set (is undefined), try to read it out of the meta element.\n      // Otherwise use the globally defined namespace, even if it's empty ('')\n      var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;\n\n      // Finally, if the namsepace is either undefined or false, set it to an empty string.\n      // Otherwise use the namespace value.\n      this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;\n    },\n\n    libs : {},\n\n    // methods that can be inherited in libraries\n    utils : {\n\n      // Description:\n      //    Fast Selector wrapper returns jQuery object. Only use where getElementById\n      //    is not available.\n      //\n      // Arguments:\n      //    Selector (String): CSS selector describing the element(s) to be\n      //    returned as a jQuery object.\n      //\n      //    Scope (String): CSS selector describing the area to be searched. Default\n      //    is document.\n      //\n      // Returns:\n      //    Element (jQuery Object): jQuery object containing elements matching the\n      //    selector within the scope.\n      S : S,\n\n      // Description:\n      //    Executes a function a max of once every n milliseconds\n      //\n      // Arguments:\n      //    Func (Function): Function to be throttled.\n      //\n      //    Delay (Integer): Function execution threshold in milliseconds.\n      //\n      // Returns:\n      //    Lazy_function (Function): Function with throttling applied.\n      throttle : function (func, delay) {\n        var timer = null;\n\n        return function () {\n          var context = this, args = arguments;\n\n          if (timer == null) {\n            timer = setTimeout(function () {\n              func.apply(context, args);\n              timer = null;\n            }, delay);\n          }\n        };\n      },\n\n      // Description:\n      //    Executes a function when it stops being invoked for n seconds\n      //    Modified version of _.debounce() http://underscorejs.org\n      //\n      // Arguments:\n      //    Func (Function): Function to be debounced.\n      //\n      //    Delay (Integer): Function execution threshold in milliseconds.\n      //\n      //    Immediate (Bool): Whether the function should be called at the beginning\n      //    of the delay instead of the end. Default is false.\n      //\n      // Returns:\n      //    Lazy_function (Function): Function with debouncing applied.\n      debounce : function (func, delay, immediate) {\n        var timeout, result;\n        return function () {\n          var context = this, args = arguments;\n          var later = function () {\n            timeout = null;\n            if (!immediate) {\n              result = func.apply(context, args);\n            }\n          };\n          var callNow = immediate && !timeout;\n          clearTimeout(timeout);\n          timeout = setTimeout(later, delay);\n          if (callNow) {\n            result = func.apply(context, args);\n          }\n          return result;\n        };\n      },\n\n      // Description:\n      //    Parses data-options attribute\n      //\n      // Arguments:\n      //    El (jQuery Object): Element to be parsed.\n      //\n      // Returns:\n      //    Options (Javascript Object): Contents of the element's data-options\n      //    attribute.\n      data_options : function (el, data_attr_name) {\n        data_attr_name = data_attr_name || 'options';\n        var opts = {}, ii, p, opts_arr,\n            data_options = function (el) {\n              var namespace = Foundation.global.namespace;\n\n              if (namespace.length > 0) {\n                return el.data(namespace + '-' + data_attr_name);\n              }\n\n              return el.data(data_attr_name);\n            };\n\n        var cached_options = data_options(el);\n\n        if (typeof cached_options === 'object') {\n          return cached_options;\n        }\n\n        opts_arr = (cached_options || ':').split(';');\n        ii = opts_arr.length;\n\n        function isNumber (o) {\n          return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true;\n        }\n\n        function trim (str) {\n          if (typeof str === 'string') {\n            return $.trim(str);\n          }\n          return str;\n        }\n\n        while (ii--) {\n          p = opts_arr[ii].split(':');\n          p = [p[0], p.slice(1).join(':')];\n\n          if (/true/i.test(p[1])) {\n            p[1] = true;\n          }\n          if (/false/i.test(p[1])) {\n            p[1] = false;\n          }\n          if (isNumber(p[1])) {\n            if (p[1].indexOf('.') === -1) {\n              p[1] = parseInt(p[1], 10);\n            } else {\n              p[1] = parseFloat(p[1]);\n            }\n          }\n\n          if (p.length === 2 && p[0].length > 0) {\n            opts[trim(p[0])] = trim(p[1]);\n          }\n        }\n\n        return opts;\n      },\n\n      // Description:\n      //    Adds JS-recognizable media queries\n      //\n      // Arguments:\n      //    Media (String): Key string for the media query to be stored as in\n      //    Foundation.media_queries\n      //\n      //    Class (String): Class name for the generated <meta> tag\n      register_media : function (media, media_class) {\n        if (Foundation.media_queries[media] === undefined) {\n          $('head').append('<meta class=\"' + media_class + '\"/>');\n          Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));\n        }\n      },\n\n      // Description:\n      //    Add custom CSS within a JS-defined media query\n      //\n      // Arguments:\n      //    Rule (String): CSS rule to be appended to the document.\n      //\n      //    Media (String): Optional media query string for the CSS rule to be\n      //    nested under.\n      add_custom_rule : function (rule, media) {\n        if (media === undefined && Foundation.stylesheet) {\n          Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);\n        } else {\n          var query = Foundation.media_queries[media];\n\n          if (query !== undefined) {\n            Foundation.stylesheet.insertRule('@media ' +\n              Foundation.media_queries[media] + '{ ' + rule + ' }');\n          }\n        }\n      },\n\n      // Description:\n      //    Performs a callback function when an image is fully loaded\n      //\n      // Arguments:\n      //    Image (jQuery Object): Image(s) to check if loaded.\n      //\n      //    Callback (Function): Function to execute when image is fully loaded.\n      image_loaded : function (images, callback) {\n        var self = this,\n            unloaded = images.length;\n\n        if (unloaded === 0) {\n          callback(images);\n        }\n\n        images.each(function () {\n          single_image_loaded(self.S(this), function () {\n            unloaded -= 1;\n            if (unloaded === 0) {\n              callback(images);\n            }\n          });\n        });\n      },\n\n      // Description:\n      //    Returns a random, alphanumeric string\n      //\n      // Arguments:\n      //    Length (Integer): Length of string to be generated. Defaults to random\n      //    integer.\n      //\n      // Returns:\n      //    Rand (String): Pseudo-random, alphanumeric string.\n      random_str : function () {\n        if (!this.fidx) {\n          this.fidx = 0;\n        }\n        this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');\n\n        return this.prefix + (this.fidx++).toString(36);\n      },\n\n      // Description:\n      //    Helper for window.matchMedia\n      //\n      // Arguments:\n      //    mq (String): Media query\n      //\n      // Returns:\n      //    (Boolean): Whether the media query passes or not\n      match : function (mq) {\n        return window.matchMedia(mq).matches;\n      },\n\n      // Description:\n      //    Helpers for checking Foundation default media queries with JS\n      //\n      // Returns:\n      //    (Boolean): Whether the media query passes or not\n\n      is_small_up : function () {\n        return this.match(Foundation.media_queries.small);\n      },\n\n      is_medium_up : function () {\n        return this.match(Foundation.media_queries.medium);\n      },\n\n      is_large_up : function () {\n        return this.match(Foundation.media_queries.large);\n      },\n\n      is_xlarge_up : function () {\n        return this.match(Foundation.media_queries.xlarge);\n      },\n\n      is_xxlarge_up : function () {\n        return this.match(Foundation.media_queries.xxlarge);\n      },\n\n      is_small_only : function () {\n        return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();\n      },\n\n      is_medium_only : function () {\n        return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();\n      },\n\n      is_large_only : function () {\n        return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();\n      },\n\n      is_xlarge_only : function () {\n        return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();\n      },\n\n      is_xxlarge_only : function () {\n        return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();\n      }\n    }\n  };\n\n  $.fn.foundation = function () {\n    var args = Array.prototype.slice.call(arguments, 0);\n\n    return this.each(function () {\n      Foundation.init.apply(Foundation, [this].concat(args));\n      return this;\n    });\n  };\n\n}(jQuery, window, window.document));\n\ndefine(\"foundation.core\", [\"jquery\",\"modernizr\"], (function (global) {\n    return function () {\n        var ret, fn;\n        return ret || global.Foundation;\n    };\n}(this)));\n\n",";(function ($, window, document, undefined) {\n  'use strict';\n\n  Foundation.libs.reveal = {\n    name : 'reveal',\n\n    version : '5.5.1',\n\n    locked : false,\n\n    settings : {\n      animation : 'fadeAndPop',\n      animation_speed : 250,\n      close_on_background_click : true,\n      close_on_esc : true,\n      dismiss_modal_class : 'close-reveal-modal',\n      multiple_opened : false,\n      bg_class : 'reveal-modal-bg',\n      root_element : 'body',\n      open : function(){},\n      opened : function(){},\n      close : function(){},\n      closed : function(){},\n      bg : $('.reveal-modal-bg'),\n      css : {\n        open : {\n          'opacity' : 0,\n          'visibility' : 'visible',\n          'display' : 'block'\n        },\n        close : {\n          'opacity' : 1,\n          'visibility' : 'hidden',\n          'display' : 'none'\n        }\n      }\n    },\n\n    init : function (scope, method, options) {\n      $.extend(true, this.settings, method, options);\n      this.bindings(method, options);\n    },\n\n    events : function (scope) {\n      var self = this,\n          S = self.S;\n\n      S(this.scope)\n        .off('.reveal')\n        .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) {\n          e.preventDefault();\n\n          if (!self.locked) {\n            var element = S(this),\n                ajax = element.data(self.data_attr('reveal-ajax'));\n\n            self.locked = true;\n\n            if (typeof ajax === 'undefined') {\n              self.open.call(self, element);\n            } else {\n              var url = ajax === true ? element.attr('href') : ajax;\n\n              self.open.call(self, element, {url : url});\n            }\n          }\n        });\n\n      S(document)\n        .on('click.fndtn.reveal', this.close_targets(), function (e) {\n          e.preventDefault();\n          if (!self.locked) {\n            var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings,\n                bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];\n\n            if (bg_clicked) {\n              if (settings.close_on_background_click) {\n                e.stopPropagation();\n              } else {\n                return;\n              }\n            }\n\n            self.locked = true;\n            self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open') : S(this).closest('[' + self.attr_name() + ']'));\n          }\n        });\n\n      if (S('[' + self.attr_name() + ']', this.scope).length > 0) {\n        S(this.scope)\n          // .off('.reveal')\n          .on('open.fndtn.reveal', this.settings.open)\n          .on('opened.fndtn.reveal', this.settings.opened)\n          .on('opened.fndtn.reveal', this.open_video)\n          .on('close.fndtn.reveal', this.settings.close)\n          .on('closed.fndtn.reveal', this.settings.closed)\n          .on('closed.fndtn.reveal', this.close_video);\n      } else {\n        S(this.scope)\n          // .off('.reveal')\n          .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)\n          .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)\n          .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)\n          .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)\n          .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)\n          .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);\n      }\n\n      return true;\n    },\n\n    // PATCH #3: turning on key up capture only when a reveal window is open\n    key_up_on : function (scope) {\n      var self = this;\n\n      // PATCH #1: fixing multiple keyup event trigger from single key press\n      self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {\n        var open_modal = self.S('[' + self.attr_name() + '].open'),\n            settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ;\n        // PATCH #2: making sure that the close event can be called only while unlocked,\n        //           so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.\n        if ( settings && event.which === 27  && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key\n          self.close.call(self, open_modal);\n        }\n      });\n\n      return true;\n    },\n\n    // PATCH #3: turning on key up capture only when a reveal window is open\n    key_up_off : function (scope) {\n      this.S('body').off('keyup.fndtn.reveal');\n      return true;\n    },\n\n    open : function (target, ajax_settings) {\n      var self = this,\n          modal;\n\n      if (target) {\n        if (typeof target.selector !== 'undefined') {\n          // Find the named node; only use the first one found, since the rest of the code assumes there's only one node\n          modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first();\n        } else {\n          modal = self.S(this.scope);\n\n          ajax_settings = target;\n        }\n      } else {\n        modal = self.S(this.scope);\n      }\n\n      var settings = modal.data(self.attr_name(true) + '-init');\n      settings = settings || this.settings;\n\n      if (modal.hasClass('open') && target.attr('data-reveal-id') == modal.attr('id')) {\n        return self.close(modal);\n      }\n\n      if (!modal.hasClass('open')) {\n        var open_modal = self.S('[' + self.attr_name() + '].open');\n\n        if (typeof modal.data('css-top') === 'undefined') {\n          modal.data('css-top', parseInt(modal.css('top'), 10))\n            .data('offset', this.cache_offset(modal));\n        }\n\n        this.key_up_on(modal);    // PATCH #3: turning on key up capture only when a reveal window is open\n\n        modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal');\n\n        if (open_modal.length < 1) {\n          this.toggle_bg(modal, true);\n        }\n\n        if (typeof ajax_settings === 'string') {\n          ajax_settings = {\n            url : ajax_settings\n          };\n        }\n\n        if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {\n          if (open_modal.length > 0) {\n            if (settings.multiple_opened) {\n              this.to_back(open_modal);\n            } else {\n              this.hide(open_modal, settings.css.close);\n            }\n          }\n\n          this.show(modal, settings.css.open);\n        } else {\n          var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;\n\n          $.extend(ajax_settings, {\n            success : function (data, textStatus, jqXHR) {\n              if ( $.isFunction(old_success) ) {\n                var result = old_success(data, textStatus, jqXHR);\n                if (typeof result == 'string') {\n                  data = result;\n                }\n              }\n\n              modal.html(data);\n              self.S(modal).foundation('section', 'reflow');\n              self.S(modal).children().foundation();\n\n              if (open_modal.length > 0) {\n                if (settings.multiple_opened) {\n                  this.to_back(open_modal);\n                } else {\n                  this.hide(open_modal, settings.css.close);\n                }\n              }\n              self.show(modal, settings.css.open);\n            }\n          });\n\n          $.ajax(ajax_settings);\n        }\n      }\n      self.S(window).trigger('resize');\n    },\n\n    close : function (modal) {\n      var modal = modal && modal.length ? modal : this.S(this.scope),\n          open_modals = this.S('[' + this.attr_name() + '].open'),\n          settings = modal.data(this.attr_name(true) + '-init') || this.settings;\n\n      if (open_modals.length > 0) {\n        this.locked = true;\n        this.key_up_off(modal);   // PATCH #3: turning on key up capture only when a reveal window is open\n        modal.trigger('close').trigger('close.fndtn.reveal');\n        \n        if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) {\n          this.toggle_bg(modal, false);\n          this.to_front(modal);\n        }\n        \n        if (settings.multiple_opened) {\n          this.hide(modal, settings.css.close, settings);\n          this.to_front($($.makeArray(open_modals).reverse()[1]));\n        } else {\n          this.hide(open_modals, settings.css.close, settings);\n        }\n      }\n    },\n\n    close_targets : function () {\n      var base = '.' + this.settings.dismiss_modal_class;\n\n      if (this.settings.close_on_background_click) {\n        return base + ', .' + this.settings.bg_class;\n      }\n\n      return base;\n    },\n\n    toggle_bg : function (modal, state) {\n      if (this.S('.' + this.settings.bg_class).length === 0) {\n        this.settings.bg = $('<div />', {'class': this.settings.bg_class})\n          .appendTo('body').hide();\n      }\n\n      var visible = this.settings.bg.filter(':visible').length > 0;\n      if ( state != visible ) {\n        if ( state == undefined ? visible : !state ) {\n          this.hide(this.settings.bg);\n        } else {\n          this.show(this.settings.bg);\n        }\n      }\n    },\n\n    show : function (el, css) {\n      // is modal\n      if (css) {\n        var settings = el.data(this.attr_name(true) + '-init') || this.settings,\n            root_element = settings.root_element;\n\n        if (el.parent(root_element).length === 0) {\n          var placeholder = el.wrap('<div style=\"display: none;\" />').parent();\n\n          el.on('closed.fndtn.reveal.wrapped', function () {\n            el.detach().appendTo(placeholder);\n            el.unwrap().unbind('closed.fndtn.reveal.wrapped');\n          });\n\n          el.detach().appendTo(root_element);\n        }\n\n        var animData = getAnimationData(settings.animation);\n        if (!animData.animate) {\n          this.locked = false;\n        }\n        if (animData.pop) {\n          css.top = $(window).scrollTop() - el.data('offset') + 'px';\n          var end_css = {\n            top: $(window).scrollTop() + el.data('css-top') + 'px',\n            opacity: 1\n          };\n\n          return setTimeout(function () {\n            return el\n              .css(css)\n              .animate(end_css, settings.animation_speed, 'linear', function () {\n                this.locked = false;\n                el.trigger('opened').trigger('opened.fndtn.reveal');\n              }.bind(this))\n              .addClass('open');\n          }.bind(this), settings.animation_speed / 2);\n        }\n\n        if (animData.fade) {\n          css.top = $(window).scrollTop() + el.data('css-top') + 'px';\n          var end_css = {opacity: 1};\n\n          return setTimeout(function () {\n            return el\n              .css(css)\n              .animate(end_css, settings.animation_speed, 'linear', function () {\n                this.locked = false;\n                el.trigger('opened').trigger('opened.fndtn.reveal');\n              }.bind(this))\n              .addClass('open');\n          }.bind(this), settings.animation_speed / 2);\n        }\n\n        return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened').trigger('opened.fndtn.reveal');\n      }\n\n      var settings = this.settings;\n\n      // should we animate the background?\n      if (getAnimationData(settings.animation).fade) {\n        return el.fadeIn(settings.animation_speed / 2);\n      }\n\n      this.locked = false;\n\n      return el.show();\n    },\n    \n    to_back : function(el) {\n      el.addClass('toback');\n    },\n    \n    to_front : function(el) {\n      el.removeClass('toback');\n    },\n\n    hide : function (el, css) {\n      // is modal\n      if (css) {\n        var settings = el.data(this.attr_name(true) + '-init');\n        settings = settings || this.settings;\n\n        var animData = getAnimationData(settings.animation);\n        if (!animData.animate) {\n          this.locked = false;\n        }\n        if (animData.pop) {\n          var end_css = {\n            top: - $(window).scrollTop() - el.data('offset') + 'px',\n            opacity: 0\n          };\n\n          return setTimeout(function () {\n            return el\n              .animate(end_css, settings.animation_speed, 'linear', function () {\n                this.locked = false;\n                el.css(css).trigger('closed').trigger('closed.fndtn.reveal');\n              }.bind(this))\n              .removeClass('open');\n          }.bind(this), settings.animation_speed / 2);\n        }\n\n        if (animData.fade) {\n          var end_css = {opacity : 0};\n\n          return setTimeout(function () {\n            return el\n              .animate(end_css, settings.animation_speed, 'linear', function () {\n                this.locked = false;\n                el.css(css).trigger('closed').trigger('closed.fndtn.reveal');\n              }.bind(this))\n              .removeClass('open');\n          }.bind(this), settings.animation_speed / 2);\n        }\n\n        return el.hide().css(css).removeClass('open').trigger('closed').trigger('closed.fndtn.reveal');\n      }\n\n      var settings = this.settings;\n\n      // should we animate the background?\n      if (getAnimationData(settings.animation).fade) {\n        return el.fadeOut(settings.animation_speed / 2);\n      }\n\n      return el.hide();\n    },\n\n    close_video : function (e) {\n      var video = $('.flex-video', e.target),\n          iframe = $('iframe', video);\n\n      if (iframe.length > 0) {\n        iframe.attr('data-src', iframe[0].src);\n        iframe.attr('src', iframe.attr('src'));\n        video.hide();\n      }\n    },\n\n    open_video : function (e) {\n      var video = $('.flex-video', e.target),\n          iframe = video.find('iframe');\n\n      if (iframe.length > 0) {\n        var data_src = iframe.attr('data-src');\n        if (typeof data_src === 'string') {\n          iframe[0].src = iframe.attr('data-src');\n        } else {\n          var src = iframe[0].src;\n          iframe[0].src = undefined;\n          iframe[0].src = src;\n        }\n        video.show();\n      }\n    },\n\n    data_attr : function (str) {\n      if (this.namespace.length > 0) {\n        return this.namespace + '-' + str;\n      }\n\n      return str;\n    },\n\n    cache_offset : function (modal) {\n      var offset = modal.show().height() + parseInt(modal.css('top'), 10);\n\n      modal.hide();\n\n      return offset;\n    },\n\n    off : function () {\n      $(this.scope).off('.fndtn.reveal');\n    },\n\n    reflow : function () {}\n  };\n\n  /*\n   * getAnimationData('popAndFade') // {animate: true,  pop: true,  fade: true}\n   * getAnimationData('fade')       // {animate: true,  pop: false, fade: true}\n   * getAnimationData('pop')        // {animate: true,  pop: true,  fade: false}\n   * getAnimationData('foo')        // {animate: false, pop: false, fade: false}\n   * getAnimationData(null)         // {animate: false, pop: false, fade: false}\n   */\n  function getAnimationData(str) {\n    var fade = /fade/i.test(str);\n    var pop = /pop/i.test(str);\n    return {\n      animate : fade || pop,\n      pop : pop,\n      fade : fade\n    };\n  }\n}(jQuery, window, window.document));\n\ndefine(\"foundation.reveal\", [\"foundation.core\"], function(){});\n\n",";(function ($, window, document, undefined) {\n  'use strict';\n\n  Foundation.libs.tab = {\n    name : 'tab',\n\n    version : '5.5.1',\n\n    settings : {\n      active_class : 'active',\n      callback : function () {},\n      deep_linking : false,\n      scroll_to_content : true,\n      is_hover : false\n    },\n\n    default_tab_hashes : [],\n\n    init : function (scope, method, options) {\n      var self = this,\n          S = this.S;\n\n      this.bindings(method, options);\n\n      // store the initial href, which is used to allow correct behaviour of the\n      // browser back button when deep linking is turned on.\n      self.entry_location = window.location.href;\n\n      this.handle_location_hash_change();\n\n      // Store the default active tabs which will be referenced when the\n      // location hash is absent, as in the case of navigating the tabs and\n      // returning to the first viewing via the browser Back button.\n      S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () {\n        self.default_tab_hashes.push(this.hash);\n      });\n    },\n\n    events : function () {\n      var self = this,\n          S = this.S;\n\n      var usual_tab_behavior =  function (e) {\n          var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');\n          if (!settings.is_hover || Modernizr.touch) {\n            e.preventDefault();\n            e.stopPropagation();\n            self.toggle_active_tab(S(this).parent());\n          }\n        };\n\n      S(this.scope)\n        .off('.tab')\n        // Click event: tab title\n        .on('focus.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )\n        .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )\n        // Hover event: tab title\n        .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {\n          var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');\n          if (settings.is_hover) {\n            self.toggle_active_tab(S(this).parent());\n          }\n        });\n\n      // Location hash change event\n      S(window).on('hashchange.fndtn.tab', function (e) {\n        e.preventDefault();\n        self.handle_location_hash_change();\n      });\n    },\n\n    handle_location_hash_change : function () {\n\n      var self = this,\n          S = this.S;\n\n      S('[' + this.attr_name() + ']', this.scope).each(function () {\n        var settings = S(this).data(self.attr_name(true) + '-init');\n        if (settings.deep_linking) {\n          // Match the location hash to a label\n          var hash;\n          if (settings.scroll_to_content) {\n            hash = self.scope.location.hash;\n          } else {\n            // prefix the hash to prevent anchor scrolling\n            hash = self.scope.location.hash.replace('fndtn-', '');\n          }\n          if (hash != '') {\n            // Check whether the location hash references a tab content div or\n            // another element on the page (inside or outside the tab content div)\n            var hash_element = S(hash);\n            if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) {\n              // Tab content div\n              self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent());\n            } else {\n              // Not the tab content div. If inside the tab content, find the\n              // containing tab and toggle it as active.\n              var hash_tab_container_id = hash_element.closest('.content').attr('id');\n              if (hash_tab_container_id != undefined) {\n                self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash);\n              }\n            }\n          } else {\n            // Reference the default tab hashes which were initialized in the init function\n            for (var ind = 0; ind < self.default_tab_hashes.length; ind++) {\n              self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent());\n            }\n          }\n        }\n       });\n     },\n\n    toggle_active_tab : function (tab, location_hash) {\n      var self = this,\n          S = self.S,\n          tabs = tab.closest('[' + this.attr_name() + ']'),\n          tab_link = tab.find('a'),\n          anchor = tab.children('a').first(),\n          target_hash = '#' + anchor.attr('href').split('#')[1],\n          target = S(target_hash),\n          siblings = tab.siblings(),\n          settings = tabs.data(this.attr_name(true) + '-init'),\n          interpret_keyup_action = function (e) {\n            // Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js\n\n            // define current, previous and next (possible) tabs\n\n            var $original = $(this);\n            var $prev = $(this).parents('li').prev().children('[role=\"tab\"]');\n            var $next = $(this).parents('li').next().children('[role=\"tab\"]');\n            var $target;\n\n            // find the direction (prev or next)\n\n            switch (e.keyCode) {\n              case 37:\n                $target = $prev;\n                break;\n              case 39:\n                $target = $next;\n                break;\n              default:\n                $target = false\n                  break;\n            }\n\n            if ($target.length) {\n              $original.attr({\n                'tabindex' : '-1',\n                'aria-selected' : null\n              });\n              $target.attr({\n                'tabindex' : '0',\n                'aria-selected' : true\n              }).focus();\n            }\n\n            // Hide panels\n\n            $('[role=\"tabpanel\"]')\n              .attr('aria-hidden', 'true');\n\n            // Show panel which corresponds to target\n\n            $('#' + $(document.activeElement).attr('href').substring(1))\n              .attr('aria-hidden', null);\n\n          },\n          go_to_hash = function(hash) {\n            // This function allows correct behaviour of the browser's back button when deep linking is enabled. Without it\n            // the user would get continually redirected to the default hash.\n            var is_entry_location = window.location.href === self.entry_location,\n                default_hash = settings.scroll_to_content ? self.default_tab_hashes[0] : is_entry_location ? window.location.hash :'fndtn-' + self.default_tab_hashes[0].replace('#', '')\n\n            if (!(is_entry_location && hash === default_hash)) {\n              window.location.hash = hash;\n            }\n          };\n\n      // allow usage of data-tab-content attribute instead of href\n      if (S(this).data(this.data_attr('tab-content'))) {\n        target_hash = '#' + S(this).data(this.data_attr('tab-content')).split('#')[1];\n        target = S(target_hash);\n      }\n\n      if (settings.deep_linking) {\n\n        if (settings.scroll_to_content) {\n\n          // retain current hash to scroll to content\n          go_to_hash(location_hash || target_hash);\n\n          if (location_hash == undefined || location_hash == target_hash) {\n            tab.parent()[0].scrollIntoView();\n          } else {\n            S(target_hash)[0].scrollIntoView();\n          }\n        } else {\n          // prefix the hashes so that the browser doesn't scroll down\n          if (location_hash != undefined) {\n            go_to_hash('fndtn-' + location_hash.replace('#', ''));\n          } else {\n            go_to_hash('fndtn-' + target_hash.replace('#', ''));\n          }\n        }\n      }\n\n      // WARNING: The activation and deactivation of the tab content must\n      // occur after the deep linking in order to properly refresh the browser\n      // window (notably in Chrome).\n      // Clean up multiple attr instances to done once\n      tab.addClass(settings.active_class).triggerHandler('opened');\n      tab_link.attr({'aria-selected' : 'true',  tabindex : 0});\n      siblings.removeClass(settings.active_class)\n      siblings.find('a').attr({'aria-selected' : 'false',  tabindex : -1});\n      target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true',  tabindex : -1});\n      target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex');\n      settings.callback(tab);\n      target.triggerHandler('toggled', [tab]);\n      tabs.triggerHandler('toggled', [target]);\n\n      tab_link.off('keydown').on('keydown', interpret_keyup_action );\n    },\n\n    data_attr : function (str) {\n      if (this.namespace.length > 0) {\n        return this.namespace + '-' + str;\n      }\n\n      return str;\n    },\n\n    off : function () {},\n\n    reflow : function () {}\n  };\n}(jQuery, window, window.document));\n\ndefine(\"foundation.tab\", [\"foundation.core\"], function(){});\n\n",";(function ($, window, document, undefined) {\n  'use strict';\n\n  Foundation.libs.dropdown = {\n    name : 'dropdown',\n\n    version : '5.5.1',\n\n    settings : {\n      active_class : 'open',\n      disabled_class : 'disabled',\n      mega_class : 'mega',\n      align : 'bottom',\n      is_hover : false,\n      hover_timeout : 150,\n      opened : function () {},\n      closed : function () {}\n    },\n\n    init : function (scope, method, options) {\n      Foundation.inherit(this, 'throttle');\n\n      $.extend(true, this.settings, method, options);\n      this.bindings(method, options);\n    },\n\n    events : function (scope) {\n      var self = this,\n          S = self.S;\n\n      S(this.scope)\n        .off('.dropdown')\n        .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {\n          var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;\n          if (!settings.is_hover || Modernizr.touch) {\n            e.preventDefault();\n            if (S(this).parent('[data-reveal-id]')) {\n              e.stopPropagation();\n            }\n            self.toggle($(this));\n          }\n        })\n        .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {\n          var $this = S(this),\n              dropdown,\n              target;\n\n          clearTimeout(self.timeout);\n\n          if ($this.data(self.data_attr())) {\n            dropdown = S('#' + $this.data(self.data_attr()));\n            target = $this;\n          } else {\n            dropdown = $this;\n            target = S('[' + self.attr_name() + '=\"' + dropdown.attr('id') + '\"]');\n          }\n\n          var settings = target.data(self.attr_name(true) + '-init') || self.settings;\n\n          if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) {\n            self.closeall.call(self);\n          }\n\n          if (settings.is_hover) {\n            self.open.apply(self, [dropdown, target]);\n          }\n        })\n        .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {\n          var $this = S(this);\n          var settings;\n\n          if ($this.data(self.data_attr())) {\n              settings = $this.data(self.data_attr(true) + '-init') || self.settings;\n          } else {\n              var target   = S('[' + self.attr_name() + '=\"' + S(this).attr('id') + '\"]'),\n                  settings = target.data(self.attr_name(true) + '-init') || self.settings;\n          }\n\n          self.timeout = setTimeout(function () {\n            if ($this.data(self.data_attr())) {\n              if (settings.is_hover) {\n                self.close.call(self, S('#' + $this.data(self.data_attr())));\n              }\n            } else {\n              if (settings.is_hover) {\n                self.close.call(self, $this);\n              }\n            }\n          }.bind(this), settings.hover_timeout);\n        })\n        .on('click.fndtn.dropdown', function (e) {\n          var parent = S(e.target).closest('[' + self.attr_name() + '-content]');\n          var links  = parent.find('a');\n\n          if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') {\n              self.close.call(self, S('[' + self.attr_name() + '-content]'));\n          }\n\n          if (e.target !== document && !$.contains(document.documentElement, e.target)) {\n            return;\n          }\n\n          if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {\n            return;\n          }\n\n          if (!(S(e.target).data('revealId')) &&\n            (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||\n              $.contains(parent.first()[0], e.target)))) {\n            e.stopPropagation();\n            return;\n          }\n\n          self.close.call(self, S('[' + self.attr_name() + '-content]'));\n        })\n        .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {\n          self.settings.opened.call(this);\n        })\n        .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {\n          self.settings.closed.call(this);\n        });\n\n      S(window)\n        .off('.dropdown')\n        .on('resize.fndtn.dropdown', self.throttle(function () {\n          self.resize.call(self);\n        }, 50));\n\n      this.resize();\n    },\n\n    close : function (dropdown) {\n      var self = this;\n      dropdown.each(function () {\n        var original_target = $('[' + self.attr_name() + '=' + dropdown[0].id + ']') || $('aria-controls=' + dropdown[0].id + ']');\n        original_target.attr('aria-expanded', 'false');\n        if (self.S(this).hasClass(self.settings.active_class)) {\n          self.S(this)\n            .css(Foundation.rtl ? 'right' : 'left', '-99999px')\n            .attr('aria-hidden', 'true')\n            .removeClass(self.settings.active_class)\n            .prev('[' + self.attr_name() + ']')\n            .removeClass(self.settings.active_class)\n            .removeData('target');\n\n          self.S(this).trigger('closed').trigger('closed.fndtn.dropdown', [dropdown]);\n        }\n      });\n      dropdown.removeClass('f-open-' + this.attr_name(true));\n    },\n\n    closeall : function () {\n      var self = this;\n      $.each(self.S('.f-open-' + this.attr_name(true)), function () {\n        self.close.call(self, self.S(this));\n      });\n    },\n\n    open : function (dropdown, target) {\n      this\n        .css(dropdown\n        .addClass(this.settings.active_class), target);\n      dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);\n      dropdown.data('target', target.get(0)).trigger('opened').trigger('opened.fndtn.dropdown', [dropdown, target]);\n      dropdown.attr('aria-hidden', 'false');\n      target.attr('aria-expanded', 'true');\n      dropdown.focus();\n      dropdown.addClass('f-open-' + this.attr_name(true));\n    },\n\n    data_attr : function () {\n      if (this.namespace.length > 0) {\n        return this.namespace + '-' + this.name;\n      }\n\n      return this.name;\n    },\n\n    toggle : function (target) {\n      if (target.hasClass(this.settings.disabled_class)) {\n        return;\n      }\n      var dropdown = this.S('#' + target.data(this.data_attr()));\n      if (dropdown.length === 0) {\n        // No dropdown found, not continuing\n        return;\n      }\n\n      this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));\n\n      if (dropdown.hasClass(this.settings.active_class)) {\n        this.close.call(this, dropdown);\n        if (dropdown.data('target') !== target.get(0)) {\n          this.open.call(this, dropdown, target);\n        }\n      } else {\n        this.open.call(this, dropdown, target);\n      }\n    },\n\n    resize : function () {\n      var dropdown = this.S('[' + this.attr_name() + '-content].open');\n      var target = $(dropdown.data(\"target\"));\n\n      if (dropdown.length && target.length) {\n        this.css(dropdown, target);\n      }\n    },\n\n    css : function (dropdown, target) {\n      var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),\n          settings = target.data(this.attr_name(true) + '-init') || this.settings;\n\n      this.clear_idx();\n\n      if (this.small()) {\n        var p = this.dirs.bottom.call(dropdown, target, settings);\n\n        dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({\n          position : 'absolute',\n          width : '95%',\n          'max-width' : 'none',\n          top : p.top\n        });\n\n        dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);\n      } else {\n\n        this.style(dropdown, target, settings);\n      }\n\n      return dropdown;\n    },\n\n    style : function (dropdown, target, settings) {\n      var css = $.extend({position : 'absolute'},\n        this.dirs[settings.align].call(dropdown, target, settings));\n\n      dropdown.attr('style', '').css(css);\n    },\n\n    // return CSS property object\n    // `this` is the dropdown\n    dirs : {\n      // Calculate target offset\n      _base : function (t) {\n        var o_p = this.offsetParent(),\n            o = o_p.offset(),\n            p = t.offset();\n\n        p.top -= o.top;\n        p.left -= o.left;\n\n        //set some flags on the p object to pass along\n        p.missRight = false;\n        p.missTop = false;\n        p.missLeft = false;\n        p.leftRightFlag = false;\n\n        //lets see if the panel will be off the screen\n        //get the actual width of the page and store it\n        var actualBodyWidth;\n        if (document.getElementsByClassName('row')[0]) {\n          actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;\n        } else {\n          actualBodyWidth = window.outerWidth;\n        }\n\n        var actualMarginWidth = (window.outerWidth - actualBodyWidth) / 2;\n        var actualBoundary = actualBodyWidth;\n\n        if (!this.hasClass('mega')) {\n          //miss top\n          if (t.offset().top <= this.outerHeight()) {\n            p.missTop = true;\n            actualBoundary = window.outerWidth - actualMarginWidth;\n            p.leftRightFlag = true;\n          }\n\n          //miss right\n          if (t.offset().left + this.outerWidth() > t.offset().left + actualMarginWidth && t.offset().left - actualMarginWidth > this.outerWidth()) {\n            p.missRight = true;\n            p.missLeft = false;\n          }\n\n          //miss left\n          if (t.offset().left - this.outerWidth() <= 0) {\n            p.missLeft = true;\n            p.missRight = false;\n          }\n        }\n\n        return p;\n      },\n\n      top : function (t, s) {\n        var self = Foundation.libs.dropdown,\n            p = self.dirs._base.call(this, t);\n\n        this.addClass('drop-top');\n\n        if (p.missTop == true) {\n          p.top = p.top + t.outerHeight() + this.outerHeight();\n          this.removeClass('drop-top');\n        }\n\n        if (p.missRight == true) {\n          p.left = p.left - this.outerWidth() + t.outerWidth();\n        }\n\n        if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {\n          self.adjust_pip(this, t, s, p);\n        }\n\n        if (Foundation.rtl) {\n          return {left : p.left - this.outerWidth() + t.outerWidth(),\n            top : p.top - this.outerHeight()};\n        }\n\n        return {left : p.left, top : p.top - this.outerHeight()};\n      },\n\n      bottom : function (t, s) {\n        var self = Foundation.libs.dropdown,\n            p = self.dirs._base.call(this, t);\n\n        if (p.missRight == true) {\n          p.left = p.left - this.outerWidth() + t.outerWidth();\n        }\n\n        if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {\n          self.adjust_pip(this, t, s, p);\n        }\n\n        if (self.rtl) {\n          return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()};\n        }\n\n        return {left : p.left, top : p.top + t.outerHeight()};\n      },\n\n      left : function (t, s) {\n        var p = Foundation.libs.dropdown.dirs._base.call(this, t);\n\n        this.addClass('drop-left');\n\n        if (p.missLeft == true) {\n          p.left =  p.left + this.outerWidth();\n          p.top = p.top + t.outerHeight();\n          this.removeClass('drop-left');\n        }\n\n        return {left : p.left - this.outerWidth(), top : p.top};\n      },\n\n      right : function (t, s) {\n        var p = Foundation.libs.dropdown.dirs._base.call(this, t);\n\n        this.addClass('drop-right');\n\n        if (p.missRight == true) {\n          p.left = p.left - this.outerWidth();\n          p.top = p.top + t.outerHeight();\n          this.removeClass('drop-right');\n        } else {\n          p.triggeredRight = true;\n        }\n\n        var self = Foundation.libs.dropdown;\n\n        if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {\n          self.adjust_pip(this, t, s, p);\n        }\n\n        return {left : p.left + t.outerWidth(), top : p.top};\n      }\n    },\n\n    // Insert rule to style psuedo elements\n    adjust_pip : function (dropdown, target, settings, position) {\n      var sheet = Foundation.stylesheet,\n          pip_offset_base = 8;\n\n      if (dropdown.hasClass(settings.mega_class)) {\n        pip_offset_base = position.left + (target.outerWidth() / 2) - 8;\n      } else if (this.small()) {\n        pip_offset_base += position.left - 8;\n      }\n\n      this.rule_idx = sheet.cssRules.length;\n\n      //default\n      var sel_before = '.f-dropdown.open:before',\n          sel_after  = '.f-dropdown.open:after',\n          css_before = 'left: ' + pip_offset_base + 'px;',\n          css_after  = 'left: ' + (pip_offset_base - 1) + 'px;';\n\n      if (position.missRight == true) {\n        pip_offset_base = dropdown.outerWidth() - 23;\n        sel_before = '.f-dropdown.open:before',\n        sel_after  = '.f-dropdown.open:after',\n        css_before = 'left: ' + pip_offset_base + 'px;',\n        css_after  = 'left: ' + (pip_offset_base - 1) + 'px;';\n      }\n\n      //just a case where right is fired, but its not missing right\n      if (position.triggeredRight == true) {\n        sel_before = '.f-dropdown.open:before',\n        sel_after  = '.f-dropdown.open:after',\n        css_before = 'left:-12px;',\n        css_after  = 'left:-14px;';\n      }\n\n      if (sheet.insertRule) {\n        sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);\n        sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);\n      } else {\n        sheet.addRule(sel_before, css_before, this.rule_idx);\n        sheet.addRule(sel_after, css_after, this.rule_idx + 1);\n      }\n    },\n\n    // Remove old dropdown rule index\n    clear_idx : function () {\n      var sheet = Foundation.stylesheet;\n\n      if (typeof this.rule_idx !== 'undefined') {\n        sheet.deleteRule(this.rule_idx);\n        sheet.deleteRule(this.rule_idx);\n        delete this.rule_idx;\n      }\n    },\n\n    small : function () {\n      return matchMedia(Foundation.media_queries.small).matches &&\n        !matchMedia(Foundation.media_queries.medium).matches;\n    },\n\n    off : function () {\n      this.S(this.scope).off('.fndtn.dropdown');\n      this.S('html, body').off('.fndtn.dropdown');\n      this.S(window).off('.fndtn.dropdown');\n      this.S('[data-dropdown-content]').off('.fndtn.dropdown');\n    },\n\n    reflow : function () {}\n  };\n}(jQuery, window, window.document));\n\ndefine(\"foundation.dropdown\", [\"foundation.core\"], function(){});\n\n","define('sunstone-config',['require','jquery'],function(require) {\n  require('jquery');\n  \n  // Clone the local config object in a private var\n  var _config = $.extend(true, {}, config);\n\n  var Config = {\n    'isTabEnabled': function(tabName) {\n      var enabled = _config['view']['enabled_tabs'][tabName];\n      return enabled;\n    },\n\n    \"isTabActionEnabled\": function(tabName, actionName, panelName) {\n      var enabled = false;\n      var configTab = _config['view']['tabs'][tabName];\n\n      if (configTab != undefined) {\n        if (panelName) {\n          enabled = configTab['panel_tabs_actions'][panelName][actionName];\n        } else {\n          enabled = configTab['actions'][actionName];\n        }\n      }\n\n      return enabled;\n    },\n\n    \"isTabPanelEnabled\": function(tabName, panelTabName) {\n      if (_config['view']['tabs'][tabName]) {\n        var enabled = _config['view']['tabs'][tabName]['panel_tabs'][panelTabName];\n        return enabled;\n      } else {\n        return false;\n      }\n    },\n\n    \"isFeatureEnabled\": function(featureName) {\n      if (_config['view']['features'] && _config['view']['features'][featureName]) {\n        return true;\n      } else {\n        return false;\n      }\n    },\n\n    \"tabTableColumns\": function(tabName) {\n      if (!_config['view']['tabs'][tabName]) {\n        return [];\n      }\n      \n      var columns = _config['view']['tabs'][tabName]['table_columns'];\n\n      if (columns) {\n        return columns;\n      } else {\n        return [];\n      }\n    },\n\n    \"isTemplateCreationTabEnabled\": function(templateTabName) {\n      if (_config['view']['tabs']['templates-tab']) {\n        var enabled = _config['view']['tabs']['templates-tab']['template_creation_tabs'][templateTabName];\n        return enabled;\n      } else {\n        return false;\n      }\n    },\n\n    \"dashboardWidgets\": function(perRow) {\n      if (!_config['view']['tabs']['dashboard-tab']) {\n        return []\n      }\n\n      var widgets = _config['view']['tabs']['dashboard-tab'][perRow];\n\n      if (widgets) {\n        return widgets;\n      } else {\n        return [];\n      }\n    },\n\n    \"tableOrder\": function() {\n      return _config['user_config'][\"table_order\"];\n    },\n\n    \"provision\": {\n      \"dashboard\": {\n        \"isEnabled\": function(widget) {\n          if (_config['view']['tabs']['provision-tab']) {\n            var enabled = _config['view']['tabs']['provision-tab']['dashboard'][widget];\n            return enabled;\n          } else {\n            return false;\n          }\n        }\n      },\n      \"create_vm\": {\n        \"isEnabled\": function(widget) {\n          if (_config['view']['tabs']['provision-tab'] && _config['view']['tabs']['provision-tab'][\"create_vm\"]) {\n            return _config['view']['tabs']['provision-tab']['create_vm'][widget];\n          } else {\n            return false;\n          }\n        }\n      },\n      \"logo\": (_config['view'][\"provision_logo\"] || \"images/one_small_logo.png\")\n    },\n\n    'autoRefresh' : _config['view']['autorefresh'],\n    'tableOrder': _config['user_config']['table_order'],\n    'vncProxyPort': _config['system_config']['vnc_proxy_port'],\n    'vncWSS': _config['user_config']['vnc_wss']\n  }\n\n  return Config;\n});\n\n","define('utils/locale',['require'],function(require) {\n  var LANGUAGE_OPTIONS = \n    '<option value=\"en_US\">English (en_US)</option>\\\n    <option value=\"ca\">Catalan (ca)</option>\\\n    <option value=\"cs_CZ\">Czech (cs_CZ)</option>\\\n    <option value=\"nl_NL\">Dutch (nl_NL)</option>\\\n    <option value=\"da\">Danish (da)</option>\\\n    <option value=\"fr_FR\">French (fr_FR)</option>\\\n    <option value=\"de\">German (de)</option>\\\n    <option value=\"el_GR\">Greek (el_GR)</option>\\\n    <option value=\"it_IT\">Italian (it_IT)</option>\\\n    <option value=\"ja\">Japanese (ja)</option>\\\n    <option value=\"lt_LT\">Lithuanian (lt_LT)</option>\\\n    <option value=\"fa_IR\">Persian (fa_IR)</option>\\\n    <option value=\"pl\">Polish (pl)</option>\\\n    <option value=\"pt_BR\">Portuguese (pt_BR)</option>\\\n    <option value=\"pt_PT\">Portuguese (pt_PT)</option>\\\n    <option value=\"ru_RU\">Russian (ru_RU)</option>\\\n    <option value=\"zh_CN\">Simplified Chinese (zh_CN)</option>\\\n    <option value=\"sk_SK\">Slovak (sk_SK)</option>\\\n    <option value=\"es_ES\">Spanish (es_ES)</option>\\\n    <option value=\"zh_TW\">Traditional Chinese (zh_TW)</option>';\n\n  var MONTHS = new Array(\n        tr(\"January\"), tr(\"February\"), tr(\"March\"), tr(\"April\"), tr(\"May\"),\n        tr(\"June\"), tr(\"July\"), tr(\"August\"), tr(\"September\"), tr(\"October\"),\n        tr(\"November\"), tr(\"December\"));\n\n  function tr(str) {\n    // TODO Add locale from the locale folder\n    // var tmp = locale[str];\n    var tmp;\n    if (tmp == null || tmp == \"\") {\n      tmp = str;\n    }\n    return tmp;\n  };\n\n  return {\n    'tr': tr,\n    'months': MONTHS,\n    'language_options': LANGUAGE_OPTIONS\n  }\n});\n\n","!function(a){a.jGrowl=function(b,c){0===a(\"#jGrowl\").length&&a('<div id=\"jGrowl\"></div>').addClass(c&&c.position?c.position:a.jGrowl.defaults.position).appendTo(c&&c.appendTo?c.appendTo:a.jGrowl.defaults.appendTo),a(\"#jGrowl\").jGrowl(b,c)},a.fn.jGrowl=function(b,c){if(void 0===c&&a.isPlainObject(b)&&(c=b,b=c.message),a.isFunction(this.each)){var d=arguments;return this.each(function(){void 0===a(this).data(\"jGrowl.instance\")&&(a(this).data(\"jGrowl.instance\",a.extend(new a.fn.jGrowl,{notifications:[],element:null,interval:null})),a(this).data(\"jGrowl.instance\").startup(this)),a.isFunction(a(this).data(\"jGrowl.instance\")[b])?a(this).data(\"jGrowl.instance\")[b].apply(a(this).data(\"jGrowl.instance\"),a.makeArray(d).slice(1)):a(this).data(\"jGrowl.instance\").create(b,c)})}},a.extend(a.fn.jGrowl.prototype,{defaults:{pool:0,header:\"\",group:\"\",sticky:!1,position:\"top-right\",appendTo:\"body\",glue:\"after\",theme:\"default\",themeState:\"highlight\",corners:\"10px\",check:250,life:3e3,closeDuration:\"normal\",openDuration:\"normal\",easing:\"swing\",closer:!0,closeTemplate:\"&times;\",closerTemplate:\"<div>[ close all ]</div>\",log:function(){},beforeOpen:function(){},afterOpen:function(){},open:function(){},beforeClose:function(){},close:function(){},click:function(){},animateOpen:{opacity:\"show\"},animateClose:{opacity:\"hide\"}},notifications:[],element:null,interval:null,create:function(b,c){var d=a.extend({},this.defaults,c);\"undefined\"!=typeof d.speed&&(d.openDuration=d.speed,d.closeDuration=d.speed),this.notifications.push({message:b,options:d}),d.log.apply(this.element,[this.element,b,d])},render:function(b){var c=this,d=b.message,e=b.options;e.themeState=\"\"===e.themeState?\"\":\"ui-state-\"+e.themeState;var f=a(\"<div/>\").addClass(\"jGrowl-notification alert \"+e.themeState+\" ui-corner-all\"+(void 0!==e.group&&\"\"!==e.group?\" \"+e.group:\"\")).append(a(\"<button/>\").addClass(\"jGrowl-close\").html(e.closeTemplate)).append(a(\"<div/>\").addClass(\"jGrowl-header\").html(e.header)).append(a(\"<div/>\").addClass(\"jGrowl-message\").html(d)).data(\"jGrowl\",e).addClass(e.theme).children(\".jGrowl-close\").bind(\"click.jGrowl\",function(){return a(this).parent().trigger(\"jGrowl.beforeClose\"),!1}).parent();a(f).bind(\"mouseover.jGrowl\",function(){a(\".jGrowl-notification\",c.element).data(\"jGrowl.pause\",!0)}).bind(\"mouseout.jGrowl\",function(){a(\".jGrowl-notification\",c.element).data(\"jGrowl.pause\",!1)}).bind(\"jGrowl.beforeOpen\",function(){e.beforeOpen.apply(f,[f,d,e,c.element])!==!1&&a(this).trigger(\"jGrowl.open\")}).bind(\"jGrowl.open\",function(){e.open.apply(f,[f,d,e,c.element])!==!1&&(\"after\"==e.glue?a(\".jGrowl-notification:last\",c.element).after(f):a(\".jGrowl-notification:first\",c.element).before(f),a(this).animate(e.animateOpen,e.openDuration,e.easing,function(){a.support.opacity===!1&&this.style.removeAttribute(\"filter\"),null!==a(this).data(\"jGrowl\")&&\"undefined\"!=typeof a(this).data(\"jGrowl\")&&(a(this).data(\"jGrowl\").created=new Date),a(this).trigger(\"jGrowl.afterOpen\")}))}).bind(\"jGrowl.afterOpen\",function(){e.afterOpen.apply(f,[f,d,e,c.element])}).bind(\"click\",function(){e.click.apply(f,[f.message,e,c.element])}).bind(\"jGrowl.beforeClose\",function(){e.beforeClose.apply(f,[f,d,e,c.element])!==!1&&a(this).trigger(\"jGrowl.close\")}).bind(\"jGrowl.close\",function(){a(this).data(\"jGrowl.pause\",!0),a(this).animate(e.animateClose,e.closeDuration,e.easing,function(){a.isFunction(e.close)?e.close.apply(f,[f,d,e,c.element])!==!1&&a(this).remove():a(this).remove()})}).trigger(\"jGrowl.beforeOpen\"),\"\"!==e.corners&&void 0!==a.fn.corner&&a(f).corner(e.corners),a(\".jGrowl-notification:parent\",c.element).length>1&&0===a(\".jGrowl-closer\",c.element).length&&this.defaults.closer!==!1&&a(this.defaults.closerTemplate).addClass(\"jGrowl-closer \"+this.defaults.themeState+\" ui-corner-all\").addClass(this.defaults.theme).appendTo(c.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind(\"click.jGrowl\",function(){a(this).siblings().trigger(\"jGrowl.beforeClose\"),a.isFunction(c.defaults.closer)&&c.defaults.closer.apply(a(this).parent()[0],[a(this).parent()[0]])})},update:function(){a(this.element).find(\".jGrowl-notification:parent\").each(function(){void 0!==a(this).data(\"jGrowl\")&&void 0!==a(this).data(\"jGrowl\").created&&a(this).data(\"jGrowl\").created.getTime()+parseInt(a(this).data(\"jGrowl\").life,10)<(new Date).getTime()&&a(this).data(\"jGrowl\").sticky!==!0&&(void 0===a(this).data(\"jGrowl.pause\")||a(this).data(\"jGrowl.pause\")!==!0)&&a(this).trigger(\"jGrowl.beforeClose\")}),this.notifications.length>0&&(0===this.defaults.pool||a(this.element).find(\".jGrowl-notification:parent\").length<this.defaults.pool)&&this.render(this.notifications.shift()),a(this.element).find(\".jGrowl-notification:parent\").length<2&&a(this.element).find(\".jGrowl-closer\").animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){a(this).remove()})},startup:function(b){this.element=a(b).addClass(\"jGrowl\").append('<div class=\"jGrowl-notification\"></div>'),this.interval=setInterval(function(){a(b).data(\"jGrowl.instance\").update()},parseInt(this.defaults.check,10))},shutdown:function(){a(this.element).removeClass(\"jGrowl\").find(\".jGrowl-notification\").trigger(\"jGrowl.close\").parent().empty(),clearInterval(this.interval)},close:function(){a(this.element).find(\".jGrowl-notification\").each(function(){a(this).trigger(\"jGrowl.beforeClose\")})}}),a.jGrowl.defaults=a.fn.jGrowl.prototype.defaults}(jQuery);\n//# sourceMappingURL=jquery.jgrowl.map;\ndefine(\"jgrowl\", [\"jquery\"], function(){});\n\n","define('utils/notifier',['require','jgrowl','utils/locale'],function(require) {\n  require('jgrowl');\n\n  var Locale = require('utils/locale');\n\n  //Notification of submission of action\n  var _notifySubmit = function(action, args, extra_param) {\n    var action_text = action.replace(/OpenNebula\\./, '').replace(/\\./, ' ');\n\n    var msg = \"\";\n    if (!args || (typeof args == 'object' && args.constructor != Array)) {\n\n      msg += action_text;\n    } else {\n\n      msg += action_text + \": \" + args;\n    };\n    if (extra_param && extra_param.constructor != Object) {\n      msg += \" >> \" + extra_param;\n    };\n\n    $.jGrowl(msg, {theme: \"jGrowl-notify-submit\", position: \"bottom-right\"});\n  }\n\n  //Notification on error\n  var _notifyError = function(msg) {\n    $.jGrowl(msg, {theme: \"jGrowl-notify-error\", position: \"bottom-right\", sticky: true});\n  }\n\n  //Standard notification\n  var _notifyMessage = function(msg) {\n    $.jGrowl(msg, {theme: \"jGrowl-notify-submit\", position: \"bottom-right\"});\n  }\n\n  var _notifyCustom = function(title, msg, sticky) {\n    msg = (title ? title : \"\") + msg;\n    $.jGrowl(msg, {theme: \"jGrowl-notify-submit\", position: \"bottom-right\", sticky: sticky});\n  }\n\n  //standard handling for the server errors on ajax requests.\n  //Pops up a message with the information.\n  var _onError = function(request, error_json, container) {\n    var method;\n    var action;\n    var object;\n    var id;\n    var reason;\n    var m;\n    var message = error_json.error.message;\n\n    //redirect to login if unauthenticated\n    if (error_json.error.http_status == \"401\") {\n      window.location.href = \"login\";\n      return false;\n    };\n\n    if (!message) {\n      _notifyError(Locale.tr(\"Cannot contact server: is it running and reachable?\"));\n      return false;\n    };\n\n    if (error_json.error.http_status == \"404\") {\n      _notifyError(message);\n      return false;\n    }\n\n    if (container) {\n      container.show();\n      return false;\n    }\n\n    if (message.match(/^Network is unreachable .+$/)) {\n      _notifyError(Locale.tr(\"Network is unreachable: is OpenNebula running?\"));\n      return false;\n    };\n\n    //Parse known errors:\n    var get_error = /^\\[(\\w+)\\] Error getting ([\\w ]+) \\[(\\d+)\\]\\.$/;\n    var auth_error = /^\\[(\\w+)\\] User \\[(\\d+)\\] not authorized to perform action on ([\\w ]+).$/;\n\n    if (m = message.match(get_error)) {\n      method  = m[1];\n      action  = \"Show\";\n      object  = m[2];\n      id      = m[3];\n    } else if (m = message.match(auth_error)) {\n      method = m[1];\n      object     = m[3];\n      reason = Locale.tr(\"Unauthorized\");\n    };\n\n    if (m) {\n      var rows;\n      var i;\n      var value;\n      rows = [\"method\", \"action\", \"object\", \"id\", \"reason\"];\n      message = \"\";\n      for (i = 0; i < rows.length; i++) {\n        key = rows[i];\n        value = eval(key);\n        if (value)\n            message += \"<tr><td class=\\\"key_error\\\">\" + key + \"</td><td>\" + value + \"</td></tr>\";\n      }\n      message = \"<table>\" + message + \"</table>\";\n    };\n\n    _notifyError(message);\n    return true;\n  }\n\n  return {\n    'notifySubmit': _notifySubmit,\n    'notifyError': _notifyError,\n    'notifyMessage': _notifyMessage,\n    'notifyCustom': _notifyCustom,\n    'onError': _onError\n  }\n});\n\n","define('utils/dialogs/confirm/dialogId',['require'],function(require){\n  return 'confirmDialog';\n});\n","define('utils/dialogs/confirm-with-select/dialogId',['require'],function(require){\n  return 'confirmWithSelectDialog';\n});\n","/*!\n\n handlebars v2.0.0\n\nCopyright (C) 2011-2014 by Yehuda Katz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n@license\n*/\n/* exported Handlebars */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define('hbs/handlebars',[], factory);\n  } else if (typeof exports === 'object') {\n    module.exports = factory();\n  } else {\n    root.Handlebars = root.Handlebars || factory();\n  }\n}(this, function () {\n// handlebars/safe-string.js\nvar __module4__ = (function() {\n  \"use strict\";\n  var __exports__;\n  // Build out our basic SafeString type\n  function SafeString(string) {\n    this.string = string;\n  }\n\n  SafeString.prototype.toString = function() {\n    return \"\" + this.string;\n  };\n\n  __exports__ = SafeString;\n  return __exports__;\n})();\n\n// handlebars/utils.js\nvar __module3__ = (function(__dependency1__) {\n  \"use strict\";\n  var __exports__ = {};\n  /*jshint -W004 */\n  var SafeString = __dependency1__;\n\n  var escape = {\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    '\"': \"&quot;\",\n    \"'\": \"&#x27;\",\n    \"`\": \"&#x60;\"\n  };\n\n  var badChars = /[&<>\"'`]/g;\n  var possible = /[&<>\"'`]/;\n\n  function escapeChar(chr) {\n    return escape[chr];\n  }\n\n  function extend(obj /* , ...source */) {\n    for (var i = 1; i < arguments.length; i++) {\n      for (var key in arguments[i]) {\n        if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n          obj[key] = arguments[i][key];\n        }\n      }\n    }\n\n    return obj;\n  }\n\n  __exports__.extend = extend;var toString = Object.prototype.toString;\n  __exports__.toString = toString;\n  // Sourced from lodash\n  // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n  var isFunction = function(value) {\n    return typeof value === 'function';\n  };\n  // fallback for older versions of Chrome and Safari\n  /* istanbul ignore next */\n  if (isFunction(/x/)) {\n    isFunction = function(value) {\n      return typeof value === 'function' && toString.call(value) === '[object Function]';\n    };\n  }\n  var isFunction;\n  __exports__.isFunction = isFunction;\n  /* istanbul ignore next */\n  var isArray = Array.isArray || function(value) {\n    return (value && typeof value === 'object') ? toString.call(value) === '[object Array]' : false;\n  };\n  __exports__.isArray = isArray;\n\n  function escapeExpression(string) {\n    // don't escape SafeStrings, since they're already safe\n    if (string instanceof SafeString) {\n      return string.toString();\n    } else if (string == null) {\n      return \"\";\n    } else if (!string) {\n      return string + '';\n    }\n\n    // Force a string conversion as this will be done by the append regardless and\n    // the regex test will do this transparently behind the scenes, causing issues if\n    // an object's to string has escaped characters in it.\n    string = \"\" + string;\n\n    if(!possible.test(string)) { return string; }\n    return string.replace(badChars, escapeChar);\n  }\n\n  __exports__.escapeExpression = escapeExpression;function isEmpty(value) {\n    if (!value && value !== 0) {\n      return true;\n    } else if (isArray(value) && value.length === 0) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  __exports__.isEmpty = isEmpty;function appendContextPath(contextPath, id) {\n    return (contextPath ? contextPath + '.' : '') + id;\n  }\n\n  __exports__.appendContextPath = appendContextPath;\n  return __exports__;\n})(__module4__);\n\n// handlebars/exception.js\nvar __module5__ = (function() {\n  \"use strict\";\n  var __exports__;\n\n  var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\n  function Exception(message, node) {\n    var line;\n    if (node && node.firstLine) {\n      line = node.firstLine;\n\n      message += ' - ' + line + ':' + node.firstColumn;\n    }\n\n    var tmp = Error.prototype.constructor.call(this, message);\n\n    // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n    for (var idx = 0; idx < errorProps.length; idx++) {\n      this[errorProps[idx]] = tmp[errorProps[idx]];\n    }\n\n    if (line) {\n      this.lineNumber = line;\n      this.column = node.firstColumn;\n    }\n  }\n\n  Exception.prototype = new Error();\n\n  __exports__ = Exception;\n  return __exports__;\n})();\n\n// handlebars/base.js\nvar __module2__ = (function(__dependency1__, __dependency2__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Utils = __dependency1__;\n  var Exception = __dependency2__;\n\n  var VERSION = \"2.0.0\";\n  __exports__.VERSION = VERSION;var COMPILER_REVISION = 6;\n  __exports__.COMPILER_REVISION = COMPILER_REVISION;\n  var REVISION_CHANGES = {\n    1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n    2: '== 1.0.0-rc.3',\n    3: '== 1.0.0-rc.4',\n    4: '== 1.x.x',\n    5: '== 2.0.0-alpha.x',\n    6: '>= 2.0.0-beta.1'\n  };\n  __exports__.REVISION_CHANGES = REVISION_CHANGES;\n  var isArray = Utils.isArray,\n      isFunction = Utils.isFunction,\n      toString = Utils.toString,\n      objectType = '[object Object]';\n\n  function HandlebarsEnvironment(helpers, partials) {\n    this.helpers = helpers || {};\n    this.partials = partials || {};\n\n    registerDefaultHelpers(this);\n  }\n\n  __exports__.HandlebarsEnvironment = HandlebarsEnvironment;HandlebarsEnvironment.prototype = {\n    constructor: HandlebarsEnvironment,\n\n    logger: logger,\n    log: log,\n\n    registerHelper: function(name, fn) {\n      if (toString.call(name) === objectType) {\n        if (fn) { throw new Exception('Arg not supported with multiple helpers'); }\n        Utils.extend(this.helpers, name);\n      } else {\n        this.helpers[name] = fn;\n      }\n    },\n    unregisterHelper: function(name) {\n      delete this.helpers[name];\n    },\n\n    registerPartial: function(name, partial) {\n      if (toString.call(name) === objectType) {\n        Utils.extend(this.partials,  name);\n      } else {\n        this.partials[name] = partial;\n      }\n    },\n    unregisterPartial: function(name) {\n      delete this.partials[name];\n    }\n  };\n\n  function registerDefaultHelpers(instance) {\n    instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n      if(arguments.length === 1) {\n        // A missing field in a {{foo}} constuct.\n        return undefined;\n      } else {\n        // Someone is actually trying to call something, blow up.\n        throw new Exception(\"Missing helper: '\" + arguments[arguments.length-1].name + \"'\");\n      }\n    });\n\n    instance.registerHelper('blockHelperMissing', function(context, options) {\n      var inverse = options.inverse,\n          fn = options.fn;\n\n      if(context === true) {\n        return fn(this);\n      } else if(context === false || context == null) {\n        return inverse(this);\n      } else if (isArray(context)) {\n        if(context.length > 0) {\n          if (options.ids) {\n            options.ids = [options.name];\n          }\n\n          return instance.helpers.each(context, options);\n        } else {\n          return inverse(this);\n        }\n      } else {\n        if (options.data && options.ids) {\n          var data = createFrame(options.data);\n          data.contextPath = Utils.appendContextPath(options.data.contextPath, options.name);\n          options = {data: data};\n        }\n\n        return fn(context, options);\n      }\n    });\n\n    instance.registerHelper('each', function(context, options) {\n      if (!options) {\n        throw new Exception('Must pass iterator to #each');\n      }\n\n      var fn = options.fn, inverse = options.inverse;\n      var i = 0, ret = \"\", data;\n\n      var contextPath;\n      if (options.data && options.ids) {\n        contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n      }\n\n      if (isFunction(context)) { context = context.call(this); }\n\n      if (options.data) {\n        data = createFrame(options.data);\n      }\n\n      if(context && typeof context === 'object') {\n        if (isArray(context)) {\n          for(var j = context.length; i<j; i++) {\n            if (data) {\n              data.index = i;\n              data.first = (i === 0);\n              data.last  = (i === (context.length-1));\n\n              if (contextPath) {\n                data.contextPath = contextPath + i;\n              }\n            }\n            ret = ret + fn(context[i], { data: data });\n          }\n        } else {\n          for(var key in context) {\n            if(context.hasOwnProperty(key)) {\n              if(data) {\n                data.key = key;\n                data.index = i;\n                data.first = (i === 0);\n\n                if (contextPath) {\n                  data.contextPath = contextPath + key;\n                }\n              }\n              ret = ret + fn(context[key], {data: data});\n              i++;\n            }\n          }\n        }\n      }\n\n      if(i === 0){\n        ret = inverse(this);\n      }\n\n      return ret;\n    });\n\n    instance.registerHelper('if', function(conditional, options) {\n      if (isFunction(conditional)) { conditional = conditional.call(this); }\n\n      // Default behavior is to render the positive path if the value is truthy and not empty.\n      // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n      // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n      if ((!options.hash.includeZero && !conditional) || Utils.isEmpty(conditional)) {\n        return options.inverse(this);\n      } else {\n        return options.fn(this);\n      }\n    });\n\n    instance.registerHelper('unless', function(conditional, options) {\n      return instance.helpers['if'].call(this, conditional, {fn: options.inverse, inverse: options.fn, hash: options.hash});\n    });\n\n    instance.registerHelper('with', function(context, options) {\n      if (isFunction(context)) { context = context.call(this); }\n\n      var fn = options.fn;\n\n      if (!Utils.isEmpty(context)) {\n        if (options.data && options.ids) {\n          var data = createFrame(options.data);\n          data.contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]);\n          options = {data:data};\n        }\n\n        return fn(context, options);\n      } else {\n        return options.inverse(this);\n      }\n    });\n\n    instance.registerHelper('log', function(message, options) {\n      var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;\n      instance.log(level, message);\n    });\n\n    instance.registerHelper('lookup', function(obj, field) {\n      return obj && obj[field];\n    });\n  }\n\n  var logger = {\n    methodMap: { 0: 'debug', 1: 'info', 2: 'warn', 3: 'error' },\n\n    // State enum\n    DEBUG: 0,\n    INFO: 1,\n    WARN: 2,\n    ERROR: 3,\n    level: 3,\n\n    // can be overridden in the host environment\n    log: function(level, message) {\n      if (logger.level <= level) {\n        var method = logger.methodMap[level];\n        if (typeof console !== 'undefined' && console[method]) {\n          console[method].call(console, message);\n        }\n      }\n    }\n  };\n  __exports__.logger = logger;\n  var log = logger.log;\n  __exports__.log = log;\n  var createFrame = function(object) {\n    var frame = Utils.extend({}, object);\n    frame._parent = object;\n    return frame;\n  };\n  __exports__.createFrame = createFrame;\n  return __exports__;\n})(__module3__, __module5__);\n\n// handlebars/runtime.js\nvar __module6__ = (function(__dependency1__, __dependency2__, __dependency3__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Utils = __dependency1__;\n  var Exception = __dependency2__;\n  var COMPILER_REVISION = __dependency3__.COMPILER_REVISION;\n  var REVISION_CHANGES = __dependency3__.REVISION_CHANGES;\n  var createFrame = __dependency3__.createFrame;\n\n  function checkRevision(compilerInfo) {\n    var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n        currentRevision = COMPILER_REVISION;\n\n    if (compilerRevision !== currentRevision) {\n      if (compilerRevision < currentRevision) {\n        var runtimeVersions = REVISION_CHANGES[currentRevision],\n            compilerVersions = REVISION_CHANGES[compilerRevision];\n        throw new Exception(\"Template was precompiled with an older version of Handlebars than the current runtime. \"+\n              \"Please update your precompiler to a newer version (\"+runtimeVersions+\") or downgrade your runtime to an older version (\"+compilerVersions+\").\");\n      } else {\n        // Use the embedded version info since the runtime doesn't know about this revision yet\n        throw new Exception(\"Template was precompiled with a newer version of Handlebars than the current runtime. \"+\n              \"Please update your runtime to a newer version (\"+compilerInfo[1]+\").\");\n      }\n    }\n  }\n\n  __exports__.checkRevision = checkRevision;// TODO: Remove this line and break up compilePartial\n\n  function template(templateSpec, env) {\n    /* istanbul ignore next */\n    if (!env) {\n      throw new Exception(\"No environment passed to template\");\n    }\n    if (!templateSpec || !templateSpec.main) {\n      throw new Exception('Unknown template object: ' + typeof templateSpec);\n    }\n\n    // Note: Using env.VM references rather than local var references throughout this section to allow\n    // for external users to override these as psuedo-supported APIs.\n    env.VM.checkRevision(templateSpec.compiler);\n\n    var invokePartialWrapper = function(partial, indent, name, context, hash, helpers, partials, data, depths) {\n      if (hash) {\n        context = Utils.extend({}, context, hash);\n      }\n\n      var result = env.VM.invokePartial.call(this, partial, name, context, helpers, partials, data, depths);\n\n      if (result == null && env.compile) {\n        var options = { helpers: helpers, partials: partials, data: data, depths: depths };\n        partials[name] = env.compile(partial, { data: data !== undefined, compat: templateSpec.compat }, env);\n        result = partials[name](context, options);\n      }\n      if (result != null) {\n        if (indent) {\n          var lines = result.split('\\n');\n          for (var i = 0, l = lines.length; i < l; i++) {\n            if (!lines[i] && i + 1 === l) {\n              break;\n            }\n\n            lines[i] = indent + lines[i];\n          }\n          result = lines.join('\\n');\n        }\n        return result;\n      } else {\n        throw new Exception(\"The partial \" + name + \" could not be compiled when running in runtime-only mode\");\n      }\n    };\n\n    // Just add water\n    var container = {\n      lookup: function(depths, name) {\n        var len = depths.length;\n        for (var i = 0; i < len; i++) {\n          if (depths[i] && depths[i][name] != null) {\n            return depths[i][name];\n          }\n        }\n      },\n      lambda: function(current, context) {\n        return typeof current === 'function' ? current.call(context) : current;\n      },\n\n      escapeExpression: Utils.escapeExpression,\n      invokePartial: invokePartialWrapper,\n\n      fn: function(i) {\n        return templateSpec[i];\n      },\n\n      programs: [],\n      program: function(i, data, depths) {\n        var programWrapper = this.programs[i],\n            fn = this.fn(i);\n        if (data || depths) {\n          programWrapper = program(this, i, fn, data, depths);\n        } else if (!programWrapper) {\n          programWrapper = this.programs[i] = program(this, i, fn);\n        }\n        return programWrapper;\n      },\n\n      data: function(data, depth) {\n        while (data && depth--) {\n          data = data._parent;\n        }\n        return data;\n      },\n      merge: function(param, common) {\n        var ret = param || common;\n\n        if (param && common && (param !== common)) {\n          ret = Utils.extend({}, common, param);\n        }\n\n        return ret;\n      },\n\n      noop: env.VM.noop,\n      compilerInfo: templateSpec.compiler\n    };\n\n    var ret = function(context, options) {\n      options = options || {};\n      var data = options.data;\n\n      ret._setup(options);\n      if (!options.partial && templateSpec.useData) {\n        data = initData(context, data);\n      }\n      var depths;\n      if (templateSpec.useDepths) {\n        depths = options.depths ? [context].concat(options.depths) : [context];\n      }\n\n      return templateSpec.main.call(container, context, container.helpers, container.partials, data, depths);\n    };\n    ret.isTop = true;\n\n    ret._setup = function(options) {\n      if (!options.partial) {\n        container.helpers = container.merge(options.helpers, env.helpers);\n\n        if (templateSpec.usePartial) {\n          container.partials = container.merge(options.partials, env.partials);\n        }\n      } else {\n        container.helpers = options.helpers;\n        container.partials = options.partials;\n      }\n    };\n\n    ret._child = function(i, data, depths) {\n      if (templateSpec.useDepths && !depths) {\n        throw new Exception('must pass parent depths');\n      }\n\n      return program(container, i, templateSpec[i], data, depths);\n    };\n    return ret;\n  }\n\n  __exports__.template = template;function program(container, i, fn, data, depths) {\n    var prog = function(context, options) {\n      options = options || {};\n\n      return fn.call(container, context, container.helpers, container.partials, options.data || data, depths && [context].concat(depths));\n    };\n    prog.program = i;\n    prog.depth = depths ? depths.length : 0;\n    return prog;\n  }\n\n  __exports__.program = program;function invokePartial(partial, name, context, helpers, partials, data, depths) {\n    var options = { partial: true, helpers: helpers, partials: partials, data: data, depths: depths };\n\n    if(partial === undefined) {\n      throw new Exception(\"The partial \" + name + \" could not be found\");\n    } else if(partial instanceof Function) {\n      return partial(context, options);\n    }\n  }\n\n  __exports__.invokePartial = invokePartial;function noop() { return \"\"; }\n\n  __exports__.noop = noop;function initData(context, data) {\n    if (!data || !('root' in data)) {\n      data = data ? createFrame(data) : {};\n      data.root = context;\n    }\n    return data;\n  }\n  return __exports__;\n})(__module3__, __module5__, __module2__);\n\n// handlebars.runtime.js\nvar __module1__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {\n  \"use strict\";\n  var __exports__;\n  /*globals Handlebars: true */\n  var base = __dependency1__;\n\n  // Each of these augment the Handlebars object. No need to setup here.\n  // (This is done to easily share code between commonjs and browse envs)\n  var SafeString = __dependency2__;\n  var Exception = __dependency3__;\n  var Utils = __dependency4__;\n  var runtime = __dependency5__;\n\n  // For compatibility and usage outside of module systems, make the Handlebars object a namespace\n  var create = function() {\n    var hb = new base.HandlebarsEnvironment();\n\n    Utils.extend(hb, base);\n    hb.SafeString = SafeString;\n    hb.Exception = Exception;\n    hb.Utils = Utils;\n    hb.escapeExpression = Utils.escapeExpression;\n\n    hb.VM = runtime;\n    hb.template = function(spec) {\n      return runtime.template(spec, hb);\n    };\n\n    return hb;\n  };\n\n  var Handlebars = create();\n  Handlebars.create = create;\n\n  Handlebars['default'] = Handlebars;\n\n  __exports__ = Handlebars;\n  return __exports__;\n})(__module2__, __module4__, __module5__, __module3__, __module6__);\n\n// handlebars/compiler/ast.js\nvar __module7__ = (function(__dependency1__) {\n  \"use strict\";\n  var __exports__;\n  var Exception = __dependency1__;\n\n  function LocationInfo(locInfo) {\n    locInfo = locInfo || {};\n    this.firstLine   = locInfo.first_line;\n    this.firstColumn = locInfo.first_column;\n    this.lastColumn  = locInfo.last_column;\n    this.lastLine    = locInfo.last_line;\n  }\n\n  var AST = {\n    ProgramNode: function(statements, strip, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"program\";\n      this.statements = statements;\n      this.strip = strip;\n    },\n\n    MustacheNode: function(rawParams, hash, open, strip, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"mustache\";\n      this.strip = strip;\n\n      // Open may be a string parsed from the parser or a passed boolean flag\n      if (open != null && open.charAt) {\n        // Must use charAt to support IE pre-10\n        var escapeFlag = open.charAt(3) || open.charAt(2);\n        this.escaped = escapeFlag !== '{' && escapeFlag !== '&';\n      } else {\n        this.escaped = !!open;\n      }\n\n      if (rawParams instanceof AST.SexprNode) {\n        this.sexpr = rawParams;\n      } else {\n        // Support old AST API\n        this.sexpr = new AST.SexprNode(rawParams, hash);\n      }\n\n      // Support old AST API that stored this info in MustacheNode\n      this.id = this.sexpr.id;\n      this.params = this.sexpr.params;\n      this.hash = this.sexpr.hash;\n      this.eligibleHelper = this.sexpr.eligibleHelper;\n      this.isHelper = this.sexpr.isHelper;\n    },\n\n    SexprNode: function(rawParams, hash, locInfo) {\n      LocationInfo.call(this, locInfo);\n\n      this.type = \"sexpr\";\n      this.hash = hash;\n\n      var id = this.id = rawParams[0];\n      var params = this.params = rawParams.slice(1);\n\n      // a mustache is definitely a helper if:\n      // * it is an eligible helper, and\n      // * it has at least one parameter or hash segment\n      this.isHelper = !!(params.length || hash);\n\n      // a mustache is an eligible helper if:\n      // * its id is simple (a single part, not `this` or `..`)\n      this.eligibleHelper = this.isHelper || id.isSimple;\n\n      // if a mustache is an eligible helper but not a definite\n      // helper, it is ambiguous, and will be resolved in a later\n      // pass or at runtime.\n    },\n\n    PartialNode: function(partialName, context, hash, strip, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type         = \"partial\";\n      this.partialName  = partialName;\n      this.context      = context;\n      this.hash = hash;\n      this.strip = strip;\n\n      this.strip.inlineStandalone = true;\n    },\n\n    BlockNode: function(mustache, program, inverse, strip, locInfo) {\n      LocationInfo.call(this, locInfo);\n\n      this.type = 'block';\n      this.mustache = mustache;\n      this.program  = program;\n      this.inverse  = inverse;\n      this.strip = strip;\n\n      if (inverse && !program) {\n        this.isInverse = true;\n      }\n    },\n\n    RawBlockNode: function(mustache, content, close, locInfo) {\n      LocationInfo.call(this, locInfo);\n\n      if (mustache.sexpr.id.original !== close) {\n        throw new Exception(mustache.sexpr.id.original + \" doesn't match \" + close, this);\n      }\n\n      content = new AST.ContentNode(content, locInfo);\n\n      this.type = 'block';\n      this.mustache = mustache;\n      this.program = new AST.ProgramNode([content], {}, locInfo);\n    },\n\n    ContentNode: function(string, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"content\";\n      this.original = this.string = string;\n    },\n\n    HashNode: function(pairs, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"hash\";\n      this.pairs = pairs;\n    },\n\n    IdNode: function(parts, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"ID\";\n\n      var original = \"\",\n          dig = [],\n          depth = 0,\n          depthString = '';\n\n      for(var i=0,l=parts.length; i<l; i++) {\n        var part = parts[i].part;\n        original += (parts[i].separator || '') + part;\n\n        if (part === \"..\" || part === \".\" || part === \"this\") {\n          if (dig.length > 0) {\n            throw new Exception(\"Invalid path: \" + original, this);\n          } else if (part === \"..\") {\n            depth++;\n            depthString += '../';\n          } else {\n            this.isScoped = true;\n          }\n        } else {\n          dig.push(part);\n        }\n      }\n\n      this.original = original;\n      this.parts    = dig;\n      this.string   = dig.join('.');\n      this.depth    = depth;\n      this.idName   = depthString + this.string;\n\n      // an ID is simple if it only has one part, and that part is not\n      // `..` or `this`.\n      this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;\n\n      this.stringModeValue = this.string;\n    },\n\n    PartialNameNode: function(name, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"PARTIAL_NAME\";\n      this.name = name.original;\n    },\n\n    DataNode: function(id, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"DATA\";\n      this.id = id;\n      this.stringModeValue = id.stringModeValue;\n      this.idName = '@' + id.stringModeValue;\n    },\n\n    StringNode: function(string, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"STRING\";\n      this.original =\n        this.string =\n        this.stringModeValue = string;\n    },\n\n    NumberNode: function(number, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"NUMBER\";\n      this.original =\n        this.number = number;\n      this.stringModeValue = Number(number);\n    },\n\n    BooleanNode: function(bool, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"BOOLEAN\";\n      this.bool = bool;\n      this.stringModeValue = bool === \"true\";\n    },\n\n    CommentNode: function(comment, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"comment\";\n      this.comment = comment;\n\n      this.strip = {\n        inlineStandalone: true\n      };\n    }\n  };\n\n\n  // Must be exported as an object rather than the root of the module as the jison lexer\n  // most modify the object to operate properly.\n  __exports__ = AST;\n  return __exports__;\n})(__module5__);\n\n// handlebars/compiler/parser.js\nvar __module9__ = (function() {\n  \"use strict\";\n  var __exports__;\n  /* jshint ignore:start */\n  /* istanbul ignore next */\n  /* Jison generated parser */\n  var handlebars = (function(){\n  var parser = {trace: function trace() { },\n  yy: {},\n  symbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"CONTENT\":12,\"COMMENT\":13,\"openRawBlock\":14,\"END_RAW_BLOCK\":15,\"OPEN_RAW_BLOCK\":16,\"sexpr\":17,\"CLOSE_RAW_BLOCK\":18,\"openBlock\":19,\"block_option0\":20,\"closeBlock\":21,\"openInverse\":22,\"block_option1\":23,\"OPEN_BLOCK\":24,\"CLOSE\":25,\"OPEN_INVERSE\":26,\"inverseAndProgram\":27,\"INVERSE\":28,\"OPEN_ENDBLOCK\":29,\"path\":30,\"OPEN\":31,\"OPEN_UNESCAPED\":32,\"CLOSE_UNESCAPED\":33,\"OPEN_PARTIAL\":34,\"partialName\":35,\"param\":36,\"partial_option0\":37,\"partial_option1\":38,\"sexpr_repetition0\":39,\"sexpr_option0\":40,\"dataName\":41,\"STRING\":42,\"NUMBER\":43,\"BOOLEAN\":44,\"OPEN_SEXPR\":45,\"CLOSE_SEXPR\":46,\"hash\":47,\"hash_repetition_plus0\":48,\"hashSegment\":49,\"ID\":50,\"EQUALS\":51,\"DATA\":52,\"pathSegments\":53,\"SEP\":54,\"$accept\":0,\"$end\":1},\n  terminals_: {2:\"error\",5:\"EOF\",12:\"CONTENT\",13:\"COMMENT\",15:\"END_RAW_BLOCK\",16:\"OPEN_RAW_BLOCK\",18:\"CLOSE_RAW_BLOCK\",24:\"OPEN_BLOCK\",25:\"CLOSE\",26:\"OPEN_INVERSE\",28:\"INVERSE\",29:\"OPEN_ENDBLOCK\",31:\"OPEN\",32:\"OPEN_UNESCAPED\",33:\"CLOSE_UNESCAPED\",34:\"OPEN_PARTIAL\",42:\"STRING\",43:\"NUMBER\",44:\"BOOLEAN\",45:\"OPEN_SEXPR\",46:\"CLOSE_SEXPR\",50:\"ID\",51:\"EQUALS\",52:\"DATA\",54:\"SEP\"},\n  productions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[10,3],[14,3],[9,4],[9,4],[19,3],[22,3],[27,2],[21,3],[8,3],[8,3],[11,5],[11,4],[17,3],[17,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,3],[47,1],[49,3],[35,1],[35,1],[35,1],[41,2],[30,1],[53,3],[53,1],[6,0],[6,2],[20,0],[20,1],[23,0],[23,1],[37,0],[37,1],[38,0],[38,1],[39,0],[39,2],[40,0],[40,1],[48,1],[48,2]],\n  performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {\n\n  var $0 = $$.length - 1;\n  switch (yystate) {\n  case 1: yy.prepareProgram($$[$0-1].statements, true); return $$[$0-1];\n  break;\n  case 2:this.$ = new yy.ProgramNode(yy.prepareProgram($$[$0]), {}, this._$);\n  break;\n  case 3:this.$ = $$[$0];\n  break;\n  case 4:this.$ = $$[$0];\n  break;\n  case 5:this.$ = $$[$0];\n  break;\n  case 6:this.$ = $$[$0];\n  break;\n  case 7:this.$ = new yy.ContentNode($$[$0], this._$);\n  break;\n  case 8:this.$ = new yy.CommentNode($$[$0], this._$);\n  break;\n  case 9:this.$ = new yy.RawBlockNode($$[$0-2], $$[$0-1], $$[$0], this._$);\n  break;\n  case 10:this.$ = new yy.MustacheNode($$[$0-1], null, '', '', this._$);\n  break;\n  case 11:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\n  break;\n  case 12:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\n  break;\n  case 13:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);\n  break;\n  case 14:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);\n  break;\n  case 15:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\n  break;\n  case 16:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\n  break;\n  case 17:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);\n  break;\n  case 18:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);\n  break;\n  case 19:this.$ = new yy.PartialNode($$[$0-3], $$[$0-2], $$[$0-1], yy.stripFlags($$[$0-4], $$[$0]), this._$);\n  break;\n  case 20:this.$ = new yy.PartialNode($$[$0-2], undefined, $$[$0-1], yy.stripFlags($$[$0-3], $$[$0]), this._$);\n  break;\n  case 21:this.$ = new yy.SexprNode([$$[$0-2]].concat($$[$0-1]), $$[$0], this._$);\n  break;\n  case 22:this.$ = new yy.SexprNode([$$[$0]], null, this._$);\n  break;\n  case 23:this.$ = $$[$0];\n  break;\n  case 24:this.$ = new yy.StringNode($$[$0], this._$);\n  break;\n  case 25:this.$ = new yy.NumberNode($$[$0], this._$);\n  break;\n  case 26:this.$ = new yy.BooleanNode($$[$0], this._$);\n  break;\n  case 27:this.$ = $$[$0];\n  break;\n  case 28:$$[$0-1].isHelper = true; this.$ = $$[$0-1];\n  break;\n  case 29:this.$ = new yy.HashNode($$[$0], this._$);\n  break;\n  case 30:this.$ = [$$[$0-2], $$[$0]];\n  break;\n  case 31:this.$ = new yy.PartialNameNode($$[$0], this._$);\n  break;\n  case 32:this.$ = new yy.PartialNameNode(new yy.StringNode($$[$0], this._$), this._$);\n  break;\n  case 33:this.$ = new yy.PartialNameNode(new yy.NumberNode($$[$0], this._$));\n  break;\n  case 34:this.$ = new yy.DataNode($$[$0], this._$);\n  break;\n  case 35:this.$ = new yy.IdNode($$[$0], this._$);\n  break;\n  case 36: $$[$0-2].push({part: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2];\n  break;\n  case 37:this.$ = [{part: $$[$0]}];\n  break;\n  case 38:this.$ = [];\n  break;\n  case 39:$$[$0-1].push($$[$0]);\n  break;\n  case 48:this.$ = [];\n  break;\n  case 49:$$[$0-1].push($$[$0]);\n  break;\n  case 52:this.$ = [$$[$0]];\n  break;\n  case 53:$$[$0-1].push($$[$0]);\n  break;\n  }\n  },\n  table: [{3:1,4:2,5:[2,38],6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],31:[2,38],32:[2,38],34:[2,38]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:[1,10],13:[1,11],14:16,16:[1,20],19:14,22:15,24:[1,18],26:[1,19],28:[2,2],29:[2,2],31:[1,12],32:[1,13],34:[1,17]},{1:[2,1]},{5:[2,39],12:[2,39],13:[2,39],16:[2,39],24:[2,39],26:[2,39],28:[2,39],29:[2,39],31:[2,39],32:[2,39],34:[2,39]},{5:[2,3],12:[2,3],13:[2,3],16:[2,3],24:[2,3],26:[2,3],28:[2,3],29:[2,3],31:[2,3],32:[2,3],34:[2,3]},{5:[2,4],12:[2,4],13:[2,4],16:[2,4],24:[2,4],26:[2,4],28:[2,4],29:[2,4],31:[2,4],32:[2,4],34:[2,4]},{5:[2,5],12:[2,5],13:[2,5],16:[2,5],24:[2,5],26:[2,5],28:[2,5],29:[2,5],31:[2,5],32:[2,5],34:[2,5]},{5:[2,6],12:[2,6],13:[2,6],16:[2,6],24:[2,6],26:[2,6],28:[2,6],29:[2,6],31:[2,6],32:[2,6],34:[2,6]},{5:[2,7],12:[2,7],13:[2,7],16:[2,7],24:[2,7],26:[2,7],28:[2,7],29:[2,7],31:[2,7],32:[2,7],34:[2,7]},{5:[2,8],12:[2,8],13:[2,8],16:[2,8],24:[2,8],26:[2,8],28:[2,8],29:[2,8],31:[2,8],32:[2,8],34:[2,8]},{17:21,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:27,30:22,41:23,50:[1,26],52:[1,25],53:24},{4:28,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{4:29,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{12:[1,30]},{30:32,35:31,42:[1,33],43:[1,34],50:[1,26],53:24},{17:35,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:36,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:37,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[1,38]},{18:[2,48],25:[2,48],33:[2,48],39:39,42:[2,48],43:[2,48],44:[2,48],45:[2,48],46:[2,48],50:[2,48],52:[2,48]},{18:[2,22],25:[2,22],33:[2,22],46:[2,22]},{18:[2,35],25:[2,35],33:[2,35],42:[2,35],43:[2,35],44:[2,35],45:[2,35],46:[2,35],50:[2,35],52:[2,35],54:[1,40]},{30:41,50:[1,26],53:24},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],52:[2,37],54:[2,37]},{33:[1,42]},{20:43,27:44,28:[1,45],29:[2,40]},{23:46,27:47,28:[1,45],29:[2,42]},{15:[1,48]},{25:[2,46],30:51,36:49,38:50,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],47:57,48:58,49:60,50:[1,59],52:[1,25],53:24},{25:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],50:[2,31],52:[2,31]},{25:[2,32],42:[2,32],43:[2,32],44:[2,32],45:[2,32],50:[2,32],52:[2,32]},{25:[2,33],42:[2,33],43:[2,33],44:[2,33],45:[2,33],50:[2,33],52:[2,33]},{25:[1,61]},{25:[1,62]},{18:[1,63]},{5:[2,17],12:[2,17],13:[2,17],16:[2,17],24:[2,17],26:[2,17],28:[2,17],29:[2,17],31:[2,17],32:[2,17],34:[2,17]},{18:[2,50],25:[2,50],30:51,33:[2,50],36:65,40:64,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],46:[2,50],47:66,48:58,49:60,50:[1,59],52:[1,25],53:24},{50:[1,67]},{18:[2,34],25:[2,34],33:[2,34],42:[2,34],43:[2,34],44:[2,34],45:[2,34],46:[2,34],50:[2,34],52:[2,34]},{5:[2,18],12:[2,18],13:[2,18],16:[2,18],24:[2,18],26:[2,18],28:[2,18],29:[2,18],31:[2,18],32:[2,18],34:[2,18]},{21:68,29:[1,69]},{29:[2,41]},{4:70,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{21:71,29:[1,69]},{29:[2,43]},{5:[2,9],12:[2,9],13:[2,9],16:[2,9],24:[2,9],26:[2,9],28:[2,9],29:[2,9],31:[2,9],32:[2,9],34:[2,9]},{25:[2,44],37:72,47:73,48:58,49:60,50:[1,74]},{25:[1,75]},{18:[2,23],25:[2,23],33:[2,23],42:[2,23],43:[2,23],44:[2,23],45:[2,23],46:[2,23],50:[2,23],52:[2,23]},{18:[2,24],25:[2,24],33:[2,24],42:[2,24],43:[2,24],44:[2,24],45:[2,24],46:[2,24],50:[2,24],52:[2,24]},{18:[2,25],25:[2,25],33:[2,25],42:[2,25],43:[2,25],44:[2,25],45:[2,25],46:[2,25],50:[2,25],52:[2,25]},{18:[2,26],25:[2,26],33:[2,26],42:[2,26],43:[2,26],44:[2,26],45:[2,26],46:[2,26],50:[2,26],52:[2,26]},{18:[2,27],25:[2,27],33:[2,27],42:[2,27],43:[2,27],44:[2,27],45:[2,27],46:[2,27],50:[2,27],52:[2,27]},{17:76,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[2,47]},{18:[2,29],25:[2,29],33:[2,29],46:[2,29],49:77,50:[1,74]},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],51:[1,78],52:[2,37],54:[2,37]},{18:[2,52],25:[2,52],33:[2,52],46:[2,52],50:[2,52]},{12:[2,13],13:[2,13],16:[2,13],24:[2,13],26:[2,13],28:[2,13],29:[2,13],31:[2,13],32:[2,13],34:[2,13]},{12:[2,14],13:[2,14],16:[2,14],24:[2,14],26:[2,14],28:[2,14],29:[2,14],31:[2,14],32:[2,14],34:[2,14]},{12:[2,10]},{18:[2,21],25:[2,21],33:[2,21],46:[2,21]},{18:[2,49],25:[2,49],33:[2,49],42:[2,49],43:[2,49],44:[2,49],45:[2,49],46:[2,49],50:[2,49],52:[2,49]},{18:[2,51],25:[2,51],33:[2,51],46:[2,51]},{18:[2,36],25:[2,36],33:[2,36],42:[2,36],43:[2,36],44:[2,36],45:[2,36],46:[2,36],50:[2,36],52:[2,36],54:[2,36]},{5:[2,11],12:[2,11],13:[2,11],16:[2,11],24:[2,11],26:[2,11],28:[2,11],29:[2,11],31:[2,11],32:[2,11],34:[2,11]},{30:79,50:[1,26],53:24},{29:[2,15]},{5:[2,12],12:[2,12],13:[2,12],16:[2,12],24:[2,12],26:[2,12],28:[2,12],29:[2,12],31:[2,12],32:[2,12],34:[2,12]},{25:[1,80]},{25:[2,45]},{51:[1,78]},{5:[2,20],12:[2,20],13:[2,20],16:[2,20],24:[2,20],26:[2,20],28:[2,20],29:[2,20],31:[2,20],32:[2,20],34:[2,20]},{46:[1,81]},{18:[2,53],25:[2,53],33:[2,53],46:[2,53],50:[2,53]},{30:51,36:82,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],50:[1,26],52:[1,25],53:24},{25:[1,83]},{5:[2,19],12:[2,19],13:[2,19],16:[2,19],24:[2,19],26:[2,19],28:[2,19],29:[2,19],31:[2,19],32:[2,19],34:[2,19]},{18:[2,28],25:[2,28],33:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],50:[2,28],52:[2,28]},{18:[2,30],25:[2,30],33:[2,30],46:[2,30],50:[2,30]},{5:[2,16],12:[2,16],13:[2,16],16:[2,16],24:[2,16],26:[2,16],28:[2,16],29:[2,16],31:[2,16],32:[2,16],34:[2,16]}],\n  defaultActions: {4:[2,1],44:[2,41],47:[2,43],57:[2,47],63:[2,10],70:[2,15],73:[2,45]},\n  parseError: function parseError(str, hash) {\n      throw new Error(str);\n  },\n  parse: function parse(input) {\n      var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n      this.lexer.setInput(input);\n      this.lexer.yy = this.yy;\n      this.yy.lexer = this.lexer;\n      this.yy.parser = this;\n      if (typeof this.lexer.yylloc == \"undefined\")\n          this.lexer.yylloc = {};\n      var yyloc = this.lexer.yylloc;\n      lstack.push(yyloc);\n      var ranges = this.lexer.options && this.lexer.options.ranges;\n      if (typeof this.yy.parseError === \"function\")\n          this.parseError = this.yy.parseError;\n      function popStack(n) {\n          stack.length = stack.length - 2 * n;\n          vstack.length = vstack.length - n;\n          lstack.length = lstack.length - n;\n      }\n      function lex() {\n          var token;\n          token = self.lexer.lex() || 1;\n          if (typeof token !== \"number\") {\n              token = self.symbols_[token] || token;\n          }\n          return token;\n      }\n      var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n      while (true) {\n          state = stack[stack.length - 1];\n          if (this.defaultActions[state]) {\n              action = this.defaultActions[state];\n          } else {\n              if (symbol === null || typeof symbol == \"undefined\") {\n                  symbol = lex();\n              }\n              action = table[state] && table[state][symbol];\n          }\n          if (typeof action === \"undefined\" || !action.length || !action[0]) {\n              var errStr = \"\";\n              if (!recovering) {\n                  expected = [];\n                  for (p in table[state])\n                      if (this.terminals_[p] && p > 2) {\n                          expected.push(\"'\" + this.terminals_[p] + \"'\");\n                      }\n                  if (this.lexer.showPosition) {\n                      errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n                  } else {\n                      errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n                  }\n                  this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n              }\n          }\n          if (action[0] instanceof Array && action.length > 1) {\n              throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n          }\n          switch (action[0]) {\n          case 1:\n              stack.push(symbol);\n              vstack.push(this.lexer.yytext);\n              lstack.push(this.lexer.yylloc);\n              stack.push(action[1]);\n              symbol = null;\n              if (!preErrorSymbol) {\n                  yyleng = this.lexer.yyleng;\n                  yytext = this.lexer.yytext;\n                  yylineno = this.lexer.yylineno;\n                  yyloc = this.lexer.yylloc;\n                  if (recovering > 0)\n                      recovering--;\n              } else {\n                  symbol = preErrorSymbol;\n                  preErrorSymbol = null;\n              }\n              break;\n          case 2:\n              len = this.productions_[action[1]][1];\n              yyval.$ = vstack[vstack.length - len];\n              yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n              if (ranges) {\n                  yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n              }\n              r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n              if (typeof r !== \"undefined\") {\n                  return r;\n              }\n              if (len) {\n                  stack = stack.slice(0, -1 * len * 2);\n                  vstack = vstack.slice(0, -1 * len);\n                  lstack = lstack.slice(0, -1 * len);\n              }\n              stack.push(this.productions_[action[1]][0]);\n              vstack.push(yyval.$);\n              lstack.push(yyval._$);\n              newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n              stack.push(newState);\n              break;\n          case 3:\n              return true;\n          }\n      }\n      return true;\n  }\n  };\n  /* Jison generated lexer */\n  var lexer = (function(){\n  var lexer = ({EOF:1,\n  parseError:function parseError(str, hash) {\n          if (this.yy.parser) {\n              this.yy.parser.parseError(str, hash);\n          } else {\n              throw new Error(str);\n          }\n      },\n  setInput:function (input) {\n          this._input = input;\n          this._more = this._less = this.done = false;\n          this.yylineno = this.yyleng = 0;\n          this.yytext = this.matched = this.match = '';\n          this.conditionStack = ['INITIAL'];\n          this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n          if (this.options.ranges) this.yylloc.range = [0,0];\n          this.offset = 0;\n          return this;\n      },\n  input:function () {\n          var ch = this._input[0];\n          this.yytext += ch;\n          this.yyleng++;\n          this.offset++;\n          this.match += ch;\n          this.matched += ch;\n          var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n          if (lines) {\n              this.yylineno++;\n              this.yylloc.last_line++;\n          } else {\n              this.yylloc.last_column++;\n          }\n          if (this.options.ranges) this.yylloc.range[1]++;\n\n          this._input = this._input.slice(1);\n          return ch;\n      },\n  unput:function (ch) {\n          var len = ch.length;\n          var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n          this._input = ch + this._input;\n          this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n          //this.yyleng -= len;\n          this.offset -= len;\n          var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n          this.match = this.match.substr(0, this.match.length-1);\n          this.matched = this.matched.substr(0, this.matched.length-1);\n\n          if (lines.length-1) this.yylineno -= lines.length-1;\n          var r = this.yylloc.range;\n\n          this.yylloc = {first_line: this.yylloc.first_line,\n            last_line: this.yylineno+1,\n            first_column: this.yylloc.first_column,\n            last_column: lines ?\n                (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n                this.yylloc.first_column - len\n            };\n\n          if (this.options.ranges) {\n              this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n          }\n          return this;\n      },\n  more:function () {\n          this._more = true;\n          return this;\n      },\n  less:function (n) {\n          this.unput(this.match.slice(n));\n      },\n  pastInput:function () {\n          var past = this.matched.substr(0, this.matched.length - this.match.length);\n          return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n      },\n  upcomingInput:function () {\n          var next = this.match;\n          if (next.length < 20) {\n              next += this._input.substr(0, 20-next.length);\n          }\n          return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n      },\n  showPosition:function () {\n          var pre = this.pastInput();\n          var c = new Array(pre.length + 1).join(\"-\");\n          return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n      },\n  next:function () {\n          if (this.done) {\n              return this.EOF;\n          }\n          if (!this._input) this.done = true;\n\n          var token,\n              match,\n              tempMatch,\n              index,\n              col,\n              lines;\n          if (!this._more) {\n              this.yytext = '';\n              this.match = '';\n          }\n          var rules = this._currentRules();\n          for (var i=0;i < rules.length; i++) {\n              tempMatch = this._input.match(this.rules[rules[i]]);\n              if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n                  match = tempMatch;\n                  index = i;\n                  if (!this.options.flex) break;\n              }\n          }\n          if (match) {\n              lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n              if (lines) this.yylineno += lines.length;\n              this.yylloc = {first_line: this.yylloc.last_line,\n                             last_line: this.yylineno+1,\n                             first_column: this.yylloc.last_column,\n                             last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n              this.yytext += match[0];\n              this.match += match[0];\n              this.matches = match;\n              this.yyleng = this.yytext.length;\n              if (this.options.ranges) {\n                  this.yylloc.range = [this.offset, this.offset += this.yyleng];\n              }\n              this._more = false;\n              this._input = this._input.slice(match[0].length);\n              this.matched += match[0];\n              token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n              if (this.done && this._input) this.done = false;\n              if (token) return token;\n              else return;\n          }\n          if (this._input === \"\") {\n              return this.EOF;\n          } else {\n              return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n                      {text: \"\", token: null, line: this.yylineno});\n          }\n      },\n  lex:function lex() {\n          var r = this.next();\n          if (typeof r !== 'undefined') {\n              return r;\n          } else {\n              return this.lex();\n          }\n      },\n  begin:function begin(condition) {\n          this.conditionStack.push(condition);\n      },\n  popState:function popState() {\n          return this.conditionStack.pop();\n      },\n  _currentRules:function _currentRules() {\n          return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n      },\n  topState:function () {\n          return this.conditionStack[this.conditionStack.length-2];\n      },\n  pushState:function begin(condition) {\n          this.begin(condition);\n      }});\n  lexer.options = {};\n  lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\n\n  function strip(start, end) {\n    return yy_.yytext = yy_.yytext.substr(start, yy_.yyleng-end);\n  }\n\n\n  var YYSTATE=YY_START\n  switch($avoiding_name_collisions) {\n  case 0:\n                                     if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n                                       strip(0,1);\n                                       this.begin(\"mu\");\n                                     } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n                                       strip(0,1);\n                                       this.begin(\"emu\");\n                                     } else {\n                                       this.begin(\"mu\");\n                                     }\n                                     if(yy_.yytext) return 12;\n\n  break;\n  case 1:return 12;\n  break;\n  case 2:\n                                     this.popState();\n                                     return 12;\n\n  break;\n  case 3:\n                                    yy_.yytext = yy_.yytext.substr(5, yy_.yyleng-9);\n                                    this.popState();\n                                    return 15;\n\n  break;\n  case 4: return 12;\n  break;\n  case 5:strip(0,4); this.popState(); return 13;\n  break;\n  case 6:return 45;\n  break;\n  case 7:return 46;\n  break;\n  case 8: return 16;\n  break;\n  case 9:\n                                    this.popState();\n                                    this.begin('raw');\n                                    return 18;\n\n  break;\n  case 10:return 34;\n  break;\n  case 11:return 24;\n  break;\n  case 12:return 29;\n  break;\n  case 13:this.popState(); return 28;\n  break;\n  case 14:this.popState(); return 28;\n  break;\n  case 15:return 26;\n  break;\n  case 16:return 26;\n  break;\n  case 17:return 32;\n  break;\n  case 18:return 31;\n  break;\n  case 19:this.popState(); this.begin('com');\n  break;\n  case 20:strip(3,5); this.popState(); return 13;\n  break;\n  case 21:return 31;\n  break;\n  case 22:return 51;\n  break;\n  case 23:return 50;\n  break;\n  case 24:return 50;\n  break;\n  case 25:return 54;\n  break;\n  case 26:// ignore whitespace\n  break;\n  case 27:this.popState(); return 33;\n  break;\n  case 28:this.popState(); return 25;\n  break;\n  case 29:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 42;\n  break;\n  case 30:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 42;\n  break;\n  case 31:return 52;\n  break;\n  case 32:return 44;\n  break;\n  case 33:return 44;\n  break;\n  case 34:return 43;\n  break;\n  case 35:return 50;\n  break;\n  case 36:yy_.yytext = strip(1,2); return 50;\n  break;\n  case 37:return 'INVALID';\n  break;\n  case 38:return 5;\n  break;\n  }\n  };\n  lexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]*?(?=(\\{\\{\\{\\{\\/)))/,/^(?:[\\s\\S]*?--\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{!--)/,/^(?:\\{\\{![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)]))))/,/^(?:\\[[^\\]]*\\])/,/^(?:.)/,/^(?:$)/];\n  lexer.conditions = {\"mu\":{\"rules\":[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[5],\"inclusive\":false},\"raw\":{\"rules\":[3,4],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,38],\"inclusive\":true}};\n  return lexer;})()\n  parser.lexer = lexer;\n  function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\n  return new Parser;\n  })();__exports__ = handlebars;\n  /* jshint ignore:end */\n  return __exports__;\n})();\n\n// handlebars/compiler/helpers.js\nvar __module10__ = (function(__dependency1__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Exception = __dependency1__;\n\n  function stripFlags(open, close) {\n    return {\n      left: open.charAt(2) === '~',\n      right: close.charAt(close.length-3) === '~'\n    };\n  }\n\n  __exports__.stripFlags = stripFlags;\n  function prepareBlock(mustache, program, inverseAndProgram, close, inverted, locInfo) {\n    /*jshint -W040 */\n    if (mustache.sexpr.id.original !== close.path.original) {\n      throw new Exception(mustache.sexpr.id.original + ' doesn\\'t match ' + close.path.original, mustache);\n    }\n\n    var inverse = inverseAndProgram && inverseAndProgram.program;\n\n    var strip = {\n      left: mustache.strip.left,\n      right: close.strip.right,\n\n      // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n      // so our parent can determine if we actually are standalone\n      openStandalone: isNextWhitespace(program.statements),\n      closeStandalone: isPrevWhitespace((inverse || program).statements)\n    };\n\n    if (mustache.strip.right) {\n      omitRight(program.statements, null, true);\n    }\n\n    if (inverse) {\n      var inverseStrip = inverseAndProgram.strip;\n\n      if (inverseStrip.left) {\n        omitLeft(program.statements, null, true);\n      }\n      if (inverseStrip.right) {\n        omitRight(inverse.statements, null, true);\n      }\n      if (close.strip.left) {\n        omitLeft(inverse.statements, null, true);\n      }\n\n      // Find standalone else statments\n      if (isPrevWhitespace(program.statements)\n          && isNextWhitespace(inverse.statements)) {\n\n        omitLeft(program.statements);\n        omitRight(inverse.statements);\n      }\n    } else {\n      if (close.strip.left) {\n        omitLeft(program.statements, null, true);\n      }\n    }\n\n    if (inverted) {\n      return new this.BlockNode(mustache, inverse, program, strip, locInfo);\n    } else {\n      return new this.BlockNode(mustache, program, inverse, strip, locInfo);\n    }\n  }\n\n  __exports__.prepareBlock = prepareBlock;\n  function prepareProgram(statements, isRoot) {\n    for (var i = 0, l = statements.length; i < l; i++) {\n      var current = statements[i],\n          strip = current.strip;\n\n      if (!strip) {\n        continue;\n      }\n\n      var _isPrevWhitespace = isPrevWhitespace(statements, i, isRoot, current.type === 'partial'),\n          _isNextWhitespace = isNextWhitespace(statements, i, isRoot),\n\n          openStandalone = strip.openStandalone && _isPrevWhitespace,\n          closeStandalone = strip.closeStandalone && _isNextWhitespace,\n          inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n      if (strip.right) {\n        omitRight(statements, i, true);\n      }\n      if (strip.left) {\n        omitLeft(statements, i, true);\n      }\n\n      if (inlineStandalone) {\n        omitRight(statements, i);\n\n        if (omitLeft(statements, i)) {\n          // If we are on a standalone node, save the indent info for partials\n          if (current.type === 'partial') {\n            current.indent = (/([ \\t]+$)/).exec(statements[i-1].original) ? RegExp.$1 : '';\n          }\n        }\n      }\n      if (openStandalone) {\n        omitRight((current.program || current.inverse).statements);\n\n        // Strip out the previous content node if it's whitespace only\n        omitLeft(statements, i);\n      }\n      if (closeStandalone) {\n        // Always strip the next node\n        omitRight(statements, i);\n\n        omitLeft((current.inverse || current.program).statements);\n      }\n    }\n\n    return statements;\n  }\n\n  __exports__.prepareProgram = prepareProgram;function isPrevWhitespace(statements, i, isRoot) {\n    if (i === undefined) {\n      i = statements.length;\n    }\n\n    // Nodes that end with newlines are considered whitespace (but are special\n    // cased for strip operations)\n    var prev = statements[i-1],\n        sibling = statements[i-2];\n    if (!prev) {\n      return isRoot;\n    }\n\n    if (prev.type === 'content') {\n      return (sibling || !isRoot ? (/\\r?\\n\\s*?$/) : (/(^|\\r?\\n)\\s*?$/)).test(prev.original);\n    }\n  }\n  function isNextWhitespace(statements, i, isRoot) {\n    if (i === undefined) {\n      i = -1;\n    }\n\n    var next = statements[i+1],\n        sibling = statements[i+2];\n    if (!next) {\n      return isRoot;\n    }\n\n    if (next.type === 'content') {\n      return (sibling || !isRoot ? (/^\\s*?\\r?\\n/) : (/^\\s*?(\\r?\\n|$)/)).test(next.original);\n    }\n  }\n\n  // Marks the node to the right of the position as omitted.\n  // I.e. {{foo}}' ' will mark the ' ' node as omitted.\n  //\n  // If i is undefined, then the first child will be marked as such.\n  //\n  // If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n  // content is met.\n  function omitRight(statements, i, multiple) {\n    var current = statements[i == null ? 0 : i + 1];\n    if (!current || current.type !== 'content' || (!multiple && current.rightStripped)) {\n      return;\n    }\n\n    var original = current.string;\n    current.string = current.string.replace(multiple ? (/^\\s+/) : (/^[ \\t]*\\r?\\n?/), '');\n    current.rightStripped = current.string !== original;\n  }\n\n  // Marks the node to the left of the position as omitted.\n  // I.e. ' '{{foo}} will mark the ' ' node as omitted.\n  //\n  // If i is undefined then the last child will be marked as such.\n  //\n  // If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n  // content is met.\n  function omitLeft(statements, i, multiple) {\n    var current = statements[i == null ? statements.length - 1 : i - 1];\n    if (!current || current.type !== 'content' || (!multiple && current.leftStripped)) {\n      return;\n    }\n\n    // We omit the last node if it's whitespace only and not preceeded by a non-content node.\n    var original = current.string;\n    current.string = current.string.replace(multiple ? (/\\s+$/) : (/[ \\t]+$/), '');\n    current.leftStripped = current.string !== original;\n    return current.leftStripped;\n  }\n  return __exports__;\n})(__module5__);\n\n// handlebars/compiler/base.js\nvar __module8__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__) {\n  \"use strict\";\n  var __exports__ = {};\n  var parser = __dependency1__;\n  var AST = __dependency2__;\n  var Helpers = __dependency3__;\n  var extend = __dependency4__.extend;\n\n  __exports__.parser = parser;\n\n  var yy = {};\n  extend(yy, Helpers, AST);\n\n  function parse(input) {\n    // Just return if an already-compile AST was passed in.\n    if (input.constructor === AST.ProgramNode) { return input; }\n\n    parser.yy = yy;\n\n    return parser.parse(input);\n  }\n\n  __exports__.parse = parse;\n  return __exports__;\n})(__module9__, __module7__, __module10__, __module3__);\n\n// handlebars/compiler/compiler.js\nvar __module11__ = (function(__dependency1__, __dependency2__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Exception = __dependency1__;\n  var isArray = __dependency2__.isArray;\n\n  var slice = [].slice;\n\n  function Compiler() {}\n\n  __exports__.Compiler = Compiler;// the foundHelper register will disambiguate helper lookup from finding a\n  // function in a context. This is necessary for mustache compatibility, which\n  // requires that context functions in blocks are evaluated by blockHelperMissing,\n  // and then proceed as if the resulting value was provided to blockHelperMissing.\n\n  Compiler.prototype = {\n    compiler: Compiler,\n\n    equals: function(other) {\n      var len = this.opcodes.length;\n      if (other.opcodes.length !== len) {\n        return false;\n      }\n\n      for (var i = 0; i < len; i++) {\n        var opcode = this.opcodes[i],\n            otherOpcode = other.opcodes[i];\n        if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) {\n          return false;\n        }\n      }\n\n      // We know that length is the same between the two arrays because they are directly tied\n      // to the opcode behavior above.\n      len = this.children.length;\n      for (i = 0; i < len; i++) {\n        if (!this.children[i].equals(other.children[i])) {\n          return false;\n        }\n      }\n\n      return true;\n    },\n\n    guid: 0,\n\n    compile: function(program, options) {\n      this.opcodes = [];\n      this.children = [];\n      this.depths = {list: []};\n      this.options = options;\n      this.stringParams = options.stringParams;\n      this.trackIds = options.trackIds;\n\n      // These changes will propagate to the other compiler components\n      var knownHelpers = this.options.knownHelpers;\n      this.options.knownHelpers = {\n        'helperMissing': true,\n        'blockHelperMissing': true,\n        'each': true,\n        'if': true,\n        'unless': true,\n        'with': true,\n        'log': true,\n        'lookup': true\n      };\n      if (knownHelpers) {\n        for (var name in knownHelpers) {\n          this.options.knownHelpers[name] = knownHelpers[name];\n        }\n      }\n\n      return this.accept(program);\n    },\n\n    accept: function(node) {\n      return this[node.type](node);\n    },\n\n    program: function(program) {\n      var statements = program.statements;\n\n      for(var i=0, l=statements.length; i<l; i++) {\n        this.accept(statements[i]);\n      }\n      this.isSimple = l === 1;\n\n      this.depths.list = this.depths.list.sort(function(a, b) {\n        return a - b;\n      });\n\n      return this;\n    },\n\n    compileProgram: function(program) {\n      var result = new this.compiler().compile(program, this.options);\n      var guid = this.guid++, depth;\n\n      this.usePartial = this.usePartial || result.usePartial;\n\n      this.children[guid] = result;\n\n      for(var i=0, l=result.depths.list.length; i<l; i++) {\n        depth = result.depths.list[i];\n\n        if(depth < 2) { continue; }\n        else { this.addDepth(depth - 1); }\n      }\n\n      return guid;\n    },\n\n    block: function(block) {\n      var mustache = block.mustache,\n          program = block.program,\n          inverse = block.inverse;\n\n      if (program) {\n        program = this.compileProgram(program);\n      }\n\n      if (inverse) {\n        inverse = this.compileProgram(inverse);\n      }\n\n      var sexpr = mustache.sexpr;\n      var type = this.classifySexpr(sexpr);\n\n      if (type === \"helper\") {\n        this.helperSexpr(sexpr, program, inverse);\n      } else if (type === \"simple\") {\n        this.simpleSexpr(sexpr);\n\n        // now that the simple mustache is resolved, we need to\n        // evaluate it by executing `blockHelperMissing`\n        this.opcode('pushProgram', program);\n        this.opcode('pushProgram', inverse);\n        this.opcode('emptyHash');\n        this.opcode('blockValue', sexpr.id.original);\n      } else {\n        this.ambiguousSexpr(sexpr, program, inverse);\n\n        // now that the simple mustache is resolved, we need to\n        // evaluate it by executing `blockHelperMissing`\n        this.opcode('pushProgram', program);\n        this.opcode('pushProgram', inverse);\n        this.opcode('emptyHash');\n        this.opcode('ambiguousBlockValue');\n      }\n\n      this.opcode('append');\n    },\n\n    hash: function(hash) {\n      var pairs = hash.pairs, i, l;\n\n      this.opcode('pushHash');\n\n      for(i=0, l=pairs.length; i<l; i++) {\n        this.pushParam(pairs[i][1]);\n      }\n      while(i--) {\n        this.opcode('assignToHash', pairs[i][0]);\n      }\n      this.opcode('popHash');\n    },\n\n    partial: function(partial) {\n      var partialName = partial.partialName;\n      this.usePartial = true;\n\n      if (partial.hash) {\n        this.accept(partial.hash);\n      } else {\n        this.opcode('push', 'undefined');\n      }\n\n      if (partial.context) {\n        this.accept(partial.context);\n      } else {\n        this.opcode('getContext', 0);\n        this.opcode('pushContext');\n      }\n\n      this.opcode('invokePartial', partialName.name, partial.indent || '');\n      this.opcode('append');\n    },\n\n    content: function(content) {\n      if (content.string) {\n        this.opcode('appendContent', content.string);\n      }\n    },\n\n    mustache: function(mustache) {\n      this.sexpr(mustache.sexpr);\n\n      if(mustache.escaped && !this.options.noEscape) {\n        this.opcode('appendEscaped');\n      } else {\n        this.opcode('append');\n      }\n    },\n\n    ambiguousSexpr: function(sexpr, program, inverse) {\n      var id = sexpr.id,\n          name = id.parts[0],\n          isBlock = program != null || inverse != null;\n\n      this.opcode('getContext', id.depth);\n\n      this.opcode('pushProgram', program);\n      this.opcode('pushProgram', inverse);\n\n      this.ID(id);\n\n      this.opcode('invokeAmbiguous', name, isBlock);\n    },\n\n    simpleSexpr: function(sexpr) {\n      var id = sexpr.id;\n\n      if (id.type === 'DATA') {\n        this.DATA(id);\n      } else if (id.parts.length) {\n        this.ID(id);\n      } else {\n        // Simplified ID for `this`\n        this.addDepth(id.depth);\n        this.opcode('getContext', id.depth);\n        this.opcode('pushContext');\n      }\n\n      this.opcode('resolvePossibleLambda');\n    },\n\n    helperSexpr: function(sexpr, program, inverse) {\n      var params = this.setupFullMustacheParams(sexpr, program, inverse),\n          id = sexpr.id,\n          name = id.parts[0];\n\n      if (this.options.knownHelpers[name]) {\n        this.opcode('invokeKnownHelper', params.length, name);\n      } else if (this.options.knownHelpersOnly) {\n        throw new Exception(\"You specified knownHelpersOnly, but used the unknown helper \" + name, sexpr);\n      } else {\n        id.falsy = true;\n\n        this.ID(id);\n        this.opcode('invokeHelper', params.length, id.original, id.isSimple);\n      }\n    },\n\n    sexpr: function(sexpr) {\n      var type = this.classifySexpr(sexpr);\n\n      if (type === \"simple\") {\n        this.simpleSexpr(sexpr);\n      } else if (type === \"helper\") {\n        this.helperSexpr(sexpr);\n      } else {\n        this.ambiguousSexpr(sexpr);\n      }\n    },\n\n    ID: function(id) {\n      this.addDepth(id.depth);\n      this.opcode('getContext', id.depth);\n\n      var name = id.parts[0];\n      if (!name) {\n        // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n        this.opcode('pushContext');\n      } else {\n        this.opcode('lookupOnContext', id.parts, id.falsy, id.isScoped);\n      }\n    },\n\n    DATA: function(data) {\n      this.options.data = true;\n      this.opcode('lookupData', data.id.depth, data.id.parts);\n    },\n\n    STRING: function(string) {\n      this.opcode('pushString', string.string);\n    },\n\n    NUMBER: function(number) {\n      this.opcode('pushLiteral', number.number);\n    },\n\n    BOOLEAN: function(bool) {\n      this.opcode('pushLiteral', bool.bool);\n    },\n\n    comment: function() {},\n\n    // HELPERS\n    opcode: function(name) {\n      this.opcodes.push({ opcode: name, args: slice.call(arguments, 1) });\n    },\n\n    addDepth: function(depth) {\n      if(depth === 0) { return; }\n\n      if(!this.depths[depth]) {\n        this.depths[depth] = true;\n        this.depths.list.push(depth);\n      }\n    },\n\n    classifySexpr: function(sexpr) {\n      var isHelper   = sexpr.isHelper;\n      var isEligible = sexpr.eligibleHelper;\n      var options    = this.options;\n\n      // if ambiguous, we can possibly resolve the ambiguity now\n      // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n      if (isEligible && !isHelper) {\n        var name = sexpr.id.parts[0];\n\n        if (options.knownHelpers[name]) {\n          isHelper = true;\n        } else if (options.knownHelpersOnly) {\n          isEligible = false;\n        }\n      }\n\n      if (isHelper) { return \"helper\"; }\n      else if (isEligible) { return \"ambiguous\"; }\n      else { return \"simple\"; }\n    },\n\n    pushParams: function(params) {\n      for(var i=0, l=params.length; i<l; i++) {\n        this.pushParam(params[i]);\n      }\n    },\n\n    pushParam: function(val) {\n      if (this.stringParams) {\n        if(val.depth) {\n          this.addDepth(val.depth);\n        }\n        this.opcode('getContext', val.depth || 0);\n        this.opcode('pushStringParam', val.stringModeValue, val.type);\n\n        if (val.type === 'sexpr') {\n          // Subexpressions get evaluated and passed in\n          // in string params mode.\n          this.sexpr(val);\n        }\n      } else {\n        if (this.trackIds) {\n          this.opcode('pushId', val.type, val.idName || val.stringModeValue);\n        }\n        this.accept(val);\n      }\n    },\n\n    setupFullMustacheParams: function(sexpr, program, inverse) {\n      var params = sexpr.params;\n      this.pushParams(params);\n\n      this.opcode('pushProgram', program);\n      this.opcode('pushProgram', inverse);\n\n      if (sexpr.hash) {\n        this.hash(sexpr.hash);\n      } else {\n        this.opcode('emptyHash');\n      }\n\n      return params;\n    }\n  };\n\n  function precompile(input, options, env) {\n    if (input == null || (typeof input !== 'string' && input.constructor !== env.AST.ProgramNode)) {\n      throw new Exception(\"You must pass a string or Handlebars AST to Handlebars.precompile. You passed \" + input);\n    }\n\n    options = options || {};\n    if (!('data' in options)) {\n      options.data = true;\n    }\n    if (options.compat) {\n      options.useDepths = true;\n    }\n\n    var ast = env.parse(input);\n    var environment = new env.Compiler().compile(ast, options);\n    return new env.JavaScriptCompiler().compile(environment, options);\n  }\n\n  __exports__.precompile = precompile;function compile(input, options, env) {\n    if (input == null || (typeof input !== 'string' && input.constructor !== env.AST.ProgramNode)) {\n      throw new Exception(\"You must pass a string or Handlebars AST to Handlebars.compile. You passed \" + input);\n    }\n\n    options = options || {};\n\n    if (!('data' in options)) {\n      options.data = true;\n    }\n    if (options.compat) {\n      options.useDepths = true;\n    }\n\n    var compiled;\n\n    function compileInput() {\n      var ast = env.parse(input);\n      var environment = new env.Compiler().compile(ast, options);\n      var templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);\n      return env.template(templateSpec);\n    }\n\n    // Template is only compiled on first use and cached after that point.\n    var ret = function(context, options) {\n      if (!compiled) {\n        compiled = compileInput();\n      }\n      return compiled.call(this, context, options);\n    };\n    ret._setup = function(options) {\n      if (!compiled) {\n        compiled = compileInput();\n      }\n      return compiled._setup(options);\n    };\n    ret._child = function(i, data, depths) {\n      if (!compiled) {\n        compiled = compileInput();\n      }\n      return compiled._child(i, data, depths);\n    };\n    return ret;\n  }\n\n  __exports__.compile = compile;function argEquals(a, b) {\n    if (a === b) {\n      return true;\n    }\n\n    if (isArray(a) && isArray(b) && a.length === b.length) {\n      for (var i = 0; i < a.length; i++) {\n        if (!argEquals(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n  return __exports__;\n})(__module5__, __module3__);\n\n// handlebars/compiler/javascript-compiler.js\nvar __module12__ = (function(__dependency1__, __dependency2__) {\n  \"use strict\";\n  var __exports__;\n  var COMPILER_REVISION = __dependency1__.COMPILER_REVISION;\n  var REVISION_CHANGES = __dependency1__.REVISION_CHANGES;\n  var Exception = __dependency2__;\n\n  function Literal(value) {\n    this.value = value;\n  }\n\n  function JavaScriptCompiler() {}\n\n  JavaScriptCompiler.prototype = {\n    // PUBLIC API: You can override these methods in a subclass to provide\n    // alternative compiled forms for name lookup and buffering semantics\n    nameLookup: function(parent, name /* , type*/) {\n      if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {\n        return parent + \".\" + name;\n      } else {\n        return parent + \"['\" + name + \"']\";\n      }\n    },\n    depthedLookup: function(name) {\n      this.aliases.lookup = 'this.lookup';\n\n      return 'lookup(depths, \"' + name + '\")';\n    },\n\n    compilerInfo: function() {\n      var revision = COMPILER_REVISION,\n          versions = REVISION_CHANGES[revision];\n      return [revision, versions];\n    },\n\n    appendToBuffer: function(string) {\n      if (this.environment.isSimple) {\n        return \"return \" + string + \";\";\n      } else {\n        return {\n          appendToBuffer: true,\n          content: string,\n          toString: function() { return \"buffer += \" + string + \";\"; }\n        };\n      }\n    },\n\n    initializeBuffer: function() {\n      return this.quotedString(\"\");\n    },\n\n    namespace: \"Handlebars\",\n    // END PUBLIC API\n\n    compile: function(environment, options, context, asObject) {\n      this.environment = environment;\n      this.options = options;\n      this.stringParams = this.options.stringParams;\n      this.trackIds = this.options.trackIds;\n      this.precompile = !asObject;\n\n      this.name = this.environment.name;\n      this.isChild = !!context;\n      this.context = context || {\n        programs: [],\n        environments: []\n      };\n\n      this.preamble();\n\n      this.stackSlot = 0;\n      this.stackVars = [];\n      this.aliases = {};\n      this.registers = { list: [] };\n      this.hashes = [];\n      this.compileStack = [];\n      this.inlineStack = [];\n\n      this.compileChildren(environment, options);\n\n      this.useDepths = this.useDepths || environment.depths.list.length || this.options.compat;\n\n      var opcodes = environment.opcodes,\n          opcode,\n          i,\n          l;\n\n      for (i = 0, l = opcodes.length; i < l; i++) {\n        opcode = opcodes[i];\n\n        this[opcode.opcode].apply(this, opcode.args);\n      }\n\n      // Flush any trailing content that might be pending.\n      this.pushSource('');\n\n      /* istanbul ignore next */\n      if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n        throw new Exception('Compile completed with content left on stack');\n      }\n\n      var fn = this.createFunctionContext(asObject);\n      if (!this.isChild) {\n        var ret = {\n          compiler: this.compilerInfo(),\n          main: fn\n        };\n        var programs = this.context.programs;\n        for (i = 0, l = programs.length; i < l; i++) {\n          if (programs[i]) {\n            ret[i] = programs[i];\n          }\n        }\n\n        if (this.environment.usePartial) {\n          ret.usePartial = true;\n        }\n        if (this.options.data) {\n          ret.useData = true;\n        }\n        if (this.useDepths) {\n          ret.useDepths = true;\n        }\n        if (this.options.compat) {\n          ret.compat = true;\n        }\n\n        if (!asObject) {\n          ret.compiler = JSON.stringify(ret.compiler);\n          ret = this.objectLiteral(ret);\n        }\n\n        return ret;\n      } else {\n        return fn;\n      }\n    },\n\n    preamble: function() {\n      // track the last context pushed into place to allow skipping the\n      // getContext opcode when it would be a noop\n      this.lastContext = 0;\n      this.source = [];\n    },\n\n    createFunctionContext: function(asObject) {\n      var varDeclarations = '';\n\n      var locals = this.stackVars.concat(this.registers.list);\n      if(locals.length > 0) {\n        varDeclarations += \", \" + locals.join(\", \");\n      }\n\n      // Generate minimizer alias mappings\n      for (var alias in this.aliases) {\n        if (this.aliases.hasOwnProperty(alias)) {\n          varDeclarations += ', ' + alias + '=' + this.aliases[alias];\n        }\n      }\n\n      var params = [\"depth0\", \"helpers\", \"partials\", \"data\"];\n\n      if (this.useDepths) {\n        params.push('depths');\n      }\n\n      // Perform a second pass over the output to merge content when possible\n      var source = this.mergeSource(varDeclarations);\n\n      if (asObject) {\n        params.push(source);\n\n        return Function.apply(this, params);\n      } else {\n        return 'function(' + params.join(',') + ') {\\n  ' + source + '}';\n      }\n    },\n    mergeSource: function(varDeclarations) {\n      var source = '',\n          buffer,\n          appendOnly = !this.forceBuffer,\n          appendFirst;\n\n      for (var i = 0, len = this.source.length; i < len; i++) {\n        var line = this.source[i];\n        if (line.appendToBuffer) {\n          if (buffer) {\n            buffer = buffer + '\\n    + ' + line.content;\n          } else {\n            buffer = line.content;\n          }\n        } else {\n          if (buffer) {\n            if (!source) {\n              appendFirst = true;\n              source = buffer + ';\\n  ';\n            } else {\n              source += 'buffer += ' + buffer + ';\\n  ';\n            }\n            buffer = undefined;\n          }\n          source += line + '\\n  ';\n\n          if (!this.environment.isSimple) {\n            appendOnly = false;\n          }\n        }\n      }\n\n      if (appendOnly) {\n        if (buffer || !source) {\n          source += 'return ' + (buffer || '\"\"') + ';\\n';\n        }\n      } else {\n        varDeclarations += \", buffer = \" + (appendFirst ? '' : this.initializeBuffer());\n        if (buffer) {\n          source += 'return buffer + ' + buffer + ';\\n';\n        } else {\n          source += 'return buffer;\\n';\n        }\n      }\n\n      if (varDeclarations) {\n        source = 'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n  ') + source;\n      }\n\n      return source;\n    },\n\n    // [blockValue]\n    //\n    // On stack, before: hash, inverse, program, value\n    // On stack, after: return value of blockHelperMissing\n    //\n    // The purpose of this opcode is to take a block of the form\n    // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n    // replace it on the stack with the result of properly\n    // invoking blockHelperMissing.\n    blockValue: function(name) {\n      this.aliases.blockHelperMissing = 'helpers.blockHelperMissing';\n\n      var params = [this.contextName(0)];\n      this.setupParams(name, 0, params);\n\n      var blockName = this.popStack();\n      params.splice(1, 0, blockName);\n\n      this.push('blockHelperMissing.call(' + params.join(', ') + ')');\n    },\n\n    // [ambiguousBlockValue]\n    //\n    // On stack, before: hash, inverse, program, value\n    // Compiler value, before: lastHelper=value of last found helper, if any\n    // On stack, after, if no lastHelper: same as [blockValue]\n    // On stack, after, if lastHelper: value\n    ambiguousBlockValue: function() {\n      this.aliases.blockHelperMissing = 'helpers.blockHelperMissing';\n\n      // We're being a bit cheeky and reusing the options value from the prior exec\n      var params = [this.contextName(0)];\n      this.setupParams('', 0, params, true);\n\n      this.flushInline();\n\n      var current = this.topStack();\n      params.splice(1, 0, current);\n\n      this.pushSource(\"if (!\" + this.lastHelper + \") { \" + current + \" = blockHelperMissing.call(\" + params.join(\", \") + \"); }\");\n    },\n\n    // [appendContent]\n    //\n    // On stack, before: ...\n    // On stack, after: ...\n    //\n    // Appends the string value of `content` to the current buffer\n    appendContent: function(content) {\n      if (this.pendingContent) {\n        content = this.pendingContent + content;\n      }\n\n      this.pendingContent = content;\n    },\n\n    // [append]\n    //\n    // On stack, before: value, ...\n    // On stack, after: ...\n    //\n    // Coerces `value` to a String and appends it to the current buffer.\n    //\n    // If `value` is truthy, or 0, it is coerced into a string and appended\n    // Otherwise, the empty string is appended\n    append: function() {\n      // Force anything that is inlined onto the stack so we don't have duplication\n      // when we examine local\n      this.flushInline();\n      var local = this.popStack();\n      this.pushSource('if (' + local + ' != null) { ' + this.appendToBuffer(local) + ' }');\n      if (this.environment.isSimple) {\n        this.pushSource(\"else { \" + this.appendToBuffer(\"''\") + \" }\");\n      }\n    },\n\n    // [appendEscaped]\n    //\n    // On stack, before: value, ...\n    // On stack, after: ...\n    //\n    // Escape `value` and append it to the buffer\n    appendEscaped: function() {\n      this.aliases.escapeExpression = 'this.escapeExpression';\n\n      this.pushSource(this.appendToBuffer(\"escapeExpression(\" + this.popStack() + \")\"));\n    },\n\n    // [getContext]\n    //\n    // On stack, before: ...\n    // On stack, after: ...\n    // Compiler value, after: lastContext=depth\n    //\n    // Set the value of the `lastContext` compiler value to the depth\n    getContext: function(depth) {\n      this.lastContext = depth;\n    },\n\n    // [pushContext]\n    //\n    // On stack, before: ...\n    // On stack, after: currentContext, ...\n    //\n    // Pushes the value of the current context onto the stack.\n    pushContext: function() {\n      this.pushStackLiteral(this.contextName(this.lastContext));\n    },\n\n    // [lookupOnContext]\n    //\n    // On stack, before: ...\n    // On stack, after: currentContext[name], ...\n    //\n    // Looks up the value of `name` on the current context and pushes\n    // it onto the stack.\n    lookupOnContext: function(parts, falsy, scoped) {\n      /*jshint -W083 */\n      var i = 0,\n          len = parts.length;\n\n      if (!scoped && this.options.compat && !this.lastContext) {\n        // The depthed query is expected to handle the undefined logic for the root level that\n        // is implemented below, so we evaluate that directly in compat mode\n        this.push(this.depthedLookup(parts[i++]));\n      } else {\n        this.pushContext();\n      }\n\n      for (; i < len; i++) {\n        this.replaceStack(function(current) {\n          var lookup = this.nameLookup(current, parts[i], 'context');\n          // We want to ensure that zero and false are handled properly if the context (falsy flag)\n          // needs to have the special handling for these values.\n          if (!falsy) {\n            return ' != null ? ' + lookup + ' : ' + current;\n          } else {\n            // Otherwise we can use generic falsy handling\n            return ' && ' + lookup;\n          }\n        });\n      }\n    },\n\n    // [lookupData]\n    //\n    // On stack, before: ...\n    // On stack, after: data, ...\n    //\n    // Push the data lookup operator\n    lookupData: function(depth, parts) {\n      /*jshint -W083 */\n      if (!depth) {\n        this.pushStackLiteral('data');\n      } else {\n        this.pushStackLiteral('this.data(data, ' + depth + ')');\n      }\n\n      var len = parts.length;\n      for (var i = 0; i < len; i++) {\n        this.replaceStack(function(current) {\n          return ' && ' + this.nameLookup(current, parts[i], 'data');\n        });\n      }\n    },\n\n    // [resolvePossibleLambda]\n    //\n    // On stack, before: value, ...\n    // On stack, after: resolved value, ...\n    //\n    // If the `value` is a lambda, replace it on the stack by\n    // the return value of the lambda\n    resolvePossibleLambda: function() {\n      this.aliases.lambda = 'this.lambda';\n\n      this.push('lambda(' + this.popStack() + ', ' + this.contextName(0) + ')');\n    },\n\n    // [pushStringParam]\n    //\n    // On stack, before: ...\n    // On stack, after: string, currentContext, ...\n    //\n    // This opcode is designed for use in string mode, which\n    // provides the string value of a parameter along with its\n    // depth rather than resolving it immediately.\n    pushStringParam: function(string, type) {\n      this.pushContext();\n      this.pushString(type);\n\n      // If it's a subexpression, the string result\n      // will be pushed after this opcode.\n      if (type !== 'sexpr') {\n        if (typeof string === 'string') {\n          this.pushString(string);\n        } else {\n          this.pushStackLiteral(string);\n        }\n      }\n    },\n\n    emptyHash: function() {\n      this.pushStackLiteral('{}');\n\n      if (this.trackIds) {\n        this.push('{}'); // hashIds\n      }\n      if (this.stringParams) {\n        this.push('{}'); // hashContexts\n        this.push('{}'); // hashTypes\n      }\n    },\n    pushHash: function() {\n      if (this.hash) {\n        this.hashes.push(this.hash);\n      }\n      this.hash = {values: [], types: [], contexts: [], ids: []};\n    },\n    popHash: function() {\n      var hash = this.hash;\n      this.hash = this.hashes.pop();\n\n      if (this.trackIds) {\n        this.push('{' + hash.ids.join(',') + '}');\n      }\n      if (this.stringParams) {\n        this.push('{' + hash.contexts.join(',') + '}');\n        this.push('{' + hash.types.join(',') + '}');\n      }\n\n      this.push('{\\n    ' + hash.values.join(',\\n    ') + '\\n  }');\n    },\n\n    // [pushString]\n    //\n    // On stack, before: ...\n    // On stack, after: quotedString(string), ...\n    //\n    // Push a quoted version of `string` onto the stack\n    pushString: function(string) {\n      this.pushStackLiteral(this.quotedString(string));\n    },\n\n    // [push]\n    //\n    // On stack, before: ...\n    // On stack, after: expr, ...\n    //\n    // Push an expression onto the stack\n    push: function(expr) {\n      this.inlineStack.push(expr);\n      return expr;\n    },\n\n    // [pushLiteral]\n    //\n    // On stack, before: ...\n    // On stack, after: value, ...\n    //\n    // Pushes a value onto the stack. This operation prevents\n    // the compiler from creating a temporary variable to hold\n    // it.\n    pushLiteral: function(value) {\n      this.pushStackLiteral(value);\n    },\n\n    // [pushProgram]\n    //\n    // On stack, before: ...\n    // On stack, after: program(guid), ...\n    //\n    // Push a program expression onto the stack. This takes\n    // a compile-time guid and converts it into a runtime-accessible\n    // expression.\n    pushProgram: function(guid) {\n      if (guid != null) {\n        this.pushStackLiteral(this.programExpression(guid));\n      } else {\n        this.pushStackLiteral(null);\n      }\n    },\n\n    // [invokeHelper]\n    //\n    // On stack, before: hash, inverse, program, params..., ...\n    // On stack, after: result of helper invocation\n    //\n    // Pops off the helper's parameters, invokes the helper,\n    // and pushes the helper's return value onto the stack.\n    //\n    // If the helper is not found, `helperMissing` is called.\n    invokeHelper: function(paramSize, name, isSimple) {\n      this.aliases.helperMissing = 'helpers.helperMissing';\n\n      var nonHelper = this.popStack();\n      var helper = this.setupHelper(paramSize, name);\n\n      var lookup = (isSimple ? helper.name + ' || ' : '') + nonHelper + ' || helperMissing';\n      this.push('((' + lookup + ').call(' + helper.callParams + '))');\n    },\n\n    // [invokeKnownHelper]\n    //\n    // On stack, before: hash, inverse, program, params..., ...\n    // On stack, after: result of helper invocation\n    //\n    // This operation is used when the helper is known to exist,\n    // so a `helperMissing` fallback is not required.\n    invokeKnownHelper: function(paramSize, name) {\n      var helper = this.setupHelper(paramSize, name);\n      this.push(helper.name + \".call(\" + helper.callParams + \")\");\n    },\n\n    // [invokeAmbiguous]\n    //\n    // On stack, before: hash, inverse, program, params..., ...\n    // On stack, after: result of disambiguation\n    //\n    // This operation is used when an expression like `{{foo}}`\n    // is provided, but we don't know at compile-time whether it\n    // is a helper or a path.\n    //\n    // This operation emits more code than the other options,\n    // and can be avoided by passing the `knownHelpers` and\n    // `knownHelpersOnly` flags at compile-time.\n    invokeAmbiguous: function(name, helperCall) {\n      this.aliases.functionType = '\"function\"';\n      this.aliases.helperMissing = 'helpers.helperMissing';\n      this.useRegister('helper');\n\n      var nonHelper = this.popStack();\n\n      this.emptyHash();\n      var helper = this.setupHelper(0, name, helperCall);\n\n      var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');\n\n      this.push(\n        '((helper = (helper = ' + helperName + ' || ' + nonHelper + ') != null ? helper : helperMissing'\n          + (helper.paramsInit ? '),(' + helper.paramsInit : '') + '),'\n        + '(typeof helper === functionType ? helper.call(' + helper.callParams + ') : helper))');\n    },\n\n    // [invokePartial]\n    //\n    // On stack, before: context, ...\n    // On stack after: result of partial invocation\n    //\n    // This operation pops off a context, invokes a partial with that context,\n    // and pushes the result of the invocation back.\n    invokePartial: function(name, indent) {\n      var params = [this.nameLookup('partials', name, 'partial'), \"'\" + indent + \"'\", \"'\" + name + \"'\", this.popStack(), this.popStack(), \"helpers\", \"partials\"];\n\n      if (this.options.data) {\n        params.push(\"data\");\n      } else if (this.options.compat) {\n        params.push('undefined');\n      }\n      if (this.options.compat) {\n        params.push('depths');\n      }\n\n      this.push(\"this.invokePartial(\" + params.join(\", \") + \")\");\n    },\n\n    // [assignToHash]\n    //\n    // On stack, before: value, ..., hash, ...\n    // On stack, after: ..., hash, ...\n    //\n    // Pops a value off the stack and assigns it to the current hash\n    assignToHash: function(key) {\n      var value = this.popStack(),\n          context,\n          type,\n          id;\n\n      if (this.trackIds) {\n        id = this.popStack();\n      }\n      if (this.stringParams) {\n        type = this.popStack();\n        context = this.popStack();\n      }\n\n      var hash = this.hash;\n      if (context) {\n        hash.contexts.push(\"'\" + key + \"': \" + context);\n      }\n      if (type) {\n        hash.types.push(\"'\" + key + \"': \" + type);\n      }\n      if (id) {\n        hash.ids.push(\"'\" + key + \"': \" + id);\n      }\n      hash.values.push(\"'\" + key + \"': (\" + value + \")\");\n    },\n\n    pushId: function(type, name) {\n      if (type === 'ID' || type === 'DATA') {\n        this.pushString(name);\n      } else if (type === 'sexpr') {\n        this.pushStackLiteral('true');\n      } else {\n        this.pushStackLiteral('null');\n      }\n    },\n\n    // HELPERS\n\n    compiler: JavaScriptCompiler,\n\n    compileChildren: function(environment, options) {\n      var children = environment.children, child, compiler;\n\n      for(var i=0, l=children.length; i<l; i++) {\n        child = children[i];\n        compiler = new this.compiler();\n\n        var index = this.matchExistingProgram(child);\n\n        if (index == null) {\n          this.context.programs.push('');     // Placeholder to prevent name conflicts for nested children\n          index = this.context.programs.length;\n          child.index = index;\n          child.name = 'program' + index;\n          this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);\n          this.context.environments[index] = child;\n\n          this.useDepths = this.useDepths || compiler.useDepths;\n        } else {\n          child.index = index;\n          child.name = 'program' + index;\n        }\n      }\n    },\n    matchExistingProgram: function(child) {\n      for (var i = 0, len = this.context.environments.length; i < len; i++) {\n        var environment = this.context.environments[i];\n        if (environment && environment.equals(child)) {\n          return i;\n        }\n      }\n    },\n\n    programExpression: function(guid) {\n      var child = this.environment.children[guid],\n          depths = child.depths.list,\n          useDepths = this.useDepths,\n          depth;\n\n      var programParams = [child.index, 'data'];\n\n      if (useDepths) {\n        programParams.push('depths');\n      }\n\n      return 'this.program(' + programParams.join(', ') + ')';\n    },\n\n    useRegister: function(name) {\n      if(!this.registers[name]) {\n        this.registers[name] = true;\n        this.registers.list.push(name);\n      }\n    },\n\n    pushStackLiteral: function(item) {\n      return this.push(new Literal(item));\n    },\n\n    pushSource: function(source) {\n      if (this.pendingContent) {\n        this.source.push(this.appendToBuffer(this.quotedString(this.pendingContent)));\n        this.pendingContent = undefined;\n      }\n\n      if (source) {\n        this.source.push(source);\n      }\n    },\n\n    pushStack: function(item) {\n      this.flushInline();\n\n      var stack = this.incrStack();\n      this.pushSource(stack + \" = \" + item + \";\");\n      this.compileStack.push(stack);\n      return stack;\n    },\n\n    replaceStack: function(callback) {\n      var prefix = '',\n          inline = this.isInline(),\n          stack,\n          createdStack,\n          usedLiteral;\n\n      /* istanbul ignore next */\n      if (!this.isInline()) {\n        throw new Exception('replaceStack on non-inline');\n      }\n\n      // We want to merge the inline statement into the replacement statement via ','\n      var top = this.popStack(true);\n\n      if (top instanceof Literal) {\n        // Literals do not need to be inlined\n        prefix = stack = top.value;\n        usedLiteral = true;\n      } else {\n        // Get or create the current stack name for use by the inline\n        createdStack = !this.stackSlot;\n        var name = !createdStack ? this.topStackName() : this.incrStack();\n\n        prefix = '(' + this.push(name) + ' = ' + top + ')';\n        stack = this.topStack();\n      }\n\n      var item = callback.call(this, stack);\n\n      if (!usedLiteral) {\n        this.popStack();\n      }\n      if (createdStack) {\n        this.stackSlot--;\n      }\n      this.push('(' + prefix + item + ')');\n    },\n\n    incrStack: function() {\n      this.stackSlot++;\n      if(this.stackSlot > this.stackVars.length) { this.stackVars.push(\"stack\" + this.stackSlot); }\n      return this.topStackName();\n    },\n    topStackName: function() {\n      return \"stack\" + this.stackSlot;\n    },\n    flushInline: function() {\n      var inlineStack = this.inlineStack;\n      if (inlineStack.length) {\n        this.inlineStack = [];\n        for (var i = 0, len = inlineStack.length; i < len; i++) {\n          var entry = inlineStack[i];\n          if (entry instanceof Literal) {\n            this.compileStack.push(entry);\n          } else {\n            this.pushStack(entry);\n          }\n        }\n      }\n    },\n    isInline: function() {\n      return this.inlineStack.length;\n    },\n\n    popStack: function(wrapped) {\n      var inline = this.isInline(),\n          item = (inline ? this.inlineStack : this.compileStack).pop();\n\n      if (!wrapped && (item instanceof Literal)) {\n        return item.value;\n      } else {\n        if (!inline) {\n          /* istanbul ignore next */\n          if (!this.stackSlot) {\n            throw new Exception('Invalid stack pop');\n          }\n          this.stackSlot--;\n        }\n        return item;\n      }\n    },\n\n    topStack: function() {\n      var stack = (this.isInline() ? this.inlineStack : this.compileStack),\n          item = stack[stack.length - 1];\n\n      if (item instanceof Literal) {\n        return item.value;\n      } else {\n        return item;\n      }\n    },\n\n    contextName: function(context) {\n      if (this.useDepths && context) {\n        return 'depths[' + context + ']';\n      } else {\n        return 'depth' + context;\n      }\n    },\n\n    quotedString: function(str) {\n      return '\"' + str\n        .replace(/\\\\/g, '\\\\\\\\')\n        .replace(/\"/g, '\\\\\"')\n        .replace(/\\n/g, '\\\\n')\n        .replace(/\\r/g, '\\\\r')\n        .replace(/\\u2028/g, '\\\\u2028')   // Per Ecma-262 7.3 + 7.8.4\n        .replace(/\\u2029/g, '\\\\u2029') + '\"';\n    },\n\n    objectLiteral: function(obj) {\n      var pairs = [];\n\n      for (var key in obj) {\n        if (obj.hasOwnProperty(key)) {\n          pairs.push(this.quotedString(key) + ':' + obj[key]);\n        }\n      }\n\n      return '{' + pairs.join(',') + '}';\n    },\n\n    setupHelper: function(paramSize, name, blockHelper) {\n      var params = [],\n          paramsInit = this.setupParams(name, paramSize, params, blockHelper);\n      var foundHelper = this.nameLookup('helpers', name, 'helper');\n\n      return {\n        params: params,\n        paramsInit: paramsInit,\n        name: foundHelper,\n        callParams: [this.contextName(0)].concat(params).join(\", \")\n      };\n    },\n\n    setupOptions: function(helper, paramSize, params) {\n      var options = {}, contexts = [], types = [], ids = [], param, inverse, program;\n\n      options.name = this.quotedString(helper);\n      options.hash = this.popStack();\n\n      if (this.trackIds) {\n        options.hashIds = this.popStack();\n      }\n      if (this.stringParams) {\n        options.hashTypes = this.popStack();\n        options.hashContexts = this.popStack();\n      }\n\n      inverse = this.popStack();\n      program = this.popStack();\n\n      // Avoid setting fn and inverse if neither are set. This allows\n      // helpers to do a check for `if (options.fn)`\n      if (program || inverse) {\n        if (!program) {\n          program = 'this.noop';\n        }\n\n        if (!inverse) {\n          inverse = 'this.noop';\n        }\n\n        options.fn = program;\n        options.inverse = inverse;\n      }\n\n      // The parameters go on to the stack in order (making sure that they are evaluated in order)\n      // so we need to pop them off the stack in reverse order\n      var i = paramSize;\n      while (i--) {\n        param = this.popStack();\n        params[i] = param;\n\n        if (this.trackIds) {\n          ids[i] = this.popStack();\n        }\n        if (this.stringParams) {\n          types[i] = this.popStack();\n          contexts[i] = this.popStack();\n        }\n      }\n\n      if (this.trackIds) {\n        options.ids = \"[\" + ids.join(\",\") + \"]\";\n      }\n      if (this.stringParams) {\n        options.types = \"[\" + types.join(\",\") + \"]\";\n        options.contexts = \"[\" + contexts.join(\",\") + \"]\";\n      }\n\n      if (this.options.data) {\n        options.data = \"data\";\n      }\n\n      return options;\n    },\n\n    // the params and contexts arguments are passed in arrays\n    // to fill in\n    setupParams: function(helperName, paramSize, params, useRegister) {\n      var options = this.objectLiteral(this.setupOptions(helperName, paramSize, params));\n\n      if (useRegister) {\n        this.useRegister('options');\n        params.push('options');\n        return 'options=' + options;\n      } else {\n        params.push(options);\n        return '';\n      }\n    }\n  };\n\n  var reservedWords = (\n    \"break else new var\" +\n    \" case finally return void\" +\n    \" catch for switch while\" +\n    \" continue function this with\" +\n    \" default if throw\" +\n    \" delete in try\" +\n    \" do instanceof typeof\" +\n    \" abstract enum int short\" +\n    \" boolean export interface static\" +\n    \" byte extends long super\" +\n    \" char final native synchronized\" +\n    \" class float package throws\" +\n    \" const goto private transient\" +\n    \" debugger implements protected volatile\" +\n    \" double import public let yield\"\n  ).split(\" \");\n\n  var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};\n\n  for(var i=0, l=reservedWords.length; i<l; i++) {\n    compilerWords[reservedWords[i]] = true;\n  }\n\n  JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n    return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);\n  };\n\n  __exports__ = JavaScriptCompiler;\n  return __exports__;\n})(__module2__, __module5__);\n\n// handlebars.js\nvar __module0__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {\n  \"use strict\";\n  var __exports__;\n  /*globals Handlebars: true */\n  var Handlebars = __dependency1__;\n\n  // Compiler imports\n  var AST = __dependency2__;\n  var Parser = __dependency3__.parser;\n  var parse = __dependency3__.parse;\n  var Compiler = __dependency4__.Compiler;\n  var compile = __dependency4__.compile;\n  var precompile = __dependency4__.precompile;\n  var JavaScriptCompiler = __dependency5__;\n\n  var _create = Handlebars.create;\n  var create = function() {\n    var hb = _create();\n\n    hb.compile = function(input, options) {\n      return compile(input, options, hb);\n    };\n    hb.precompile = function (input, options) {\n      return precompile(input, options, hb);\n    };\n\n    hb.AST = AST;\n    hb.Compiler = Compiler;\n    hb.JavaScriptCompiler = JavaScriptCompiler;\n    hb.Parser = Parser;\n    hb.parse = parse;\n\n    return hb;\n  };\n\n  Handlebars = create();\n  Handlebars.create = create;\n\n  Handlebars['default'] = Handlebars;\n\n  __exports__ = Handlebars;\n  return __exports__;\n})(__module1__, __module7__, __module8__, __module11__, __module12__);\n\n  return __module0__;\n}));\n\n","//>>excludeStart('excludeAfterBuild', pragmas.excludeAfterBuild)\n\n//     Underscore.js 1.3.3\n//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.\n//     Underscore is freely distributable under the MIT license.\n//     Portions of Underscore are inspired or borrowed from Prototype,\n//     Oliver Steele's Functional, and John Resig's Micro-Templating.\n//     For all details and documentation:\n//     http://documentcloud.github.com/underscore\n\ndefine('hbs/underscore',[],function() {\n\n  // Baseline setup\n  // --------------\n\n  // Establish the object that gets returned to break out of a loop iteration.\n  var breaker = {};\n\n  // Save bytes in the minified (but not gzipped) version:\n  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;\n\n  // Create quick reference variables for speed access to core prototypes.\n  var slice            = ArrayProto.slice,\n      unshift          = ArrayProto.unshift,\n      toString         = ObjProto.toString,\n      hasOwnProperty   = ObjProto.hasOwnProperty;\n\n  // All **ECMAScript 5** native function implementations that we hope to use\n  // are declared here.\n  var\n    nativeForEach      = ArrayProto.forEach,\n    nativeMap          = ArrayProto.map,\n    nativeReduce       = ArrayProto.reduce,\n    nativeReduceRight  = ArrayProto.reduceRight,\n    nativeFilter       = ArrayProto.filter,\n    nativeEvery        = ArrayProto.every,\n    nativeSome         = ArrayProto.some,\n    nativeIndexOf      = ArrayProto.indexOf,\n    nativeLastIndexOf  = ArrayProto.lastIndexOf,\n    nativeIsArray      = Array.isArray,\n    nativeKeys         = Object.keys,\n    nativeBind         = FuncProto.bind;\n\n  // Create a safe reference to the Underscore object for use below.\n  var _ = function(obj) { return new wrapper(obj); };\n\n  // Current version.\n  _.VERSION = '1.3.3';\n\n  // Collection Functions\n  // --------------------\n\n  // The cornerstone, an `each` implementation, aka `forEach`.\n  // Handles objects with the built-in `forEach`, arrays, and raw objects.\n  // Delegates to **ECMAScript 5**'s native `forEach` if available.\n  var each = _.each = _.forEach = function(obj, iterator, context) {\n    if (obj == null) return;\n    if (nativeForEach && obj.forEach === nativeForEach) {\n      obj.forEach(iterator, context);\n    } else if (obj.length === +obj.length) {\n      for (var i = 0, l = obj.length; i < l; i++) {\n        if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;\n      }\n    } else {\n      for (var key in obj) {\n        if (_.has(obj, key)) {\n          if (iterator.call(context, obj[key], key, obj) === breaker) return;\n        }\n      }\n    }\n  };\n\n  // Return the results of applying the iterator to each element.\n  // Delegates to **ECMAScript 5**'s native `map` if available.\n  _.map = _.collect = function(obj, iterator, context) {\n    var results = [];\n    if (obj == null) return results;\n    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n    each(obj, function(value, index, list) {\n      results[results.length] = iterator.call(context, value, index, list);\n    });\n    if (obj.length === +obj.length) results.length = obj.length;\n    return results;\n  };\n\n  // **Reduce** builds up a single result from a list of values, aka `inject`,\n  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.\n  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {\n    var initial = arguments.length > 2;\n    if (obj == null) obj = [];\n    if (nativeReduce && obj.reduce === nativeReduce) {\n      if (context) iterator = _.bind(iterator, context);\n      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);\n    }\n    each(obj, function(value, index, list) {\n      if (!initial) {\n        memo = value;\n        initial = true;\n      } else {\n        memo = iterator.call(context, memo, value, index, list);\n      }\n    });\n    if (!initial) throw new TypeError('Reduce of empty array with no initial value');\n    return memo;\n  };\n\n  // The right-associative version of reduce, also known as `foldr`.\n  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.\n  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {\n    var initial = arguments.length > 2;\n    if (obj == null) obj = [];\n    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {\n      if (context) iterator = _.bind(iterator, context);\n      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);\n    }\n    var reversed = _.toArray(obj).reverse();\n    if (context && !initial) iterator = _.bind(iterator, context);\n    return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);\n  };\n\n  // Return the first value which passes a truth test. Aliased as `detect`.\n  _.find = _.detect = function(obj, iterator, context) {\n    var result;\n    any(obj, function(value, index, list) {\n      if (iterator.call(context, value, index, list)) {\n        result = value;\n        return true;\n      }\n    });\n    return result;\n  };\n\n  // Return all the elements that pass a truth test.\n  // Delegates to **ECMAScript 5**'s native `filter` if available.\n  // Aliased as `select`.\n  _.filter = _.select = function(obj, iterator, context) {\n    var results = [];\n    if (obj == null) return results;\n    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);\n    each(obj, function(value, index, list) {\n      if (iterator.call(context, value, index, list)) results[results.length] = value;\n    });\n    return results;\n  };\n\n  // Return all the elements for which a truth test fails.\n  _.reject = function(obj, iterator, context) {\n    var results = [];\n    if (obj == null) return results;\n    each(obj, function(value, index, list) {\n      if (!iterator.call(context, value, index, list)) results[results.length] = value;\n    });\n    return results;\n  };\n\n  // Determine whether all of the elements match a truth test.\n  // Delegates to **ECMAScript 5**'s native `every` if available.\n  // Aliased as `all`.\n  _.every = _.all = function(obj, iterator, context) {\n    var result = true;\n    if (obj == null) return result;\n    if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);\n    each(obj, function(value, index, list) {\n      if (!(result = result && iterator.call(context, value, index, list))) return breaker;\n    });\n    return !!result;\n  };\n\n  // Determine if at least one element in the object matches a truth test.\n  // Delegates to **ECMAScript 5**'s native `some` if available.\n  // Aliased as `any`.\n  var any = _.some = _.any = function(obj, iterator, context) {\n    iterator || (iterator = _.identity);\n    var result = false;\n    if (obj == null) return result;\n    if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);\n    each(obj, function(value, index, list) {\n      if (result || (result = iterator.call(context, value, index, list))) return breaker;\n    });\n    return !!result;\n  };\n\n  // Determine if a given value is included in the array or object using `===`.\n  // Aliased as `contains`.\n  _.include = _.contains = function(obj, target) {\n    var found = false;\n    if (obj == null) return found;\n    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;\n    found = any(obj, function(value) {\n      return value === target;\n    });\n    return found;\n  };\n\n  // Invoke a method (with arguments) on every item in a collection.\n  _.invoke = function(obj, method) {\n    var args = slice.call(arguments, 2);\n    return _.map(obj, function(value) {\n      return (_.isFunction(method) ? method || value : value[method]).apply(value, args);\n    });\n  };\n\n  // Convenience version of a common use case of `map`: fetching a property.\n  _.pluck = function(obj, key) {\n    return _.map(obj, function(value){ return value[key]; });\n  };\n\n  // Return the maximum element or (element-based computation).\n  _.max = function(obj, iterator, context) {\n    if (!iterator && _.isArray(obj) && obj[0] === +obj[0]) return Math.max.apply(Math, obj);\n    if (!iterator && _.isEmpty(obj)) return -Infinity;\n    var result = {computed : -Infinity};\n    each(obj, function(value, index, list) {\n      var computed = iterator ? iterator.call(context, value, index, list) : value;\n      computed >= result.computed && (result = {value : value, computed : computed});\n    });\n    return result.value;\n  };\n\n  // Return the minimum element (or element-based computation).\n  _.min = function(obj, iterator, context) {\n    if (!iterator && _.isArray(obj) && obj[0] === +obj[0]) return Math.min.apply(Math, obj);\n    if (!iterator && _.isEmpty(obj)) return Infinity;\n    var result = {computed : Infinity};\n    each(obj, function(value, index, list) {\n      var computed = iterator ? iterator.call(context, value, index, list) : value;\n      computed < result.computed && (result = {value : value, computed : computed});\n    });\n    return result.value;\n  };\n\n  // Shuffle an array.\n  _.shuffle = function(obj) {\n    var shuffled = [], rand;\n    each(obj, function(value, index, list) {\n      rand = Math.floor(Math.random() * (index + 1));\n      shuffled[index] = shuffled[rand];\n      shuffled[rand] = value;\n    });\n    return shuffled;\n  };\n\n  // Sort the object's values by a criterion produced by an iterator.\n  _.sortBy = function(obj, val, context) {\n    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };\n    return _.pluck(_.map(obj, function(value, index, list) {\n      return {\n        value : value,\n        criteria : iterator.call(context, value, index, list)\n      };\n    }).sort(function(left, right) {\n      var a = left.criteria, b = right.criteria;\n      if (a === void 0) return 1;\n      if (b === void 0) return -1;\n      return a < b ? -1 : a > b ? 1 : 0;\n    }), 'value');\n  };\n\n  // Groups the object's values by a criterion. Pass either a string attribute\n  // to group by, or a function that returns the criterion.\n  _.groupBy = function(obj, val) {\n    var result = {};\n    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };\n    each(obj, function(value, index) {\n      var key = iterator(value, index);\n      (result[key] || (result[key] = [])).push(value);\n    });\n    return result;\n  };\n\n  // Use a comparator function to figure out at what index an object should\n  // be inserted so as to maintain order. Uses binary search.\n  _.sortedIndex = function(array, obj, iterator) {\n    iterator || (iterator = _.identity);\n    var low = 0, high = array.length;\n    while (low < high) {\n      var mid = (low + high) >> 1;\n      iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;\n    }\n    return low;\n  };\n\n  // Safely convert anything iterable into a real, live array.\n  _.toArray = function(obj) {\n    if (!obj)                                     return [];\n    if (_.isArray(obj))                           return slice.call(obj);\n    if (_.isArguments(obj))                       return slice.call(obj);\n    if (obj.toArray && _.isFunction(obj.toArray)) return obj.toArray();\n    return _.values(obj);\n  };\n\n  // Return the number of elements in an object.\n  _.size = function(obj) {\n    return _.isArray(obj) ? obj.length : _.keys(obj).length;\n  };\n\n  // Array Functions\n  // ---------------\n\n  // Get the first element of an array. Passing **n** will return the first N\n  // values in the array. Aliased as `head` and `take`. The **guard** check\n  // allows it to work with `_.map`.\n  _.first = _.head = _.take = function(array, n, guard) {\n    return (n != null) && !guard ? slice.call(array, 0, n) : array[0];\n  };\n\n  // Returns everything but the last entry of the array. Especcialy useful on\n  // the arguments object. Passing **n** will return all the values in\n  // the array, excluding the last N. The **guard** check allows it to work with\n  // `_.map`.\n  _.initial = function(array, n, guard) {\n    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));\n  };\n\n  // Get the last element of an array. Passing **n** will return the last N\n  // values in the array. The **guard** check allows it to work with `_.map`.\n  _.last = function(array, n, guard) {\n    if ((n != null) && !guard) {\n      return slice.call(array, Math.max(array.length - n, 0));\n    } else {\n      return array[array.length - 1];\n    }\n  };\n\n  // Returns everything but the first entry of the array. Aliased as `tail`.\n  // Especially useful on the arguments object. Passing an **index** will return\n  // the rest of the values in the array from that index onward. The **guard**\n  // check allows it to work with `_.map`.\n  _.rest = _.tail = function(array, index, guard) {\n    return slice.call(array, (index == null) || guard ? 1 : index);\n  };\n\n  // Trim out all falsy values from an array.\n  _.compact = function(array) {\n    return _.filter(array, function(value){ return !!value; });\n  };\n\n  // Return a completely flattened version of an array.\n  _.flatten = function(array, shallow) {\n    return _.reduce(array, function(memo, value) {\n      if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));\n      memo[memo.length] = value;\n      return memo;\n    }, []);\n  };\n\n  // Return a version of the array that does not contain the specified value(s).\n  _.without = function(array) {\n    return _.difference(array, slice.call(arguments, 1));\n  };\n\n  // Produce a duplicate-free version of the array. If the array has already\n  // been sorted, you have the option of using a faster algorithm.\n  // Aliased as `unique`.\n  _.uniq = _.unique = function(array, isSorted, iterator) {\n    var initial = iterator ? _.map(array, iterator) : array;\n    var results = [];\n    // The `isSorted` flag is irrelevant if the array only contains two elements.\n    if (array.length < 3) isSorted = true;\n    _.reduce(initial, function (memo, value, index) {\n      if (isSorted ? _.last(memo) !== value || !memo.length : !_.include(memo, value)) {\n        memo.push(value);\n        results.push(array[index]);\n      }\n      return memo;\n    }, []);\n    return results;\n  };\n\n  // Produce an array that contains the union: each distinct element from all of\n  // the passed-in arrays.\n  _.union = function() {\n    return _.uniq(_.flatten(arguments, true));\n  };\n\n  // Produce an array that contains every item shared between all the\n  // passed-in arrays. (Aliased as \"intersect\" for back-compat.)\n  _.intersection = _.intersect = function(array) {\n    var rest = slice.call(arguments, 1);\n    return _.filter(_.uniq(array), function(item) {\n      return _.every(rest, function(other) {\n        return _.indexOf(other, item) >= 0;\n      });\n    });\n  };\n\n  // Take the difference between one array and a number of other arrays.\n  // Only the elements present in just the first array will remain.\n  _.difference = function(array) {\n    var rest = _.flatten(slice.call(arguments, 1), true);\n    return _.filter(array, function(value){ return !_.include(rest, value); });\n  };\n\n  // Zip together multiple lists into a single array -- elements that share\n  // an index go together.\n  _.zip = function() {\n    var args = slice.call(arguments);\n    var length = _.max(_.pluck(args, 'length'));\n    var results = new Array(length);\n    for (var i = 0; i < length; i++) results[i] = _.pluck(args, \"\" + i);\n    return results;\n  };\n\n  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),\n  // we need this function. Return the position of the first occurrence of an\n  // item in an array, or -1 if the item is not included in the array.\n  // Delegates to **ECMAScript 5**'s native `indexOf` if available.\n  // If the array is large and already in sort order, pass `true`\n  // for **isSorted** to use binary search.\n  _.indexOf = function(array, item, isSorted) {\n    if (array == null) return -1;\n    var i, l;\n    if (isSorted) {\n      i = _.sortedIndex(array, item);\n      return array[i] === item ? i : -1;\n    }\n    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);\n    for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;\n    return -1;\n  };\n\n  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.\n  _.lastIndexOf = function(array, item) {\n    if (array == null) return -1;\n    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);\n    var i = array.length;\n    while (i--) if (i in array && array[i] === item) return i;\n    return -1;\n  };\n\n  // Generate an integer Array containing an arithmetic progression. A port of\n  // the native Python `range()` function. See\n  // [the Python documentation](http://docs.python.org/library/functions.html#range).\n  _.range = function(start, stop, step) {\n    if (arguments.length <= 1) {\n      stop = start || 0;\n      start = 0;\n    }\n    step = arguments[2] || 1;\n\n    var len = Math.max(Math.ceil((stop - start) / step), 0);\n    var idx = 0;\n    var range = new Array(len);\n\n    while(idx < len) {\n      range[idx++] = start;\n      start += step;\n    }\n\n    return range;\n  };\n\n  // Function (ahem) Functions\n  // ------------------\n\n  // Reusable constructor function for prototype setting.\n  var ctor = function(){};\n\n  // Create a function bound to a given object (assigning `this`, and arguments,\n  // optionally). Binding with arguments is also known as `curry`.\n  // Delegates to **ECMAScript 5**'s native `Function.bind` if available.\n  // We check for `func.bind` first, to fail fast when `func` is undefined.\n  _.bind = function bind(func, context) {\n    var bound, args;\n    if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));\n    if (!_.isFunction(func)) throw new TypeError;\n    args = slice.call(arguments, 2);\n    return bound = function() {\n      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));\n      ctor.prototype = func.prototype;\n      var self = new ctor;\n      var result = func.apply(self, args.concat(slice.call(arguments)));\n      if (Object(result) === result) return result;\n      return self;\n    };\n  };\n\n  // Bind all of an object's methods to that object. Useful for ensuring that\n  // all callbacks defined on an object belong to it.\n  _.bindAll = function(obj) {\n    var funcs = slice.call(arguments, 1);\n    if (funcs.length == 0) funcs = _.functions(obj);\n    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });\n    return obj;\n  };\n\n  // Memoize an expensive function by storing its results.\n  _.memoize = function(func, hasher) {\n    var memo = {};\n    hasher || (hasher = _.identity);\n    return function() {\n      var key = hasher.apply(this, arguments);\n      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));\n    };\n  };\n\n  // Delays a function for the given number of milliseconds, and then calls\n  // it with the arguments supplied.\n  _.delay = function(func, wait) {\n    var args = slice.call(arguments, 2);\n    return setTimeout(function(){ return func.apply(null, args); }, wait);\n  };\n\n  // Defers a function, scheduling it to run after the current call stack has\n  // cleared.\n  _.defer = function(func) {\n    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));\n  };\n\n  // Returns a function, that, when invoked, will only be triggered at most once\n  // during a given window of time.\n  _.throttle = function(func, wait) {\n    var context, args, timeout, throttling, more, result;\n    var whenDone = _.debounce(function(){ more = throttling = false; }, wait);\n    return function() {\n      context = this; args = arguments;\n      var later = function() {\n        timeout = null;\n        if (more) func.apply(context, args);\n        whenDone();\n      };\n      if (!timeout) timeout = setTimeout(later, wait);\n      if (throttling) {\n        more = true;\n      } else {\n        result = func.apply(context, args);\n      }\n      whenDone();\n      throttling = true;\n      return result;\n    };\n  };\n\n  // Returns a function, that, as long as it continues to be invoked, will not\n  // be triggered. The function will be called after it stops being called for\n  // N milliseconds. If `immediate` is passed, trigger the function on the\n  // leading edge, instead of the trailing.\n  _.debounce = function(func, wait, immediate) {\n    var timeout;\n    return function() {\n      var context = this, args = arguments;\n      var later = function() {\n        timeout = null;\n        if (!immediate) func.apply(context, args);\n      };\n      if (immediate && !timeout) func.apply(context, args);\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n    };\n  };\n\n  // Returns a function that will be executed at most one time, no matter how\n  // often you call it. Useful for lazy initialization.\n  _.once = function(func) {\n    var ran = false, memo;\n    return function() {\n      if (ran) return memo;\n      ran = true;\n      return memo = func.apply(this, arguments);\n    };\n  };\n\n  // Returns the first function passed as an argument to the second,\n  // allowing you to adjust arguments, run code before and after, and\n  // conditionally execute the original function.\n  _.wrap = function(func, wrapper) {\n    return function() {\n      var args = [func].concat(slice.call(arguments, 0));\n      return wrapper.apply(this, args);\n    };\n  };\n\n  // Returns a function that is the composition of a list of functions, each\n  // consuming the return value of the function that follows.\n  _.compose = function() {\n    var funcs = arguments;\n    return function() {\n      var args = arguments;\n      for (var i = funcs.length - 1; i >= 0; i--) {\n        args = [funcs[i].apply(this, args)];\n      }\n      return args[0];\n    };\n  };\n\n  // Returns a function that will only be executed after being called N times.\n  _.after = function(times, func) {\n    if (times <= 0) return func();\n    return function() {\n      if (--times < 1) { return func.apply(this, arguments); }\n    };\n  };\n\n  // Object Functions\n  // ----------------\n\n  // Retrieve the names of an object's properties.\n  // Delegates to **ECMAScript 5**'s native `Object.keys`\n  _.keys = nativeKeys || function(obj) {\n    if (obj !== Object(obj)) throw new TypeError('Invalid object');\n    var keys = [];\n    for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;\n    return keys;\n  };\n\n  // Retrieve the values of an object's properties.\n  _.values = function(obj) {\n    return _.map(obj, _.identity);\n  };\n\n  // Return a sorted list of the function names available on the object.\n  // Aliased as `methods`\n  _.functions = _.methods = function(obj) {\n    var names = [];\n    for (var key in obj) {\n      if (_.isFunction(obj[key])) names.push(key);\n    }\n    return names.sort();\n  };\n\n  // Extend a given object with all the properties in passed-in object(s).\n  _.extend = function(obj) {\n    each(slice.call(arguments, 1), function(source) {\n      for (var prop in source) {\n        obj[prop] = source[prop];\n      }\n    });\n    return obj;\n  };\n\n  // Return a copy of the object only containing the whitelisted properties.\n  _.pick = function(obj) {\n    var result = {};\n    each(_.flatten(slice.call(arguments, 1)), function(key) {\n      if (key in obj) result[key] = obj[key];\n    });\n    return result;\n  };\n\n  // Fill in a given object with default properties.\n  _.defaults = function(obj) {\n    each(slice.call(arguments, 1), function(source) {\n      for (var prop in source) {\n        if (obj[prop] == null) obj[prop] = source[prop];\n      }\n    });\n    return obj;\n  };\n\n  // Create a (shallow-cloned) duplicate of an object.\n  _.clone = function(obj) {\n    if (!_.isObject(obj)) return obj;\n    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n  };\n\n  // Invokes interceptor with the obj, and then returns obj.\n  // The primary purpose of this method is to \"tap into\" a method chain, in\n  // order to perform operations on intermediate results within the chain.\n  _.tap = function(obj, interceptor) {\n    interceptor(obj);\n    return obj;\n  };\n\n  // Internal recursive comparison function.\n  function eq(a, b, stack) {\n    // Identical objects are equal. `0 === -0`, but they aren't identical.\n    // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.\n    if (a === b) return a !== 0 || 1 / a == 1 / b;\n    // A strict comparison is necessary because `null == undefined`.\n    if (a == null || b == null) return a === b;\n    // Unwrap any wrapped objects.\n    if (a._chain) a = a._wrapped;\n    if (b._chain) b = b._wrapped;\n    // Invoke a custom `isEqual` method if one is provided.\n    if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);\n    if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);\n    // Compare `[[Class]]` names.\n    var className = toString.call(a);\n    if (className != toString.call(b)) return false;\n    switch (className) {\n      // Strings, numbers, dates, and booleans are compared by value.\n      case '[object String]':\n        // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n        // equivalent to `new String(\"5\")`.\n        return a == String(b);\n      case '[object Number]':\n        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for\n        // other numeric values.\n        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);\n      case '[object Date]':\n      case '[object Boolean]':\n        // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n        // millisecond representations. Note that invalid dates with millisecond representations\n        // of `NaN` are not equivalent.\n        return +a == +b;\n      // RegExps are compared by their source patterns and flags.\n      case '[object RegExp]':\n        return a.source == b.source &&\n               a.global == b.global &&\n               a.multiline == b.multiline &&\n               a.ignoreCase == b.ignoreCase;\n    }\n    if (typeof a != 'object' || typeof b != 'object') return false;\n    // Assume equality for cyclic structures. The algorithm for detecting cyclic\n    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n    var length = stack.length;\n    while (length--) {\n      // Linear search. Performance is inversely proportional to the number of\n      // unique nested structures.\n      if (stack[length] == a) return true;\n    }\n    // Add the first object to the stack of traversed objects.\n    stack.push(a);\n    var size = 0, result = true;\n    // Recursively compare objects and arrays.\n    if (className == '[object Array]') {\n      // Compare array lengths to determine if a deep comparison is necessary.\n      size = a.length;\n      result = size == b.length;\n      if (result) {\n        // Deep compare the contents, ignoring non-numeric properties.\n        while (size--) {\n          // Ensure commutative equality for sparse arrays.\n          if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;\n        }\n      }\n    } else {\n      // Objects with different constructors are not equivalent.\n      if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;\n      // Deep compare objects.\n      for (var key in a) {\n        if (_.has(a, key)) {\n          // Count the expected number of properties.\n          size++;\n          // Deep compare each member.\n          if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;\n        }\n      }\n      // Ensure that both objects contain the same number of properties.\n      if (result) {\n        for (key in b) {\n          if (_.has(b, key) && !(size--)) break;\n        }\n        result = !size;\n      }\n    }\n    // Remove the first object from the stack of traversed objects.\n    stack.pop();\n    return result;\n  }\n\n  // Perform a deep comparison to check if two objects are equal.\n  _.isEqual = function(a, b) {\n    return eq(a, b, []);\n  };\n\n  // Is a given array, string, or object empty?\n  // An \"empty\" object has no enumerable own-properties.\n  _.isEmpty = function(obj) {\n    if (obj == null) return true;\n    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;\n    for (var key in obj) if (_.has(obj, key)) return false;\n    return true;\n  };\n\n  // Is a given value a DOM element?\n  _.isElement = function(obj) {\n    return !!(obj && obj.nodeType == 1);\n  };\n\n  // Is a given value an array?\n  // Delegates to ECMA5's native Array.isArray\n  _.isArray = nativeIsArray || function(obj) {\n    return toString.call(obj) == '[object Array]';\n  };\n\n  // Is a given variable an object?\n  _.isObject = function(obj) {\n    return obj === Object(obj);\n  };\n\n  // Is a given variable an arguments object?\n  _.isArguments = function(obj) {\n    return toString.call(obj) == '[object Arguments]';\n  };\n  if (!_.isArguments(arguments)) {\n    _.isArguments = function(obj) {\n      return !!(obj && _.has(obj, 'callee'));\n    };\n  }\n\n  // Is a given value a function?\n  _.isFunction = function(obj) {\n    return toString.call(obj) == '[object Function]';\n  };\n\n  // Is a given value a string?\n  _.isString = function(obj) {\n    return toString.call(obj) == '[object String]';\n  };\n\n  // Is a given value a number?\n  _.isNumber = function(obj) {\n    return toString.call(obj) == '[object Number]';\n  };\n\n  // Is a given object a finite number?\n  _.isFinite = function(obj) {\n    return _.isNumber(obj) && isFinite(obj);\n  };\n\n  // Is the given value `NaN`?\n  _.isNaN = function(obj) {\n    // `NaN` is the only value for which `===` is not reflexive.\n    return obj !== obj;\n  };\n\n  // Is a given value a boolean?\n  _.isBoolean = function(obj) {\n    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';\n  };\n\n  // Is a given value a date?\n  _.isDate = function(obj) {\n    return toString.call(obj) == '[object Date]';\n  };\n\n  // Is the given value a regular expression?\n  _.isRegExp = function(obj) {\n    return toString.call(obj) == '[object RegExp]';\n  };\n\n  // Is a given value equal to null?\n  _.isNull = function(obj) {\n    return obj === null;\n  };\n\n  // Is a given variable undefined?\n  _.isUndefined = function(obj) {\n    return obj === void 0;\n  };\n\n  // Has own property?\n  _.has = function(obj, key) {\n    return hasOwnProperty.call(obj, key);\n  };\n\n  // Utility Functions\n  // -----------------\n\n  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n  // previous owner. Returns a reference to the Underscore object.\n  _.noConflict = function() {\n    root._ = previousUnderscore;\n    return this;\n  };\n\n  // Keep the identity function around for default iterators.\n  _.identity = function(value) {\n    return value;\n  };\n\n  // Run a function **n** times.\n  _.times = function (n, iterator, context) {\n    for (var i = 0; i < n; i++) iterator.call(context, i);\n  };\n\n  // Escape a string for HTML interpolation.\n  _.escape = function(string) {\n    return (''+string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\\//g,'&#x2F;');\n  };\n\n  // If the value of the named property is a function then invoke it;\n  // otherwise, return it.\n  _.result = function(object, property) {\n    if (object == null) return null;\n    var value = object[property];\n    return _.isFunction(value) ? value.call(object) : value;\n  };\n\n  // Add your own custom functions to the Underscore object, ensuring that\n  // they're correctly added to the OOP wrapper as well.\n  _.mixin = function(obj) {\n    each(_.functions(obj), function(name){\n      addToWrapper(name, _[name] = obj[name]);\n    });\n  };\n\n  // Generate a unique integer id (unique within the entire client session).\n  // Useful for temporary DOM ids.\n  var idCounter = 0;\n  _.uniqueId = function(prefix) {\n    var id = idCounter++;\n    return prefix ? prefix + id : id;\n  };\n\n  // By default, Underscore uses ERB-style template delimiters, change the\n  // following template settings to use alternative delimiters.\n  _.templateSettings = {\n    evaluate    : /<%([\\s\\S]+?)%>/g,\n    interpolate : /<%=([\\s\\S]+?)%>/g,\n    escape      : /<%-([\\s\\S]+?)%>/g\n  };\n\n  // When customizing `templateSettings`, if you don't want to define an\n  // interpolation, evaluation or escaping regex, we need one that is\n  // guaranteed not to match.\n  var noMatch = /.^/;\n\n  // Certain characters need to be escaped so that they can be put into a\n  // string literal.\n  var escapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    'r': '\\r',\n    'n': '\\n',\n    't': '\\t',\n    'u2028': '\\u2028',\n    'u2029': '\\u2029'\n  };\n\n  for (var p in escapes) escapes[escapes[p]] = p;\n  var escaper = /\\\\|'|\\r|\\n|\\t|\\u2028|\\u2029/g;\n  var unescaper = /\\\\(\\\\|'|r|n|t|u2028|u2029)/g;\n\n  // Within an interpolation, evaluation, or escaping, remove HTML escaping\n  // that had been previously added.\n  var unescape = function(code) {\n    return code.replace(unescaper, function(match, escape) {\n      return escapes[escape];\n    });\n  };\n\n  // JavaScript micro-templating, similar to John Resig's implementation.\n  // Underscore templating handles arbitrary delimiters, preserves whitespace,\n  // and correctly escapes quotes within interpolated code.\n  _.template = function(text, data, settings) {\n    settings = _.defaults(settings || {}, _.templateSettings);\n\n    // Compile the template source, taking care to escape characters that\n    // cannot be included in a string literal and then unescape them in code\n    // blocks.\n    var source = \"__p+='\" + text\n      .replace(escaper, function(match) {\n        return '\\\\' + escapes[match];\n      })\n      .replace(settings.escape || noMatch, function(match, code) {\n        return \"'+\\n_.escape(\" + unescape(code) + \")+\\n'\";\n      })\n      .replace(settings.interpolate || noMatch, function(match, code) {\n        return \"'+\\n(\" + unescape(code) + \")+\\n'\";\n      })\n      .replace(settings.evaluate || noMatch, function(match, code) {\n        return \"';\\n\" + unescape(code) + \"\\n;__p+='\";\n      }) + \"';\\n\";\n\n    // If a variable is not specified, place data values in local scope.\n    if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n    source = \"var __p='';\" +\n      \"var print=function(){__p+=Array.prototype.join.call(arguments, '')};\\n\" +\n      source + \"return __p;\\n\";\n\n    var render = new Function(settings.variable || 'obj', '_', source);\n    if (data) return render(data, _);\n    var template = function(data) {\n      return render.call(this, data, _);\n    };\n\n    // Provide the compiled function source as a convenience for build time\n    // precompilation.\n    template.source = 'function(' + (settings.variable || 'obj') + '){\\n' +\n      source + '}';\n\n    return template;\n  };\n\n  // Add a \"chain\" function, which will delegate to the wrapper.\n  _.chain = function(obj) {\n    return _(obj).chain();\n  };\n\n  // The OOP Wrapper\n  // ---------------\n\n  // If Underscore is called as a function, it returns a wrapped object that\n  // can be used OO-style. This wrapper holds altered versions of all the\n  // underscore functions. Wrapped objects may be chained.\n  var wrapper = function(obj) { this._wrapped = obj; };\n\n  // Expose `wrapper.prototype` as `_.prototype`\n  _.prototype = wrapper.prototype;\n\n  // Helper function to continue chaining intermediate results.\n  var result = function(obj, chain) {\n    return chain ? _(obj).chain() : obj;\n  };\n\n  // A method to easily add functions to the OOP wrapper.\n  var addToWrapper = function(name, func) {\n    wrapper.prototype[name] = function() {\n      var args = slice.call(arguments);\n      unshift.call(args, this._wrapped);\n      return result(func.apply(_, args), this._chain);\n    };\n  };\n\n  // Add all of the Underscore functions to the wrapper object.\n  _.mixin(_);\n\n  // Add all mutator Array functions to the wrapper.\n  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n    var method = ArrayProto[name];\n    wrapper.prototype[name] = function() {\n      var wrapped = this._wrapped;\n      method.apply(wrapped, arguments);\n      var length = wrapped.length;\n      if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];\n      return result(wrapped, this._chain);\n    };\n  });\n\n  // Add all accessor Array functions to the wrapper.\n  each(['concat', 'join', 'slice'], function(name) {\n    var method = ArrayProto[name];\n    wrapper.prototype[name] = function() {\n      return result(method.apply(this._wrapped, arguments), this._chain);\n    };\n  });\n\n  // Start chaining a wrapped Underscore object.\n  wrapper.prototype.chain = function() {\n    this._chain = true;\n    return this;\n  };\n\n  // Extracts the result from a wrapped and chained object.\n  wrapper.prototype.value = function() {\n    return this._wrapped;\n  };\n\n    return _;\n\n});\n//>>excludeEnd('excludeAfterBuild')\n;\n","//>>excludeStart('excludeAfterBuild', pragmas.excludeAfterBuild)\ndefine('hbs/i18nprecompile',['hbs/handlebars', \"hbs/underscore\"], function ( Handlebars, _ ) {\n\n  function replaceLocaleStrings ( ast, mapping, options ) {\n    options = options || {};\n    mapping = mapping || {};\n    // Base set of things\n    if ( ast && ast.type === \"program\" && ast.statements ) {\n      _(ast.statements).forEach(function(statement, i){\n        var newString = \"<!-- i18n error -->\";\n        // If it's a translation node\n        if ( statement.type === \"mustache\" && statement.id && statement.id.original === \"$\" ) {\n\n          if ( statement.params.length && statement.params[0].string ) {\n            var key = statement.params[0].string;\n            newString = mapping[ key ] || (options.originalKeyFallback ? key : newString);\n          }\n          ast.statements[i] = new Handlebars.AST.ContentNode(newString);\n        }\n        // If we need to recurse\n        else if ( statement.program ) {\n          statement.program = replaceLocaleStrings( statement.program, mapping, options );\n        }\n      });\n      // Also cover the else blocks\n      if (ast.inverse) {\n        replaceLocaleStrings(ast.inverse, mapping, options);\n      }\n    }\n    return ast;\n  }\n\n  return function precompile (string, mapping, options) {\n    var ast, environment;\n\n    options = options || {};\n\n    if (!('data' in options)) {\n      options.data = true;\n    }\n\n    if (options.compat) {\n      options.useDepths = true;\n    }\n\n    ast = Handlebars.parse(string);\n\n    // avoid replacing locale if mapping is `false`\n    if (mapping !== false) {\n        ast = replaceLocaleStrings(ast, mapping, options);\n    }\n\n    environment = new Handlebars.Compiler().compile(ast, options);\n    return new Handlebars.JavaScriptCompiler().compile(environment, options);\n  };\n});\n//>>excludeEnd('excludeAfterBuild')\n;\n","//>>excludeStart('excludeAfterBuild', pragmas.excludeAfterBuild)\n/*\n    http://www.JSON.org/json2.js\n    2011-10-19\n\n    Public Domain.\n\n    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n\n    See http://www.JSON.org/js.html\n\n\n    This code should be minified before deployment.\n    See http://javascript.crockford.com/jsmin.html\n\n    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n    NOT CONTROL.\n*/\n\n/*jslint evil: true, regexp: true */\n\n/*members \"\", \"\\b\", \"\\t\", \"\\n\", \"\\f\", \"\\r\", \"\\\"\", JSON, \"\\\\\", apply,\n    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n    lastIndex, length, parse, prototype, push, replace, slice, stringify,\n    test, toJSON, toString, valueOf\n*/\n\n(function (window){\n\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\n\n// Return the window JSON element if it exists;\nvar JSON = window.JSON || {};\n\n(function () {\n    'use strict';\n\n    function f(n) {\n        // Format integers to have at least two digits.\n        return n < 10 ? '0' + n : n;\n    }\n\n    if (typeof Date.prototype.toJSON !== 'function') {\n\n        Date.prototype.toJSON = function (key) {\n\n            return isFinite(this.valueOf())\n                ? this.getUTCFullYear()     + '-' +\n                    f(this.getUTCMonth() + 1) + '-' +\n                    f(this.getUTCDate())      + 'T' +\n                    f(this.getUTCHours())     + ':' +\n                    f(this.getUTCMinutes())   + ':' +\n                    f(this.getUTCSeconds())   + 'Z'\n                : null;\n        };\n\n        String.prototype.toJSON      =\n            Number.prototype.toJSON  =\n            Boolean.prototype.toJSON = function (key) {\n                return this.valueOf();\n            };\n    }\n\n    var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n        escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n        gap,\n        indent,\n        meta = {    // table of character substitutions\n            '\\b': '\\\\b',\n            '\\t': '\\\\t',\n            '\\n': '\\\\n',\n            '\\f': '\\\\f',\n            '\\r': '\\\\r',\n            '\"' : '\\\\\"',\n            '\\\\': '\\\\\\\\'\n        },\n        rep;\n\n\n    function quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n        escapable.lastIndex = 0;\n        return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n            var c = meta[a];\n            return typeof c === 'string'\n                ? c\n                : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n        }) + '\"' : '\"' + string + '\"';\n    }\n\n\n    function str(key, holder) {\n\n// Produce a string from holder[key].\n\n        var i,          // The loop counter.\n            k,          // The member key.\n            v,          // The member value.\n            length,\n            mind = gap,\n            partial,\n            value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n        if (value && typeof value === 'object' &&\n                typeof value.toJSON === 'function') {\n            value = value.toJSON(key);\n        }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n        if (typeof rep === 'function') {\n            value = rep.call(holder, key, value);\n        }\n\n// What happens next depends on the value's type.\n\n        switch (typeof value) {\n        case 'string':\n            return quote(value);\n\n        case 'number':\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n            return isFinite(value) ? String(value) : 'null';\n\n        case 'boolean':\n        case 'null':\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce 'null'. The case is included here in\n// the remote chance that this gets fixed someday.\n\n            return String(value);\n\n// If the type is 'object', we might be dealing with an object or an array or\n// null.\n\n        case 'object':\n\n// Due to a specification blunder in ECMAScript, typeof null is 'object',\n// so watch out for that case.\n\n            if (!value) {\n                return 'null';\n            }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n            gap += indent;\n            partial = [];\n\n// Is the value an array?\n\n            if (Object.prototype.toString.apply(value) === '[object Array]') {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n                length = value.length;\n                for (i = 0; i < length; i += 1) {\n                    partial[i] = str(i, value) || 'null';\n                }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n                v = partial.length === 0\n                    ? '[]'\n                    : gap\n                    ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']'\n                    : '[' + partial.join(',') + ']';\n                gap = mind;\n                return v;\n            }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n            if (rep && typeof rep === 'object') {\n                length = rep.length;\n                for (i = 0; i < length; i += 1) {\n                    if (typeof rep[i] === 'string') {\n                        k = rep[i];\n                        v = str(k, value);\n                        if (v) {\n                            partial.push(quote(k) + (gap ? ': ' : ':') + v);\n                        }\n                    }\n                }\n            } else {\n\n// Otherwise, iterate through all of the keys in the object.\n\n                for (k in value) {\n                    if (Object.prototype.hasOwnProperty.call(value, k)) {\n                        v = str(k, value);\n                        if (v) {\n                            partial.push(quote(k) + (gap ? ': ' : ':') + v);\n                        }\n                    }\n                }\n            }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n            v = partial.length === 0\n                ? '{}'\n                : gap\n                ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}'\n                : '{' + partial.join(',') + '}';\n            gap = mind;\n            return v;\n        }\n    }\n\n// If the JSON object does not yet have a stringify method, give it one.\n\n    if (typeof JSON.stringify !== 'function') {\n        JSON.stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n            var i;\n            gap = '';\n            indent = '';\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n            if (typeof space === 'number') {\n                for (i = 0; i < space; i += 1) {\n                    indent += ' ';\n                }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n            } else if (typeof space === 'string') {\n                indent = space;\n            }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n            rep = replacer;\n            if (replacer && typeof replacer !== 'function' &&\n                    (typeof replacer !== 'object' ||\n                    typeof replacer.length !== 'number')) {\n                throw new Error('JSON.stringify');\n            }\n\n// Make a fake root object containing our value under the key of ''.\n// Return the result of stringifying the value.\n\n            return str('', {'': value});\n        };\n    }\n\n\n// If the JSON object does not yet have a parse method, give it one.\n\n    if (typeof JSON.parse !== 'function') {\n        JSON.parse = function (text, reviver) {\n\n// The parse method takes a text and an optional reviver function, and returns\n// a JavaScript value if the text is a valid JSON text.\n\n            var j;\n\n            function walk(holder, key) {\n\n// The walk method is used to recursively walk the resulting structure so\n// that modifications can be made.\n\n                var k, v, value = holder[key];\n                if (value && typeof value === 'object') {\n                    for (k in value) {\n                        if (Object.prototype.hasOwnProperty.call(value, k)) {\n                            v = walk(value, k);\n                            if (v !== undefined) {\n                                value[k] = v;\n                            } else {\n                                delete value[k];\n                            }\n                        }\n                    }\n                }\n                return reviver.call(holder, key, value);\n            }\n\n\n// Parsing happens in four stages. In the first stage, we replace certain\n// Unicode characters with escape sequences. JavaScript handles many characters\n// incorrectly, either silently deleting them, or treating them as line endings.\n\n            text = String(text);\n            cx.lastIndex = 0;\n            if (cx.test(text)) {\n                text = text.replace(cx, function (a) {\n                    return '\\\\u' +\n                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n                });\n            }\n\n// In the second stage, we run the text against regular expressions that look\n// for non-JSON patterns. We are especially concerned with '()' and 'new'\n// because they can cause invocation, and '=' because it can cause mutation.\n// But just to be safe, we want to reject all unexpected forms.\n\n// We split the second stage into 4 regexp operations in order to work around\n// crippling inefficiencies in IE's and Safari's regexp engines. First we\n// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we\n// replace all simple value tokens with ']' characters. Third, we delete all\n// open brackets that follow a colon or comma or that begin the text. Finally,\n// we look to see that the remaining characters are only whitespace or ']' or\n// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.\n\n            if (/^[\\],:{}\\s]*$/\n                    .test(text.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')\n                        .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\n                        .replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))) {\n\n// In the third stage we use the eval function to compile the text into a\n// JavaScript structure. The '{' operator is subject to a syntactic ambiguity\n// in JavaScript: it can begin a block or an object literal. We wrap the text\n// in parens to eliminate the ambiguity.\n\n                j = eval('(' + text + ')');\n\n// In the optional fourth stage, we recursively walk the new structure, passing\n// each name/value pair to a reviver function for possible transformation.\n\n                return typeof reviver === 'function'\n                    ? walk({'': j}, '')\n                    : j;\n            }\n\n// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n            throw new SyntaxError('JSON.parse');\n        };\n    }\n}());\n\ndefine('hbs/json2',[],function(){\n    return JSON;\n});\n// otherwise just leave it alone\n    \n}).call(this, this);\n//>>excludeEnd('excludeAfterBuild')\n;\n","/**\n * @license Handlebars hbs 2.0.0 - Alex Sexton, but Handlebars has its own licensing junk\n *\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/require-cs for details on the plugin this was based off of\n */\n\n/* Yes, deliciously evil. */\n/*jslint evil: true, strict: false, plusplus: false, regexp: false */\n/*global require: false, XMLHttpRequest: false, ActiveXObject: false,\ndefine: false, process: false, window: false */\ndefine('hbs',[\n//>>excludeStart('excludeHbs', pragmas.excludeHbs)\n  'hbs/handlebars', 'hbs/underscore', 'hbs/i18nprecompile', 'hbs/json2'\n//>>excludeEnd('excludeHbs')\n], function (\n//>>excludeStart('excludeHbs', pragmas.excludeHbs)\n  Handlebars, _, precompile, JSON\n//>>excludeEnd('excludeHbs')\n) {\n  //>>excludeStart('excludeHbs', pragmas.excludeHbs)\n  var fs;\n  var getXhr;\n  var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];\n  var fetchText = function () {\n      throw new Error('Environment unsupported.');\n  };\n  var buildMap = [];\n  var filecode = 'w+';\n  var templateExtension = 'hbs';\n  var customNameExtension = '@hbs';\n  var devStyleDirectory = '/styles/';\n  var buildStyleDirectory = '/demo-build/styles/';\n  var helperDirectory = 'templates/helpers/';\n  var i18nDirectory = 'templates/i18n/';\n  var buildCSSFileName = 'screen.build.css';\n  var onHbsReadMethod = \"onHbsRead\";\n\n  Handlebars.registerHelper('$', function() {\n    //placeholder for translation helper\n  });\n\n  if (typeof window !== 'undefined' && window.navigator && window.document && !window.navigator.userAgent.match(/Node.js/)) {\n    // Browser action\n    getXhr = function () {\n      // Would love to dump the ActiveX crap in here. Need IE 6 to die first.\n      var xhr;\n      var i;\n      var progId;\n      if (typeof XMLHttpRequest !== 'undefined') {\n        return ((arguments[0] === true)) ? new XDomainRequest() : new XMLHttpRequest();\n      }\n      else {\n        for (i = 0; i < 3; i++) {\n          progId = progIds[i];\n          try {\n            xhr = new ActiveXObject(progId);\n          }\n          catch (e) {}\n\n          if (xhr) {\n            // Faster next time\n            progIds = [progId];\n            break;\n          }\n        }\n      }\n\n      if (!xhr) {\n          throw new Error('getXhr(): XMLHttpRequest not available');\n      }\n\n      return xhr;\n    };\n\n    // Returns the version of Windows Internet Explorer or a -1\n    // (indicating the use of another browser).\n    // Note: this is only for development mode. Does not run in production.\n    getIEVersion = function(){\n      // Return value assumes failure.\n      var rv = -1;\n      if (navigator.appName == 'Microsoft Internet Explorer') {\n        var ua = navigator.userAgent;\n        var re = new RegExp('MSIE ([0-9]{1,}[\\.0-9]{0,})');\n        if (re.exec(ua) != null) {\n          rv = parseFloat( RegExp.$1 );\n        }\n      }\n      return rv;\n    };\n\n    fetchText = function (url, callback) {\n      var xdm = false;\n      // If url is a fully qualified URL, it might be a cross domain request. Check for that.\n      // IF url is a relative url, it cannot be cross domain.\n      if (url.indexOf('http') != 0 ){\n          xdm = false;\n      }else{\n          var uidx = (url.substr(0,5) === 'https') ? 8 : 7;\n          var hidx = (window.location.href.substr(0,5) === 'https') ? 8 : 7;\n          var dom = url.substr(uidx).split('/').shift();\n          var msie = getIEVersion();\n              xdm = ( dom != window.location.href.substr(hidx).split('/').shift() ) && (msie >= 7);\n      }\n\n      if ( xdm ) {\n         var xdr = getXhr(true);\n        xdr.open('GET', url);\n        xdr.onload = function() {\n          callback(xdr.responseText, url);\n        };\n        xdr.onprogress = function(){};\n        xdr.ontimeout = function(){};\n        xdr.onerror = function(){};\n        setTimeout(function(){\n          xdr.send();\n        }, 0);\n      }\n      else {\n        var xhr = getXhr();\n        xhr.open('GET', url, true);\n        xhr.onreadystatechange = function (evt) {\n          //Do not explicitly handle errors, those should be\n          //visible via console output in the browser.\n          if (xhr.readyState === 4) {\n            callback(xhr.responseText, url);\n          }\n        };\n        xhr.send(null);\n      }\n    };\n\n  }\n  else if (\n    typeof process !== 'undefined' &&\n    process.versions &&\n    !!process.versions.node\n  ) {\n    //Using special require.nodeRequire, something added by r.js.\n    fs = require.nodeRequire('fs');\n    fetchText = function ( path, callback ) {\n      var body = fs.readFileSync(path, 'utf8') || '';\n      // we need to remove BOM stuff from the file content\n      body = body.replace(/^\\uFEFF/, '');\n      callback(body, path);\n    };\n  }\n  else if (typeof java !== 'undefined' && typeof java.io !== 'undefined') {\n    fetchText = function(path, callback) {\n      var fis = new java.io.FileInputStream(path);\n      var streamReader = new java.io.InputStreamReader(fis, \"UTF-8\");\n      var reader = new java.io.BufferedReader(streamReader);\n      var line;\n      var text = '';\n      while ((line = reader.readLine()) !== null) {\n        text += new String(line) + '\\n';\n      }\n      reader.close();\n      callback(text, path);\n    };\n  }\n\n  var cache = {};\n  var fetchOrGetCached = function ( path, callback ){\n    if ( cache[path] ){\n      callback(cache[path]);\n    }\n    else {\n      fetchText(path, function(data, path){\n        cache[path] = data;\n        callback.call(this, data);\n      });\n    }\n  };\n  var styleList = [];\n  var styleMap = {};\n  //>>excludeEnd('excludeHbs')\n\n  var config;\n  var filesToRemove = [];\n\n  return {\n\n    get: function () {\n      return Handlebars;\n    },\n\n    write: function (pluginName, name, write) {\n      if ( (name + customNameExtension ) in buildMap) {\n        var text = buildMap[name + customNameExtension];\n        write.asModule(pluginName + '!' + name, text);\n      }\n    },\n\n    version: '2.0.0',\n\n    load: function (name, parentRequire, load, _config) {\n      //>>excludeStart('excludeHbs', pragmas.excludeHbs)\n      config = config || _config;\n\n      var compiledName = name + customNameExtension;\n      config.hbs = config.hbs || {};\n      var disableI18n = !(config.hbs.i18n == true); // by default we disable i18n unless config.hbs.i18n is true\n      var disableHelpers = (config.hbs.helpers == false); // be default we enable helpers unless config.hbs.helpers is false\n      var partialsUrl = '';\n      if(config.hbs.partialsUrl) {\n        partialsUrl = config.hbs.partialsUrl;\n        if(!partialsUrl.match(/\\/$/)) partialsUrl += '/';\n      }\n\n      // Let redefine default fetchText\n      if(config.hbs.fetchText) {\n          fetchText = config.hbs.fetchText;\n      }\n\n      var partialDeps = [];\n\n      function recursiveNodeSearch( statements, res ) {\n        _(statements).forEach(function ( statement ) {\n          if ( statement && statement.type && statement.type === 'partial' ) {\n            res.push(statement.partialName.name);\n          }\n          if ( statement && statement.program && statement.program.statements ) {\n            recursiveNodeSearch( statement.program.statements, res );\n          }\n          if ( statement && statement.inverse && statement.inverse.statements ) {\n            recursiveNodeSearch( statement.inverse.statements, res );\n          }\n        });\n        return res;\n      }\n\n      // TODO :: use the parser to do this!\n      function findPartialDeps( nodes ) {\n        var res = [];\n        if ( nodes && nodes.statements ) {\n          res = recursiveNodeSearch( nodes.statements, [] );\n        }\n        return _.unique(res);\n      }\n\n      // See if the first item is a comment that's json\n      function getMetaData( nodes ) {\n        var statement, res, test;\n        if ( nodes && nodes.statements ) {\n          statement = nodes.statements[0];\n          if ( statement && statement.type === 'comment' ) {\n            try {\n              res = ( statement.comment ).replace(new RegExp('^[\\\\s]+|[\\\\s]+$', 'g'), '');\n              test = JSON.parse(res);\n              return res;\n            }\n            catch (e) {\n              return JSON.stringify({\n                description: res\n              });\n            }\n          }\n        }\n        return '{}';\n      }\n\n      function composeParts ( parts ) {\n        if ( !parts ) {\n          return [];\n        }\n        var res = [parts[0]];\n        var cur = parts[0];\n        var i;\n\n        for (i = 1; i < parts.length; ++i) {\n          if ( parts.hasOwnProperty(i) ) {\n            cur += '.' + parts[i];\n            res.push( cur );\n          }\n        }\n        return res;\n      }\n\n      function recursiveVarSearch( statements, res, prefix, helpersres ) {\n        prefix = prefix ? prefix + '.' : '';\n\n        var  newprefix = '';\n        var flag = false;\n\n        // loop through each statement\n        _(statements).forEach(function(statement) {\n          var parts;\n          var part;\n          var sideways;\n\n          // if it's a mustache block\n          if ( statement && statement.type && statement.type === 'mustache' ) {\n\n            // If it has params, the first part is a helper or something\n            if ( !statement.params || ! statement.params.length ) {\n              parts = composeParts( statement.id.parts );\n              for( part in parts ) {\n                if ( parts[ part ] ) {\n                  newprefix = parts[ part ] || newprefix;\n                  res.push( prefix + parts[ part ] );\n                }\n              }\n              res.push(prefix + statement.id.string);\n            }\n\n            var paramsWithoutParts = ['this', '.', '..', './..', '../..', '../../..'];\n\n            // grab the params\n            if ( statement.params && typeof Handlebars.helpers[statement.id.string] === 'undefined') {\n              _(statement.params).forEach(function(param) {\n                if ( _(paramsWithoutParts).contains(param.original)\n                  || param instanceof Handlebars.AST.StringNode\n                  || param instanceof Handlebars.AST.NumberNode\n                  || param instanceof Handlebars.AST.BooleanNode\n                  || param instanceof Handlebars.AST.DataNode\n                  || param instanceof Handlebars.AST.SexprNode\n                ) {\n                  helpersres.push(statement.id.string);\n\n                  // Look into the params to find subexpressions\n                  if (typeof statement.params !== 'undefined') {\n                      _(statement.params).forEach(function(param) {\n                        if (param.type === 'sexpr' && param.isHelper === true) {\n                          // Found subexpression in params\n                          helpersres.push(param.id.string);\n                        }\n                      });\n                  }\n\n                  // Look in the hash to find sub expressions\n                  if ((statement.hash != null) && (typeof statement.hash !== 'undefined') && (typeof statement.hash.pairs !== 'undefined')) {\n                    _(statement.hash.pairs).forEach(function(pair) {\n                      var pairName = pair[0],\n                          pairValue = pair[1];\n                      if (pairValue.type === 'sexpr' && pairValue.isHelper === true) {\n                        // Found subexpression in hash params\n                        helpersres.push(pairValue.id.string);\n                      }\n                    });\n                  }\n                }\n\n                parts = composeParts( param.parts );\n\n                for(var part in parts ) {\n                  if ( parts[ part ] ) {\n                    newprefix = parts[part] || newprefix;\n                    helpersres.push(statement.id.string);\n                    res.push( prefix + parts[ part ] );\n                  }\n                }\n              });\n              if ((statement.hash != null) && (typeof statement.hash !== 'undefined') && (typeof statement.hash.pairs !== 'undefined')) {\n                //Even if it has no regular params, it may be a helper with hash params\n                _(statement.hash.pairs).forEach(function(pair) {\n                  var pairValue = pair[1];\n                  if (pairValue instanceof Handlebars.AST.StringNode\n                    || pairValue instanceof Handlebars.AST.NumberNode\n                    || pairValue instanceof Handlebars.AST.BooleanNode\n                    || pairValue instanceof Handlebars.AST.IdNode\n                    //TODO: Add support for subexpressions here?\n                  ) {\n                    helpersres.push(statement.id.string);\n                  }\n                });\n              }\n            }\n          }\n\n          // If it's a meta block\n          if ( statement && statement.mustache  ) {\n            recursiveVarSearch( [statement.mustache], res, prefix + newprefix, helpersres );\n          }\n\n          // if it's a whole new program\n          if ( statement && statement.program && statement.program.statements ) {\n            sideways = recursiveVarSearch([statement.mustache],[], '', helpersres)[0] || '';\n            if ( statement.inverse && statement.inverse.statements ) {\n              recursiveVarSearch( statement.inverse.statements, res, prefix + newprefix + (sideways ? (prefix+newprefix) ? '.'+sideways : sideways : ''), helpersres);\n            }\n            recursiveVarSearch( statement.program.statements, res, prefix + newprefix + (sideways ? (prefix+newprefix) ? '.'+sideways : sideways : ''), helpersres);\n          }\n        });\n        return res;\n      }\n\n      // This finds the Helper dependencies since it's soooo similar\n      function getExternalDeps( nodes ) {\n        var res   = [];\n        var helpersres = [];\n\n        if ( nodes && nodes.statements ) {\n          res = recursiveVarSearch( nodes.statements, [], undefined, helpersres );\n        }\n\n        var defaultHelpers = [\n          'helperMissing',\n          'blockHelperMissing',\n          'each',\n          'if',\n          'unless',\n          'with',\n          'log',\n          'lookup'\n        ];\n\n        return {\n          vars: _(res).chain().unique().map(function(e) {\n            if ( e === '' ) {\n              return '.';\n            }\n            if ( e.length && e[e.length-1] === '.' ) {\n              return e.substr(0,e.length-1) + '[]';\n            }\n            return e;\n          }).value(),\n\n          helpers: _(helpersres).chain().unique().map(function(e){\n            if ( _(defaultHelpers).contains(e) ) {\n              return undefined;\n            }\n            return e;\n          }).compact().value()\n        };\n      }\n\n      function cleanPath(path) {\n        var tokens = path.split('/');\n        for(var i=0;i<tokens.length; i++) {\n          if(tokens[i] === '..') {\n            delete tokens[i-1];\n            delete tokens[i];\n          } else if (tokens[i] === '.') {\n            delete tokens[i];\n          }\n        }\n        return tokens.join('/').replace(/\\/\\/+/g,'/');\n      }\n\n      function fetchAndRegister(langMap) {\n          fetchText(path, function(text, path) {\n\n          var readCallback = (config.isBuild && config[onHbsReadMethod]) ? config[onHbsReadMethod]:  function(name,path,text){return text} ;\n          // for some reason it doesn't include hbs _first_ when i don't add it here...\n          var nodes = Handlebars.parse( readCallback(name, path, text));\n          var partials = findPartialDeps( nodes );\n          var meta = getMetaData( nodes );\n          var extDeps = getExternalDeps( nodes );\n          var vars = extDeps.vars;\n          var helps = (extDeps.helpers || []);\n          var debugOutputStart = '';\n          var debugOutputEnd   = '';\n          var debugProperties = '';\n          var deps = [];\n          var depStr, helpDepStr, metaObj, head, linkElem;\n          var baseDir = name.substr(0,name.lastIndexOf('/')+1);\n\n          require.config.hbs = require.config.hbs || {};\n          require.config.hbs._partials = require.config.hbs._partials || {};\n\n          if(meta !== '{}') {\n            try {\n              metaObj = JSON.parse(meta);\n            } catch(e) {\n              console.log('couldn\\'t parse meta for %s', path);\n            }\n          }\n\n          for ( var i in partials ) {\n            if ( partials.hasOwnProperty(i) && typeof partials[i] === 'string') {  // make sure string, because we're iterating over all props\n              var partialReference = partials[i];\n\n              var path;\n              if(partialReference.match(/^(\\.|\\/)+/)) {\n                // relative path\n                path = cleanPath(baseDir + partialReference)\n              }\n              else {\n                // absolute path relative to config.hbs.partialsUrl if defined\n                path = cleanPath(partialsUrl + partialReference);\n              }\n\n              require.config.hbs._partials[path] = require.config.hbs._partials[path] || [];\n\n              // we can reference a same template with different paths (with absolute or relative)\n              require.config.hbs._partials[path].references = require.config.hbs._partials[path].references || [];\n              require.config.hbs._partials[path].references.push(partialReference);\n\n              require.config.hbs._loadedDeps = require.config.hbs._loadedDeps || {};\n\n              deps[i] = \"hbs!\"+path;\n            }\n          }\n\n          depStr = deps.join(\"', '\");\n\n          helps = helps.concat((metaObj && metaObj.helpers) ? metaObj.helpers : []);\n          helpDepStr = disableHelpers ?\n            '' : (function (){\n              var i;\n              var paths = [];\n              var pathGetter = config.hbs && config.hbs.helperPathCallback\n                ? config.hbs.helperPathCallback\n                : function (name){\n                  return (config.hbs && config.hbs.helperDirectory ? config.hbs.helperDirectory : helperDirectory) + name;\n                };\n\n              for ( i = 0; i < helps.length; i++ ) {\n                paths[i] = \"'\" + pathGetter(helps[i], path) + \"'\"\n              }\n              return paths;\n            })().join(',');\n\n          if ( helpDepStr ) {\n            helpDepStr = ',' + helpDepStr;\n          }\n\n          if (metaObj) {\n            try {\n              if (metaObj.styles) {\n                styleList = _.union(styleList, metaObj.styles);\n\n                // In dev mode in the browser\n                if ( require.isBrowser && ! config.isBuild ) {\n                  head = document.head || document.getElementsByTagName('head')[0];\n                  _(metaObj.styles).forEach(function (style) {\n                    if ( !styleMap[style] ) {\n                      linkElem = document.createElement('link');\n                      linkElem.href = config.baseUrl + devStyleDirectory + style + '.css';\n                      linkElem.media = 'all';\n                      linkElem.rel = 'stylesheet';\n                      linkElem.type = 'text/css';\n                      head.appendChild(linkElem);\n                      styleMap[style] = linkElem;\n                    }\n                  });\n                }\n                else if ( config.isBuild ) {\n                  (function(){\n                    var fs  = require.nodeRequire('fs');\n                    var str = _(metaObj.styles).map(function (style) {\n                      if (!styleMap[style]) {\n                        styleMap[style] = true;\n                        return '@import url('+style+'.css);\\n';\n                      }\n                      return '';\n                    }).join('\\n');\n\n                    // I write out my import statements to a file in order to help me build stuff.\n                    // Then I use a tool to inline my import statements afterwards. (you can run r.js on it too)\n                    fs.open(__dirname + buildStyleDirectory + buildCSSFileName, filecode, '0666', function( e, id ) {\n                      fs.writeSync(id, str, null, encoding='utf8');\n                      fs.close(id);\n                    });\n                    filecode = 'a';\n                  })();\n                }\n              }\n            }\n            catch(e){\n              console.log('error injecting styles');\n            }\n          }\n\n          if ( ! config.isBuild && ! config.serverRender ) {\n            debugOutputStart = '<!-- START - ' + name + ' -->';\n            debugOutputEnd = '<!-- END - ' + name + ' -->';\n            debugProperties = 't.meta = ' + meta + ';\\n' +\n                              't.helpers = ' + JSON.stringify(helps) + ';\\n' +\n                              't.deps = ' + JSON.stringify(deps) + ';\\n' +\n                              't.vars = ' + JSON.stringify(vars) + ';\\n';\n          }\n\n          var mapping = disableI18n? false : _.extend( langMap, config.localeMapping );\n          var configHbs = config.hbs || {};\n          var options = _.extend(configHbs.compileOptions || {}, { originalKeyFallback: configHbs.originalKeyFallback });\n          var prec = precompile( text, mapping, options);\n          var tmplName = \"'hbs!\" + name + \"',\";\n\n          if(depStr) depStr = \", '\"+depStr+\"'\";\n\n          var partialReferences = [];\n          if(require.config.hbs._partials[name])\n            partialReferences = require.config.hbs._partials[name].references;\n\n          text = '/* START_TEMPLATE */\\n' +\n                 'define('+tmplName+\"['hbs','hbs/handlebars'\"+depStr+helpDepStr+'], function( hbs, Handlebars ){ \\n' +\n                   'var t = Handlebars.template(' + prec + ');\\n' +\n                   \"Handlebars.registerPartial('\" + name + \"', t);\\n\";\n\n          for(var i=0; i<partialReferences.length;i++)\n            text += \"Handlebars.registerPartial('\" + partialReferences[i] + \"', t);\\n\";\n\n          text += debugProperties +\n                   'return t;\\n' +\n                 '});\\n' +\n                 '/* END_TEMPLATE */\\n';\n\n          //Hold on to the transformed text if a build.\n          if (config.isBuild) {\n            buildMap[compiledName] = text;\n          }\n\n          //IE with conditional comments on cannot handle the\n          //sourceURL trick, so skip it if enabled.\n          /*@if (@_jscript) @else @*/\n          if (!config.isBuild) {\n            text += '\\r\\n//# sourceURL=' + path;\n          }\n          /*@end@*/\n\n          if ( !config.isBuild ) {\n            require( deps, function (){\n              load.fromText(text);\n\n              //Give result to load. Need to wait until the module\n              //is fully parse, which will happen after this\n              //execution.\n              parentRequire([name], function (value) {\n                load(value);\n              });\n            });\n          }\n          else {\n            load.fromText(name, text);\n\n            //Give result to load. Need to wait until the module\n            //is fully parse, which will happen after this\n            //execution.\n            parentRequire([name], function (value) {\n              load(value);\n            });\n          }\n\n          if ( config.removeCombined && path ) {\n            filesToRemove.push(path);\n          }\n\n        });\n      }\n\n      var path;\n      var omitExtension = config.hbs && config.hbs.templateExtension === false;\n\n      if (omitExtension) {\n        path = parentRequire.toUrl(name);\n      }\n      else {\n        path = parentRequire.toUrl(name +'.'+ (config.hbs && config.hbs.templateExtension ? config.hbs.templateExtension : templateExtension));\n      }\n\n      if (disableI18n){\n        fetchAndRegister(false);\n      }\n      else {\n        // Workaround until jam is able to pass config info or we move i18n to a separate module.\n        // This logs a warning and disables i18n if there's an error loading the language file\n        var langMapPath = (config.hbs && config.hbs.i18nDirectory ? config.hbs.i18nDirectory : i18nDirectory) + (config.locale || 'en_us') + '.json';\n        try {\n          fetchOrGetCached(parentRequire.toUrl(langMapPath), function (langMap) {\n            fetchAndRegister(JSON.parse(langMap));\n          });\n        }\n        catch(er) {\n          // if there's no configuration at all, log a warning and disable i18n for this and subsequent templates\n          if(!config.hbs) {\n            console.warn('hbs: Error reading ' + langMapPath + ', disabling i18n. Ignore this if you\\'re using jam, otherwise check your i18n configuration.\\n');\n            config.hbs = {i18n: false, helpers: true};\n            fetchAndRegister(false);\n          }\n          else {\n            throw er;\n          }\n        }\n      }\n      //>>excludeEnd('excludeHbs')\n    },\n\n    onLayerEnd: function () {\n      if (config.removeCombined && fs) {\n        filesToRemove.forEach(function (path) {\n          if (fs.existsSync(path)) {\n            fs.unlinkSync(path);\n          }\n        });\n      }\n    }\n  };\n});\n/* END_hbs_PLUGIN */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!sunstone/tab',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, buffer = \"  <div class=\\\"row header-row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h3 class=\\\"subheader header-title only-right-list\\\" style=\\\"border-bottom: 1px solid #efefef; padding-bottom: 10px;\\\">\\n        <span class=\\\"header-resource\\\" style=\\\"border-bottom: 2px solid #0098c3; padding: 0px 50px 10px 0px;\\\">\";\n  stack1 = ((helper = (helper = helpers.listHeader || (depth0 != null ? depth0.listHeader : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"listHeader\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</span>\\n      </h3>\\n      <h3 class=\\\"subheader header-title only-right-info\\\" style=\\\"border-bottom: 1px solid #efefef; padding-bottom: 10px;\\\" hidden>\\n        <span class=\\\"header-resource\\\" style=\\\"border-bottom: 2px solid #0098c3; padding: 0px 50px 10px 0px;\\\">\";\n  stack1 = ((helper = (helper = helpers.infoHeader || (depth0 != null ? depth0.infoHeader : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"infoHeader\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</span>\\n        &emsp;\\n        <span class=\\\"resource-id\\\"></span>\\n        &emsp;\\n        <span class=\\\"resource-info-header\\\"></span>\\n      </h3>\\n      <h3 class=\\\"subheader header-title only-right-form\\\" style=\\\"border-bottom: 1px solid #efefef; padding-bottom: 10px;\\\" hidden>\\n        <span class=\\\"right-form-title\\\" style=\\\"border-bottom: 2px solid #0098c3; padding: 0px 50px 10px 0px;\\\"></span>\\n      </h3>\\n    </div>\\n  </div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"  <div class=\\\"row actions_row\\\">\\n    <div class=\\\"small-12 large-12 columns\\\">\\n      <div class=\\\"action_blocks\\\"></div>\\n      <div class=\\\"small-3 large-3 columns only-right-list\\\" style=\\\"margin-top: 2px\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.dataTable : depth0)) != null ? stack1.searchInputHTML : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(4, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"      </div>\\n    </div>\\n  </div>\\n\";\n},\"4\":function(depth0,helpers,partials,data) {\n  var stack1, lambda=this.lambda, buffer = \"          \";\n  stack1 = lambda(((stack1 = (depth0 != null ? depth0.dataTable : depth0)) != null ? stack1.searchInputHTML : stack1), depth0);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n\";\n},\"6\":function(depth0,helpers,partials,data) {\n  var stack1, lambda=this.lambda, buffer = \"    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\";\n  stack1 = lambda(((stack1 = (depth0 != null ? depth0.dataTable : depth0)) != null ? stack1.dataTableHTML : stack1), depth0);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n    </div>\\n\";\n},\"8\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, buffer = \"    \";\n  stack1 = ((helper = (helper = helpers.content || (depth0 != null ? depth0.content : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"content\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n\";\n},\"10\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"    <div class=\\\"row header-info\\\">\\n      <div class=\\\"large-12 columns text-center totals-info\\\">\\n        <h3 class=\\\"subheader\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.subheader : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(11, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"        </h3>\\n      </div>\\n    </div>\\n\";\n},\"11\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, buffer = \"            \";\n  stack1 = ((helper = (helper = helpers.subheader || (depth0 != null ? depth0.subheader : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"subheader\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.tabName || (depth0 != null ? depth0.tabName : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"tabName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"tab\\\" style=\\\"display:none;\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.listHeader : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.buttons : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  <div class=\\\"right-list\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.dataTable : depth0)) != null ? stack1.dataTableHTML : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(6, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.content : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(8, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.subheader : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(10, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  </div>\\n\\n  <div class=\\\"right-info\\\" hidden></div>\\n\\n  <div class=\\\"large-12 small-12 right-form\\\" hidden>\\n    <div class=\\\"loadingForm\\\">\\n      <br>\\n      <br>\\n      <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"/><i class=\\\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\\\"/>\\n      </span>\\n      <br>\\n      <br>\\n    </div>\\n    <div class=\\\"contentForm\\\">\\n    </div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('sunstone/tab', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('templates/helpers/tr',['require','hbs/handlebars','utils/locale'],function(require) {\n  var Handlebars = require('hbs/handlebars');\n  var Locale = require('utils/locale');\n\n  var tr = function(context, options) {\n    return Locale.tr(context);\n  };\n\n  Handlebars.registerHelper('tr', tr);\n  return tr;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!sunstone/buttons',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"back_button\\\" class=\\\"only-right-info only-right-form\\\">\\n      <a class=\\\"button small radius\\\" href=\\\"back\\\"> <i class=\\\"fa fa-arrow-left\\\"></i>\\n        &emsp;&emsp; <i class=\\\"fa fa-list\\\"></i>\\n      </a>\\n    </span>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"text-center\\\">\\n  <span class=\\\"left\\\">\\n\\n    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"refresh_buttons\\\" class=\\\"only-right-info only-right-list\\\"></span>\\n\";\n  stack1 = helpers.unless.call(depth0, (depth0 != null ? depth0.customContext : depth0), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"create_buttons\\\" class=\\\"only-right-list\\\"></span>\\n  </span>\\n\\n  <span class=\\\"right\\\" style=\\\"margin-left: 20px\\\">\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"user_buttons' class='only-right-info only-right-list top_button small  secondary button dropdown radius'>\\n      <i class='fa fa-user'/></a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"user_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsdelete_buttons' class='only-right-info only-right-list top_button small  button alert dropdown radius'>\\n      <i class='fa fa-trash-o'/></a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsdelete_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <span id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"delete_buttons' class='only-right-info only-right-list'></span>\\n  </span>\\n\\n  <span class=\\\"right\\\">\\n    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsplay_buttons\\\"></span>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmspause_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\\n      <i class='fa fa-pause'/>\\n    </a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmspause_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsstop_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\\n      <i class='fa fa-stop'/>\\n    </a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsstop_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsrepeat_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\\n      <i class='fa fa-repeat'/>\\n    </a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsrepeat_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsplanification_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\\n      <i class='fa fa-th-list'/>\\n    </a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsplanification_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"main_buttons\\\" class=\\\"only-right-info only-right-list\\\"></span>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"more_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\\n      <i class='fa fa-ellipsis-v'/>\\n    </a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"more_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n  </span>\\n\\n  <span id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"form_buttons' class='only-right-form' style='display: none'>\\n    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"reset_button\\\" class=\\\"left\\\" style=\\\"margin-left: 10px;\\\">\\n      <a class=\\\"button small secondary radius reset_button\\\" href=\\\"submit\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Reset\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n    </span>\\n    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"submit_button\\\" class=\\\"left\\\" style=\\\"margin-left: 10px;\\\">\\n      <a class=\\\"button small success radius submit_button\\\" href=\\\"submit\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n    </span>\\n    <dl class=\\\"tabs right wizard_tabs\\\" data-tab style=\\\"margin-left: 10px;\\\">\\n      <dd id=\\\"wizard_mode\\\" class=\\\"active\\\">\\n        <a style=\\\"padding: 0.3rem 1rem;\\\" href=\\\"#wizardForms\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Wizard\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n      </dd>\\n      <dd id=\\\"advanced_mode\\\">\\n        <a style=\\\"padding: 0.3rem 1rem;\\\" id=\\\"advanced_mode_a\\\" href=\\\"#advancedForms\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n      </dd>\\n    </dl>\\n  </span>\\n</div>\\n\\\"\";\n},\"useData\":true});\nHandlebars.registerPartial('sunstone/buttons', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!sunstone/panels',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"    <dd \";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.active : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(2, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \">\\n      <a href=\\\"#\"\n    + escapeExpression(((helper = (helper = helpers.panelName || (depth0 != null ? depth0.panelName : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"panelName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.icon : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(4, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"        \"\n    + escapeExpression(((helper = (helper = helpers.title || (depth0 != null ? depth0.title : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"title\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\n      </a>\\n    </dd>\\n\";\n},\"2\":function(depth0,helpers,partials,data) {\n  return \"class=\\\"active\\\"\";\n  },\"4\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"          <i class=\\\"fa \"\n    + escapeExpression(((helper = (helper = helpers.icon || (depth0 != null ? depth0.icon : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"icon\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></i>\\n          <br>\\n\";\n},\"6\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"    <div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.panelName || (depth0 != null ? depth0.panelName : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"panelName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content \";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.active : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(7, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\\">\\n      \";\n  stack1 = ((helper = (helper = helpers.html || (depth0 != null ? depth0.html : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"html\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    </div>\\n\";\n},\"7\":function(depth0,helpers,partials,data) {\n  return \"active\";\n  },\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.containerId || (depth0 != null ? depth0.containerId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"containerId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"bordered-tabs\\\">\\n  <dl class=\\\"tabs right-info-tabs text-center\\\" data-tab>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.panels : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  </dl>\\n  <div class='tabs-content'>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.panels : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(6, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('sunstone/panels', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('sunstone',['require','jquery','foundation.reveal','foundation.tab','foundation.dropdown','sunstone-config','utils/locale','utils/notifier','utils/dialogs/confirm/dialogId','utils/dialogs/confirm-with-select/dialogId','hbs!sunstone/tab','hbs!./sunstone/buttons','hbs!./sunstone/panels'],function(require) {\n  require('jquery');\n  require('foundation.reveal');\n  require('foundation.tab');\n  require('foundation.dropdown');\n\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Notifier = require('utils/notifier');\n\n  var TOP_INTERVAL = 10000; //ms\n  var CONFIRM_DIALOG_ID = require('utils/dialogs/confirm/dialogId');\n  var CONFIRM_WITH_SELECT_DIALOG_ID = require('utils/dialogs/confirm-with-select/dialogId');\n\n  var SunstoneCfg = {\n    \"actions\" : {},\n    \"dialogs\" : {},\n    \"dialogInstances\" : {},\n    \"tabs\" : {}\n  };\n\n  var _addMainTab = function(tabObj) {\n    var _tabId = tabObj.tabId;\n    if (Config.isTabEnabled(_tabId)) {\n      SunstoneCfg[\"tabs\"][_tabId] = tabObj;\n      \n      var actions = tabObj.actions;\n      if (actions) {\n        _addActions(actions)\n      }\n\n      var panels = tabObj.panels;\n      if (panels) {\n        _addPanels(_tabId, panels)\n      }\n\n      var dialogs = tabObj.dialogs;\n      if (dialogs) {\n        _addDialogs(dialogs)\n      }\n\n      var formPanels = tabObj.formPanels;\n      if (formPanels) {\n        _addFormPanels(_tabId, formPanels)\n      }\n    }\n  }\n\n  var _addActions = function(actions) {\n    $.each(actions, function(actionName, action) {\n      SunstoneCfg[\"actions\"][actionName] = action;\n    })\n    return false;\n  }\n\n  var _addDialogs = function(dialogs) {\n    $.each(dialogs, function(index, dialog) {\n      SunstoneCfg['dialogs'][dialog.DIALOG_ID] = dialog\n    })\n    return false;\n  }\n\n  var _addPanels = function(tabId, panels) {\n    var indexedPanels = {}\n    $.each(panels, function(index, panel) {\n      indexedPanels[panel.PANEL_ID] = panel\n    })\n    SunstoneCfg[\"tabs\"][tabId]['panels'] = indexedPanels;\n    return false;\n  }\n\n  var _addFormPanels = function(tabId, formPanels) {\n    var indexedFormPanels = {}\n    $.each(formPanels, function(index, formPanel) {\n      indexedFormPanels[formPanel.FORM_PANEL_ID] = formPanel\n    })\n    SunstoneCfg[\"tabs\"][tabId]['formPanels'] = indexedFormPanels;\n    SunstoneCfg[\"tabs\"][tabId]['formPanelInstances'] = {};\n    return false;\n  }\n\n  //Inserts all main tabs in the DOM\n  var _insertTabs = function() {\n    for (tabName in SunstoneCfg[\"tabs\"]) {\n      _insertTab(tabName);\n      _insertButtonsInTab(tabName);\n      _setupDataTable(tabName);\n\n      // TODO Add openenbula actions\n      /*if (config['view']['autorefresh']) {\n        var tabContext = $(\"#\" + tabName);\n        var refreshButton = $(\".fa-refresh\", $(\".action_blocks\", tabContext).first());\n        setInterval(function() {\n          if (Sunstone.rightListVisible(tabContext)) {\n            refreshButton.click();\n          }\n        }, TOP_INTERVAL);\n      }*/\n    }\n\n    _setupTabs();\n  }\n\n  var _setupDataTable = function(tabName) {\n    if (SunstoneCfg['tabs'][tabName].dataTable) {\n      SunstoneCfg['tabs'][tabName].dataTable.initialize();\n    }\n  }\n\n  //Inserts a main tab in the DOM. This is done by\n  //adding the content to the proper div and by adding a list item\n  //link to the navigation menu\n  var _insertTab = function(tabName) {\n    var tabInfo = SunstoneCfg['tabs'][tabName];\n    var condition = tabInfo['condition'];\n    var tabClass = tabInfo['tabClass'] ? tabInfo['tabClass'] : 'topTab';\n    var parent = tabInfo['parentTab'] ? tabInfo['parentTab'] : '';\n\n    //skip this tab if we do not meet the condition\n    if (condition && !condition()) {return;}\n\n    if (tabInfo.no_content === true) {\n      tabClass += \" tab_with_no_content\"\n    } else {\n      tabInfo['tabName'] = tabName;\n      var TabTemplate = require('hbs!sunstone/tab')\n      $('div.right-content').append(TabTemplate(tabInfo));\n    }\n\n    var liItem = '<li id=\"li_' + tabName + '\" class=\"' + tabClass + ' ' + parent + '\"><a href=\"#\">' + tabInfo.title + '</a></li>';\n\n    $('div#menu ul#navigation').append(liItem);\n\n    //if this is a submenu...\n    if (parent.length) {\n      var children = $('div#menu ul#navigation #li_' + parent);\n      //if there are other submenus, insert after last of them\n      if (children.length) {\n        $('div#menu li#li_' + tabName).hide();//hide by default\n        $('div#menu li#li_' + parent + ' span').css(\"display\", \"inline-block\");\n      }\n    };\n\n    if (tabInfo.forms) {\n      $.each(tabInfo.forms, function(key, value) {\n        Sunstone.addFormPanel(tabName, key, value)\n      })\n    }\n\n    if (tabInfo.setup) {\n      var context = $('div#' + tabName, $('div.right-content'));\n\n      tabInfo.setup(context);\n    }\n  };\n\n  //If we have defined a block of action buttons in a tab,\n  //this function takes care of inserting them in the DOM.\n  var _insertButtonsInTab = function(tabName, panelName, panelButtons, customContext) {\n    var buttons = panelButtons ? panelButtons : SunstoneCfg[\"tabs\"][tabName][\"buttons\"];\n    var buttonCode = \"\";\n    var condition = null;\n\n    var context, customId;\n    if (customContext) {\n      customId = customContext.attr(\"id\");\n      context = customContext;\n    } else {\n      customId = tabName;\n      context = $('div#' + tabName, $('div.right-content'));\n    }\n\n    var actionBlock = $('div.action_blocks', context)\n\n    if (actionBlock.length) {\n\n      var ButtonsTemplate = require('hbs!./sunstone/buttons')\n      var buttonsRow = $(ButtonsTemplate({customId: customId, customContext: customContext}));\n\n      //for every button defined for this tab...\n      for (buttonName in buttons) {\n        buttonCode = \"\";\n        button = buttons[buttonName];\n\n        //if we meet the condition we proceed. Otherwise we skip it.\n        if (Config.isTabActionEnabled(tabName, buttonName, panelName) == false) {\n          continue;\n        }\n\n        var type = button.type + '_button';\n        var strClass = [type]\n        switch (button.type) {\n        case \"select\":\n          break;\n        case \"image\":\n          strClass.push(\"action_button\")\n          break;\n        case \"create_dialog\":\n          strClass.push(\"action_button\")\n          strClass.push(\"top_button\")\n          break;\n        default:\n          strClass.push(\"top_button\")\n        }\n\n        if (button.alwaysActive) {\n          strClass.push(\"alwaysActive\");\n        }\n\n        if (button.custom_classes) {\n          strClass.push(button.custom_classes);\n        }\n\n        var buttonContext;\n        var text;\n        switch (button.layout) {\n        case \"create\":\n          buttonContext = $(\"#\" + customId + \"create_buttons\", buttonsRow);\n          icon = button.icon ? button.icon : '<i class=\"fa fa-plus\"/>';\n          text = button.text ? icon + ' ' + button.text : icon;\n          strClass.push(\"success\", \"button\", \"small\", \"radius\");\n          buttonCode = '<button class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</button>';\n          break;\n        case \"refresh\":\n          buttonContext = $(\"#\" + customId + \"refresh_buttons\", buttonsRow);\n          text = '<span class=\"fa-stack\">' +\n              '<i class=\"fa fa-refresh fa-stack-lg\" style=\"font-size: 1.5em\"></i>' +\n              //'<i class=\"fa fa-play fa-stack-1x\"></i>'+\n            '</span>';\n          strClass.push(\"white_button\", \"refresh\", \"secondary\", \"button\", \"small\", \"radius\");\n          buttonCode = '<a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\" style=\"padding-left: 5px\">' + text + '</a>';\n          break;\n        case \"top\":\n          buttonContext = $(\"#\" + customId + \"refresh_buttons\", buttonsRow);\n          text = '<span class=\"fa-stack\">' +\n              '<i class=\"fa fa-refresh fa-stack-2x\" style=\"color: #dfdfdf\"></i>' +\n              '<i class=\"fa fa-play fa-stack-1x\"></i>' +\n            '</span>';\n          strClass.push(\"white_button\", \"toggle_top_button\", \"only-right-list\", \"secondary\", \"button\", \"small\", \"radius\");\n          buttonCode = '<a class=\"' + strClass.join(' ') + '\" style=\"padding-left:0px; margin-right: 20px\">' + text + '</a>';\n          break;\n        case \"main\":\n          buttonContext = $(\"#\" + customId + \"main_buttons\", buttonsRow);\n          text = button.text;\n          strClass.push(\"secondary\", \"button\", \"small\", \"radius\");\n          buttonCode = '<button class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</button>';\n          break;\n        case \"vmsplay_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmsplay_buttons\", buttonsRow);\n          text = button.text;\n          strClass.push(\"secondary\", \"button\", \"small\", \"radius\");\n          buttonCode = '<button class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</button>';\n          break;\n        case \"vmspause_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmspause_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"vmsstop_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmsstop_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"vmsrepeat_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmsrepeat_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"vmsdelete_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmsdelete_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"vmsplanification_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmsplanification_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"more_select\":\n          buttonContext = $(\"#\" + customId + \"more_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"user_select\":\n          buttonContext = $(\"#\" + customId + \"user_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"del\":\n          buttonContext = $(\"#\" + customId + \"delete_buttons\", buttonsRow);\n          text = '<i class=\" fa fa-trash-o\"/> ';\n          strClass.push(\"alert\", \"button\", \"small\", \"radius\");\n          buttonCode = '<button class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</button>';\n          break;\n        default:\n          buttonContext = $(\"#\" + customId + \"main_buttons\", buttonsRow);\n          text = button.text;\n          strClass.push(\"secondary\", \"button\", \"small\", \"radius\");\n          buttonCode = '<button class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</button>';\n        }\n\n        buttonContext.append(buttonCode);\n      }//for each button in tab\n      //$('.top_button',actionBlock).button();\n      //$('.top_button',actionBlock).addClass(\"secondary small button\")\n\n      actionBlock.append(buttonsRow);\n\n      if ($(\"#\" + customId + \"more_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"more_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"user_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"user_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"vmsplanification_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"vmsplanification_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"vmsdelete_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"vmsdelete_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"vmsstop_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"vmsstop_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"vmspause_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"vmspause_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"vmsrepeat_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"vmsrepeat_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"user_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"user_buttons]\", actionBlock).remove()\n      }\n      //actionBlock.foundationButtons();\n      $('.top_button, .list_button', actionBlock).attr('disabled', false);\n      $('.top_button, .list_button', actionBlock).attr('disabled', true);\n      $('.create_dialog_button', actionBlock).attr('disabled', false);\n      $('.alwaysActive', actionBlock).attr('disabled', false);\n\n      $('#' + customId + 'reset_button', actionBlock).on(\"click\", function() {\n        _resetFormPanel(tabName);\n        return false;\n      })\n\n      $('#' + customId + 'submit_button', actionBlock).on(\"click\", function() {\n        _submitFormPanel(tabName);\n        return false;\n      })\n\n      $(document).foundation();\n    }//if tab exists\n  }\n\n  var _setupButtons = function() {\n    //Listen for .action_buttons\n    //An action buttons runs a predefined action. If it has type\n    //\"multiple\" it runs that action on the elements of a datatable.\n    $(document).on(\"click\", '.action_button', function() {\n      var error = 0;\n      var value = $(this).val()\n      if ($.isEmptyObject(value)) {\n        value = $(this).attr('href');\n      }\n\n      /*if (!$(this).hasClass(\"refresh\")) {\n        $(document).foundation('dropdown', 'closeall');\n      }*/\n\n      var action = SunstoneCfg[\"actions\"][value];\n      if (!action) {\n        Notifier.notifyError(\"Action \" + value + \" not defined.\");\n        return false;\n      };\n      switch (action.type){\n      case \"multiple\": //find the datatable\n        var context = $(this).parents(\".tab\");\n        var nodes = action.elements();\n        error = _runAction(value, nodes);\n        break;\n      default:\n        error = _runAction(value);\n      }\n\n      if (!error && !$(this).hasClass(\"refresh\")) {\n        //proceed to close confirm dialog in\n        //case it was open\n        _getDialogInstance(CONFIRM_DIALOG_ID).hide();\n      };\n\n      return false;\n    });\n\n    //Listen .confirm_buttons. These buttons show a confirmation dialog\n    //before running the action.\n    $(document).on(\"click\", '.confirm_button', function() {\n      var dialogInstance = _getDialogInstance(CONFIRM_DIALOG_ID)\n      $('#' + CONFIRM_DIALOG_ID).data('buttonAction', $(this).attr('href'));\n      $('#' + CONFIRM_DIALOG_ID).data('buttonTab', $(this).parents('.tab').attr('id'));\n      dialogInstance.show();\n      return false;\n    });\n\n    //Listen .confirm_buttons. These buttons show a confirmation dialog\n    //with a select box before running the action.\n    $(document).on(\"click\", '.confirm_with_select_button', function() {\n      var dialogInstance = _getDialogInstance(CONFIRM_WITH_SELECT_DIALOG_ID);\n      $('#' + CONFIRM_WITH_SELECT_DIALOG_ID).data('buttonAction', $(this).attr('href'));\n      $('#' + CONFIRM_WITH_SELECT_DIALOG_ID).data('buttonTab', $(this).parents('.tab').attr('id'));\n      dialogInstance.show();\n      return false;\n    });\n\n    $(document).foundation('reflow', 'dropdown');\n\n    // Button to return to the list view from the detailed view\n    $(document).on(\"click\", \"a[href='back']\", function(e) {\n      $(\".navigation-active-li a\", $(\"#navigation\")).click();\n      e.preventDefault();\n    });\n  }\n\n  var _setupTabs = function() {\n    var topTabs = $(\".left-content ul li.topTab\");\n    var subTabs = $(\".left-content ul li.subTab\");\n\n    subTabs.on(\"click\", function() {\n      if ($(this).hasClass('topTab')) {\n        return false;\n      } else {\n        var tabName = $(this).attr('id').substring(3);\n        _showTab(tabName);\n        return false;\n      }\n    });\n\n    topTabs.on(\"click\", function(e) {\n      var tabName = $(this).attr('id').substring(3);\n\n      if ($(this).hasClass(\"tab_with_no_content\")) {\n        //Subtabs have a class with the name of  this tab\n        var subtabs = $('div#menu li.' + tabName);\n        subtabs.fadeToggle('fast');\n        return false;\n      } else {\n        _showTab(tabName);\n        return false;\n      }\n    });\n\n    _setupButtons();\n  };\n\n  var _showRighList = function(tabName) {\n    var tab = $('#' + tabName);\n    $(\".tab\").hide();\n    tab.show();\n\n    $(\".right-info\", tab).hide();\n    $(\".right-form\", tab).hide();\n    $(\".right-list\", tab).show();\n    $(\".only-right-info\", tab).hide();\n    $(\".only-right-form\", tab).hide();\n    $(\".only-right-list\", tab).show();\n  };\n\n  var _showRighInfo = function(tabName) {\n    var tab = $('#' + tabName);\n    $(\".tab\").hide();\n    tab.show();\n\n    $(\".right-list\", tab).hide();\n    $(\".right-form\", tab).hide();\n    $(\".right-info\", tab).show();\n    $(\".only-right-list\", tab).hide();\n    $(\".only-right-form\", tab).hide();\n    $(\".only-right-info\", tab).show();\n  }\n\n  var _showTab = function(tabName) {\n    if (!SunstoneCfg['tabs'][tabName]) {\n      return false;\n    }\n\n    // TODO check if necessary\n    // last_selected_row = null;\n\n    if (tabName.indexOf('#') == 0) {\n      tabName = tabName.substring(1);\n    }\n\n    //clean selected menu\n    $(\"#navigation li\").removeClass(\"navigation-active-li\");\n    $(\"#navigation li#li_\" + tabName).addClass(\"navigation-active-li\");\n\n    var tab = $('#' + tabName);\n    //show tab\n    _showRighList(tabName);\n\n    var dataTable = SunstoneCfg['tabs'][tabName]['dataTable'];\n    if (dataTable) {\n      dataTable.recountCheckboxes();\n    }\n\n    var res = SunstoneCfg['tabs'][tabName]['resource']\n    if (res) {\n      Sunstone.runAction(res + \".refresh\");\n    }\n  }\n\n  var _showElement = function(tabName, infoAction, elementId) {\n    _showTab(tabName);\n\n    var context = $('#' + tabName);\n\n    $(\".resource-id\", context).html(elementId);\n    $(\".resource-info-header\", context).text(\"\");\n\n    var loading = '<div style=\"margin-top: 20px; text-align: center; width: 100%\"><img src=\"images/pbar.gif\" alt=\"loading...\" /></div>';\n    $(\".right-info\", context).html(loading);\n    _showRighInfo(tabName);\n\n    Sunstone.runAction(infoAction, elementId);\n    //enable action buttons\n    $('.top_button, .list_button', context).attr('disabled', false);\n  }\n\n  var _insertPanels = function(tabName, info, contextTabId, context) {\n    var context = context || $(\".right-info\", $(\"#\" + tabName));\n    var containerId = tabName + '-panels';\n    var activaTab = $(\"dd.active a\", $(\"#\" + containerId));\n    if (activaTab) {\n      var activaTabHref = activaTab.attr('href');\n    }\n\n    var panels = SunstoneCfg['tabs'][tabName].panels;\n    var active = false;\n    var templatePanelsParams = []\n    var panelInstances = []\n\n    $.each(panels, function(panelName, Panel) {\n      if (Config.isTabPanelEnabled((contextTabId||tabName), panelName)) {\n        if (activaTabHref) {\n          if (activaTabHref == \"#\" + panelName) {\n            active = true;\n          }\n        } else {\n          activaTabHref = \"#\" + panelName\n          active = true;\n        }\n\n        try {\n          var panelInstance = new Panel(info, contextTabId);\n          panelInstances.push(panelInstance);\n          templatePanelsParams.push({\n            'panelName': panelName,\n            'icon': panelInstance.icon,\n            'title': panelInstance.title,\n            'html': panelInstance.html(),\n            'active': active\n          })\n        } catch (err) {\n          console.log(err);\n        }\n\n        active = false;\n      }\n    });\n\n    var TemplatePanels = require('hbs!./sunstone/panels');\n    var html = TemplatePanels({\n      'containerId': containerId,\n      'panels': templatePanelsParams\n    })\n\n    context.html(html);\n\n    $.each(panelInstances, function(index, panel) {\n      panel.setup(context);\n\n      if (panel.onShow) {\n        context.off('click', '[href=\"#' + panel.panelId + '\"]');\n        context.on('click', '[href=\"#' + panel.panelId + '\"]', function(){\n          panel.onShow(context);\n        });\n      }\n    });\n\n    context.foundation('reflow', 'tab');\n    $('[href=' + activaTabHref + ']', context).trigger(\"click\");\n  }\n\n  //Runs a predefined action. Wraps the calls to opennebula.js and\n  //can be use to run action depending on conditions and notify them\n  //if desired. Returns 1 if some problem has been detected: i.e\n  //the condition to run the action is not met, the action is not found \n  var _runAction = function(action, dataArg, extraParam) {\n    var actions = SunstoneCfg[\"actions\"];\n    if (!actions[action]) {\n      Notifier.notifyError(\"Action \" + action + \" not defined\");\n      return 1;\n    }\n\n    var actionCfg = actions[action];\n    var notify = actionCfg.notify;\n\n    var condition = actionCfg[\"condition\"];\n\n    //Is the condition to run the action met?\n    //Should we inform if it is not met?\n    if (condition && !condition()) {\n      if (notify) {\n        Notifier.notifyError(\"This action cannot be run\");\n      }\n      return 1;\n    }\n\n    var call = actionCfg[\"call\"];\n    var callback = actionCfg[\"callback\"];\n    var err = actionCfg[\"error\"];\n\n    switch (actionCfg.type){\n    case \"create\":\n    case \"register\":\n      call({data:dataArg, success: callback, error:err});\n      break;\n    case \"single\":\n      if (extraParam) {\n        call({\n          data:{\n            id:dataArg,\n            extra_param: extraParam\n          },\n          success: callback, error:err\n        });\n      } else {\n        call({data:{id:dataArg}, success: callback, error:err});\n      };\n      break;\n    case \"list\":\n      call({success: callback, error:err, options:dataArg});\n      break;\n    case \"monitor_global\":\n      call({\n          timeout: true,\n          success: callback,\n          error:err,\n          data: {monitor: dataArg}});\n      break;\n    case \"monitor\":\n    case \"monitor_single\":\n      call({\n          timeout: true,\n          success: callback,\n          error:err,\n          data: {id:dataArg, monitor: extraParam}});\n      break;\n    case \"multiple\":\n      $.each(dataArg, function() {\n        if (extraParam) {\n          call({\n                        data:{\n                          id:this,\n                          extra_param:extraParam\n                        },\n                        success: callback,\n                        error: err});\n        } else {\n          call({\n              data:{id:this},\n              success: callback,\n              error:err});\n        }\n      });\n      break;\n    default:\n      if (dataArg && extraParam) {\n        call(dataArg, extraParam);\n      } else if (dataArg) {\n        call(dataArg);\n      } else {\n        call();\n      }\n    }\n\n    if (notify) {\n      Notifier.notifySubmit(action, dataArg, extraParam);\n    }\n\n    return 0;\n  }\n\n  function _showFormPanel(tabId, formPanelId, action, onShow2) {\n    var context = $(\"#\" + tabId);\n    _popFormPanelLoading(tabId);\n    _enableFormPanelSubmit(tabId);\n\n    setTimeout(function() {\n      var tab = SunstoneCfg[\"tabs\"][tabId];\n      var formPanelInstance = tab[\"formPanelInstances\"][formPanelId];\n\n      var formContext = $(\"#\" + tabId+\" div[form-panel-id=\"+formPanelId+\"]\");\n\n      if (!formPanelInstance) {\n        formContext =\n        $('<div class=\"tabs-content tabs-contentForm\" form-panel-id=\"'+formPanelId+'\">\\\n          <div class=\"content active\" id=\"wizardForms\"></div>\\\n          <div class=\"content\" id=\"advancedForms\"></div>\\\n        </div>').appendTo( $(\".contentForm\", context) );\n\n        // Create panelInstance, insert in the DOM and setup\n        var formPanel = tab[\"formPanels\"][formPanelId];\n        if (!formPanel) { \n          console.log(\"Form Panel not defined\"); \n          return false; \n        } // Panel not defined\n\n        formPanelInstance = new formPanel();\n        tab[\"formPanelInstances\"][formPanelId] = formPanelInstance;\n        formPanelInstance.insert(formContext);\n      }\n\n      formPanelInstance.setAction(formContext, action);\n      tab[\"activeFormPanel\"] = formPanelInstance;\n\n      // Hide wizard/advanced selector if advanced not defined\n      if (formPanelInstance.htmlAdvanced) {\n        $(\".wizard_tabs\", context).show();\n      } else {\n        $(\".wizard_tabs\", context).hide();\n      }\n\n      // Hide reset button if not defined\n      if (formPanelInstance.resetButton()) {\n        $(\".reset_button\", context).show();\n      } else {\n        $(\".reset_button\", context).hide();\n      }\n\n      formPanelInstance.onShow(formContext);\n      if (onShow2) {\n        onShow2(formPanelInstance, formContext);\n      }\n\n      _hideFormPanelLoading(tabId);\n    }, 13)\n  }\n\n  var _submitFormPanel = function(tabId) {\n    var context = $(\"#\" + tabId);\n    _popFormPanelLoading(tabId);\n\n    setTimeout(function() {\n      var formPanelInstance = SunstoneCfg[\"tabs\"][tabId].activeFormPanel\n\n      if ($(\"#wizardForms.active\", context).length > 0) {\n        $('#' + formPanelInstance.formPanelId + 'Wizard').submit();\n      } else if ($(\"#advancedForms.active\", context).length > 0) {\n        $('#' + formPanelInstance.formPanelId + 'Advanced').submit();\n      }\n    }, 13)\n  }\n\n  var _resetFormPanel = function(tabId, formPanelId) {\n    _popFormPanelLoading(tabId);\n    _enableFormPanelSubmit(tabId);\n\n    setTimeout(function() {\n      var formPanelInstance;\n      if (formPanelId) {\n        formPanelInstance = SunstoneCfg[\"tabs\"][tabId]['formPanelInstances'][formPanelId];\n      } else {\n        formPanelInstance = SunstoneCfg[\"tabs\"][tabId].activeFormPanel;\n      }\n\n      if (formPanelInstance) {\n        var context = $(\"#\" + tabId+\" div[form-panel-id=\"+formPanelInstance.formPanelId+\"]\");\n\n        formPanelId = formPanelInstance.formPanelId;\n\n        formPanelInstance.reset(context);\n        formPanelInstance.onShow(context);\n      }\n\n      _hideFormPanelLoading(tabId);\n    }, 13)\n  }\n\n  function _hideFormPanelLoading(tabId) {\n    var context = $(\"#\" + tabId);\n    //$(\".right-form\", context).html(content);\n\n    $(\".loadingForm\", context).hide();\n    $(\".tabs-contentForm\", context).hide();\n\n    var formPanelInstance = SunstoneCfg[\"tabs\"][tabId].activeFormPanel;\n    if (formPanelInstance) {\n      // Set title and button strings\n      $(\".right-form-title\", context).text(formPanelInstance.title());\n      $(\".submit_button\", context).text(formPanelInstance.buttonText());\n\n      $(\"div[form-panel-id=\"+formPanelInstance.formPanelId+\"]\", context).show();\n    }\n    \n  }\n\n  function _hideFormPanel(tabId) {\n    var context = $(\"#\" + tabId);\n    $(\"a[href=back]\", context).trigger(\"click\");\n  }\n\n  function _popFormPanelLoading(tabId) {\n    var context = $(\"#\" + tabId);\n    $(\".right-list\", context).hide();\n    $(\".right-info\", context).hide();\n    $(\".right-form\", context).show();\n    $(\".only-right-list\", context).hide();\n    $(\".only-right-info\", context).hide();\n    $(\".only-right-form\", context).show();\n\n    $(\".right-form-title\", context).text(Locale.tr(\"Loading...\"));\n    $(\".submit_button\", context).text(Locale.tr(\"Loading...\"));\n\n    $(\".tabs-contentForm\", context).hide();\n    $(\".loadingForm\", context).show();\n  }\n\n  function _disableFormPanelSubmit(tabId) {\n    var context = $(\"#\" + tabId);\n    $(\".submit_button\", context).\n        attr(\"disabled\", \"disabled\").\n        on(\"click.disable\", function(e) { return false; });\n  }\n\n  function _enableFormPanelSubmit(tabId) {\n    var context = $(\"#\" + tabId);\n    $(\".submit_button\", context).\n        removeAttr(\"disabled\").\n        off(\"click.disable\");\n  }\n\n  var _getButton = function(tadId, buttonName) {\n    var button = null;\n    var buttons = SunstoneCfg[\"tabs\"][tadId][\"buttons\"];\n    button = buttons[buttonName];\n    //not found, is it in the list then?\n    if (!button && buttons[\"action_list\"]) {\n      button = buttons[\"action_list\"][\"actions\"][buttonName];\n    }\n    return button;\n  }\n\n  var _rightInfoVisible = function(context) {\n    return $(\".right-info\", context).is(':visible');\n  }\n\n  var _rightListVisible = function(context) {\n    return $(\".right-list\", context).is(':visible');\n  }\n\n  var _rightInfoResourceId = function(context) {\n    return $(\".resource-id\", context).text();\n  }\n\n  var _getAction = function(actionId) {\n    return SunstoneCfg[\"actions\"][actionId];\n  }\n\n  var _getDataTable = function(tabName) {\n    if (SunstoneCfg['tabs'][tabName]) {\n      return SunstoneCfg['tabs'][tabName].dataTable;\n    }\n  }\n\n  var _getDialogInstance = function(dialogId) {\n    var dialogInstance = SunstoneCfg['dialogInstances'][dialogId];\n    if (dialogInstance == undefined) {\n      var Dialog = SunstoneCfg['dialogs'][dialogId]\n      var dialogInstance = new Dialog();\n      dialogInstance.insert();\n      SunstoneCfg['dialogInstances'][dialogId] = dialogInstance;\n    }\n    \n    return dialogInstance;\n  }\n\n  var Sunstone = {\n    \"addMainTab\": _addMainTab,\n    \"addDialogs\": _addDialogs,\n\n    \"insertTabs\": _insertTabs,\n    \"insertPanels\": _insertPanels,\n\n    'showTab': _showTab,\n    \"showElement\" : _showElement,\n\n    \"showFormPanel\": _showFormPanel,\n    \"resetFormPanel\": _resetFormPanel,\n    \"hideFormPanel\": _hideFormPanel,\n    \"hideFormPanelLoading\": _hideFormPanelLoading,\n    \"disableFormPanelSubmit\": _disableFormPanelSubmit,\n    \"enableFormPanelSubmit\": _enableFormPanelSubmit,\n\n\n    \"rightInfoVisible\": _rightInfoVisible,\n    \"rightListVisible\": _rightListVisible,\n    \"rightInfoResourceId\": _rightInfoResourceId, \n\n    \"runAction\" : _runAction,\n    \"getAction\": _getAction,\n    \"getButton\": _getButton,\n    \"getDataTable\": _getDataTable,\n    \"getDialog\": _getDialogInstance,\n\n    \"insertButtonsInTab\": _insertButtonsInTab,\n\n    \"TOP_INTERVAL\": TOP_INTERVAL\n  }\n\n  return Sunstone;\n});\n\n","define('opennebula/helper',['require'],function(require) {\n  var Helper = {\n    \"action\": function(action, params) {\n      obj = {\n        \"action\": {\n          \"perform\": action\n        }\n      }\n      if (params) {\n        obj.action.params = params;\n      }\n      return obj;\n    },\n\n    \"request\": function(resource, method, data) {\n      var r = {\n        \"request\": {\n          \"resource\"  : resource,\n          \"method\"    : method\n        }\n      }\n      if (data) {\n        if (typeof(data) != \"array\") {\n          data = [data];\n        }\n        r.request.data = data;\n      }\n      return r;\n    },\n\n    \"pool\": function(resource, response) {\n      var pool_name = resource + \"_POOL\";\n      var type = resource;\n      var pool;\n\n      if (typeof(pool_name) == \"undefined\") {\n        return Error('Incorrect Pool');\n      }\n\n      var p_pool = [];\n\n      if (response[pool_name]) {\n        pool = response[pool_name][type];\n      } else {\n        pool = null;\n      }\n\n      if (pool == null) {\n        return p_pool;\n      } else if (pool.length) {\n        for (i = 0; i < pool.length; i++) {\n          p_pool[i] = {};\n          p_pool[i][type] = pool[i];\n        }\n        return (p_pool);\n      } else {\n        p_pool[0] = {};\n        p_pool[0][type] = pool;\n        return (p_pool);\n      }\n    },\n\n    \"pool_hash_processing\": function(pool_name, resource_name, response) {\n      var pool;\n\n      if (typeof(pool_name) == \"undefined\") {\n        return Error('Incorrect Pool');\n      }\n\n      var p_pool = {};\n\n      if (response[pool_name]) {\n        pool = response[pool_name][resource_name];\n      } else {\n        pool = null;\n      }\n\n      if (pool == null) {\n        return p_pool;\n      } else if (pool.length) {\n        for (i = 0; i < pool.length; i++) {\n          var res = {};\n          res[resource_name] = pool[i];\n\n          p_pool[res[resource_name]['ID']] = res;\n        }\n        return (p_pool);\n      } else {\n        var res = {};\n        res[resource_name] = pool;\n\n        p_pool[res[resource_name]['ID']] = res;\n\n        return (p_pool);\n      }\n    },\n\n    \"pool_name_processing\": function(pool_name, resource_name, response) {\n      var pool;\n\n      if (typeof(pool_name) == \"undefined\") {\n        return Error('Incorrect Pool');\n      }\n\n      var p_pool = {};\n\n      if (response[pool_name]) {\n        pool = response[pool_name][resource_name];\n      } else {\n        pool = null;\n      }\n\n      if (pool == null) {\n        return p_pool;\n      } else if (pool.length) {\n        for (i = 0; i < pool.length; i++) {\n          var res = pool[i];\n\n          p_pool[res['ID']] = res['NAME'];\n        }\n        return (p_pool);\n      } else {\n        var res = pool;\n\n        p_pool[res['ID']] = res['NAME'];\n\n        return (p_pool);\n      }\n    }\n  };\n\n  return Helper;\n});\n\n","define('opennebula/error',['require'],function(require) {\n  var Error = function(resp) {\n    var error = {};\n    if (resp.responseText) {\n      try {\n        error = JSON.parse(resp.responseText);\n      }\n      catch (e) {\n        error.error = {message: \"It appears there was a server exception. Please check server's log.\"};\n      };\n    } else {\n      error.error = {};\n    }\n    error.error.http_status = resp.status;\n    return error;\n  }\n\n  return Error;\n})\n;\n","define('opennebula/action',['require','./helper','./error'],function(require) {\n  var OpenNebulaHelper = require('./helper');\n  var OpenNebulaError = require('./error');\n\n  var listCache = {};\n  var listWaiting = {};\n  var listCallbacks = {};\n\n  var nameIndex = {};\n\n  var CACHE_EXPIRE = 60000; //ms\n\n  var _clearCache = function(cache_name) {\n    listCache[cache_name] = null;\n    //console.log(cache_name+\" cache cleaned\");\n  }\n\n  //Example: Simple action: publish. Simple action with action obj: deploy\n  var _simple_action = function(params, resource, method, action_obj, path) {\n    var callback = params.success;\n    var callbackError = params.error;\n    var id = params.data.id;\n    var action, request;\n    if (action_obj) {\n      action = OpenNebulaHelper.action(method, action_obj);\n      request = OpenNebulaHelper.request(resource, method, [id, action_obj]);\n    } else {\n      action = OpenNebulaHelper.action(method);\n      request = OpenNebulaHelper.request(resource, method, id);\n    };\n\n    var reqPath = path ? path : resource.toLowerCase();\n    var cache_name = params.cache_name ? params.cache_name : resource;\n\n    $.ajax({\n      url: reqPath + \"/\" + id + \"/action\",\n      type: \"POST\",\n      contentType: \"application/json; charset=utf-8\",\n      data: JSON.stringify(action),\n      success: function() {\n        _clearCache(cache_name);\n\n        return callback ? callback(request) : null;\n      },\n      error: function(response) {\n        return callbackError ?\n            callbackError(request, OpenNebulaError(response)) : null;\n      }\n    });\n  }\n\n  var Action = {\n    \"create\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var data = params.data;\n      var request = OpenNebulaHelper.request(resource, \"create\", data);\n      var reqPath = path ? path : resource.toLowerCase();\n      var cache_name = params.cache_name ? params.cache_name : resource;\n\n      $.ajax({\n        url: reqPath,\n        type: \"POST\",\n        dataType: \"json\",\n        data: JSON.stringify(data),\n        contentType: \"application/json; charset=utf-8\",\n        success: function(response) {\n          _clearCache(cache_name);\n\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n\n    \"del\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var id = params.data.id;\n      var request = OpenNebulaHelper.request(resource, \"delete\", id);\n      var reqPath = path ? path : resource.toLowerCase();\n      var cache_name = params.cache_name ? params.cache_name : resource;\n\n      $.ajax({\n        url: reqPath + \"/\" + id,\n        type: \"DELETE\",\n        success: function() {\n          _clearCache(cache_name);\n\n          return callback ? callback(request) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n\n    \"list\": function(params, resource, path, process) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var timeout = params.timeout || false;\n      var request = OpenNebulaHelper.request(resource, \"list\");\n      var reqPath = path ? path : resource.toLowerCase();\n      var cache_name = params.cache_name ? params.cache_name : resource;\n\n      var options = params.options;\n      var force = false;\n      if (options) {\n        force = options.force;\n      }\n\n      if (force) {\n        _clearCache(cache_name);\n      }\n\n      if (!force &&\n          listCache[cache_name] &&\n          listCache[cache_name][\"timestamp\"] + CACHE_EXPIRE > new Date().getTime()) {\n\n        //console.log(cache_name+\" list. Cache used\");\n\n        return callback ?\n            callback(request, listCache[cache_name][\"data\"]) : null;\n      }\n\n      // TODO: Because callbacks are queued, we may need to force a\n      // timeout. Otherwise a blocked call cannot be retried.\n\n      if (!listCallbacks[cache_name]) {\n        listCallbacks[cache_name] = [];\n      }\n\n      listCallbacks[cache_name].push({\n        success : callback,\n        error : callbackError\n      });\n\n      //console.log(cache_name+\" list. Callback queued\");\n\n      if (listWaiting[cache_name]) {\n        return;\n      }\n\n      listWaiting[cache_name] = true;\n\n      //console.log(cache_name+\" list. NO cache, calling ajax\");\n\n      $.ajax({\n        url: reqPath,\n        type: \"GET\",\n        data: {timeout: timeout},\n        dataType: \"json\",\n        success: function(response) {\n          var list;\n\n          if (process){\n            list = process(response);\n          } else {\n            list = OpenNebulaHelper.pool(resource, response);\n          }\n\n          nameIndex[cache_name] = OpenNebulaHelper.pool_name_processing(\n                                        resource+\"_POOL\", resource, response);\n\n          listCache[cache_name] = {\n            timestamp   : new Date().getTime(),\n            data        : list\n          };\n\n          listWaiting[cache_name] = false;\n\n          for (var i = 0; i < listCallbacks[cache_name].length; i++) {\n            var callback = listCallbacks[cache_name][i].success;\n\n            if (callback) {\n              //console.log(cache_name+\" list. Callback called\");\n              callback(request, list, response);\n            }\n          }\n\n          listCallbacks[cache_name] = [];\n\n          return;\n        },\n        error: function(response) {\n          listWaiting[cache_name] = false;\n\n          for (var i = 0; i < listCallbacks[cache_name].length; i++) {\n            var callback = listCallbacks[cache_name][i].error;\n\n            if (callback) {\n              //console.log(cache_name+\" list. ERROR Callback called\");\n              callback(request, OpenNebulaError(response));\n            }\n          }\n\n          listCallbacks[cache_name] = [];\n\n          return;\n        }\n      });\n    },\n\n    \"list_in_zone\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var timeout = params.timeout || false;\n      var request = OpenNebulaHelper.request(resource, \"list\");\n      var reqPath = path ? path : resource.toLowerCase();\n\n      $.ajax({\n        url: reqPath,\n        type: \"GET\",\n        data: {timeout: timeout, zone_id: params.data.zone_id},\n        dataType: \"json\",\n        success: function(response) {\n          var list = OpenNebulaHelper.pool(resource, response)\n          return callback ?\n              callback(request, list) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n\n    //Subresource examples: \"fetch_template\", \"log\"...\n    \"show\": function(params, resource, subresource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var id = params.data.id;\n      var request = subresource ?\n          OpenNebulaHelper.request(resource, subresource, id) :\n          OpenNebulaHelper.request(resource, \"show\", id);\n\n      var reqPath = path ? path : resource.toLowerCase();\n      var url = reqPath + \"/\" + id;\n      url = subresource ? url + \"/\" + subresource : url;\n\n      $.ajax({\n        url: url,\n        type: \"GET\",\n        dataType: \"json\",\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n\n    \"chown\": function(params, resource, path) {\n      var id = params.data.extra_param;\n      var action_obj = {\"owner_id\": id,\n                        \"group_id\": \"-1\"};\n\n      _simple_action(params, resource, \"chown\", action_obj, path);\n    },\n\n    \"chgrp\": function(params, resource, path) {\n      var id = params.data.extra_param;\n      var action_obj = {\"owner_id\": \"-1\",\n                        \"group_id\": id};\n\n      _simple_action(params, resource, \"chown\", action_obj, path);\n    },\n\n    \"simple_action\": _simple_action,\n\n    \"monitor\": function(params, resource, all, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var data = params.data;\n\n      var method = \"monitor\";\n      var request = OpenNebulaHelper.request(resource, method, data);\n\n      var url = path ? path : resource.toLowerCase();\n      url = all ? url + \"/monitor\" : url + \"/\" + params.data.id + \"/monitor\";\n\n      $.ajax({\n        url: url,\n        type: \"GET\",\n        data: data['monitor'],\n        dataType: \"json\",\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n\n    \"accounting\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var data = params.data;\n\n      var method = \"accounting\";\n      var request = OpenNebulaHelper.request(resource, method, data);\n\n      var url = path ? path : resource.toLowerCase() + \"/accounting\";\n\n      $.ajax({\n        url: url,\n        type: \"GET\",\n        data: data,\n        dataType: \"json\",\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n\n    \"showback\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var data = params.data;\n\n      var method = \"showback\";\n      var request = OpenNebulaHelper.request(resource, method, data);\n\n      var url = path ? path : resource.toLowerCase() + \"/showback\";\n\n      $.ajax({\n        url: url,\n        type: \"GET\",\n        data: data,\n        dataType: \"json\",\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n\n    \"getName\": function(id, cache_name){\n      if(nameIndex[cache_name] != undefined){\n        var name = nameIndex[cache_name][id];\n        if (name != undefined){\n          return name;\n        }\n\n        // TODO: if name is not found, perform a .list or .show to at least\n        // get it ready for the next call?\n      }\n\n      return \"\"+id;\n    },\n\n    \"clear_cache\": _clearCache\n  };\n\n  return Action;\n});\n\n","define('opennebula/auth',['require','./helper','./error'],function(require) {\n  var OpenNebulaHelper = require('./helper');\n  var OpenNebulaError = require('./error');\n\n  var RESOURCE = \"AUTH\";\n\n  var Auth = {\n    \"login\": function(params) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var username = params.data.username;\n      var password = params.data.password;\n      var remember = params.remember;\n\n      var request = OpenNebulaHelper.request(RESOURCE, \"login\");\n\n      $.ajax({\n        url: \"login\",\n        type: \"POST\",\n        data: {remember: remember},\n        beforeSend : function(req) {\n          var token = username + ':' + password;\n          var authString = 'Basic ';\n          if (typeof(btoa) === 'function')\n              authString += btoa(unescape(encodeURIComponent(token)))\n          else {\n            token = CryptoJS.enc.Utf8.parse(token);\n            authString += CryptoJS.enc.Base64.stringify(token)\n          }\n\n          req.setRequestHeader(\"Authorization\", authString);\n        },\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n\n    \"logout\": function(params) {\n      var callback = params.success;\n      var callbackError = params.error;\n\n      var request = OpenNebulaHelper.request(RESOURCE, \"logout\");\n\n      $.ajax({\n        url: \"logout\",\n        type: \"POST\",\n        success: function(response) {\n          // TODO $.cookie(\"one-user\", null);\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebulaError(response)) : null;\n        }\n      });\n    }\n  }\n\n  return Auth;\n})\n;\n","define('opennebula/acl',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"ACL\";\n\n  var Acl = {\n    \"resource\": RESOURCE,\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    }\n  }\n\n  return Acl;\n})\n;\n","define('opennebula/cluster',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"CLUSTER\";\n\n  var Cluster = {\n    \"resource\": RESOURCE,\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"list_in_zone\" : function(params) {\n      OpenNebulaAction.list_in_zone(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"addhost\" : function(params) {\n      var action_obj = {\"host_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"addhost\", action_obj);\n    },\n    \"delhost\" : function(params) {\n      var action_obj = {\"host_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"delhost\", action_obj);\n    },\n    \"adddatastore\" : function(params) {\n      var action_obj = {\"ds_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"adddatastore\", action_obj);\n    },\n    \"deldatastore\" : function(params) {\n      var action_obj = {\"ds_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"deldatastore\", action_obj);\n    },\n    \"addvnet\" : function(params) {\n      var action_obj = {\"vnet_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"addvnet\", action_obj);\n    },\n    \"delvnet\" : function(params) {\n      var action_obj = {\"vnet_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"delvnet\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"update\" : function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  }\n\n  return Cluster;\n})\n;\n","define('opennebula/datastore',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"DATASTORE\";\n  var STATES = [\"ON\", \"OFF\"];\n\n  var Datastore = {\n    \"resource\": RESOURCE,\n    \"stateStr\": function(stateId) {\n      return STATES[stateId];\n    },\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"list_in_zone\" : function(params) {\n      OpenNebulaAction.list_in_zone(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"update\" : function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"enable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"enable\");\n    },\n    \"disable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"disable\");\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  }\n\n  return Datastore;\n})\n;\n","define('utils/quotas/quota-defaults',['require','./quota-limits'],function(require) {\n  // The default quotas returned by the pool.list method are stored here\n  var _defaultUserQuotas = {\n    \"VM_QUOTA\": {\n      \"VM\": {\n        \"CPU\":      QUOTA_LIMIT_UNLIMITED,\n        \"MEMORY\":   QUOTA_LIMIT_UNLIMITED,\n        \"VMS\":      QUOTA_LIMIT_UNLIMITED,\n        \"VOLATILE_SIZE\":  QUOTA_LIMIT_UNLIMITED,\n      }\n    },\n    \"DATASTORE_QUOTA\": {},\n    \"IMAGE_QUOTA\": {},\n    \"NETWORK_QUOTA\": {}\n  };\n\n  var _defaultGroupQuotas = {\n    \"VM_QUOTA\": {\n      \"VM\": {\n        \"CPU\":      QUOTA_LIMIT_UNLIMITED,\n        \"MEMORY\":   QUOTA_LIMIT_UNLIMITED,\n        \"VMS\":      QUOTA_LIMIT_UNLIMITED,\n        \"VOLATILE_SIZE\":  QUOTA_LIMIT_UNLIMITED,\n      }\n    },\n    \"DATASTORE_QUOTA\": {},\n    \"IMAGE_QUOTA\": {},\n    \"NETWORK_QUOTA\": {}\n  };\n\n  var QuotaLimits = require('./quota-limits');\n\n\n  // Constants\n  var QUOTA_LIMIT_DEFAULT   = QuotaLimits.QUOTA_LIMIT_DEFAULT;\n  var QUOTA_LIMIT_UNLIMITED = QuotaLimits.QUOTA_LIMIT_UNLIMITED;\n\n\n  function _setDefaultUserQuotas(defaultUserQuotas){\n    _defaultUserQuotas = defaultUserQuotas;\n  }\n\n  function _setDefaultGroupQuotas(defaultGroupQuotas){\n    _defaultGroupQuotas = defaultGroupQuotas;\n  }\n\n  function _getDefaultUserQuotas(){\n    return _defaultUserQuotas;\n  }\n\n  function _getDefaultGroupQuotas(){\n    return _defaultGroupQuotas;\n  }\n\n  /**\n   * @param  {string} resource_name User or Group\n   * @return {Object}\n   */\n  function _getDefaultQuotas(resource_name){\n    if(resource_name == \"User\") {\n      return _getDefaultUserQuotas();\n    } else {\n      return _getDefaultGroupQuotas();\n    }\n  }\n\n  // Processes the default quotas as returned by OpenNebula, to be easier to\n  // use in Sunstone\n  function _default_quotas(default_quotas){\n    // Initialize the VM_QUOTA to unlimited if it does not exist\n    if ($.isEmptyObject(default_quotas.VM_QUOTA)){\n      default_quotas.VM_QUOTA = {\n        \"VM\" : {\n          \"VMS\"           : QUOTA_LIMIT_UNLIMITED,\n          \"MEMORY\"        : QUOTA_LIMIT_UNLIMITED,\n          \"CPU\"           : QUOTA_LIMIT_UNLIMITED,\n          \"VOLATILE_SIZE\" : QUOTA_LIMIT_UNLIMITED\n        }\n      };\n    }\n\n    // Replace the DATASTORE array with a map\n\n    var ds_quotas = [];\n\n    if ($.isArray(default_quotas.DATASTORE_QUOTA.DATASTORE))\n      ds_quotas = default_quotas.DATASTORE_QUOTA.DATASTORE;\n    else if (default_quotas.DATASTORE_QUOTA.DATASTORE)\n      ds_quotas = [default_quotas.DATASTORE_QUOTA.DATASTORE];\n\n    delete default_quotas.DATASTORE_QUOTA;\n\n    default_quotas.DATASTORE_QUOTA = {};\n\n    for (var i=0; i < ds_quotas.length; i++){\n      default_quotas.DATASTORE_QUOTA[ds_quotas[i].ID] = ds_quotas[i];\n    }\n\n    // Replace the IMAGE array with a map\n\n    var img_quotas = [];\n\n    if ($.isArray(default_quotas.IMAGE_QUOTA.IMAGE))\n      img_quotas = default_quotas.IMAGE_QUOTA.IMAGE;\n    else if (default_quotas.IMAGE_QUOTA.IMAGE)\n      img_quotas = [default_quotas.IMAGE_QUOTA.IMAGE];\n\n    delete default_quotas.IMAGE_QUOTA;\n\n    default_quotas.IMAGE_QUOTA = {};\n\n    for (var i=0; i < img_quotas.length; i++){\n      default_quotas.IMAGE_QUOTA[img_quotas[i].ID] = img_quotas[i];\n    }\n\n    // Replace the NETWORK array with a map\n\n    var net_quotas = [];\n\n    if ($.isArray(default_quotas.NETWORK_QUOTA.NETWORK))\n      net_quotas = default_quotas.NETWORK_QUOTA.NETWORK;\n    else if (default_quotas.NETWORK_QUOTA.NETWORK)\n      net_quotas = [default_quotas.NETWORK_QUOTA.NETWORK];\n\n    delete default_quotas.NETWORK_QUOTA;\n\n    default_quotas.NETWORK_QUOTA = {};\n\n    for (var i=0; i < net_quotas.length; i++){\n      default_quotas.NETWORK_QUOTA[net_quotas[i].ID] = net_quotas[i];\n    }\n\n    return default_quotas;\n  }\n\n\n  return {\n    'setDefaultUserQuotas': _setDefaultUserQuotas,\n    'getDefaultUserQuotas': _getDefaultUserQuotas,\n    'setDefaultGroupQuotas': _setDefaultGroupQuotas,\n    'getDefaultGroupQuotas': _getDefaultGroupQuotas,\n    'getDefaultQuotas': _getDefaultQuotas,\n    'default_quotas': _default_quotas\n  };\n});\n\n","define('utils/quotas/quota-limits',['require'],function(require) {\n  // Constants\n  var QUOTA_LIMIT_DEFAULT   = \"-1\";\n  var QUOTA_LIMIT_UNLIMITED = \"-2\";\n\n  return {\n    'QUOTA_LIMIT_DEFAULT': QUOTA_LIMIT_DEFAULT,\n    'QUOTA_LIMIT_UNLIMITED': QUOTA_LIMIT_UNLIMITED\n  };\n});\n\n","define('opennebula/group',['require','utils/quotas/quota-defaults','./action','./helper','./error'],function(require) {\n\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n  var OpenNebulaAction = require('./action');\n  var OpenNebulaHelper = require('./helper');\n  var OpenNebulaError  = require('./error');\n\n  var RESOURCE = \"GROUP\";\n\n  var Group =  {\n    \"resource\": RESOURCE,\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      OpenNebulaAction.list(params, RESOURCE, null, function(response) {\n        var list = OpenNebulaHelper.pool(RESOURCE, response);\n\n        QuotaDefaults.setDefaultGroupQuotas(\n          QuotaDefaults.default_quotas(response.GROUP_POOL.DEFAULT_GROUP_QUOTAS)\n        );\n\n        // Inject the VM quota. This info is returned separately in the\n        // pool info call, but the elementArray expects it inside the GROUP,\n        // as it is returned by the individual info call\n        var quotas_hash = OpenNebulaHelper.pool_hash_processing(\n                                            'GROUP_POOL', 'QUOTAS', response);\n\n        $.each(list,function(){\n          var q = quotas_hash[this[RESOURCE].ID];\n\n          if (q != undefined) {\n              this[RESOURCE].VM_QUOTA = q.QUOTAS.VM_QUOTA;\n          }\n        });\n\n        return list;\n      });\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"set_quota\" : function(params) {\n      var action_obj = {quotas :  params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"set_quota\", action_obj);\n    },\n    \"show\" : function(params) {\n      var callback = params.success;\n\n      // Before calling the true callback, we update the default quotas\n      // included in the .show response\n      params.success = function(request, response) {\n        QuotaDefaults.setDefaultGroupQuotas(\n          QuotaDefaults.default_quotas(response.GROUP.DEFAULT_GROUP_QUOTAS)\n        );\n\n        return callback ? callback(request, response) : null;\n      };\n\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"accounting\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, false);\n    },\n    \"add_admin\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_admin\", action_obj);\n    },\n    \"del_admin\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_admin\", action_obj);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  };\n\n  return Group;\n});\n","define('opennebula/host',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"HOST\";\n\n  var STATES = [\n    \"INIT\",\n   \"MONITORING_MONITORED\",\n   \"MONITORED\",\n   \"ERROR\",\n   \"DISABLED\",\n   \"MONITORING_ERROR\",\n   \"MONITORING_INIT\",\n   \"MONITORING_DISABLED\"\n  ]\n\n  var SIMPLE_STATES = [\n    \"INIT\",\n    \"UPDATE\",\n    \"ON\",\n    \"ERROR\",\n    \"OFF\",\n    \"RETRY\",\n    \"INIT\",\n    \"OFF\"\n  ]\n\n  var Host = {\n    \"resource\": RESOURCE,\n    \"stateStr\": function(stateId) {\n      return STATES[stateId];\n    },\n    \"simpleStateStr\": function(stateId) {\n      return SIMPLE_STATES[stateId];\n    },\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"list_in_zone\" : function(params) {\n      OpenNebulaAction.list_in_zone(params, RESOURCE);\n    },\n    \"show\": function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"enable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"enable\");\n    },\n    \"disable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"disable\");\n    },\n    \"monitor\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, false);\n    },\n    \"pool_monitor\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, true);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  }\n\n  return Host;\n})\n;\n","define('opennebula/image',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"IMAGE\";\n  var STATES = [\n    \"INIT\",\n    \"READY\",\n    \"USED\",\n    \"DISABLED\",\n    \"LOCKED\",\n    \"ERROR\",\n    \"CLONE\",\n    \"DELETE\",\n    \"USED_PERS\"\n  ];\n\n  var TYPES = [\n    \"OS\", \n    \"CDROM\", \n    \"DATABLOCK\", \n    \"KERNEL\", \n    \"RAMDISK\", \n    \"CONTEXT\"\n  ];\n\n  var Image = {\n    \"resource\": RESOURCE,\n    \"stateStr\": function(stateId) {\n      return STATES[stateId];\n    },\n    \"typeStr\": function(typeId) {\n      return TYPES[typeId];\n    },\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\": function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"enable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"enable\");\n    },\n    \"disable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"disable\");\n    },\n    \"persistent\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"persistent\");\n    },\n    \"nonpersistent\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"nonpersistent\");\n    },\n    \"chtype\": function(params) {\n      var action_obj = {\"type\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chtype\", action_obj);\n    },\n    \"clone\" : function(params) {\n      var action_obj = params.data.extra_param ? params.data.extra_param : {};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"clone\", action_obj);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  }\n\n  return Image;\n})\n;\n","define('opennebula/marketplace',['require','./action','./error','./helper','utils/notifier','utils/locale'],function(require) {\n  var OpenNebulaAction = require('./action');\n  var OpenNebulaError = require('./error');\n  var OpenNebulaHelper = require('./helper');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n\n  var RESOURCE = \"MARKETPLACE\";\n\n  var Marketplace = {\n    \"resource\": RESOURCE,\n    \"show\" : function(params) {\n      params.error = function() {\n        return Notifier.notifyError(Locale.tr(\"Cannot connect to OpenNebula Marketplace\"));\n      };\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      //Custom list request function, since the contents do not come\n      //in the same format as the rest of opennebula resources.\n      var callback = params.success;\n      var callback_error = params.error;\n      var timeout = params.timeout || false;\n      var request = OpenNebulaHelper.request('MARKETPLACE', 'list');\n\n      $.ajax({\n        url: 'marketplace',\n        type: 'GET',\n        data: {timeout: timeout},\n        dataType: \"json\",\n        success: function(response) {\n          $(\".marketplace_error_message\").hide();\n          return callback ? callback(request, response) : null;\n        },\n        error: function(res) {\n          $(\".marketplace_error_message\").show();\n          return callback_error ? callback_error(request, OpenNebulaError(res)) : null;\n        }\n      });\n    }\n  };\n\n  return Marketplace;\n});\n","define('opennebula/network',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"VNET\";\n\n  var Network =  {\n    \"resource\": RESOURCE,\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"list_in_zone\" : function(params) {\n      OpenNebulaAction.list_in_zone(params, RESOURCE);\n    },\n    \"show\": function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"publish\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"publish\");\n    },\n    \"unpublish\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"unpublish\");\n    },\n    \"hold\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"hold\", action_obj);\n    },\n    \"release\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"release\", action_obj);\n    },\n    \"add_ar\" : function(params) {\n      var action_obj = {\"ar_template\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_ar\", action_obj);\n    },\n    \"rm_ar\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rm_ar\", action_obj);\n    },\n    \"update_ar\": function(params) {\n      var action_obj = {\"ar_template\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update_ar\", action_obj);\n    },\n    \"reserve\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"reserve\", action_obj);\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  }\n\n  return Network;\n})\n;\n","define('tabs/oneflow-services-tab/panels/roles/panelId',['require'],function(require){\n  return 'service_roles_tab';\n});\n","define('opennebula/role',['require','./action','./error','./helper','utils/locale','tabs/oneflow-services-tab/tabId','tabs/oneflow-services-tab/panels/roles/panelId'],function(require) {\n  var OpenNebulaAction = require('./action');\n  var OpenNebulaError = require('./error');\n  var OpenNebulaHelper = require('./helper');\n  var Locale = require('utils/locale');\n\n  var RESOURCE = \"DOCUMENT\";\n  var PATH = 'service';\n\n  var TAB_ID = require('tabs/oneflow-services-tab/tabId');\n  var PANEL_ID = require('tabs/oneflow-services-tab/panels/roles/panelId');\n\n  function generate_batch_action_params() {\n    var context = $('#'+TAB_ID+' #'+PANEL_ID);\n\n    var action_obj = {\n        \"period\" : $(\"#batch_action_period\", context).val(),\n        \"number\" : $(\"#batch_action_number\", context).val()};\n\n    return action_obj;\n  }\n\n  var Role = {\n    \"resource\": RESOURCE,\n    \"state\" : function(state_int) {\n      state_int = state_int ? state_int : 0;\n      var state = [\n          Locale.tr(\"PENDING\"),\n          Locale.tr(\"DEPLOYING\"),\n          Locale.tr(\"RUNNING\"),\n          Locale.tr(\"UNDEPLOYING\"),\n          Locale.tr(\"WARNING\"),\n          Locale.tr(\"DONE\"),\n          Locale.tr(\"FAILED_UNDEPLOYING\"),\n          Locale.tr(\"FAILED_DEPLOYING\"),\n          Locale.tr(\"SCALING\"),\n          Locale.tr(\"FAILED_SCALING\"),\n          Locale.tr(\"COOLDOWN\")\n      ][state_int]\n      return state ? state : state_int;\n    },\n    \"hold\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"hold\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"release\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"release\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"suspend\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"suspend\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"resume\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"resume\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"stop\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"stop\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"boot\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"boot\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"delete_recreate\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"delete-recreate\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"reboot\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"reboot\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"reboot_hard\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"reboot-hard\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"poweroff\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"poweroff\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"poweroff_hard\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"poweroff-hard\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"undeploy\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"undeploy\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"undeploy_hard\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"undeploy-hard\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"snapshot_create\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"snapshot-create\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"shutdown\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"shutdown\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"cancel\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"shutdown-hard\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"delete\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"recover\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"recover\",\n                                      null,\n                                      PATH);\n    },\n    \"update\" : function(params) {\n      var request = OpenNebulaHelper.request(RESOURCE, \"update\", params.data.id);\n\n      $.ajax({\n        url: PATH + \"/\" + params.data.id,\n        type: \"PUT\",\n        dataType: \"json\",\n        contentType: \"application/json; charset=utf-8\",\n        data: JSON.stringify(params.data.extra_param),\n        success: function(response) {\n          return params.success ? params.success(request, response) : null;\n        },\n        error: function(response) {\n          return params.error ? params.error(request, OpenNebulaError(response)) : null;\n        }\n      });\n    }\n  }\n\n  return Role;\n})\n;\n","define('tabs/oneflow-services-tab/tabId',['require'],function(require){\n  return 'oneflow-services';\n});\n","define('opennebula/securitygroup',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"SECURITY_GROUP\";\n\n  var SecurityGroup = {\n    \"resource\" : \"SECURITY_GROUP\",\n\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"clone\" : function(params) {\n      var name = params.data.extra_param ? params.data.extra_param : \"\";\n      var action_obj = {\"name\" : name};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"clone\", action_obj);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  }\n\n  return SecurityGroup;\n})\n;\n","define('opennebula/service',['require','./action','utils/locale'],function(require) {\n  var OpenNebulaAction = require('./action');\n  var Locale = require('utils/locale');\n\n  var RESOURCE = \"DOCUMENT\";\n  var PATH = 'service';\n  var CACHE_NAME = 'SERVICE'\n\n  var Service = {\n    \"resource\": RESOURCE,\n    \"del\": function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.del(params, RESOURCE, PATH);\n    },\n    \"list\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.list(params, RESOURCE, PATH)\n    },\n    \"show\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.show(params, RESOURCE, false, PATH)\n    },\n    \"chown\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.chown(params, RESOURCE, PATH);\n    },\n    \"chgrp\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.chgrp(params, RESOURCE, PATH);\n    },\n    \"chmod\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj, PATH);\n    },\n    \"shutdown\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"shutdown\", null, PATH);\n    },\n    \"recover\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"recover\", null, PATH);\n    },\n    \"state\" : function(state_int) {\n      var state = [\n          Locale.tr(\"PENDING\"),\n          Locale.tr(\"DEPLOYING\"),\n          Locale.tr(\"RUNNING\"),\n          Locale.tr(\"UNDEPLOYING\"),\n          Locale.tr(\"WARNING\"),\n          Locale.tr(\"DONE\"),\n          Locale.tr(\"FAILED_UNDEPLOYING\"),\n          Locale.tr(\"FAILED_DEPLOYING\"),\n          Locale.tr(\"SCALING\"),\n          Locale.tr(\"FAILED_SCALING\"),\n          Locale.tr(\"COOLDOWN\")\n      ][state_int]\n      return state ? state : state_int;\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, CACHE_NAME);\n    }\n  }\n\n  return Service;\n})\n\n;\n","define('opennebula/servicetemplate',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"DOCUMENT\";\n  var PATH = 'service_template';\n  var CACHE_NAME = \"SERVICE_TEMPLATE\";\n\n  var ServiceTemplate = {\n    \"resource\": RESOURCE,\n    \"create\": function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.create(params, RESOURCE, PATH);\n    },\n\n    \"instantiate\": function(params) {\n      params.cache_name = CACHE_NAME;\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"instantiate\", action_obj, PATH);\n    },\n    \"update\": function(params) {\n      params.cache_name = CACHE_NAME;\n      var action_obj = {\"template_json\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj, PATH);\n    },\n    \"del\": function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.del(params, RESOURCE, PATH);\n    },\n    \"list\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.list(params, RESOURCE, PATH)\n    },\n    \"show\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.show(params, RESOURCE, false, PATH)\n    },\n    \"chown\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.chown(params, RESOURCE, PATH);\n    },\n    \"chgrp\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.chgrp(params, RESOURCE, PATH);\n    },\n    \"chmod\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj, PATH);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, CACHE_NAME);\n    }\n  }\n\n  return ServiceTemplate;\n})\n;\n","define('opennebula/support',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"REQUEST\";\n  var PATH = 'support/request';\n  var CACHE_NAME = \"REQUEST\";\n\n  var Support = {\n    \"resource\": RESOURCE,\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE, PATH);\n    },\n    \"update\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", params.data.extra_param, PATH);\n    },\n    \"list\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.clear_cache(params.cache_name);\n      OpenNebulaAction.list(params, RESOURCE, PATH)\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, false, PATH)\n    }\n  }\n\n  return Support;\n})\n;\n","define('opennebula/template',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"VMTEMPLATE\";\n\n  var Template = {\n    \"resource\": RESOURCE,\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"update\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"publish\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"publish\");\n    },\n    \"unpublish\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"unpublish\");\n    },\n    \"instantiate\" : function(params) {\n      var action_obj = params.data.extra_param ? params.data.extra_param : {};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"instantiate\", action_obj);\n    },\n    \"clone\" : function(params) {\n      var name = params.data.extra_param ? params.data.extra_param : \"\";\n      var action_obj = {\"name\" : name};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"clone\", action_obj);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  }\n\n  return Template;\n})\n;\n","define('opennebula/user',['require','utils/quotas/quota-defaults','./action','./helper','./error'],function(require) {\n\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n\n  var OpenNebulaAction = require('./action'),\n      OpenNebulaHelper = require('./helper'),\n      OpenNebulaError  = require('./error');\n\n  var RESOURCE = \"USER\";\n\n  var User = {\n    \"resource\": RESOURCE,\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      OpenNebulaAction.list(params, RESOURCE, null, function(response) {\n        var list = OpenNebulaHelper.pool(RESOURCE, response);\n\n        QuotaDefaults.setDefaultUserQuotas(\n          QuotaDefaults.default_quotas(response.USER_POOL.DEFAULT_USER_QUOTAS)\n        );\n\n        // Inject the VM user quota. This info is returned separately in the\n        // pool info call, but the userElementArray expects it inside the USER,\n        // as it is returned by the individual info call\n        var quotas_hash = OpenNebulaHelper.pool_hash_processing(\n                                            'USER_POOL', 'QUOTAS', response);\n\n        $.each(list,function(){\n          var q = quotas_hash[this[RESOURCE].ID];\n\n          if (q != undefined) {\n              this[RESOURCE].VM_QUOTA = q.QUOTAS.VM_QUOTA;\n          }\n        });\n\n        return list;\n      });\n    },\n    \"show\" : function(params) {\n      var callback = params.success;\n\n      // Before calling the true callback, we update the default quotas\n      // included in the .show response\n      params.success = function(request, response) {\n        QuotaDefaults.setDefaultUserQuotas(\n          QuotaDefaults.default_quotas(response.USER.DEFAULT_USER_QUOTAS)\n        );\n\n        return callback ? callback(request, response) : null;\n      };\n\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"passwd\": function(params) {\n      var action_obj = {\"password\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"passwd\", action_obj);\n    },\n    \"chgrp\" : function(params) {\n      var action_obj = {\"group_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chgrp\", action_obj);\n    },\n    \"chauth\" : function(params) {\n      var action_obj = {\"auth_driver\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chauth\", action_obj);\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"accounting\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, false);\n    },\n    \"set_quota\" : function(params) {\n      var action_obj = {quotas :  params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"set_quota\", action_obj);\n    },\n    \"addgroup\" : function(params) {\n      var action_obj = {\"group_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"addgroup\", action_obj);\n    },\n    \"delgroup\" : function(params) {\n      var action_obj = {\"group_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"delgroup\", action_obj);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  };\n\n  return User;\n});\n","define('opennebula/vdc',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"VDC\";\n\n  var Vdc = {\n    \"resource\": RESOURCE,\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"update\" : function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n\n    \"add_group\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_group\", action_obj);\n    },\n    \"del_group\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_group\", action_obj);\n    },\n\n    \"add_cluster\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_cluster\", action_obj);\n    },\n    \"del_cluster\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_cluster\", action_obj);\n    },\n\n    \"add_host\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_host\", action_obj);\n    },\n    \"del_host\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_host\", action_obj);\n    },\n\n    \"add_datastore\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_datastore\", action_obj);\n    },\n    \"del_datastore\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_datastore\", action_obj);\n    },\n\n    \"add_vnet\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_vnet\", action_obj);\n    },\n    \"del_vnet\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_vnet\", action_obj);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  }\n\n  return Vdc;\n})\n;\n","define('opennebula/vm',['require','./action','./helper','./error'],function(require) {\n  var OpenNebulaAction = require('./action'),\n      OpenNebulaHelper = require('./helper'),\n      OpenNebulaError  = require('./error');\n\n  var RESOURCE = \"VM\";\n\n  var STATES = [\n    \"INIT\",\n    \"PENDING\",\n    \"HOLD\",\n    \"ACTIVE\",\n    \"STOPPED\",\n    \"SUSPENDED\",\n    \"DONE\",\n    \"FAILED\",\n    \"POWEROFF\",\n    \"UNDEPLOYED\"\n  ];\n\n  var LCM_STATES = [\n    \"LCM_INIT\",\n    \"PROLOG\",\n    \"BOOT\",\n    \"RUNNING\",\n    \"MIGRATE\",\n    \"SAVE_STOP\",\n    \"SAVE_SUSPEND\",\n    \"SAVE_MIGRATE\",\n    \"PROLOG_MIGRATE\",\n    \"PROLOG_RESUME\",\n    \"EPILOG_STOP\",\n    \"EPILOG\",\n    \"SHUTDOWN\",\n    \"CANCEL\",\n    \"FAILURE\",\n    \"CLEANUP_RESUBMIT\",\n    \"UNKNOWN\",\n    \"HOTPLUG\",\n    \"SHUTDOWN_POWEROFF\",\n    \"BOOT_UNKNOWN\",\n    \"BOOT_POWEROFF\",\n    \"BOOT_SUSPENDED\",\n    \"BOOT_STOPPED\",\n    \"CLEANUP_DELETE\",\n    \"HOTPLUG_SNAPSHOT\",\n    \"HOTPLUG_NIC\",\n    \"HOTPLUG_SAVEAS\",\n    \"HOTPLUG_SAVEAS_POWEROFF\",\n    \"HOTPLUG_SAVEAS_SUSPENDED\",\n    \"SHUTDOWN_UNDEPLOY\",\n    \"EPILOG_UNDEPLOY\",\n    \"PROLOG_UNDEPLOY\",\n    \"BOOT_UNDEPLOY\",\n    \"HOTPLUG_PROLOG_POWEROFF\",\n    \"HOTPLUG_EPILOG_POWEROFF\",\n    \"BOOT_MIGRATE\",\n    \"BOOT_FAILURE\",\n    \"BOOT_MIGRATE_FAILURE\",\n    \"PROLOG_MIGRATE_FAILURE\",\n    \"PROLOG_FAILURE\",\n    \"EPILOG_FAILURE\",\n    \"EPILOG_STOP_FAILURE\",\n    \"EPILOG_UNDEPLOY_FAILURE\",\n    \"PROLOG_MIGRATE_POWEROFF\",\n    \"PROLOG_MIGRATE_POWEROFF_FAILURE\",\n    \"PROLOG_MIGRATE_SUSPEND\",\n    \"PROLOG_MIGRATE_SUSPEND_FAILURE\",\n    \"BOOT_UNDEPLOY_FAILURE\",\n    \"BOOT_STOPPED_FAILURE\",\n    \"PROLOG_RESUME_FAILURE\",\n    \"PROLOG_UNDEPLOY_FAILURE\"\n  ];\n\n  var SHORT_LCM_STATES = [\n    \"LCM_INIT\", // LCM_INIT\n    \"PROLOG\",    // PROLOG\n    \"BOOT\",      // BOOT\n    \"RUNNING\",   // RUNNING\n    \"MIGRATE\",   // MIGRATE\n    \"SAVE\",      // SAVE_STOP\n    \"SAVE\",      // SAVE_SUSPEND\n    \"SAVE\",      // SAVE_MIGRATE\n    \"MIGRATE\",   // PROLOG_MIGRATE\n    \"PROLOG\",    // PROLOG_RESUME\n    \"EPILOG\",    // EPILOG_STOP\n    \"EPILOG\",    // EPILOG\n    \"SHUTDOWN\",  // SHUTDOWN\n    \"SHUTDOWN\",  // CANCEL\n    \"FAILURE\",   // FAILURE\n    \"CLEANUP\",   // CLEANUP_RESUBMIT\n    \"UNKNOWN\",   // UNKNOWN\n    \"HOTPLUG\",   // HOTPLUG\n    \"SHUTDOWN\",  // SHUTDOWN_POWEROFF\n    \"BOOT\",      // BOOT_UNKNOWN\n    \"BOOT\",      // BOOT_POWEROFF\n    \"BOOT\",      // BOOT_SUSPENDED\n    \"BOOT\",      // BOOT_STOPPED\n    \"CLEANUP\",   // CLEANUP_DELETE\n    \"SNAPSHOT\",  // HOTPLUG_SNAPSHOT\n    \"HOTPLUG\",   // HOTPLUG_NIC\n    \"HOTPLUG\",   // HOTPLUG_SAVEAS\n    \"HOTPLUG\",   // HOTPLUG_SAVEAS_POWEROFF\n    \"HOTPLUG\",   // HOTPLUG_SAVEAS_SUSPENDED\n    \"SHUTDOWN\",  // SHUTDOWN_UNDEPLOY\n    \"EPILOG\",    // EPILOG_UNDEPLOY\n    \"PROLOG\",    // PROLOG_UNDEPLOY\n    \"BOOT\",      // BOOT_UNDEPLOY\n    \"HOTPLUG\",   // HOTPLUG_PROLOG_POWEROFF\n    \"HOTPLUG\",   // HOTPLUG_EPILOG_POWEROFF\n    \"BOOT\",      // BOOT_MIGRATE\n    \"FAILURE\",   // BOOT_FAILURE\n    \"FAILURE\",   // BOOT_MIGRATE_FAILURE\n    \"FAILURE\",   // PROLOG_MIGRATE_FAILURE\n    \"FAILURE\",   // PROLOG_FAILURE\n    \"FAILURE\",   // EPILOG_FAILURE\n    \"FAILURE\",   // EPILOG_STOP_FAILURE\n    \"FAILURE\",   // EPILOG_UNDEPLOY_FAILURE\n    \"MIGRATE\",   // PROLOG_MIGRATE_POWEROFF\n    \"FAILURE\",   // PROLOG_MIGRATE_POWEROFF_FAILURE\n    \"MIGRATE\",   // PROLOG_MIGRATE_SUSPEND\n    \"FAILURE\",   // PROLOG_MIGRATE_SUSPEND_FAILURE\n    \"FAILURE\",   // BOOT_UNDEPLOY_FAILURE\n    \"FAILURE\",   // BOOT_STOPPED_FAILURE\n    \"FAILURE\",   // PROLOG_RESUME_FAILURE\n    \"FAILURE\"    // PROLOG_UNDEPLOY_FAILURE\n  ];\n\n  var VNC_STATES = [\n    3,  // VM.lcm_state.RUNNING,\n    4,  // VM.lcm_state.MIGRATE,\n    12, // VM.lcm_state.SHUTDOWN,\n    13, // VM.lcm_state.CANCEL,\n    16, // VM.lcm_state.UNKNOWN,\n    17, // VM.lcm_state.HOTPLUG,\n    18, // VM.lcm_state.SHUTDOWN_POWEROFF,\n    24, // VM.lcm_state.HOTPLUG_SNAPSHOT,\n    25, // VM.lcm_state.HOTPLUG_NIC,\n    26, // VM.lcm_state.HOTPLUG_SAVEAS,\n    27, // VM.lcm_state.HOTPLUG_SAVEAS_POWEROFF,\n    28, // VM.lcm_state.HOTPLUG_SAVEAS_SUSPENDED,\n    29, // VM.lcm_state.SHUTDOWN_UNDEPLOY\n  ];\n\n  var EXTERNAL_IP_ATTRS = [\n    'GUEST_IP',\n    'AWS_IP_ADDRESS',\n    'AZ_IPADDRESS',\n    'SL_PRIMARYIPADDRESS'\n  ];\n\n  var EXTERNAL_NETWORK_ATTRIBUTES = [\n    'GUEST_IP',\n    'AWS_IP_ADDRESS',\n    'AWS_DNS_NAME',\n    'AWS_PRIVATE_IP_ADDRESS',\n    'AWS_PRIVATE_DNS_NAME',\n    'AWS_SECURITY_GROUPS',\n    'AZ_IPADDRESS',\n    'SL_PRIMARYIPADDRESS'\n  ];\n\n  var MIGRATE_REASON = [\n    \"NONE\",\n    \"ERROR\",\n    \"USER\"\n  ];\n\n  var MIGRATE_ACTION = [\n    \"none\",\n    \"migrate\",\n    \"live-migrate\",\n    \"shutdown\",\n    \"shutdown-hard\",\n    \"undeploy\",\n    \"undeploy-hard\",\n    \"hold\",\n    \"release\",\n    \"stop\",\n    \"suspend\",\n    \"resume\",\n    \"boot\",\n    \"delete\",\n    \"delete-recreate\",\n    \"reboot\",\n    \"reboot-hard\",\n    \"resched\",\n    \"unresched\",\n    \"poweroff\",\n    \"poweroff-hard\",\n    \"disk-attach\",\n    \"disk-detach\",\n    \"nic-attach\",\n    \"nic-detach\"\n  ];\n\n  var VM = {\n    \"resource\": RESOURCE,\n    \"state\": {\n      \"INIT\"      : 0,\n      \"PENDING\"   : 1,\n      \"HOLD\"      : 2,\n      \"ACTIVE\"    : 3,\n      \"STOPPED\"   : 4,\n      \"SUSPENDED\" : 5,\n      \"DONE\"      : 6,\n      \"FAILED\"    : 7,\n      \"POWEROFF\"  : 8,\n      \"UNDEPLOYED\": 9\n    },\n    \"lcm_state\": {\n      \"LCM_INIT\"            : 0,\n      \"PROLOG\"              : 1,\n      \"BOOT\"                : 2,\n      \"RUNNING\"             : 3,\n      \"MIGRATE\"             : 4,\n      \"SAVE_STOP\"           : 5,\n      \"SAVE_SUSPEND\"        : 6,\n      \"SAVE_MIGRATE\"        : 7,\n      \"PROLOG_MIGRATE\"      : 8,\n      \"PROLOG_RESUME\"       : 9,\n      \"EPILOG_STOP\"         : 10,\n      \"EPILOG\"              : 11,\n      \"SHUTDOWN\"            : 12,\n      \"CANCEL\"              : 13,\n      \"FAILURE\"             : 14,\n      \"CLEANUP_RESUBMIT\"    : 15,\n      \"UNKNOWN\"             : 16,\n      \"HOTPLUG\"             : 17,\n      \"SHUTDOWN_POWEROFF\"   : 18,\n      \"BOOT_UNKNOWN\"        : 19,\n      \"BOOT_POWEROFF\"       : 20,\n      \"BOOT_SUSPENDED\"      : 21,\n      \"BOOT_STOPPED\"        : 22,\n      \"CLEANUP_DELETE\"      : 23,\n      \"HOTPLUG_SNAPSHOT\"    : 24,\n      \"HOTPLUG_NIC\"         : 25,\n      \"HOTPLUG_SAVEAS\"           : 26,\n      \"HOTPLUG_SAVEAS_POWEROFF\"  : 27,\n      \"HOTPLUG_SAVEAS_SUSPENDED\" : 28,\n      \"SHUTDOWN_UNDEPLOY\"   : 29,\n      \"EPILOG_UNDEPLOY\"     : 30,\n      \"PROLOG_UNDEPLOY\"     : 31,\n      \"BOOT_UNDEPLOY\"       : 32,\n      \"HOTPLUG_PROLOG_POWEROFF\"   : 33,\n      \"HOTPLUG_EPILOG_POWEROFF\"   : 34,\n      \"BOOT_MIGRATE\"              : 35,\n      \"BOOT_FAILURE\"              : 36,\n      \"BOOT_MIGRATE_FAILURE\"      : 37,\n      \"PROLOG_MIGRATE_FAILURE\"    : 38,\n      \"PROLOG_FAILURE\"            : 39,\n      \"EPILOG_FAILURE\"            : 40,\n      \"EPILOG_STOP_FAILURE\"       : 41,\n      \"EPILOG_UNDEPLOY_FAILURE\"   : 42,\n      \"PROLOG_MIGRATE_POWEROFF\"   : 43,\n      \"PROLOG_MIGRATE_POWEROFF_FAILURE\"   : 44,\n      \"PROLOG_MIGRATE_SUSPEND\"            : 45,\n      \"PROLOG_MIGRATE_SUSPEND_FAILURE\"    : 46,\n      \"BOOT_UNDEPLOY_FAILURE\"     : 47,\n      \"BOOT_STOPPED_FAILURE\"      : 48,\n      \"PROLOG_RESUME_FAILURE\"     : 49,\n      \"PROLOG_UNDEPLOY_FAILURE\"   : 50\n    },\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\": function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"shutdown\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"shutdown\");\n    },\n    \"hold\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"hold\");\n    },\n    \"release\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"release\");\n    },\n    \"stop\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"stop\");\n    },\n    \"cancel\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"cancel\");\n    },\n    \"suspend\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"suspend\");\n    },\n    \"resume\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"resume\");\n    },\n    \"resubmit\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"resubmit\");\n    },\n    \"poweroff\" : function(params) {\n      var action_obj = {\"hard\": false};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"poweroff\", action_obj);\n    },\n    \"poweroff_hard\" : function(params) {\n      var action_obj = {\"hard\": true};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"poweroff\", action_obj);\n    },\n    \"undeploy\" : function(params) {\n      var action_obj = {\"hard\": false};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"undeploy\", action_obj);\n    },\n    \"undeploy_hard\" : function(params) {\n      var action_obj = {\"hard\": true};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"undeploy\", action_obj);\n    },\n    \"reboot\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"reboot\");\n    },\n    \"reset\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"reset\");\n    },\n\n    \"log\": function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"log\");\n    },\n    \"deploy\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"deploy\", action_obj);\n    },\n    \"livemigrate\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"livemigrate\", action_obj);\n    },\n    \"migrate\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"migrate\", action_obj);\n    },\n    \"saveas\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"saveas\", action_obj);\n    },\n    \"disk_snapshot_cancel\": function(params) {\n      var action_obj = {\"disk_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"disk_snapshot_cancel\", action_obj);\n    },\n    \"snapshot_create\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"snapshot_create\", action_obj);\n    },\n    \"snapshot_revert\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"snapshot_revert\", action_obj);\n    },\n    \"snapshot_delete\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"snapshot_delete\", action_obj);\n    },\n    \"vnc\" : function(params, startstop) {\n      var callback = params.success;\n      var callback_error = params.error;\n      var id = params.data.id;\n      var resource = RESOURCE;\n\n      var method = startstop;\n      var action = OpenNebulaHelper.action(method);\n      var request = OpenNebulaHelper.request(resource, method, id);\n      $.ajax({\n        url: \"vm/\" + id + \"/startvnc\",\n        type: \"POST\",\n        dataType: \"json\",\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callback_error ?\n              callback_error(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"monitor\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, false);\n    },\n    \"pool_monitor\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, true);\n    },\n    \"resize\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"resize\", action_obj);\n    },\n    \"attachdisk\" : function(params) {\n      var action_obj = {\"disk_template\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"attachdisk\", action_obj);\n    },\n    \"detachdisk\" : function(params) {\n      var action_obj = {\"disk_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"detachdisk\", action_obj);\n    },\n    \"attachnic\" : function(params) {\n      var action_obj = {\"nic_template\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"attachnic\", action_obj);\n    },\n    \"detachnic\" : function(params) {\n      var action_obj = {\"nic_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"detachnic\", action_obj);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"resched\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"resched\");\n    },\n    \"unresched\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"unresched\");\n    },\n    \"recover\" : function(params) {\n      var action_obj = {\"result\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"recover\", action_obj);\n    },\n    \"accounting\": function(params) {\n      OpenNebulaAction.accounting(params, RESOURCE);\n    },\n    \"showback\": function(params) {\n      OpenNebulaAction.showback(params, RESOURCE);\n    },\n    \"save_as_template\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"save_as_template\", action_obj);\n    },\n    \"stateStr\": function(stateId) {\n      return STATES[stateId];\n    },\n    \"lcmStateStr\": function(stateId) {\n      return LCM_STATES[stateId];\n    },\n    \"shortLcmStateStr\": function(stateId) {\n      return SHORT_LCM_STATES[stateId];\n    },\n    \"hostnameStr\": function(element) {\n      var state = STATES[element.STATE];\n      var hostname = \"--\";\n      if (state == \"ACTIVE\" || state == \"SUSPENDED\" || state == \"POWEROFF\") {\n        var history = retrieveLastHistoryRecord(element)\n        if (history) {\n          hostname = history.HOSTNAME;\n        };\n      };\n\n      return hostname;\n    },\n    \"migrateActionStr\": function(stateId) {\n      return MIGRATE_ACTION[stateId];\n    },\n    \"migrateReasonStr\": function(stateId) {\n      return MIGRATE_REASON[stateId];\n    },\n    \"ipsStr\": ipsStr,\n    \"retrieveExternalIPs\": retrieveExternalIPs,\n    \"retrieveExternalNetworkAttrs\": retrieveExternalNetworkAttrs,\n    \"isNICGraphsSupported\": isNICGraphsSupported,\n    \"isNICAttachSupported\": isNICAttachSupported,\n    \"isVNCSupported\": isVNCSupported,\n    \"isSPICESupported\": isSPICESupported,\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  }\n\n  function retrieveLastHistoryRecord(element) {\n    if (element.HISTORY_RECORDS && element.HISTORY_RECORDS.HISTORY) {\n      var history = element.HISTORY_RECORDS.HISTORY;\n      if (history.constructor == Array) {\n        return history[history.length - 1];\n      } else {\n        return history;\n      };\n    } else {\n      return null;\n    }\n  }\n\n  // Return true if the VM has a hybrid section\n  function isNICGraphsSupported(element) {\n    var history = retrieveLastHistoryRecord(element)\n    if (history) {\n      return $.inArray(history.VMMMAD, ['vcenter', 'ec2', 'az', 'sl']) == -1;\n    } else {\n      return false;\n    }\n  }\n\n  function isNICAttachSupported(element) {\n    var history = retrieveLastHistoryRecord(element)\n    if (history) {\n      return $.inArray(history.VMMMAD, ['ec2', 'az', 'sl']) == -1;\n    } else {\n      return false;\n    }\n  }\n\n  function retrieveExternalIPs(element) {\n    var template = element.TEMPLATE;\n    var ips = {};\n    var externalIP;\n\n    $.each(EXTERNAL_IP_ATTRS, function(index, IPAttr) {\n      externalIP = template[IPAttr];\n      if (externalIP) {\n        ips[IPAttr] = externalIP;\n      }\n    });\n\n    return ips;\n  }\n\n  function retrieveExternalNetworkAttrs(element) {\n    var template = element.TEMPLATE;\n    var ips = {};\n    var externalAttr;\n\n    $.each(EXTERNAL_NETWORK_ATTRIBUTES, function(index, attr) {\n      externalAttr = template[attr];\n      if (externalAttr) {\n        ips[attr] = externalAttr;\n      }\n    });\n\n    return ips;\n  }\n\n  // Return the IP or several IPs of a VM\n  function ipsStr(element, divider) {\n    var divider = divider || \"<br>\"\n    var nic = element.TEMPLATE.NIC;\n    var ips = [];\n\n    if (nic != undefined) {\n      if (!$.isArray(nic)) {\n        nic = [nic];\n      }\n\n      $.each(nic, function(index, value) {\n        if (value.IP) {\n          ips.push(value.IP);\n        }\n\n        if (value.IP6_GLOBAL) {\n          ips.push(value.IP6_GLOBAL);\n        }\n\n        if (value.IP6_ULA) {\n          ips.push(value.IP6_ULA);\n        }\n      });\n    }\n\n    var template = element.TEMPLATE;\n    var externalIP;\n    $.each(EXTERNAL_IP_ATTRS, function(index, IPAttr) {\n      externalIP = template[IPAttr];\n      if (externalIP && ($.inArray(externalIP, ips) == -1)) {\n        ips.push(externalIP);\n      }\n    })\n\n    if (ips.length > 0) {\n      return ips.join(divider);\n    } else {\n      return '--';\n    }\n  };\n\n  // returns true if the vnc button should be enabled\n  function isVNCSupported(element) {\n    var graphics = element.TEMPLATE.GRAPHICS;\n    var state = parseInt(element.LCM_STATE);\n\n    return (graphics &&\n        graphics.TYPE &&\n        graphics.TYPE.toLowerCase() == \"vnc\"  &&\n        $.inArray(state, VNC_STATES) != -1);\n  }\n\n  function isSPICESupported(element) {\n    var graphics = element.TEMPLATE.GRAPHICS;\n    var state = parseInt(element.LCM_STATE);\n\n    return (graphics &&\n        graphics.TYPE &&\n        graphics.TYPE.toLowerCase() == \"spice\" &&\n        $.inArray(state, VNC_STATES) != -1);\n  }\n  \n  return VM;\n})\n;\n","define('opennebula/zone',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"ZONE\";\n\n  var Zone = {\n    \"resource\": RESOURCE,\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"update\" : function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"getName\": function(id){\n      return OpenNebulaAction.getName(id, RESOURCE);\n    }\n  };\n\n  return Zone;\n});\n","define('opennebula',['require','jquery','./opennebula/helper','./opennebula/action','./opennebula/auth','./opennebula/error','./opennebula/acl','./opennebula/cluster','./opennebula/datastore','./opennebula/group','./opennebula/host','./opennebula/image','./opennebula/marketplace','./opennebula/network','./opennebula/role','./opennebula/securitygroup','./opennebula/service','./opennebula/servicetemplate','./opennebula/support','./opennebula/template','./opennebula/user','./opennebula/vdc','./opennebula/vm','./opennebula/zone'],function(require) {\n  require('jquery');\n\n  var Helper = require('./opennebula/helper'),\n      Action = require('./opennebula/action'),\n      Auth   = require('./opennebula/auth'),\n      Error  = require('./opennebula/error'),\n\n      Acl             = require('./opennebula/acl'),\n      Cluster         = require('./opennebula/cluster'),\n      Datastore       = require('./opennebula/datastore'),\n      Group           = require('./opennebula/group'),\n      Host            = require('./opennebula/host'),\n      Image           = require('./opennebula/image'),\n      Marketplace     = require('./opennebula/marketplace'),\n      Network         = require('./opennebula/network'),\n      Role            = require('./opennebula/role'),\n      securitygroup   = require('./opennebula/securitygroup'),\n      Service         = require('./opennebula/service'),\n      ServiceTemplate = require('./opennebula/servicetemplate'),\n      Support         = require('./opennebula/support'),\n      Template        = require('./opennebula/template'),\n      User            = require('./opennebula/user'),\n      Vdc             = require('./opennebula/vdc'),\n      Vm              = require('./opennebula/vm'),\n      Zone            = require('./opennebula/zone')\n\n  if (typeof(csrftoken) != \"undefined\") {\n    $.ajaxPrefilter(function(options, originalOptions, jqXHR) {\n      var params = originalOptions.data;\n\n      if (typeof(params) == \"string\") {\n        params = JSON.parse(params);\n        params[\"csrftoken\"] = csrftoken;\n        options.data = JSON.stringify(params);\n      } else {\n        params = params || {};\n        params[\"csrftoken\"] = csrftoken;\n        options.data = $.param(params);\n      }\n    });\n  }\n\n  $.ajaxSetup({\n    converters: {\n      \"text json\": function(textValue) {\n        return jQuery.parseJSON(jQuery('<div/>').text(textValue).html());\n      }\n    }\n  });\n\n  var OpenNebula = {\n    'Helper': Helper,\n    'Action': Action,\n    'Auth': Auth,\n    'Error': Error,\n    'Acl': Acl,\n    'Cluster': Cluster,\n    'Datastore': Datastore,\n    'Group': Group,\n    'Host': Host,\n    'Image': Image,\n    'File': Image,\n    'Marketplace': Marketplace,\n    'Network': Network,\n    'Role': Role,\n    'SecurityGroup': securitygroup,\n    'Service': Service,\n    'ServiceTemplate': ServiceTemplate,\n    'Support': Support,\n    'Template': Template,\n    'User': User,\n    'Vdc': Vdc,\n    'VM': Vm,\n    'Zone': Zone\n  }\n\n  return OpenNebula;\n});\n\n",";(function ($, window, document, undefined) {\n  'use strict';\n\n  Foundation.libs.accordion = {\n    name : 'accordion',\n\n    version : '5.5.1',\n\n    settings : {\n      content_class : 'content',\n      active_class : 'active',\n      multi_expand : false,\n      toggleable : true,\n      callback : function () {}\n    },\n\n    init : function (scope, method, options) {\n      this.bindings(method, options);\n    },\n\n    events : function () {\n      var self = this;\n      var S = this.S;\n      S(this.scope)\n      .off('.fndtn.accordion')\n      .on('click.fndtn.accordion', '[' + this.attr_name() + '] > .accordion-navigation > a', function (e) {\n        var accordion = S(this).closest('[' + self.attr_name() + ']'),\n            groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()),\n            settings = accordion.data(self.attr_name(true) + '-init') || self.settings,\n            target = S('#' + this.href.split('#')[1]),\n            aunts = $('> .accordion-navigation', accordion),\n            siblings = aunts.children('.' + settings.content_class),\n            active_content = siblings.filter('.' + settings.active_class);\n\n        e.preventDefault();\n\n        if (accordion.attr(self.attr_name())) {\n          siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class);\n          aunts = aunts.add('[' + groupSelector + '] .accordion-navigation');\n        }\n\n        if (settings.toggleable && target.is(active_content)) {\n          target.parent('.accordion-navigation').toggleClass(settings.active_class, false);\n          target.toggleClass(settings.active_class, false);\n          settings.callback(target);\n          target.triggerHandler('toggled', [accordion]);\n          accordion.triggerHandler('toggled', [target]);\n          return;\n        }\n\n        if (!settings.multi_expand) {\n          siblings.removeClass(settings.active_class);\n          aunts.removeClass(settings.active_class);\n        }\n\n        target.addClass(settings.active_class).parent().addClass(settings.active_class);\n        settings.callback(target);\n        target.triggerHandler('toggled', [accordion]);\n        accordion.triggerHandler('toggled', [target]);\n      });\n    },\n\n    off : function () {},\n\n    reflow : function () {}\n  };\n}(jQuery, window, window.document));\n\ndefine(\"foundation.accordion\", [\"foundation.core\"], function(){});\n\n","/*! DataTables 1.10.4\n * ©2008-2014 SpryMedia Ltd - datatables.net/license\n */\n(function(Da,P,l){var O=function(g){function V(a){var b,c,e={};g.each(a,function(d){if((b=d.match(/^([^A-Z]+?)([A-Z])/))&&-1!==\"a aa ai ao as b fn i m o s \".indexOf(b[1]+\" \"))c=d.replace(b[0],b[2].toLowerCase()),e[c]=d,\"o\"===b[1]&&V(a[d])});a._hungarianMap=e}function G(a,b,c){a._hungarianMap||V(a);var e;g.each(b,function(d){e=a._hungarianMap[d];if(e!==l&&(c||b[e]===l))\"o\"===e.charAt(0)?(b[e]||(b[e]={}),g.extend(!0,b[e],b[d]),G(a[e],b[e],c)):b[e]=b[d]})}function O(a){var b=p.defaults.oLanguage,c=a.sZeroRecords;\n!a.sEmptyTable&&(c&&\"No data available in table\"===b.sEmptyTable)&&D(a,a,\"sZeroRecords\",\"sEmptyTable\");!a.sLoadingRecords&&(c&&\"Loading...\"===b.sLoadingRecords)&&D(a,a,\"sZeroRecords\",\"sLoadingRecords\");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&cb(a)}function db(a){z(a,\"ordering\",\"bSort\");z(a,\"orderMulti\",\"bSortMulti\");z(a,\"orderClasses\",\"bSortClasses\");z(a,\"orderCellsTop\",\"bSortCellsTop\");z(a,\"order\",\"aaSorting\");z(a,\"orderFixed\",\"aaSortingFixed\");z(a,\"paging\",\"bPaginate\");\nz(a,\"pagingType\",\"sPaginationType\");z(a,\"pageLength\",\"iDisplayLength\");z(a,\"searching\",\"bFilter\");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&G(p.models.oSearch,a[b])}function eb(a){z(a,\"orderable\",\"bSortable\");z(a,\"orderData\",\"aDataSort\");z(a,\"orderSequence\",\"asSorting\");z(a,\"orderDataType\",\"sortDataType\")}function fb(a){var a=a.oBrowser,b=g(\"<div/>\").css({position:\"absolute\",top:0,left:0,height:1,width:1,overflow:\"hidden\"}).append(g(\"<div/>\").css({position:\"absolute\",top:1,left:1,width:100,\noverflow:\"scroll\"}).append(g('<div class=\"test\"/>').css({width:\"100%\",height:10}))).appendTo(\"body\"),c=b.find(\".test\");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==c.offset().left;b.remove()}function gb(a,b,c,e,d,f){var h,i=!1;c!==l&&(h=c,i=!0);for(;e!==d;)a.hasOwnProperty(e)&&(h=i?b(h,a[e],e,a):a[e],i=!0,e+=f);return h}function Ea(a,b){var c=p.defaults.column,e=a.aoColumns.length,c=g.extend({},p.models.oColumn,c,{nTh:b?b:P.createElement(\"th\"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:\n\"\",aDataSort:c.aDataSort?c.aDataSort:[e],mData:c.mData?c.mData:e,idx:e});a.aoColumns.push(c);c=a.aoPreSearchCols;c[e]=g.extend({},p.models.oSearch,c[e]);ja(a,e,null)}function ja(a,b,c){var b=a.aoColumns[b],e=a.oClasses,d=g(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=d.attr(\"width\")||null;var f=(d.attr(\"style\")||\"\").match(/width:\\s*(\\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==l&&null!==c&&(eb(c),G(p.defaults.column,c),c.mDataProp!==l&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&\n!c.sClass&&(c.sClass=c.className),g.extend(b,c),D(b,c,\"sWidth\",\"sWidthOrig\"),\"number\"===typeof c.iDataSort&&(b.aDataSort=[c.iDataSort]),D(b,c,\"aDataSort\"));var h=b.mData,i=W(h),j=b.mRender?W(b.mRender):null,c=function(a){return\"string\"===typeof a&&-1!==a.indexOf(\"@\")};b._bAttrSrc=g.isPlainObject(h)&&(c(h.sort)||c(h.type)||c(h.filter));b.fnGetData=function(a,b,c){var e=i(a,b,l,c);return j&&b?j(e,b,a,c):e};b.fnSetData=function(a,b,c){return Q(h)(a,b,c)};\"number\"!==typeof h&&(a._rowReadObject=!0);a.oFeatures.bSort||\n(b.bSortable=!1,d.addClass(e.sSortableNone));a=-1!==g.inArray(\"asc\",b.asSorting);c=-1!==g.inArray(\"desc\",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=e.sSortableNone,b.sSortingClassJUI=\"\"):a&&!c?(b.sSortingClass=e.sSortableAsc,b.sSortingClassJUI=e.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=e.sSortableDesc,b.sSortingClassJUI=e.sSortJUIDescAllowed):(b.sSortingClass=e.sSortable,b.sSortingClassJUI=e.sSortJUI)}function X(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Fa(a);for(var c=0,e=b.length;c<\ne;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(\"\"!==b.sY||\"\"!==b.sX)&&Y(a);u(a,null,\"column-sizing\",[a])}function ka(a,b){var c=Z(a,\"bVisible\");return\"number\"===typeof c[b]?c[b]:null}function $(a,b){var c=Z(a,\"bVisible\"),c=g.inArray(b,c);return-1!==c?c:null}function aa(a){return Z(a,\"bVisible\").length}function Z(a,b){var c=[];g.map(a.aoColumns,function(a,d){a[b]&&c.push(d)});return c}function Ga(a){var b=a.aoColumns,c=a.aoData,e=p.ext.type.detect,d,f,h,i,j,g,m,o,k;d=0;for(f=b.length;d<f;d++)if(m=\nb[d],k=[],!m.sType&&m._sManualType)m.sType=m._sManualType;else if(!m.sType){h=0;for(i=e.length;h<i;h++){j=0;for(g=c.length;j<g;j++){k[j]===l&&(k[j]=v(a,j,d,\"type\"));o=e[h](k[j],a);if(!o&&h!==e.length-1)break;if(\"html\"===o)break}if(o){m.sType=o;break}}m.sType||(m.sType=\"string\")}}function hb(a,b,c,e){var d,f,h,i,j,n,m=a.aoColumns;if(b)for(d=b.length-1;0<=d;d--){n=b[d];var o=n.targets!==l?n.targets:n.aTargets;g.isArray(o)||(o=[o]);f=0;for(h=o.length;f<h;f++)if(\"number\"===typeof o[f]&&0<=o[f]){for(;m.length<=\no[f];)Ea(a);e(o[f],n)}else if(\"number\"===typeof o[f]&&0>o[f])e(m.length+o[f],n);else if(\"string\"===typeof o[f]){i=0;for(j=m.length;i<j;i++)(\"_all\"==o[f]||g(m[i].nTh).hasClass(o[f]))&&e(i,n)}}if(c){d=0;for(a=c.length;d<a;d++)e(d,c[d])}}function I(a,b,c,e){var d=a.aoData.length,f=g.extend(!0,{},p.models.oRow,{src:c?\"dom\":\"data\"});f._aData=b;a.aoData.push(f);for(var b=a.aoColumns,f=0,h=b.length;f<h;f++)c&&Ha(a,d,f,v(a,d,f)),b[f].sType=null;a.aiDisplayMaster.push(d);(c||!a.oFeatures.bDeferRender)&&Ia(a,\nd,c,e);return d}function la(a,b){var c;b instanceof g||(b=g(b));return b.map(function(b,d){c=ma(a,d);return I(a,c.data,d,c.cells)})}function v(a,b,c,e){var d=a.iDraw,f=a.aoColumns[c],h=a.aoData[b]._aData,i=f.sDefaultContent,c=f.fnGetData(h,e,{settings:a,row:b,col:c});if(c===l)return a.iDrawError!=d&&null===i&&(R(a,0,\"Requested unknown parameter \"+(\"function\"==typeof f.mData?\"{function}\":\"'\"+f.mData+\"'\")+\" for row \"+b,4),a.iDrawError=d),i;if((c===h||null===c)&&null!==i)c=i;else if(\"function\"===typeof c)return c.call(h);\nreturn null===c&&\"display\"==e?\"\":c}function Ha(a,b,c,e){a.aoColumns[c].fnSetData(a.aoData[b]._aData,e,{settings:a,row:b,col:c})}function Ja(a){return g.map(a.match(/(\\\\.|[^\\.])+/g),function(a){return a.replace(/\\\\./g,\".\")})}function W(a){if(g.isPlainObject(a)){var b={};g.each(a,function(a,c){c&&(b[a]=W(c))});return function(a,c,f,h){var i=b[c]||b._;return i!==l?i(a,c,f,h):a}}if(null===a)return function(a){return a};if(\"function\"===typeof a)return function(b,c,f,h){return a(b,c,f,h)};if(\"string\"===\ntypeof a&&(-1!==a.indexOf(\".\")||-1!==a.indexOf(\"[\")||-1!==a.indexOf(\"(\"))){var c=function(a,b,f){var h,i;if(\"\"!==f){i=Ja(f);for(var j=0,g=i.length;j<g;j++){f=i[j].match(ba);h=i[j].match(S);if(f){i[j]=i[j].replace(ba,\"\");\"\"!==i[j]&&(a=a[i[j]]);h=[];i.splice(0,j+1);i=i.join(\".\");j=0;for(g=a.length;j<g;j++)h.push(c(a[j],b,i));a=f[0].substring(1,f[0].length-1);a=\"\"===a?h:h.join(a);break}else if(h){i[j]=i[j].replace(S,\"\");a=a[i[j]]();continue}if(null===a||a[i[j]]===l)return l;a=a[i[j]]}}return a};return function(b,\nd){return c(b,d,a)}}return function(b){return b[a]}}function Q(a){if(g.isPlainObject(a))return Q(a._);if(null===a)return function(){};if(\"function\"===typeof a)return function(b,e,d){a(b,\"set\",e,d)};if(\"string\"===typeof a&&(-1!==a.indexOf(\".\")||-1!==a.indexOf(\"[\")||-1!==a.indexOf(\"(\"))){var b=function(a,e,d){var d=Ja(d),f;f=d[d.length-1];for(var h,i,j=0,g=d.length-1;j<g;j++){h=d[j].match(ba);i=d[j].match(S);if(h){d[j]=d[j].replace(ba,\"\");a[d[j]]=[];f=d.slice();f.splice(0,j+1);h=f.join(\".\");i=0;for(g=\ne.length;i<g;i++)f={},b(f,e[i],h),a[d[j]].push(f);return}i&&(d[j]=d[j].replace(S,\"\"),a=a[d[j]](e));if(null===a[d[j]]||a[d[j]]===l)a[d[j]]={};a=a[d[j]]}if(f.match(S))a[f.replace(S,\"\")](e);else a[f.replace(ba,\"\")]=e};return function(c,e){return b(c,e,a)}}return function(b,e){b[a]=e}}function Ka(a){return C(a.aoData,\"_aData\")}function na(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function oa(a,b,c){for(var e=-1,d=0,f=a.length;d<f;d++)a[d]==b?e=d:a[d]>b&&a[d]--; -1!=e&&c===l&&\na.splice(e,1)}function ca(a,b,c,e){var d=a.aoData[b],f,h=function(c,f){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=v(a,b,f,\"display\")};if(\"dom\"===c||(!c||\"auto\"===c)&&\"dom\"===d.src)d._aData=ma(a,d,e,e===l?l:d._aData).data;else{var i=d.anCells;if(i)if(e!==l)h(i[e],e);else{c=0;for(f=i.length;c<f;c++)h(i[c],c)}}d._aSortData=null;d._aFilterData=null;h=a.aoColumns;if(e!==l)h[e].sType=null;else{c=0;for(f=h.length;c<f;c++)h[c].sType=null;La(d)}}function ma(a,b,c,e){var d=[],f=b.firstChild,\nh,i=0,j,n=a.aoColumns,m=a._rowReadObject,e=e||m?{}:[],o=function(a,b){if(\"string\"===typeof a){var c=a.indexOf(\"@\");-1!==c&&(c=a.substring(c+1),Q(a)(e,b.getAttribute(c)))}},a=function(a){if(c===l||c===i)h=n[i],j=g.trim(a.innerHTML),h&&h._bAttrSrc?(Q(h.mData._)(e,j),o(h.mData.sort,a),o(h.mData.type,a),o(h.mData.filter,a)):m?(h._setter||(h._setter=Q(h.mData)),h._setter(e,j)):e[i]=j;i++};if(f)for(;f;){b=f.nodeName.toUpperCase();if(\"TD\"==b||\"TH\"==b)a(f),d.push(f);f=f.nextSibling}else{d=b.anCells;f=0;for(b=\nd.length;f<b;f++)a(d[f])}return{data:e,cells:d}}function Ia(a,b,c,e){var d=a.aoData[b],f=d._aData,h=[],i,j,g,m,o;if(null===d.nTr){i=c||P.createElement(\"tr\");d.nTr=i;d.anCells=h;i._DT_RowIndex=b;La(d);m=0;for(o=a.aoColumns.length;m<o;m++){g=a.aoColumns[m];j=c?e[m]:P.createElement(g.sCellType);h.push(j);if(!c||g.mRender||g.mData!==m)j.innerHTML=v(a,b,m,\"display\");g.sClass&&(j.className+=\" \"+g.sClass);g.bVisible&&!c?i.appendChild(j):!g.bVisible&&c&&j.parentNode.removeChild(j);g.fnCreatedCell&&g.fnCreatedCell.call(a.oInstance,\nj,v(a,b,m),f,b,m)}u(a,\"aoRowCreatedCallback\",null,[i,f,b])}d.nTr.setAttribute(\"role\",\"row\")}function La(a){var b=a.nTr,c=a._aData;if(b){c.DT_RowId&&(b.id=c.DT_RowId);if(c.DT_RowClass){var e=c.DT_RowClass.split(\" \");a.__rowc=a.__rowc?Ma(a.__rowc.concat(e)):e;g(b).removeClass(a.__rowc.join(\" \")).addClass(c.DT_RowClass)}c.DT_RowData&&g(b).data(c.DT_RowData)}}function ib(a){var b,c,e,d,f,h=a.nTHead,i=a.nTFoot,j=0===g(\"th, td\",h).length,n=a.oClasses,m=a.aoColumns;j&&(d=g(\"<tr/>\").appendTo(h));b=0;for(c=\nm.length;b<c;b++)f=m[b],e=g(f.nTh).addClass(f.sClass),j&&e.appendTo(d),a.oFeatures.bSort&&(e.addClass(f.sSortingClass),!1!==f.bSortable&&(e.attr(\"tabindex\",a.iTabIndex).attr(\"aria-controls\",a.sTableId),Na(a,f.nTh,b))),f.sTitle!=e.html()&&e.html(f.sTitle),Oa(a,\"header\")(a,e,f,n);j&&da(a.aoHeader,h);g(h).find(\">tr\").attr(\"role\",\"row\");g(h).find(\">tr>th, >tr>td\").addClass(n.sHeaderTH);g(i).find(\">tr>th, >tr>td\").addClass(n.sFooterTH);if(null!==i){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=m[b],f.nTf=\na[b].cell,f.sClass&&g(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var e,d,f,h=[],i=[],j=a.aoColumns.length,n;if(b){c===l&&(c=!1);e=0;for(d=b.length;e<d;e++){h[e]=b[e].slice();h[e].nTr=b[e].nTr;for(f=j-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&h[e].splice(f,1);i.push([])}e=0;for(d=h.length;e<d;e++){if(a=h[e].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=h[e].length;f<b;f++)if(n=j=1,i[e][f]===l){a.appendChild(h[e][f].cell);for(i[e][f]=1;h[e+j]!==l&&h[e][f].cell==h[e+j][f].cell;)i[e+j][f]=1,j++;\nfor(;h[e][f+n]!==l&&h[e][f].cell==h[e][f+n].cell;){for(c=0;c<j;c++)i[e+c][f+n]=1;n++}g(h[e][f].cell).attr(\"rowspan\",j).attr(\"colspan\",n)}}}}function L(a){var b=u(a,\"aoPreDrawCallback\",\"preDraw\",[a]);if(-1!==g.inArray(!1,b))B(a,!1);else{var b=[],c=0,e=a.asStripeClasses,d=e.length,f=a.oLanguage,h=a.iInitDisplayStart,i=\"ssp\"==A(a),j=a.aiDisplay;a.bDrawing=!0;h!==l&&-1!==h&&(a._iDisplayStart=i?h:h>=a.fnRecordsDisplay()?0:h,a.iInitDisplayStart=-1);var h=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=\n!1,a.iDraw++,B(a,!1);else if(i){if(!a.bDestroying&&!jb(a))return}else a.iDraw++;if(0!==j.length){f=i?a.aoData.length:n;for(i=i?0:h;i<f;i++){var m=j[i],o=a.aoData[m];null===o.nTr&&Ia(a,m);m=o.nTr;if(0!==d){var k=e[c%d];o._sRowStripe!=k&&(g(m).removeClass(o._sRowStripe).addClass(k),o._sRowStripe=k)}u(a,\"aoRowCallback\",null,[m,o._aData,c,i]);b.push(m);c++}}else c=f.sZeroRecords,1==a.iDraw&&\"ajax\"==A(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=g(\"<tr/>\",{\"class\":d?\ne[0]:\"\"}).append(g(\"<td />\",{valign:\"top\",colSpan:aa(a),\"class\":a.oClasses.sRowEmpty}).html(c))[0];u(a,\"aoHeaderCallback\",\"header\",[g(a.nTHead).children(\"tr\")[0],Ka(a),h,n,j]);u(a,\"aoFooterCallback\",\"footer\",[g(a.nTFoot).children(\"tr\")[0],Ka(a),h,n,j]);e=g(a.nTBody);e.children().detach();e.append(g(b));u(a,\"aoDrawCallback\",\"draw\",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function M(a,b){var c=a.oFeatures,e=c.bFilter;c.bSort&&kb(a);e?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();\n!0!==b&&(a._iDisplayStart=0);a._drawHold=b;L(a);a._drawHold=!1}function lb(a){var b=a.oClasses,c=g(a.nTable),c=g(\"<div/>\").insertBefore(c),e=a.oFeatures,d=g(\"<div/>\",{id:a.sTableId+\"_wrapper\",\"class\":b.sWrapper+(a.nTFoot?\"\":\" \"+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=d[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(\"\"),h,i,j,n,m,o,k=0;k<f.length;k++){h=null;i=f[k];if(\"<\"==i){j=g(\"<div/>\")[0];n=f[k+1];if(\"'\"==n||'\"'==n){m=\"\";for(o=2;f[k+o]!=n;)m+=f[k+o],o++;\"H\"==m?m=b.sJUIHeader:\n\"F\"==m&&(m=b.sJUIFooter);-1!=m.indexOf(\".\")?(n=m.split(\".\"),j.id=n[0].substr(1,n[0].length-1),j.className=n[1]):\"#\"==m.charAt(0)?j.id=m.substr(1,m.length-1):j.className=m;k+=o}d.append(j);d=g(j)}else if(\">\"==i)d=d.parent();else if(\"l\"==i&&e.bPaginate&&e.bLengthChange)h=mb(a);else if(\"f\"==i&&e.bFilter)h=nb(a);else if(\"r\"==i&&e.bProcessing)h=ob(a);else if(\"t\"==i)h=pb(a);else if(\"i\"==i&&e.bInfo)h=qb(a);else if(\"p\"==i&&e.bPaginate)h=rb(a);else if(0!==p.ext.feature.length){j=p.ext.feature;o=0;for(n=j.length;o<\nn;o++)if(i==j[o].cFeature){h=j[o].fnInit(a);break}}h&&(j=a.aanFeatures,j[i]||(j[i]=[]),j[i].push(h),d.append(h))}c.replaceWith(d)}function da(a,b){var c=g(b).children(\"tr\"),e,d,f,h,i,j,n,m,o,k;a.splice(0,a.length);f=0;for(j=c.length;f<j;f++)a.push([]);f=0;for(j=c.length;f<j;f++){e=c[f];for(d=e.firstChild;d;){if(\"TD\"==d.nodeName.toUpperCase()||\"TH\"==d.nodeName.toUpperCase()){m=1*d.getAttribute(\"colspan\");o=1*d.getAttribute(\"rowspan\");m=!m||0===m||1===m?1:m;o=!o||0===o||1===o?1:o;h=0;for(i=a[f];i[h];)h++;\nn=h;k=1===m?!0:!1;for(i=0;i<m;i++)for(h=0;h<o;h++)a[f+h][n+i]={cell:d,unique:k},a[f+h].nTr=e}d=d.nextSibling}}}function pa(a,b,c){var e=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,d=c.length;b<d;b++)for(var f=0,h=c[b].length;f<h;f++)if(c[b][f].unique&&(!e[f]||!a.bSortCellsTop))e[f]=c[b][f].cell;return e}function qa(a,b,c){u(a,\"aoServerParams\",\"serverParams\",[b]);if(b&&g.isArray(b)){var e={},d=/(.*?)\\[\\]$/;g.each(b,function(a,b){var c=b.name.match(d);c?(c=c[0],e[c]||(e[c]=[]),e[c].push(b.value)):\ne[b.name]=b.value});b=e}var f,h=a.ajax,i=a.oInstance;if(g.isPlainObject(h)&&h.data){f=h.data;var j=g.isFunction(f)?f(b):f,b=g.isFunction(f)&&j?j:g.extend(!0,b,j);delete h.data}j={data:b,success:function(b){var f=b.error||b.sError;f&&a.oApi._fnLog(a,0,f);a.json=b;u(a,null,\"xhr\",[a,b]);c(b)},dataType:\"json\",cache:!1,type:a.sServerMethod,error:function(b,c){var f=a.oApi._fnLog;\"parsererror\"==c?f(a,0,\"Invalid JSON response\",1):4===b.readyState&&f(a,0,\"Ajax error\",7);B(a,!1)}};a.oAjaxData=b;u(a,null,\"preXhr\",\n[a,b]);a.fnServerData?a.fnServerData.call(i,a.sAjaxSource,g.map(b,function(a,b){return{name:b,value:a}}),c,a):a.sAjaxSource||\"string\"===typeof h?a.jqXHR=g.ajax(g.extend(j,{url:h||a.sAjaxSource})):g.isFunction(h)?a.jqXHR=h.call(i,b,c,a):(a.jqXHR=g.ajax(g.extend(j,h)),h.data=f)}function jb(a){return a.bAjaxDataGet?(a.iDraw++,B(a,!0),qa(a,sb(a),function(b){tb(a,b)}),!1):!0}function sb(a){var b=a.aoColumns,c=b.length,e=a.oFeatures,d=a.oPreviousSearch,f=a.aoPreSearchCols,h,i=[],j,n,m,o=T(a);h=a._iDisplayStart;\nj=!1!==e.bPaginate?a._iDisplayLength:-1;var k=function(a,b){i.push({name:a,value:b})};k(\"sEcho\",a.iDraw);k(\"iColumns\",c);k(\"sColumns\",C(b,\"sName\").join(\",\"));k(\"iDisplayStart\",h);k(\"iDisplayLength\",j);var l={draw:a.iDraw,columns:[],order:[],start:h,length:j,search:{value:d.sSearch,regex:d.bRegex}};for(h=0;h<c;h++)n=b[h],m=f[h],j=\"function\"==typeof n.mData?\"function\":n.mData,l.columns.push({data:j,name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:m.sSearch,regex:m.bRegex}}),\nk(\"mDataProp_\"+h,j),e.bFilter&&(k(\"sSearch_\"+h,m.sSearch),k(\"bRegex_\"+h,m.bRegex),k(\"bSearchable_\"+h,n.bSearchable)),e.bSort&&k(\"bSortable_\"+h,n.bSortable);e.bFilter&&(k(\"sSearch\",d.sSearch),k(\"bRegex\",d.bRegex));e.bSort&&(g.each(o,function(a,b){l.order.push({column:b.col,dir:b.dir});k(\"iSortCol_\"+a,b.col);k(\"sSortDir_\"+a,b.dir)}),k(\"iSortingCols\",o.length));b=p.ext.legacy.ajax;return null===b?a.sAjaxSource?i:l:b?i:l}function tb(a,b){var c=b.sEcho!==l?b.sEcho:b.draw,e=b.iTotalRecords!==l?b.iTotalRecords:\nb.recordsTotal,d=b.iTotalDisplayRecords!==l?b.iTotalDisplayRecords:b.recordsFiltered;if(c){if(1*c<a.iDraw)return;a.iDraw=1*c}na(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(d,10);c=ra(a,b);e=0;for(d=c.length;e<d;e++)I(a,c[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;L(a);a._bInitComplete||sa(a,b);a.bAjaxDataGet=!0;B(a,!1)}function ra(a,b){var c=g.isPlainObject(a.ajax)&&a.ajax.dataSrc!==l?a.ajax.dataSrc:a.sAjaxDataProp;return\"data\"===c?b.aaData||b[c]:\"\"!==c?W(c)(b):\nb}function nb(a){var b=a.oClasses,c=a.sTableId,e=a.oLanguage,d=a.oPreviousSearch,f=a.aanFeatures,h='<input type=\"search\" class=\"'+b.sFilterInput+'\"/>',i=e.sSearch,i=i.match(/_INPUT_/)?i.replace(\"_INPUT_\",h):i+h,b=g(\"<div/>\",{id:!f.f?c+\"_filter\":null,\"class\":b.sFilter}).append(g(\"<label/>\").append(i)),f=function(){var b=!this.value?\"\":this.value;b!=d.sSearch&&(fa(a,{sSearch:b,bRegex:d.bRegex,bSmart:d.bSmart,bCaseInsensitive:d.bCaseInsensitive}),a._iDisplayStart=0,L(a))},h=null!==a.searchDelay?a.searchDelay:\n\"ssp\"===A(a)?400:0,j=g(\"input\",b).val(d.sSearch).attr(\"placeholder\",e.sSearchPlaceholder).bind(\"keyup.DT search.DT input.DT paste.DT cut.DT\",h?ta(f,h):f).bind(\"keypress.DT\",function(a){if(13==a.keyCode)return!1}).attr(\"aria-controls\",c);g(a.nTable).on(\"search.dt.DT\",function(b,c){if(a===c)try{j[0]!==P.activeElement&&j.val(d.sSearch)}catch(f){}});return b[0]}function fa(a,b,c){var e=a.oPreviousSearch,d=a.aoPreSearchCols,f=function(a){e.sSearch=a.sSearch;e.bRegex=a.bRegex;e.bSmart=a.bSmart;e.bCaseInsensitive=\na.bCaseInsensitive};Ga(a);if(\"ssp\"!=A(a)){ub(a,b.sSearch,c,b.bEscapeRegex!==l?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<d.length;b++)vb(a,d[b].sSearch,b,d[b].bEscapeRegex!==l?!d[b].bEscapeRegex:d[b].bRegex,d[b].bSmart,d[b].bCaseInsensitive);wb(a)}else f(b);a.bFiltered=!0;u(a,null,\"search\",[a])}function wb(a){for(var b=p.ext.search,c=a.aiDisplay,e,d,f=0,h=b.length;f<h;f++){for(var i=[],j=0,g=c.length;j<g;j++)d=c[j],e=a.aoData[d],b[f](a,e._aFilterData,d,e._aData,j)&&i.push(d);\nc.length=0;c.push.apply(c,i)}}function vb(a,b,c,e,d,f){if(\"\"!==b)for(var h=a.aiDisplay,e=Pa(b,e,d,f),d=h.length-1;0<=d;d--)b=a.aoData[h[d]]._aFilterData[c],e.test(b)||h.splice(d,1)}function ub(a,b,c,e,d,f){var e=Pa(b,e,d,f),d=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,h;0!==p.ext.search.length&&(c=!0);h=xb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(h||c||d.length>b.length||0!==b.indexOf(d)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)e.test(a.aoData[b[c]]._sFilterRow)||\nb.splice(c,1)}}function Pa(a,b,c,e){a=b?a:ua(a);c&&(a=\"^(?=.*?\"+g.map(a.match(/\"[^\"]+\"|[^ ]+/g)||\"\",function(a){if('\"'===a.charAt(0))var b=a.match(/^\"(.*)\"$/),a=b?b[1]:a;return a.replace('\"',\"\")}).join(\")(?=.*?\")+\").*$\");return RegExp(a,e?\"i\":\"\")}function ua(a){return a.replace(Xb,\"\\\\$1\")}function xb(a){var b=a.aoColumns,c,e,d,f,h,i,g,n,m=p.ext.type.search;c=!1;e=0;for(f=a.aoData.length;e<f;e++)if(n=a.aoData[e],!n._aFilterData){i=[];d=0;for(h=b.length;d<h;d++)c=b[d],c.bSearchable?(g=v(a,e,d,\"filter\"),\nm[c.sType]&&(g=m[c.sType](g)),null===g&&(g=\"\"),\"string\"!==typeof g&&g.toString&&(g=g.toString())):g=\"\",g.indexOf&&-1!==g.indexOf(\"&\")&&(va.innerHTML=g,g=Yb?va.textContent:va.innerText),g.replace&&(g=g.replace(/[\\r\\n]/g,\"\")),i.push(g);n._aFilterData=i;n._sFilterRow=i.join(\"  \");c=!0}return c}function yb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function zb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}\nfunction qb(a){var b=a.sTableId,c=a.aanFeatures.i,e=g(\"<div/>\",{\"class\":a.oClasses.sInfo,id:!c?b+\"_info\":null});c||(a.aoDrawCallback.push({fn:Ab,sName:\"information\"}),e.attr(\"role\",\"status\").attr(\"aria-live\",\"polite\"),g(a.nTable).attr(\"aria-describedby\",b+\"_info\"));return e[0]}function Ab(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,e=a._iDisplayStart+1,d=a.fnDisplayEnd(),f=a.fnRecordsTotal(),h=a.fnRecordsDisplay(),i=h?c.sInfo:c.sInfoEmpty;h!==f&&(i+=\" \"+c.sInfoFiltered);i+=c.sInfoPostFix;\ni=Bb(a,i);c=c.fnInfoCallback;null!==c&&(i=c.call(a.oInstance,a,e,d,f,h,i));g(b).html(i)}}function Bb(a,b){var c=a.fnFormatNumber,e=a._iDisplayStart+1,d=a._iDisplayLength,f=a.fnRecordsDisplay(),h=-1===d;return b.replace(/_START_/g,c.call(a,e)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,h?1:Math.ceil(e/d))).replace(/_PAGES_/g,c.call(a,h?1:Math.ceil(f/d)))}function ga(a){var b,c,e=a.iInitDisplayStart,\nd=a.aoColumns,f;c=a.oFeatures;if(a.bInitialised){lb(a);ib(a);ea(a,a.aoHeader);ea(a,a.aoFooter);B(a,!0);c.bAutoWidth&&Fa(a);b=0;for(c=d.length;b<c;b++)f=d[b],f.sWidth&&(f.nTh.style.width=s(f.sWidth));M(a);d=A(a);\"ssp\"!=d&&(\"ajax\"==d?qa(a,[],function(c){var f=ra(a,c);for(b=0;b<f.length;b++)I(a,f[b]);a.iInitDisplayStart=e;M(a);B(a,!1);sa(a,c)},a):(B(a,!1),sa(a)))}else setTimeout(function(){ga(a)},200)}function sa(a,b){a._bInitComplete=!0;b&&X(a);u(a,\"aoInitComplete\",\"init\",[a,b])}function Qa(a,b){var c=\nparseInt(b,10);a._iDisplayLength=c;Ra(a);u(a,null,\"length\",[a,c])}function mb(a){for(var b=a.oClasses,c=a.sTableId,e=a.aLengthMenu,d=g.isArray(e[0]),f=d?e[0]:e,e=d?e[1]:e,d=g(\"<select/>\",{name:c+\"_length\",\"aria-controls\":c,\"class\":b.sLengthSelect}),h=0,i=f.length;h<i;h++)d[0][h]=new Option(e[h],f[h]);var j=g(\"<div><label/></div>\").addClass(b.sLength);a.aanFeatures.l||(j[0].id=c+\"_length\");j.children().append(a.oLanguage.sLengthMenu.replace(\"_MENU_\",d[0].outerHTML));g(\"select\",j).val(a._iDisplayLength).bind(\"change.DT\",\nfunction(){Qa(a,g(this).val());L(a)});g(a.nTable).bind(\"length.dt.DT\",function(b,c,f){a===c&&g(\"select\",j).val(f)});return j[0]}function rb(a){var b=a.sPaginationType,c=p.ext.pager[b],e=\"function\"===typeof c,d=function(a){L(a)},b=g(\"<div/>\").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;e||c.fnInit(a,b,d);f.p||(b.id=a.sTableId+\"_paginate\",a.aoDrawCallback.push({fn:function(a){if(e){var b=a._iDisplayStart,g=a._iDisplayLength,n=a.fnRecordsDisplay(),m=-1===g,b=m?0:Math.ceil(b/g),g=m?1:Math.ceil(n/\ng),n=c(b,g),o,m=0;for(o=f.p.length;m<o;m++)Oa(a,\"pageButton\")(a,f.p[m],m,n,b,g)}else c.fnUpdate(a,d)},sName:\"pagination\"}));return b}function Sa(a,b,c){var e=a._iDisplayStart,d=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===d?e=0:\"number\"===typeof b?(e=b*d,e>f&&(e=0)):\"first\"==b?e=0:\"previous\"==b?(e=0<=d?e-d:0,0>e&&(e=0)):\"next\"==b?e+d<f&&(e+=d):\"last\"==b?e=Math.floor((f-1)/d)*d:R(a,0,\"Unknown paging action: \"+b,5);b=a._iDisplayStart!==e;a._iDisplayStart=e;b&&(u(a,null,\"page\",[a]),c&&L(a));\nreturn b}function ob(a){return g(\"<div/>\",{id:!a.aanFeatures.r?a.sTableId+\"_processing\":null,\"class\":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function B(a,b){a.oFeatures.bProcessing&&g(a.aanFeatures.r).css(\"display\",b?\"block\":\"none\");u(a,null,\"processing\",[a,b])}function pb(a){var b=g(a.nTable);b.attr(\"role\",\"grid\");var c=a.oScroll;if(\"\"===c.sX&&\"\"===c.sY)return a.nTable;var e=c.sX,d=c.sY,f=a.oClasses,h=b.children(\"caption\"),i=h.length?h[0]._captionSide:null,\nj=g(b[0].cloneNode(!1)),n=g(b[0].cloneNode(!1)),m=b.children(\"tfoot\");c.sX&&\"100%\"===b.attr(\"width\")&&b.removeAttr(\"width\");m.length||(m=null);c=g(\"<div/>\",{\"class\":f.sScrollWrapper}).append(g(\"<div/>\",{\"class\":f.sScrollHead}).css({overflow:\"hidden\",position:\"relative\",border:0,width:e?!e?null:s(e):\"100%\"}).append(g(\"<div/>\",{\"class\":f.sScrollHeadInner}).css({\"box-sizing\":\"content-box\",width:c.sXInner||\"100%\"}).append(j.removeAttr(\"id\").css(\"margin-left\",0).append(\"top\"===i?h:null).append(b.children(\"thead\"))))).append(g(\"<div/>\",\n{\"class\":f.sScrollBody}).css({overflow:\"auto\",height:!d?null:s(d),width:!e?null:s(e)}).append(b));m&&c.append(g(\"<div/>\",{\"class\":f.sScrollFoot}).css({overflow:\"hidden\",border:0,width:e?!e?null:s(e):\"100%\"}).append(g(\"<div/>\",{\"class\":f.sScrollFootInner}).append(n.removeAttr(\"id\").css(\"margin-left\",0).append(\"bottom\"===i?h:null).append(b.children(\"tfoot\")))));var b=c.children(),o=b[0],f=b[1],k=m?b[2]:null;e&&g(f).scroll(function(){var a=this.scrollLeft;o.scrollLeft=a;m&&(k.scrollLeft=a)});a.nScrollHead=\no;a.nScrollBody=f;a.nScrollFoot=k;a.aoDrawCallback.push({fn:Y,sName:\"scrolling\"});return c[0]}function Y(a){var b=a.oScroll,c=b.sX,e=b.sXInner,d=b.sY,f=b.iBarWidth,h=g(a.nScrollHead),i=h[0].style,j=h.children(\"div\"),n=j[0].style,m=j.children(\"table\"),j=a.nScrollBody,o=g(j),k=j.style,l=g(a.nScrollFoot).children(\"div\"),p=l.children(\"table\"),r=g(a.nTHead),q=g(a.nTable),t=q[0],N=t.style,J=a.nTFoot?g(a.nTFoot):null,u=a.oBrowser,w=u.bScrollOversize,y,v,x,K,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop=\n\"0\";a.paddingBottom=\"0\";a.borderTopWidth=\"0\";a.borderBottomWidth=\"0\";a.height=0};q.children(\"thead, tfoot\").remove();z=r.clone().prependTo(q);y=r.find(\"tr\");x=z.find(\"tr\");z.find(\"th, td\").removeAttr(\"tabindex\");J&&(K=J.clone().prependTo(q),v=J.find(\"tr\"),K=K.find(\"tr\"));c||(k.width=\"100%\",h[0].style.width=\"100%\");g.each(pa(a,z),function(b,c){D=ka(a,b);c.style.width=a.aoColumns[D].sWidth});J&&F(function(a){a.style.width=\"\"},K);b.bCollapse&&\"\"!==d&&(k.height=o[0].offsetHeight+r[0].offsetHeight+\"px\");\nh=q.outerWidth();if(\"\"===c){if(N.width=\"100%\",w&&(q.find(\"tbody\").height()>j.offsetHeight||\"scroll\"==o.css(\"overflow-y\")))N.width=s(q.outerWidth()-f)}else\"\"!==e?N.width=s(e):h==o.width()&&o.height()<q.height()?(N.width=s(h-f),q.outerWidth()>h-f&&(N.width=s(h))):N.width=s(h);h=q.outerWidth();F(E,x);F(function(a){C.push(a.innerHTML);A.push(s(g(a).css(\"width\")))},x);F(function(a,b){a.style.width=A[b]},y);g(x).height(0);J&&(F(E,K),F(function(a){B.push(s(g(a).css(\"width\")))},K),F(function(a,b){a.style.width=\nB[b]},v),g(K).height(0));F(function(a,b){a.innerHTML='<div class=\"dataTables_sizing\" style=\"height:0;overflow:hidden;\">'+C[b]+\"</div>\";a.style.width=A[b]},x);J&&F(function(a,b){a.innerHTML=\"\";a.style.width=B[b]},K);if(q.outerWidth()<h){v=j.scrollHeight>j.offsetHeight||\"scroll\"==o.css(\"overflow-y\")?h+f:h;if(w&&(j.scrollHeight>j.offsetHeight||\"scroll\"==o.css(\"overflow-y\")))N.width=s(v-f);(\"\"===c||\"\"!==e)&&R(a,1,\"Possible column misalignment\",6)}else v=\"100%\";k.width=s(v);i.width=s(v);J&&(a.nScrollFoot.style.width=\ns(v));!d&&w&&(k.height=s(t.offsetHeight+f));d&&b.bCollapse&&(k.height=s(d),b=c&&t.offsetWidth>j.offsetWidth?f:0,t.offsetHeight<j.offsetHeight&&(k.height=s(t.offsetHeight+b)));b=q.outerWidth();m[0].style.width=s(b);n.width=s(b);m=q.height()>j.clientHeight||\"scroll\"==o.css(\"overflow-y\");u=\"padding\"+(u.bScrollbarLeft?\"Left\":\"Right\");n[u]=m?f+\"px\":\"0px\";J&&(p[0].style.width=s(b),l[0].style.width=s(b),l[0].style[u]=m?f+\"px\":\"0px\");o.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}function F(a,\nb,c){for(var e=0,d=0,f=b.length,h,g;d<f;){h=b[d].firstChild;for(g=c?c[d].firstChild:null;h;)1===h.nodeType&&(c?a(h,g,e):a(h,e),e++),h=h.nextSibling,g=c?g.nextSibling:null;d++}}function Fa(a){var b=a.nTable,c=a.aoColumns,e=a.oScroll,d=e.sY,f=e.sX,h=e.sXInner,i=c.length,e=Z(a,\"bVisible\"),j=g(\"th\",a.nTHead),n=b.getAttribute(\"width\"),m=b.parentNode,o=!1,k,l;for(k=0;k<e.length;k++)l=c[e[k]],null!==l.sWidth&&(l.sWidth=Cb(l.sWidthOrig,m),o=!0);if(!o&&!f&&!d&&i==aa(a)&&i==j.length)for(k=0;k<i;k++)c[k].sWidth=\ns(j.eq(k).width());else{i=g(b).clone().empty().css(\"visibility\",\"hidden\").removeAttr(\"id\").append(g(a.nTHead).clone(!1)).append(g(a.nTFoot).clone(!1)).append(g(\"<tbody><tr/></tbody>\"));i.find(\"tfoot th, tfoot td\").css(\"width\",\"\");var p=i.find(\"tbody tr\"),j=pa(a,i.find(\"thead\")[0]);for(k=0;k<e.length;k++)l=c[e[k]],j[k].style.width=null!==l.sWidthOrig&&\"\"!==l.sWidthOrig?s(l.sWidthOrig):\"\";if(a.aoData.length)for(k=0;k<e.length;k++)o=e[k],l=c[o],g(Db(a,o)).clone(!1).append(l.sContentPadding).appendTo(p);\ni.appendTo(m);f&&h?i.width(h):f?(i.css(\"width\",\"auto\"),i.width()<m.offsetWidth&&i.width(m.offsetWidth)):d?i.width(m.offsetWidth):n&&i.width(n);Eb(a,i[0]);if(f){for(k=h=0;k<e.length;k++)l=c[e[k]],d=g(j[k]).outerWidth(),h+=null===l.sWidthOrig?d:parseInt(l.sWidth,10)+d-g(j[k]).width();i.width(s(h));b.style.width=s(h)}for(k=0;k<e.length;k++)if(l=c[e[k]],d=g(j[k]).width())l.sWidth=s(d);b.style.width=s(i.css(\"width\"));i.remove()}n&&(b.style.width=s(n));if((n||f)&&!a._reszEvt)g(Da).bind(\"resize.DT-\"+a.sInstance,\nta(function(){X(a)})),a._reszEvt=!0}function ta(a,b){var c=b!==l?b:200,e,d;return function(){var b=this,h=+new Date,g=arguments;e&&h<e+c?(clearTimeout(d),d=setTimeout(function(){e=l;a.apply(b,g)},c)):e?(e=h,a.apply(b,g)):e=h}}function Cb(a,b){if(!a)return 0;var c=g(\"<div/>\").css(\"width\",s(a)).appendTo(b||P.body),e=c[0].offsetWidth;c.remove();return e}function Eb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(g(b).outerWidth()-c)}function Db(a,b){var c=Fb(a,b);if(0>c)return null;\nvar e=a.aoData[c];return!e.nTr?g(\"<td/>\").html(v(a,c,b,\"display\"))[0]:e.anCells[b]}function Fb(a,b){for(var c,e=-1,d=-1,f=0,h=a.aoData.length;f<h;f++)c=v(a,f,b,\"display\")+\"\",c=c.replace(Zb,\"\"),c.length>e&&(e=c.length,d=f);return d}function s(a){return null===a?\"0px\":\"number\"==typeof a?0>a?\"0px\":a+\"px\":a.match(/\\d$/)?a+\"px\":a}function Gb(){if(!p.__scrollbarWidth){var a=g(\"<p/>\").css({width:\"100%\",height:200,padding:0})[0],b=g(\"<div/>\").css({position:\"absolute\",top:0,left:0,width:200,height:150,padding:0,\noverflow:\"hidden\",visibility:\"hidden\"}).append(a).appendTo(\"body\"),c=a.offsetWidth;b.css(\"overflow\",\"scroll\");a=a.offsetWidth;c===a&&(a=b[0].clientWidth);b.remove();p.__scrollbarWidth=c-a}return p.__scrollbarWidth}function T(a){var b,c,e=[],d=a.aoColumns,f,h,i,j;b=a.aaSortingFixed;c=g.isPlainObject(b);var n=[];f=function(a){a.length&&!g.isArray(a[0])?n.push(a):n.push.apply(n,a)};g.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){j=n[a][0];f=d[j].aDataSort;\nb=0;for(c=f.length;b<c;b++)h=f[b],i=d[h].sType||\"string\",n[a]._idx===l&&(n[a]._idx=g.inArray(n[a][1],d[h].asSorting)),e.push({src:j,col:h,dir:n[a][1],index:n[a]._idx,type:i,formatter:p.ext.type.order[i+\"-pre\"]})}return e}function kb(a){var b,c,e=[],d=p.ext.type.order,f=a.aoData,h=0,g,j=a.aiDisplayMaster,n;Ga(a);n=T(a);b=0;for(c=n.length;b<c;b++)g=n[b],g.formatter&&h++,Hb(a,g.col);if(\"ssp\"!=A(a)&&0!==n.length){b=0;for(c=j.length;b<c;b++)e[j[b]]=b;h===n.length?j.sort(function(a,b){var c,d,h,g,i=n.length,\nj=f[a]._aSortData,l=f[b]._aSortData;for(h=0;h<i;h++)if(g=n[h],c=j[g.col],d=l[g.col],c=c<d?-1:c>d?1:0,0!==c)return\"asc\"===g.dir?c:-c;c=e[a];d=e[b];return c<d?-1:c>d?1:0}):j.sort(function(a,b){var c,h,g,i,j=n.length,l=f[a]._aSortData,p=f[b]._aSortData;for(g=0;g<j;g++)if(i=n[g],c=l[i.col],h=p[i.col],i=d[i.type+\"-\"+i.dir]||d[\"string-\"+i.dir],c=i(c,h),0!==c)return c;c=e[a];h=e[b];return c<h?-1:c>h?1:0})}a.bSorted=!0}function Ib(a){for(var b,c,e=a.aoColumns,d=T(a),a=a.oLanguage.oAria,f=0,h=e.length;f<h;f++){c=\ne[f];var g=c.asSorting;b=c.sTitle.replace(/<.*?>/g,\"\");var j=c.nTh;j.removeAttribute(\"aria-sort\");c.bSortable&&(0<d.length&&d[0].col==f?(j.setAttribute(\"aria-sort\",\"asc\"==d[0].dir?\"ascending\":\"descending\"),c=g[d[0].index+1]||g[0]):c=g[0],b+=\"asc\"===c?a.sSortAscending:a.sSortDescending);j.setAttribute(\"aria-label\",b)}}function Ta(a,b,c,e){var d=a.aaSorting,f=a.aoColumns[b].asSorting,h=function(a,b){var c=a._idx;c===l&&(c=g.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};\"number\"===typeof d[0]&&\n(d=a.aaSorting=[d]);c&&a.oFeatures.bSortMulti?(c=g.inArray(b,C(d,\"0\")),-1!==c?(b=h(d[c],!0),null===b?d.splice(c,1):(d[c][1]=f[b],d[c]._idx=b)):(d.push([b,f[0],0]),d[d.length-1]._idx=0)):d.length&&d[0][0]==b?(b=h(d[0]),d.length=1,d[0][1]=f[b],d[0]._idx=b):(d.length=0,d.push([b,f[0]]),d[0]._idx=0);M(a);\"function\"==typeof e&&e(a)}function Na(a,b,c,e){var d=a.aoColumns[c];Ua(b,{},function(b){!1!==d.bSortable&&(a.oFeatures.bProcessing?(B(a,!0),setTimeout(function(){Ta(a,c,b.shiftKey,e);\"ssp\"!==A(a)&&B(a,\n!1)},0)):Ta(a,c,b.shiftKey,e))})}function wa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,e=T(a),d=a.oFeatures,f,h;if(d.bSort&&d.bSortClasses){d=0;for(f=b.length;d<f;d++)h=b[d].src,g(C(a.aoData,\"anCells\",h)).removeClass(c+(2>d?d+1:3));d=0;for(f=e.length;d<f;d++)h=e[d].src,g(C(a.aoData,\"anCells\",h)).addClass(c+(2>d?d+1:3))}a.aLastSort=e}function Hb(a,b){var c=a.aoColumns[b],e=p.ext.order[c.sSortDataType],d;e&&(d=e.call(a.oInstance,a,b,$(a,b)));for(var f,h=p.ext.type.order[c.sType+\"-pre\"],g=0,j=a.aoData.length;g<\nj;g++)if(c=a.aoData[g],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||e)f=e?d[g]:v(a,g,b,\"sort\"),c._aSortData[b]=h?h(f):f}function xa(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:g.extend(!0,[],a.aaSorting),search:yb(a.oPreviousSearch),columns:g.map(a.aoColumns,function(b,e){return{visible:b.bVisible,search:yb(a.aoPreSearchCols[e])}})};u(a,\"aoStateSaveParams\",\"stateSaveParams\",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,\na,b)}}function Jb(a){var b,c,e=a.aoColumns;if(a.oFeatures.bStateSave){var d=a.fnStateLoadCallback.call(a.oInstance,a);if(d&&d.time&&(b=u(a,\"aoStateLoadParams\",\"stateLoadParams\",[a,d]),-1===g.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&d.time<+new Date-1E3*b)&&e.length===d.columns.length))){a.oLoadedState=g.extend(!0,{},d);a._iDisplayStart=d.start;a.iInitDisplayStart=d.start;a._iDisplayLength=d.length;a.aaSorting=[];g.each(d.order,function(b,c){a.aaSorting.push(c[0]>=e.length?[0,c[1]]:c)});g.extend(a.oPreviousSearch,\nzb(d.search));b=0;for(c=d.columns.length;b<c;b++){var f=d.columns[b];e[b].bVisible=f.visible;g.extend(a.aoPreSearchCols[b],zb(f.search))}u(a,\"aoStateLoaded\",\"stateLoaded\",[a,d])}}}function ya(a){var b=p.settings,a=g.inArray(a,C(b,\"nTable\"));return-1!==a?b[a]:null}function R(a,b,c,e){c=\"DataTables warning: \"+(null!==a?\"table id=\"+a.sTableId+\" - \":\"\")+c;e&&(c+=\". For more information about this error, please see http://datatables.net/tn/\"+e);if(b)Da.console&&console.log&&console.log(c);else if(a=p.ext,\n\"alert\"==(a.sErrMode||a.errMode))alert(c);else throw Error(c);}function D(a,b,c,e){g.isArray(c)?g.each(c,function(c,f){g.isArray(f)?D(a,b,f[0],f[1]):D(a,b,f)}):(e===l&&(e=c),b[c]!==l&&(a[e]=b[c]))}function Kb(a,b,c){var e,d;for(d in b)b.hasOwnProperty(d)&&(e=b[d],g.isPlainObject(e)?(g.isPlainObject(a[d])||(a[d]={}),g.extend(!0,a[d],e)):a[d]=c&&\"data\"!==d&&\"aaData\"!==d&&g.isArray(e)?e.slice():e);return a}function Ua(a,b,c){g(a).bind(\"click.DT\",b,function(b){a.blur();c(b)}).bind(\"keypress.DT\",b,function(a){13===\na.which&&(a.preventDefault(),c(a))}).bind(\"selectstart.DT\",function(){return!1})}function x(a,b,c,e){c&&a[b].push({fn:c,sName:e})}function u(a,b,c,e){var d=[];b&&(d=g.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,e)}));null!==c&&g(a.nTable).trigger(c+\".dt\",e);return d}function Ra(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),e=a._iDisplayLength;b>=c&&(b=c-e);b-=b%e;if(-1===e||0>b)b=0;a._iDisplayStart=b}function Oa(a,b){var c=a.renderer,e=p.ext.renderer[b];return g.isPlainObject(c)&&\nc[b]?e[c[b]]||e._:\"string\"===typeof c?e[c]||e._:e._}function A(a){return a.oFeatures.bServerSide?\"ssp\":a.ajax||a.sAjaxSource?\"ajax\":\"dom\"}function Va(a,b){var c=[],c=Lb.numbers_length,e=Math.floor(c/2);b<=c?c=U(0,b):a<=e?(c=U(0,c-2),c.push(\"ellipsis\"),c.push(b-1)):(a>=b-1-e?c=U(b-(c-2),b):(c=U(a-1,a+2),c.push(\"ellipsis\"),c.push(b-1)),c.splice(0,0,\"ellipsis\"),c.splice(0,0,0));c.DT_el=\"span\";return c}function cb(a){g.each({num:function(b){return za(b,a)},\"num-fmt\":function(b){return za(b,a,Wa)},\"html-num\":function(b){return za(b,\na,Aa)},\"html-num-fmt\":function(b){return za(b,a,Aa,Wa)}},function(b,c){w.type.order[b+a+\"-pre\"]=c;b.match(/^html\\-/)&&(w.type.search[b+a]=w.type.search.html)})}function Mb(a){return function(){var b=[ya(this[p.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return p.ext.internal[a].apply(this,b)}}var p,w,q,r,t,Xa={},Nb=/[\\r\\n]/g,Aa=/<.*?>/g,$b=/^[\\w\\+\\-]/,ac=/[\\w\\+\\-]$/,Xb=RegExp(\"(\\\\/|\\\\.|\\\\*|\\\\+|\\\\?|\\\\||\\\\(|\\\\)|\\\\[|\\\\]|\\\\{|\\\\}|\\\\\\\\|\\\\$|\\\\^|\\\\-)\",\"g\"),Wa=/[',$\\u00a3\\u20ac\\u00a5%\\u2009\\u202F]/g,\nH=function(a){return!a||!0===a||\"-\"===a?!0:!1},Ob=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Pb=function(a,b){Xa[b]||(Xa[b]=RegExp(ua(b),\"g\"));return\"string\"===typeof a&&\".\"!==b?a.replace(/\\./g,\"\").replace(Xa[b],\".\"):a},Ya=function(a,b,c){var e=\"string\"===typeof a;b&&e&&(a=Pb(a,b));c&&e&&(a=a.replace(Wa,\"\"));return H(a)||!isNaN(parseFloat(a))&&isFinite(a)},Qb=function(a,b,c){return H(a)?!0:!(H(a)||\"string\"===typeof a)?null:Ya(a.replace(Aa,\"\"),b,c)?!0:null},C=function(a,\nb,c){var e=[],d=0,f=a.length;if(c!==l)for(;d<f;d++)a[d]&&a[d][b]&&e.push(a[d][b][c]);else for(;d<f;d++)a[d]&&e.push(a[d][b]);return e},ha=function(a,b,c,e){var d=[],f=0,h=b.length;if(e!==l)for(;f<h;f++)a[b[f]][c]&&d.push(a[b[f]][c][e]);else for(;f<h;f++)d.push(a[b[f]][c]);return d},U=function(a,b){var c=[],e;b===l?(b=0,e=a):(e=b,b=a);for(var d=b;d<e;d++)c.push(d);return c},Rb=function(a){for(var b=[],c=0,e=a.length;c<e;c++)a[c]&&b.push(a[c]);return b},Ma=function(a){var b=[],c,e,d=a.length,f,h=0;\ne=0;a:for(;e<d;e++){c=a[e];for(f=0;f<h;f++)if(b[f]===c)continue a;b.push(c);h++}return b},z=function(a,b,c){a[b]!==l&&(a[c]=a[b])},ba=/\\[.*?\\]$/,S=/\\(\\)$/,va=g(\"<div>\")[0],Yb=va.textContent!==l,Zb=/<.*?>/g;p=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new q(ya(this[w.iApiIndex])):new q(this)};this.fnAddData=function(a,b){var c=this.api(!0),e=g.isArray(a)&&(g.isArray(a[0])||g.isPlainObject(a[0]))?\nc.rows.add(a):c.row.add(a);(b===l||b)&&c.draw();return e.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],e=c.oScroll;a===l||a?b.draw(!1):(\"\"!==e.sX||\"\"!==e.sY)&&Y(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===l||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var e=this.api(!0),a=e.rows(a),d=a.settings()[0],g=d.aoData[a[0][0]];a.remove();b&&b.call(this,d,g);\n(c===l||c)&&e.draw();return g};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(!a)};this.fnFilter=function(a,b,c,e,d,g){d=this.api(!0);null===b||b===l?d.search(a,c,e,g):d.column(b).search(a,c,e,g);d.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==l){var e=a.nodeName?a.nodeName.toLowerCase():\"\";return b!==l||\"td\"==e||\"th\"==e?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);\nreturn a!==l?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return\"TR\"==c?b.row(a).index():\"TD\"==c||\"TH\"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===l||b)&&c.draw(!1)};this.fnSetColumnVis=\nfunction(a,b,c){a=this.api(!0).column(a).visible(b);(c===l||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return ya(this[w.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,e,d){var g=this.api(!0);c===l||null===c?g.row(b).data(a):g.cell(b,c).data(a);(d===l||d)&&g.columns.adjust();(e===l||e)&&g.draw();return 0};this.fnVersionCheck=w.fnVersionCheck;var b=this,c=a===l,e=this.length;\nc&&(a={});this.oApi=this.internal=w.internal;for(var d in p.ext.internal)d&&(this[d]=Mb(d));this.each(function(){var d={},d=1<e?Kb(d,a,!0):a,h=0,i,j=this.getAttribute(\"id\"),n=!1,m=p.defaults;if(\"table\"!=this.nodeName.toLowerCase())R(null,0,\"Non-table node initialisation (\"+this.nodeName+\")\",2);else{db(m);eb(m.column);G(m,m,!0);G(m.column,m.column,!0);G(m,d);var o=p.settings,h=0;for(i=o.length;h<i;h++){if(o[h].nTable==this){i=d.bRetrieve!==l?d.bRetrieve:m.bRetrieve;if(c||i)return o[h].oInstance;if(d.bDestroy!==\nl?d.bDestroy:m.bDestroy){o[h].oInstance.fnDestroy();break}else{R(o[h],0,\"Cannot reinitialise DataTable\",3);return}}if(o[h].sTableId==this.id){o.splice(h,1);break}}if(null===j||\"\"===j)this.id=j=\"DataTables_Table_\"+p.ext._unique++;var k=g.extend(!0,{},p.models.oSettings,{nTable:this,oApi:b.internal,oInit:d,sDestroyWidth:g(this)[0].style.width,sInstance:j,sTableId:j});o.push(k);k.oInstance=1===b.length?b:g(this).dataTable();db(d);d.oLanguage&&O(d.oLanguage);d.aLengthMenu&&!d.iDisplayLength&&(d.iDisplayLength=\ng.isArray(d.aLengthMenu[0])?d.aLengthMenu[0][0]:d.aLengthMenu[0]);d=Kb(g.extend(!0,{},m),d);D(k.oFeatures,d,\"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender\".split(\" \"));D(k,d,[\"asStripeClasses\",\"ajax\",\"fnServerData\",\"fnFormatNumber\",\"sServerMethod\",\"aaSorting\",\"aaSortingFixed\",\"aLengthMenu\",\"sPaginationType\",\"sAjaxSource\",\"sAjaxDataProp\",\"iStateDuration\",\"sDom\",\"bSortCellsTop\",\"iTabIndex\",\"fnStateLoadCallback\",\"fnStateSaveCallback\",\n\"renderer\",\"searchDelay\",[\"iCookieDuration\",\"iStateDuration\"],[\"oSearch\",\"oPreviousSearch\"],[\"aoSearchCols\",\"aoPreSearchCols\"],[\"iDisplayLength\",\"_iDisplayLength\"],[\"bJQueryUI\",\"bJUI\"]]);D(k.oScroll,d,[[\"sScrollX\",\"sX\"],[\"sScrollXInner\",\"sXInner\"],[\"sScrollY\",\"sY\"],[\"bScrollCollapse\",\"bCollapse\"]]);D(k.oLanguage,d,\"fnInfoCallback\");x(k,\"aoDrawCallback\",d.fnDrawCallback,\"user\");x(k,\"aoServerParams\",d.fnServerParams,\"user\");x(k,\"aoStateSaveParams\",d.fnStateSaveParams,\"user\");x(k,\"aoStateLoadParams\",\nd.fnStateLoadParams,\"user\");x(k,\"aoStateLoaded\",d.fnStateLoaded,\"user\");x(k,\"aoRowCallback\",d.fnRowCallback,\"user\");x(k,\"aoRowCreatedCallback\",d.fnCreatedRow,\"user\");x(k,\"aoHeaderCallback\",d.fnHeaderCallback,\"user\");x(k,\"aoFooterCallback\",d.fnFooterCallback,\"user\");x(k,\"aoInitComplete\",d.fnInitComplete,\"user\");x(k,\"aoPreDrawCallback\",d.fnPreDrawCallback,\"user\");j=k.oClasses;d.bJQueryUI?(g.extend(j,p.ext.oJUIClasses,d.oClasses),d.sDom===m.sDom&&\"lfrtip\"===m.sDom&&(k.sDom='<\"H\"lfr>t<\"F\"ip>'),k.renderer)?\ng.isPlainObject(k.renderer)&&!k.renderer.header&&(k.renderer.header=\"jqueryui\"):k.renderer=\"jqueryui\":g.extend(j,p.ext.classes,d.oClasses);g(this).addClass(j.sTable);if(\"\"!==k.oScroll.sX||\"\"!==k.oScroll.sY)k.oScroll.iBarWidth=Gb();!0===k.oScroll.sX&&(k.oScroll.sX=\"100%\");k.iInitDisplayStart===l&&(k.iInitDisplayStart=d.iDisplayStart,k._iDisplayStart=d.iDisplayStart);null!==d.iDeferLoading&&(k.bDeferLoading=!0,h=g.isArray(d.iDeferLoading),k._iRecordsDisplay=h?d.iDeferLoading[0]:d.iDeferLoading,k._iRecordsTotal=\nh?d.iDeferLoading[1]:d.iDeferLoading);var r=k.oLanguage;g.extend(!0,r,d.oLanguage);\"\"!==r.sUrl&&(g.ajax({dataType:\"json\",url:r.sUrl,success:function(a){O(a);G(m.oLanguage,a);g.extend(true,r,a);ga(k)},error:function(){ga(k)}}),n=!0);null===d.asStripeClasses&&(k.asStripeClasses=[j.sStripeOdd,j.sStripeEven]);var h=k.asStripeClasses,q=g(\"tbody tr:eq(0)\",this);-1!==g.inArray(!0,g.map(h,function(a){return q.hasClass(a)}))&&(g(\"tbody tr\",this).removeClass(h.join(\" \")),k.asDestroyStripes=h.slice());var o=\n[],s,h=this.getElementsByTagName(\"thead\");0!==h.length&&(da(k.aoHeader,h[0]),o=pa(k));if(null===d.aoColumns){s=[];h=0;for(i=o.length;h<i;h++)s.push(null)}else s=d.aoColumns;h=0;for(i=s.length;h<i;h++)Ea(k,o?o[h]:null);hb(k,d.aoColumnDefs,s,function(a,b){ja(k,a,b)});if(q.length){var t=function(a,b){return a.getAttribute(\"data-\"+b)?b:null};g.each(ma(k,q[0]).cells,function(a,b){var c=k.aoColumns[a];if(c.mData===a){var e=t(b,\"sort\")||t(b,\"order\"),d=t(b,\"filter\")||t(b,\"search\");if(e!==null||d!==null){c.mData=\n{_:a+\".display\",sort:e!==null?a+\".@data-\"+e:l,type:e!==null?a+\".@data-\"+e:l,filter:d!==null?a+\".@data-\"+d:l};ja(k,a)}}})}var v=k.oFeatures;d.bStateSave&&(v.bStateSave=!0,Jb(k,d),x(k,\"aoDrawCallback\",xa,\"state_save\"));if(d.aaSorting===l){o=k.aaSorting;h=0;for(i=o.length;h<i;h++)o[h][1]=k.aoColumns[h].asSorting[0]}wa(k);v.bSort&&x(k,\"aoDrawCallback\",function(){if(k.bSorted){var a=T(k),b={};g.each(a,function(a,c){b[c.src]=c.dir});u(k,null,\"order\",[k,a,b]);Ib(k)}});x(k,\"aoDrawCallback\",function(){(k.bSorted||\nA(k)===\"ssp\"||v.bDeferRender)&&wa(k)},\"sc\");fb(k);h=g(this).children(\"caption\").each(function(){this._captionSide=g(this).css(\"caption-side\")});i=g(this).children(\"thead\");0===i.length&&(i=g(\"<thead/>\").appendTo(this));k.nTHead=i[0];i=g(this).children(\"tbody\");0===i.length&&(i=g(\"<tbody/>\").appendTo(this));k.nTBody=i[0];i=g(this).children(\"tfoot\");if(0===i.length&&0<h.length&&(\"\"!==k.oScroll.sX||\"\"!==k.oScroll.sY))i=g(\"<tfoot/>\").appendTo(this);0===i.length||0===i.children().length?g(this).addClass(j.sNoFooter):\n0<i.length&&(k.nTFoot=i[0],da(k.aoFooter,k.nTFoot));if(d.aaData)for(h=0;h<d.aaData.length;h++)I(k,d.aaData[h]);else(k.bDeferLoading||\"dom\"==A(k))&&la(k,g(k.nTBody).children(\"tr\"));k.aiDisplay=k.aiDisplayMaster.slice();k.bInitialised=!0;!1===n&&ga(k)}});b=null;return this};var Sb=[],y=Array.prototype,bc=function(a){var b,c,e=p.settings,d=g.map(e,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&\"table\"===a.nodeName.toLowerCase())return b=g.inArray(a,d),-1!==b?[e[b]]:\nnull;if(a&&\"function\"===typeof a.settings)return a.settings().toArray();\"string\"===typeof a?c=g(a):a instanceof g&&(c=a)}else return[];if(c)return c.map(function(){b=g.inArray(this,d);return-1!==b?e[b]:null}).toArray()};q=function(a,b){if(!this instanceof q)throw\"DT API must be constructed as a new object\";var c=[],e=function(a){(a=bc(a))&&c.push.apply(c,a)};if(g.isArray(a))for(var d=0,f=a.length;d<f;d++)e(a[d]);else e(a);this.context=Ma(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector=\n{rows:null,cols:null,opts:null};q.extend(this,this,Sb)};p.Api=q;q.prototype={concat:y.concat,context:[],each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new q(b[a],this[a]):null},filter:function(a){var b=[];if(y.filter)b=y.filter.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new q(this.context,b)},flatten:function(){var a=[];return new q(this.context,\na.concat.apply(a,this.toArray()))},join:y.join,indexOf:y.indexOf||function(a,b){for(var c=b||0,e=this.length;c<e;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,e){var d=[],f,h,g,j,n,m=this.context,o,k,p=this.selector;\"string\"===typeof a&&(e=c,c=b,b=a,a=!1);h=0;for(g=m.length;h<g;h++){var r=new q(m[h]);if(\"table\"===b)f=c.call(r,m[h],h),f!==l&&d.push(f);else if(\"columns\"===b||\"rows\"===b)f=c.call(r,m[h],this[h],h),f!==l&&d.push(f);else if(\"column\"===b||\"column-rows\"===b||\"row\"===b||\"cell\"===\nb){k=this[h];\"column-rows\"===b&&(o=Ba(m[h],p.opts));j=0;for(n=k.length;j<n;j++)f=k[j],f=\"cell\"===b?c.call(r,m[h],f.row,f.column,h,j):c.call(r,m[h],f,h,j,o),f!==l&&d.push(f)}}return d.length||e?(a=new q(m,a?d.concat.apply([],d):d),b=a.selector,b.rows=p.rows,b.cols=p.cols,b.opts=p.opts,a):this},lastIndexOf:y.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(y.map)b=y.map.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)b.push(a.call(this,\nthis[c],c));return new q(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:y.pop,push:y.push,reduce:y.reduce||function(a,b){return gb(this,a,b,0,this.length,1)},reduceRight:y.reduceRight||function(a,b){return gb(this,a,b,this.length-1,-1,-1)},reverse:y.reverse,selector:null,shift:y.shift,sort:y.sort,splice:y.splice,toArray:function(){return y.slice.call(this)},to$:function(){return g(this)},toJQuery:function(){return g(this)},unique:function(){return new q(this.context,\nMa(this))},unshift:y.unshift};q.extend=function(a,b,c){if(b&&(b instanceof q||b.__dt_wrapper)){var e,d,f,h=function(a,b,c){return function(){var e=b.apply(a,arguments);q.extend(e,e,c.methodExt);return e}};e=0;for(d=c.length;e<d;e++)f=c[e],b[f.name]=\"function\"===typeof f.val?h(a,f.val,f):g.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,q.extend(a,b[f.name],f.propExt)}};q.register=r=function(a,b){if(g.isArray(a))for(var c=0,e=a.length;c<e;c++)q.register(a[c],b);else for(var d=a.split(\".\"),\nf=Sb,h,i,c=0,e=d.length;c<e;c++){h=(i=-1!==d[c].indexOf(\"()\"))?d[c].replace(\"()\",\"\"):d[c];var j;a:{j=0;for(var n=f.length;j<n;j++)if(f[j].name===h){j=f[j];break a}j=null}j||(j={name:h,val:{},methodExt:[],propExt:[]},f.push(j));c===e-1?j.val=b:f=i?j.methodExt:j.propExt}};q.registerPlural=t=function(a,b,c){q.register(a,c);q.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof q?a.length?g.isArray(a[0])?new q(a.context,a[0]):a[0]:l:a})};r(\"tables()\",function(a){var b;\nif(a){b=q;var c=this.context;if(\"number\"===typeof a)a=[c[a]];else var e=g.map(c,function(a){return a.nTable}),a=g(e).filter(a).map(function(){var a=g.inArray(this,e);return c[a]}).toArray();b=new b(a)}else b=this;return b});r(\"table()\",function(a){var a=this.tables(a),b=a.context;return b.length?new q(b[0]):a});t(\"tables().nodes()\",\"table().node()\",function(){return this.iterator(\"table\",function(a){return a.nTable},1)});t(\"tables().body()\",\"table().body()\",function(){return this.iterator(\"table\",\nfunction(a){return a.nTBody},1)});t(\"tables().header()\",\"table().header()\",function(){return this.iterator(\"table\",function(a){return a.nTHead},1)});t(\"tables().footer()\",\"table().footer()\",function(){return this.iterator(\"table\",function(a){return a.nTFoot},1)});t(\"tables().containers()\",\"table().container()\",function(){return this.iterator(\"table\",function(a){return a.nTableWrapper},1)});r(\"draw()\",function(a){return this.iterator(\"table\",function(b){M(b,!1===a)})});r(\"page()\",function(a){return a===\nl?this.page.info().page:this.iterator(\"table\",function(b){Sa(b,a)})});r(\"page.info()\",function(){if(0===this.context.length)return l;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,e=a.fnRecordsDisplay(),d=-1===c;return{page:d?0:Math.floor(b/c),pages:d?1:Math.ceil(e/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:e}});r(\"page.len()\",function(a){return a===l?0!==this.context.length?this.context[0]._iDisplayLength:l:this.iterator(\"table\",function(b){Qa(b,\na)})});var Tb=function(a,b,c){\"ssp\"==A(a)?M(a,b):(B(a,!0),qa(a,[],function(c){na(a);for(var c=ra(a,c),e=0,h=c.length;e<h;e++)I(a,c[e]);M(a,b);B(a,!1)}));if(c){var e=new q(a);e.one(\"draw\",function(){c(e.ajax.json())})}};r(\"ajax.json()\",function(){var a=this.context;if(0<a.length)return a[0].json});r(\"ajax.params()\",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});r(\"ajax.reload()\",function(a,b){return this.iterator(\"table\",function(c){Tb(c,!1===b,a)})});r(\"ajax.url()\",function(a){var b=\nthis.context;if(a===l){if(0===b.length)return l;b=b[0];return b.ajax?g.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator(\"table\",function(b){g.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});r(\"ajax.url().load()\",function(a,b){return this.iterator(\"table\",function(c){Tb(c,!1===b,a)})});var Za=function(a,b){var c=[],e,d,f,h,i,j;e=typeof a;if(!a||\"string\"===e||\"function\"===e||a.length===l)a=[a];f=0;for(h=a.length;f<h;f++){d=a[f]&&a[f].split?a[f].split(\",\"):[a[f]];i=0;for(j=\nd.length;i<j;i++)(e=b(\"string\"===typeof d[i]?g.trim(d[i]):d[i]))&&e.length&&c.push.apply(c,e)}return c},$a=function(a){a||(a={});a.filter&&!a.search&&(a.search=a.filter);return{search:a.search||\"none\",order:a.order||\"current\",page:a.page||\"all\"}},ab=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ba=function(a,b){var c,e,d,f=[],h=a.aiDisplay;c=a.aiDisplayMaster;var i=b.search;e=b.order;d=b.page;if(\"ssp\"==A(a))return\"removed\"===\ni?[]:U(0,c.length);if(\"current\"==d){c=a._iDisplayStart;for(e=a.fnDisplayEnd();c<e;c++)f.push(h[c])}else if(\"current\"==e||\"applied\"==e)f=\"none\"==i?c.slice():\"applied\"==i?h.slice():g.map(c,function(a){return-1===g.inArray(a,h)?a:null});else if(\"index\"==e||\"original\"==e){c=0;for(e=a.aoData.length;c<e;c++)\"none\"==i?f.push(c):(d=g.inArray(c,h),(-1===d&&\"removed\"==i||0<=d&&\"applied\"==i)&&f.push(c))}return f};r(\"rows()\",function(a,b){a===l?a=\"\":g.isPlainObject(a)&&(b=a,a=\"\");var b=$a(b),c=this.iterator(\"table\",\nfunction(c){var d=b;return Za(a,function(a){var b=Ob(a);if(b!==null&&!d)return[b];var i=Ba(c,d);if(b!==null&&g.inArray(b,i)!==-1)return[b];if(!a)return i;if(typeof a===\"function\")return g.map(i,function(b){var d=c.aoData[b];return a(b,d._aData,d.nTr)?b:null});b=Rb(ha(c.aoData,i,\"nTr\"));return a.nodeName&&g.inArray(a,b)!==-1?[a._DT_RowIndex]:g(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()})},1);c.selector.rows=a;c.selector.opts=b;return c});r(\"rows().nodes()\",function(){return this.iterator(\"row\",\nfunction(a,b){return a.aoData[b].nTr||l},1)});r(\"rows().data()\",function(){return this.iterator(!0,\"rows\",function(a,b){return ha(a.aoData,b,\"_aData\")},1)});t(\"rows().cache()\",\"row().cache()\",function(a){return this.iterator(\"row\",function(b,c){var e=b.aoData[c];return\"search\"===a?e._aFilterData:e._aSortData},1)});t(\"rows().invalidate()\",\"row().invalidate()\",function(a){return this.iterator(\"row\",function(b,c){ca(b,c,a)})});t(\"rows().indexes()\",\"row().index()\",function(){return this.iterator(\"row\",\nfunction(a,b){return b},1)});t(\"rows().remove()\",\"row().remove()\",function(){var a=this;return this.iterator(\"row\",function(b,c,e){var d=b.aoData;d.splice(c,1);for(var f=0,h=d.length;f<h;f++)null!==d[f].nTr&&(d[f].nTr._DT_RowIndex=f);g.inArray(c,b.aiDisplay);oa(b.aiDisplayMaster,c);oa(b.aiDisplay,c);oa(a[e],c,!1);Ra(b)})});r(\"rows.add()\",function(a){var b=this.iterator(\"table\",function(b){var c,f,h,g=[];f=0;for(h=a.length;f<h;f++)c=a[f],c.nodeName&&\"TR\"===c.nodeName.toUpperCase()?g.push(la(b,c)[0]):\ng.push(I(b,c));return g},1),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r(\"row()\",function(a,b){return ab(this.rows(a,b))});r(\"row().data()\",function(a){var b=this.context;if(a===l)return b.length&&this.length?b[0].aoData[this[0]]._aData:l;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],\"data\");return this});r(\"row().node()\",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});r(\"row.add()\",function(a){a instanceof g&&a.length&&(a=a[0]);\nvar b=this.iterator(\"table\",function(b){return a.nodeName&&\"TR\"===a.nodeName.toUpperCase()?la(b,a)[0]:I(b,a)});return this.row(b[0])});var bb=function(a,b){var c=a.context;c.length&&(c=c[0].aoData[b!==l?b:a[0]],c._details&&(c._details.remove(),c._detailsShow=l,c._details=l))},Ub=function(a,b){var c=a.context;if(c.length&&a.length){var e=c[0].aoData[a[0]];if(e._details){(e._detailsShow=b)?e._details.insertAfter(e.nTr):e._details.detach();var d=c[0],f=new q(d),h=d.aoData;f.off(\"draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details\");\n0<C(h,\"_details\").length&&(f.on(\"draw.dt.DT_details\",function(a,b){d===b&&f.rows({page:\"current\"}).eq(0).each(function(a){a=h[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on(\"column-visibility.dt.DT_details\",function(a,b){if(d===b)for(var c,e=aa(b),f=0,g=h.length;f<g;f++)c=h[f],c._details&&c._details.children(\"td[colspan]\").attr(\"colspan\",e)}),f.on(\"destroy.dt.DT_details\",function(a,b){if(d===b)for(var c=0,e=h.length;c<e;c++)h[c]._details&&bb(f,c)}))}}};r(\"row().child()\",function(a,b){var c=\nthis.context;if(a===l)return c.length&&this.length?c[0].aoData[this[0]]._details:l;if(!0===a)this.child.show();else if(!1===a)bb(this);else if(c.length&&this.length){var e=c[0],c=c[0].aoData[this[0]],d=[],f=function(a,b){if(a.nodeName&&\"tr\"===a.nodeName.toLowerCase())d.push(a);else{var c=g(\"<tr><td/></tr>\").addClass(b);g(\"td\",c).addClass(b).html(a)[0].colSpan=aa(e);d.push(c[0])}};if(g.isArray(a)||a instanceof g)for(var h=0,i=a.length;h<i;h++)f(a[h],b);else f(a,b);c._details&&c._details.remove();c._details=\ng(d);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});r([\"row().child.show()\",\"row().child().show()\"],function(){Ub(this,!0);return this});r([\"row().child.hide()\",\"row().child().hide()\"],function(){Ub(this,!1);return this});r([\"row().child.remove()\",\"row().child().remove()\"],function(){bb(this);return this});r(\"row().child.isShown()\",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var cc=/^(.+):(name|visIdx|visible)$/,Vb=function(a,\nb,c,e,d){for(var c=[],e=0,f=d.length;e<f;e++)c.push(v(a,d[e],b));return c};r(\"columns()\",function(a,b){a===l?a=\"\":g.isPlainObject(a)&&(b=a,a=\"\");var b=$a(b),c=this.iterator(\"table\",function(c){var d=a,f=b,h=c.aoColumns,i=C(h,\"sName\"),j=C(h,\"nTh\");return Za(d,function(a){var b=Ob(a);if(a===\"\")return U(h.length);if(b!==null)return[b>=0?b:h.length+b];if(typeof a===\"function\"){var d=Ba(c,f);return g.map(h,function(b,f){return a(f,Vb(c,f,0,0,d),j[f])?f:null})}var k=typeof a===\"string\"?a.match(cc):\"\";if(k)switch(k[2]){case \"visIdx\":case \"visible\":b=\nparseInt(k[1],10);if(b<0){var l=g.map(h,function(a,b){return a.bVisible?b:null});return[l[l.length+b]]}return[ka(c,b)];case \"name\":return g.map(i,function(a,b){return a===k[1]?b:null})}else return g(j).filter(a).map(function(){return g.inArray(this,j)}).toArray()})},1);c.selector.cols=a;c.selector.opts=b;return c});t(\"columns().header()\",\"column().header()\",function(){return this.iterator(\"column\",function(a,b){return a.aoColumns[b].nTh},1)});t(\"columns().footer()\",\"column().footer()\",function(){return this.iterator(\"column\",\nfunction(a,b){return a.aoColumns[b].nTf},1)});t(\"columns().data()\",\"column().data()\",function(){return this.iterator(\"column-rows\",Vb,1)});t(\"columns().dataSrc()\",\"column().dataSrc()\",function(){return this.iterator(\"column\",function(a,b){return a.aoColumns[b].mData},1)});t(\"columns().cache()\",\"column().cache()\",function(a){return this.iterator(\"column-rows\",function(b,c,e,d,f){return ha(b.aoData,f,\"search\"===a?\"_aFilterData\":\"_aSortData\",c)},1)});t(\"columns().nodes()\",\"column().nodes()\",function(){return this.iterator(\"column-rows\",\nfunction(a,b,c,e,d){return ha(a.aoData,d,\"anCells\",b)},1)});t(\"columns().visible()\",\"column().visible()\",function(a,b){return this.iterator(\"column\",function(c,e){if(a===l)return c.aoColumns[e].bVisible;var d=c.aoColumns,f=d[e],h=c.aoData,i,j,n;if(a!==l&&f.bVisible!==a){if(a){var m=g.inArray(!0,C(d,\"bVisible\"),e+1);i=0;for(j=h.length;i<j;i++)n=h[i].nTr,d=h[i].anCells,n&&n.insertBefore(d[e],d[m]||null)}else g(C(c.aoData,\"anCells\",e)).detach();f.bVisible=a;ea(c,c.aoHeader);ea(c,c.aoFooter);if(b===l||\nb)X(c),(c.oScroll.sX||c.oScroll.sY)&&Y(c);u(c,null,\"column-visibility\",[c,e,a]);xa(c)}})});t(\"columns().indexes()\",\"column().index()\",function(a){return this.iterator(\"column\",function(b,c){return\"visible\"===a?$(b,c):c},1)});r(\"columns.adjust()\",function(){return this.iterator(\"table\",function(a){X(a)},1)});r(\"column.index()\",function(a,b){if(0!==this.context.length){var c=this.context[0];if(\"fromVisible\"===a||\"toData\"===a)return ka(c,b);if(\"fromData\"===a||\"toVisible\"===a)return $(c,b)}});r(\"column()\",\nfunction(a,b){return ab(this.columns(a,b))});r(\"cells()\",function(a,b,c){g.isPlainObject(a)&&(typeof a.row!==l?(c=b,b=null):(c=a,a=null));g.isPlainObject(b)&&(c=b,b=null);if(null===b||b===l)return this.iterator(\"table\",function(b){var e=a,d=$a(c),f=b.aoData,h=Ba(b,d),d=Rb(ha(f,h,\"anCells\")),i=g([].concat.apply([],d)),j,m=b.aoColumns.length,n,p,r,q,s,t;return Za(e,function(a){var c=typeof a===\"function\";if(a===null||a===l||c){n=[];p=0;for(r=h.length;p<r;p++){j=h[p];for(q=0;q<m;q++){s={row:j,column:q};\nif(c){t=b.aoData[j];a(s,v(b,j,q),t.anCells[q])&&n.push(s)}else n.push(s)}}return n}return g.isPlainObject(a)?[a]:i.filter(a).map(function(a,b){j=b.parentNode._DT_RowIndex;return{row:j,column:g.inArray(b,f[j].anCells)}}).toArray()})});var e=this.columns(b,c),d=this.rows(a,c),f,h,i,j,n,m=this.iterator(\"table\",function(a,b){f=[];h=0;for(i=d[b].length;h<i;h++){j=0;for(n=e[b].length;j<n;j++)f.push({row:d[b][h],column:e[b][j]})}return f},1);g.extend(m.selector,{cols:b,rows:a,opts:c});return m});t(\"cells().nodes()\",\n\"cell().node()\",function(){return this.iterator(\"cell\",function(a,b,c){return(a=a.aoData[b].anCells)?a[c]:l},1)});r(\"cells().data()\",function(){return this.iterator(\"cell\",function(a,b,c){return v(a,b,c)},1)});t(\"cells().cache()\",\"cell().cache()\",function(a){a=\"search\"===a?\"_aFilterData\":\"_aSortData\";return this.iterator(\"cell\",function(b,c,e){return b.aoData[c][a][e]},1)});t(\"cells().render()\",\"cell().render()\",function(a){return this.iterator(\"cell\",function(b,c,e){return v(b,c,e,a)},1)});t(\"cells().indexes()\",\n\"cell().index()\",function(){return this.iterator(\"cell\",function(a,b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});t(\"cells().invalidate()\",\"cell().invalidate()\",function(a){return this.iterator(\"cell\",function(b,c,e){ca(b,c,a,e)})});r(\"cell()\",function(a,b,c){return ab(this.cells(a,b,c))});r(\"cell().data()\",function(a){var b=this.context,c=this[0];if(a===l)return b.length&&c.length?v(b[0],c[0].row,c[0].column):l;Ha(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,\"data\",c[0].column);return this});\nr(\"order()\",function(a,b){var c=this.context;if(a===l)return 0!==c.length?c[0].aaSorting:l;\"number\"===typeof a?a=[[a,b]]:g.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator(\"table\",function(b){b.aaSorting=a.slice()})});r(\"order.listener()\",function(a,b,c){return this.iterator(\"table\",function(e){Na(e,a,b,c)})});r([\"columns().order()\",\"column().order()\"],function(a){var b=this;return this.iterator(\"table\",function(c,e){var d=[];g.each(b[e],function(b,c){d.push([c,a])});\nc.aaSorting=d})});r(\"search()\",function(a,b,c,e){var d=this.context;return a===l?0!==d.length?d[0].oPreviousSearch.sSearch:l:this.iterator(\"table\",function(d){d.oFeatures.bFilter&&fa(d,g.extend({},d.oPreviousSearch,{sSearch:a+\"\",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),1)})});t(\"columns().search()\",\"column().search()\",function(a,b,c,e){return this.iterator(\"column\",function(d,f){var h=d.aoPreSearchCols;if(a===l)return h[f].sSearch;d.oFeatures.bFilter&&(g.extend(h[f],\n{sSearch:a+\"\",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),fa(d,d.oPreviousSearch,1))})});r(\"state()\",function(){return this.context.length?this.context[0].oSavedState:null});r(\"state.clear()\",function(){return this.iterator(\"table\",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});r(\"state.loaded()\",function(){return this.context.length?this.context[0].oLoadedState:null});r(\"state.save()\",function(){return this.iterator(\"table\",function(a){xa(a)})});p.versionCheck=\np.fnVersionCheck=function(a){for(var b=p.version.split(\".\"),a=a.split(\".\"),c,e,d=0,f=a.length;d<f;d++)if(c=parseInt(b[d],10)||0,e=parseInt(a[d],10)||0,c!==e)return c>e;return!0};p.isDataTable=p.fnIsDataTable=function(a){var b=g(a).get(0),c=!1;g.each(p.settings,function(a,d){if(d.nTable===b||d.nScrollHead===b||d.nScrollFoot===b)c=!0});return c};p.tables=p.fnTables=function(a){return g.map(p.settings,function(b){if(!a||a&&g(b.nTable).is(\":visible\"))return b.nTable})};p.util={throttle:ta,escapeRegex:ua};\np.camelToHungarian=G;r(\"$()\",function(a,b){var c=this.rows(b).nodes(),c=g(c);return g([].concat(c.filter(a).toArray(),c.find(a).toArray()))});g.each([\"on\",\"one\",\"off\"],function(a,b){r(b+\"()\",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\\.dt\\b/)||(a[0]+=\".dt\");var e=g(this.tables().nodes());e[b].apply(e,a);return this})});r(\"clear()\",function(){return this.iterator(\"table\",function(a){na(a)})});r(\"settings()\",function(){return new q(this.context,this.context)});r(\"data()\",function(){return this.iterator(\"table\",\nfunction(a){return C(a.aoData,\"_aData\")}).flatten()});r(\"destroy()\",function(a){a=a||!1;return this.iterator(\"table\",function(b){var c=b.nTableWrapper.parentNode,e=b.oClasses,d=b.nTable,f=b.nTBody,h=b.nTHead,i=b.nTFoot,j=g(d),f=g(f),l=g(b.nTableWrapper),m=g.map(b.aoData,function(a){return a.nTr}),o;b.bDestroying=!0;u(b,\"aoDestroyCallback\",\"destroy\",[b]);a||(new q(b)).columns().visible(!0);l.unbind(\".DT\").find(\":not(tbody *)\").unbind(\".DT\");g(Da).unbind(\".DT-\"+b.sInstance);d!=h.parentNode&&(j.children(\"thead\").detach(),\nj.append(h));i&&d!=i.parentNode&&(j.children(\"tfoot\").detach(),j.append(i));j.detach();l.detach();b.aaSorting=[];b.aaSortingFixed=[];wa(b);g(m).removeClass(b.asStripeClasses.join(\" \"));g(\"th, td\",h).removeClass(e.sSortable+\" \"+e.sSortableAsc+\" \"+e.sSortableDesc+\" \"+e.sSortableNone);b.bJUI&&(g(\"th span.\"+e.sSortIcon+\", td span.\"+e.sSortIcon,h).detach(),g(\"th, td\",h).each(function(){var a=g(\"div.\"+e.sSortJUIWrapper,this);g(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(d,b.nTableReinsertBefore);\nf.children().detach();f.append(m);j.css(\"width\",b.sDestroyWidth).removeClass(e.sTable);(o=b.asDestroyStripes.length)&&f.children().each(function(a){g(this).addClass(b.asDestroyStripes[a%o])});c=g.inArray(b,p.settings);-1!==c&&p.settings.splice(c,1)})});p.version=\"1.10.4\";p.settings=[];p.models={};p.models.oSearch={bCaseInsensitive:!0,sSearch:\"\",bRegex:!1,bSmart:!0};p.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:\"\",src:null};p.models.oColumn=\n{idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:\"std\",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};p.defaults={aaData:null,aaSorting:[[0,\"asc\"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,\naoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,\nfnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem(\"DataTables_\"+a.sInstance+\"_\"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem(\"DataTables_\"+a.sInstance+\"_\"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,\niStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:\": activate to sort column ascending\",sSortDescending:\": activate to sort column descending\"},oPaginate:{sFirst:\"First\",sLast:\"Last\",sNext:\"Next\",sPrevious:\"Previous\"},sEmptyTable:\"No data available in table\",sInfo:\"Showing _START_ to _END_ of _TOTAL_ entries\",sInfoEmpty:\"Showing 0 to 0 of 0 entries\",sInfoFiltered:\"(filtered from _MAX_ total entries)\",sInfoPostFix:\"\",sDecimal:\"\",\nsThousands:\",\",sLengthMenu:\"Show _MENU_ entries\",sLoadingRecords:\"Loading...\",sProcessing:\"Processing...\",sSearch:\"Search:\",sSearchPlaceholder:\"\",sUrl:\"\",sZeroRecords:\"No matching records found\"},oSearch:g.extend({},p.models.oSearch),sAjaxDataProp:\"data\",sAjaxSource:null,sDom:\"lfrtip\",searchDelay:null,sPaginationType:\"simple_numbers\",sScrollX:\"\",sScrollXInner:\"\",sScrollY:\"\",sServerMethod:\"GET\",renderer:null};V(p.defaults);p.defaults.column={aDataSort:null,iDataSort:-1,asSorting:[\"asc\",\"desc\"],bSearchable:!0,\nbSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:\"td\",sClass:\"\",sContentPadding:\"\",sDefaultContent:null,sName:\"\",sSortDataType:\"std\",sTitle:null,sType:null,sWidth:null};V(p.defaults.column);p.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},\noLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],\nsTableId:\"\",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:\"two_button\",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:l,oAjaxData:l,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,\n_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return\"ssp\"==A(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return\"ssp\"==A(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,e=this.aiDisplay.length,d=this.oFeatures,f=d.bPaginate;return d.bServerSide?!1===f||-1===a?b+e:\nMath.min(b+a,this._iRecordsDisplay):!f||c>e||-1===a?e:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}};p.ext=w={classes:{},errMode:\"alert\",feature:[],search:[],internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:p.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:p.version};g.extend(w,{afnFiltering:w.search,aTypes:w.type.detect,ofnSearch:w.type.search,\noSort:w.type.order,afnSortData:w.order,aoFeatures:w.feature,oApi:w.internal,oStdClasses:w.classes,oPagination:w.pager});g.extend(p.ext.classes,{sTable:\"dataTable\",sNoFooter:\"no-footer\",sPageButton:\"paginate_button\",sPageButtonActive:\"current\",sPageButtonDisabled:\"disabled\",sStripeOdd:\"odd\",sStripeEven:\"even\",sRowEmpty:\"dataTables_empty\",sWrapper:\"dataTables_wrapper\",sFilter:\"dataTables_filter\",sInfo:\"dataTables_info\",sPaging:\"dataTables_paginate paging_\",sLength:\"dataTables_length\",sProcessing:\"dataTables_processing\",\nsSortAsc:\"sorting_asc\",sSortDesc:\"sorting_desc\",sSortable:\"sorting\",sSortableAsc:\"sorting_asc_disabled\",sSortableDesc:\"sorting_desc_disabled\",sSortableNone:\"sorting_disabled\",sSortColumn:\"sorting_\",sFilterInput:\"\",sLengthSelect:\"\",sScrollWrapper:\"dataTables_scroll\",sScrollHead:\"dataTables_scrollHead\",sScrollHeadInner:\"dataTables_scrollHeadInner\",sScrollBody:\"dataTables_scrollBody\",sScrollFoot:\"dataTables_scrollFoot\",sScrollFootInner:\"dataTables_scrollFootInner\",sHeaderTH:\"\",sFooterTH:\"\",sSortJUIAsc:\"\",\nsSortJUIDesc:\"\",sSortJUI:\"\",sSortJUIAscAllowed:\"\",sSortJUIDescAllowed:\"\",sSortJUIWrapper:\"\",sSortIcon:\"\",sJUIHeader:\"\",sJUIFooter:\"\"});var Ca=\"\",Ca=\"\",E=Ca+\"ui-state-default\",ia=Ca+\"css_right ui-icon ui-icon-\",Wb=Ca+\"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix\";g.extend(p.ext.oJUIClasses,p.ext.classes,{sPageButton:\"fg-button ui-button \"+E,sPageButtonActive:\"ui-state-disabled\",sPageButtonDisabled:\"ui-state-disabled\",sPaging:\"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_\",\nsSortAsc:E+\" sorting_asc\",sSortDesc:E+\" sorting_desc\",sSortable:E+\" sorting\",sSortableAsc:E+\" sorting_asc_disabled\",sSortableDesc:E+\" sorting_desc_disabled\",sSortableNone:E+\" sorting_disabled\",sSortJUIAsc:ia+\"triangle-1-n\",sSortJUIDesc:ia+\"triangle-1-s\",sSortJUI:ia+\"carat-2-n-s\",sSortJUIAscAllowed:ia+\"carat-1-n\",sSortJUIDescAllowed:ia+\"carat-1-s\",sSortJUIWrapper:\"DataTables_sort_wrapper\",sSortIcon:\"DataTables_sort_icon\",sScrollHead:\"dataTables_scrollHead \"+E,sScrollFoot:\"dataTables_scrollFoot \"+E,\nsHeaderTH:E,sFooterTH:E,sJUIHeader:Wb+\" ui-corner-tl ui-corner-tr\",sJUIFooter:Wb+\" ui-corner-bl ui-corner-br\"});var Lb=p.ext.pager;g.extend(Lb,{simple:function(){return[\"previous\",\"next\"]},full:function(){return[\"first\",\"previous\",\"next\",\"last\"]},simple_numbers:function(a,b){return[\"previous\",Va(a,b),\"next\"]},full_numbers:function(a,b){return[\"first\",\"previous\",Va(a,b),\"next\",\"last\"]},_numbers:Va,numbers_length:7});g.extend(!0,p.ext.renderer,{pageButton:{_:function(a,b,c,e,d,f){var h=a.oClasses,i=\na.oLanguage.oPaginate,j,l,m=0,o=function(b,e){var k,p,r,q,s=function(b){Sa(a,b.data.action,true)};k=0;for(p=e.length;k<p;k++){q=e[k];if(g.isArray(q)){r=g(\"<\"+(q.DT_el||\"div\")+\"/>\").appendTo(b);o(r,q)}else{l=j=\"\";switch(q){case \"ellipsis\":b.append(\"<span>&hellip;</span>\");break;case \"first\":j=i.sFirst;l=q+(d>0?\"\":\" \"+h.sPageButtonDisabled);break;case \"previous\":j=i.sPrevious;l=q+(d>0?\"\":\" \"+h.sPageButtonDisabled);break;case \"next\":j=i.sNext;l=q+(d<f-1?\"\":\" \"+h.sPageButtonDisabled);break;case \"last\":j=\ni.sLast;l=q+(d<f-1?\"\":\" \"+h.sPageButtonDisabled);break;default:j=q+1;l=d===q?h.sPageButtonActive:\"\"}if(j){r=g(\"<a>\",{\"class\":h.sPageButton+\" \"+l,\"aria-controls\":a.sTableId,\"data-dt-idx\":m,tabindex:a.iTabIndex,id:c===0&&typeof q===\"string\"?a.sTableId+\"_\"+q:null}).html(j).appendTo(b);Ua(r,{action:q},s);m++}}}};try{var k=g(P.activeElement).data(\"dt-idx\");o(g(b).empty(),e);k!==null&&g(b).find(\"[data-dt-idx=\"+k+\"]\").focus()}catch(p){}}}});g.extend(p.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;\nreturn Ya(a,c)?\"num\"+c:null},function(a){if(a&&!(a instanceof Date)&&(!$b.test(a)||!ac.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||H(a)?\"date\":null},function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c,!0)?\"num-fmt\"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Qb(a,c)?\"html-num\"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Qb(a,c,!0)?\"html-num-fmt\"+c:null},function(a){return H(a)||\"string\"===typeof a&&-1!==a.indexOf(\"<\")?\"html\":null}]);g.extend(p.ext.type.search,\n{html:function(a){return H(a)?a:\"string\"===typeof a?a.replace(Nb,\" \").replace(Aa,\"\"):\"\"},string:function(a){return H(a)?a:\"string\"===typeof a?a.replace(Nb,\" \"):a}});var za=function(a,b,c,e){if(0!==a&&(!a||\"-\"===a))return-Infinity;b&&(a=Pb(a,b));a.replace&&(c&&(a=a.replace(c,\"\")),e&&(a=a.replace(e,\"\")));return 1*a};g.extend(w.type.order,{\"date-pre\":function(a){return Date.parse(a)||0},\"html-pre\":function(a){return H(a)?\"\":a.replace?a.replace(/<.*?>/g,\"\").toLowerCase():a+\"\"},\"string-pre\":function(a){return H(a)?\n\"\":\"string\"===typeof a?a.toLowerCase():!a.toString?\"\":a.toString()},\"string-asc\":function(a,b){return a<b?-1:a>b?1:0},\"string-desc\":function(a,b){return a<b?1:a>b?-1:0}});cb(\"\");g.extend(!0,p.ext.renderer,{header:{_:function(a,b,c,e){g(a.nTable).on(\"order.dt.DT\",function(d,f,h,g){if(a===f){d=c.idx;b.removeClass(c.sSortingClass+\" \"+e.sSortAsc+\" \"+e.sSortDesc).addClass(g[d]==\"asc\"?e.sSortAsc:g[d]==\"desc\"?e.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,e){g(\"<div/>\").addClass(e.sSortJUIWrapper).append(b.contents()).append(g(\"<span/>\").addClass(e.sSortIcon+\n\" \"+c.sSortingClassJUI)).appendTo(b);g(a.nTable).on(\"order.dt.DT\",function(d,f,g,i){if(a===f){d=c.idx;b.removeClass(e.sSortAsc+\" \"+e.sSortDesc).addClass(i[d]==\"asc\"?e.sSortAsc:i[d]==\"desc\"?e.sSortDesc:c.sSortingClass);b.find(\"span.\"+e.sSortIcon).removeClass(e.sSortJUIAsc+\" \"+e.sSortJUIDesc+\" \"+e.sSortJUI+\" \"+e.sSortJUIAscAllowed+\" \"+e.sSortJUIDescAllowed).addClass(i[d]==\"asc\"?e.sSortJUIAsc:i[d]==\"desc\"?e.sSortJUIDesc:c.sSortingClassJUI)}})}}});p.render={number:function(a,b,c,e){return{display:function(d){var f=\n0>d?\"-\":\"\",d=Math.abs(parseFloat(d)),g=parseInt(d,10),d=c?b+(d-g).toFixed(c).substring(2):\"\";return f+(e||\"\")+g.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g,a)+d}}}};g.extend(p.ext.internal,{_fnExternApiFunc:Mb,_fnBuildAjax:qa,_fnAjaxUpdate:jb,_fnAjaxParameters:sb,_fnAjaxUpdateDraw:tb,_fnAjaxDataSrc:ra,_fnAddColumn:Ea,_fnColumnOptions:ja,_fnAdjustColumnSizing:X,_fnVisibleToColumnIndex:ka,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:Z,_fnColumnTypes:Ga,_fnApplyColumnDefs:hb,_fnHungarianMap:V,\n_fnCamelToHungarian:G,_fnLanguageCompat:O,_fnBrowserDetect:fb,_fnAddData:I,_fnAddTr:la,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==l?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return g.inArray(c,a.aoData[b].anCells)},_fnGetCellData:v,_fnSetCellData:Ha,_fnSplitObjNotation:Ja,_fnGetObjectDataFn:W,_fnSetObjectDataFn:Q,_fnGetDataMaster:Ka,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ca,_fnGetRowElements:ma,_fnCreateTr:Ia,_fnBuildHead:ib,_fnDrawHead:ea,_fnDraw:L,_fnReDraw:M,\n_fnAddOptionsHtml:lb,_fnDetectHeader:da,_fnGetUniqueThs:pa,_fnFeatureHtmlFilter:nb,_fnFilterComplete:fa,_fnFilterCustom:wb,_fnFilterColumn:vb,_fnFilter:ub,_fnFilterCreateSearch:Pa,_fnEscapeRegex:ua,_fnFilterData:xb,_fnFeatureHtmlInfo:qb,_fnUpdateInfo:Ab,_fnInfoMacros:Bb,_fnInitialise:ga,_fnInitComplete:sa,_fnLengthChange:Qa,_fnFeatureHtmlLength:mb,_fnFeatureHtmlPaginate:rb,_fnPageChange:Sa,_fnFeatureHtmlProcessing:ob,_fnProcessingDisplay:B,_fnFeatureHtmlTable:pb,_fnScrollDraw:Y,_fnApplyToChildren:F,\n_fnCalculateColumnWidths:Fa,_fnThrottle:ta,_fnConvertToWidth:Cb,_fnScrollingWidthAdjust:Eb,_fnGetWidestNode:Db,_fnGetMaxLenString:Fb,_fnStringToCss:s,_fnScrollBarWidth:Gb,_fnSortFlatten:T,_fnSort:kb,_fnSortAria:Ib,_fnSortListener:Ta,_fnSortAttachListener:Na,_fnSortingClasses:wa,_fnSortData:Hb,_fnSaveState:xa,_fnLoadState:Jb,_fnSettingsFromNode:ya,_fnLog:R,_fnMap:D,_fnBindAction:Ua,_fnCallbackReg:x,_fnCallbackFire:u,_fnLengthOverflow:Ra,_fnRenderer:Oa,_fnDataSource:A,_fnRowAttributes:La,_fnCalculateEnd:function(){}});\ng.fn.dataTable=p;g.fn.dataTableSettings=p.settings;g.fn.dataTableExt=p.ext;g.fn.DataTable=function(a){return g(this).dataTable(a).api()};g.each(p,function(a,b){g.fn.DataTable[a]=b});return g.fn.dataTable};\"function\"===typeof define&&define.amd?define(\"datatables\",[\"jquery\"],O):\"object\"===typeof exports?O(require(\"jquery\")):jQuery&&!jQuery.fn.dataTable&&O(jQuery)})(window,document);\n\n","/*!\n DataTables Foundation integration\n ©2011-2014 SpryMedia Ltd - datatables.net/license\n*/\n(function(){var f=function(d,b){d.extend(b.ext.classes,{sWrapper:\"dataTables_wrapper dt-foundation\"});d.extend(!0,b.defaults,{dom:\"<'row'<'small-6 columns'l><'small-6 columns'f>r>t<'row'<'small-6 columns'i><'small-6 columns'p>>\",renderer:\"foundation\"});b.ext.renderer.pageButton.foundation=function(g,f,p,k,h,l){var q=new b.Api(g),r=g.oClasses,i=g.oLanguage.oPaginate,c,e,o=function(b,f){var j,m,n,a,k=function(a){a.preventDefault();\"ellipsis\"!==a.data.action&&q.page(a.data.action).draw(!1)};j=0;for(m=\nf.length;j<m;j++)if(a=f[j],d.isArray(a))o(b,a);else{e=c=\"\";switch(a){case \"ellipsis\":c=\"&hellip;\";e=\"unavailable\";break;case \"first\":c=i.sFirst;e=a+(0<h?\"\":\" unavailable\");break;case \"previous\":c=i.sPrevious;e=a+(0<h?\"\":\" unavailable\");break;case \"next\":c=i.sNext;e=a+(h<l-1?\"\":\" unavailable\");break;case \"last\":c=i.sLast;e=a+(h<l-1?\"\":\" unavailable\");break;default:c=a+1,e=h===a?\"current\":\"\"}c&&(n=d(\"<li>\",{\"class\":r.sPageButton+\" \"+e,\"aria-controls\":g.sTableId,tabindex:g.iTabIndex,id:0===p&&\"string\"===\ntypeof a?g.sTableId+\"_\"+a:null}).append(d(\"<a>\",{href:\"#\"}).html(c)).appendTo(b),g.oApi._fnBindAction(n,{action:a},k))}};o(d(f).empty().html('<ul class=\"pagination\"/>').children(\"ul\"),k)};b.TableTools&&(d.extend(!0,b.TableTools.classes,{container:\"DTTT button-group\",buttons:{normal:\"button\",disabled:\"disabled\"},collection:{container:\"DTTT_dropdown dropdown-menu\",buttons:{normal:\"\",disabled:\"disabled\"}},select:{row:\"active\"}}),d.extend(!0,b.TableTools.DEFAULTS.oTags,{collection:{container:\"ul\",button:\"li\",\nliner:\"a\"}}))};\"function\"===typeof define&&define.amd?define('foundation-datatables',[\"jquery\",\"datatables\"],f):\"object\"===typeof exports?f(require(\"jquery\"),require(\"datatables\")):jQuery&&f(jQuery,jQuery.fn.dataTable)})(window,document);\n\n","define('utils/resource-select',['require','utils/notifier','utils/locale','opennebula/cluster','opennebula/user','opennebula/group'],function(require) {\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  require('opennebula/cluster');\n  require('opennebula/user');\n  require('opennebula/group');\n\n  var _insert = function(id, context, resource, init_val, empty_value,\n      extra_options, filter_att, filter_val, trigger_change_init_val, only_name) {\n\n    var Resource = require('opennebula/' + resource.toLowerCase());\n    $(id, context).html('<i class=\"fa fa-spinner fa-spin\"></i>');\n\n    Resource.list({\n      timeout: true,\n      success: function (request, obj_list) {\n        var select_str = '<select class=\"resource_list_select\">';\n\n        if (empty_value) {\n          select_str += '<option class=\"empty_value\" value=\"\">' +\n                          Locale.tr(\"Please select\") + '</option>';\n        }\n\n        if (resource == \"Cluster\") {\n          if (!extra_options) {\n            extra_options = \"\";\n          }\n\n          extra_options += '<option value=\"-1\">Default (none)</option>';\n        }\n\n        if (extra_options) {\n          select_str += extra_options;\n        }\n\n        if (!filter_att) {\n          filter_att = [];\n        }\n\n        var res_name = Resource.resource;\n        $.each(obj_list, function() {\n          var id = this[res_name].ID;\n          var name = this[res_name].NAME;\n          var add = true;\n\n          for (var i = 0; i < filter_att.length; i++) {\n            if (this[res_name][filter_att[i]] == filter_val[i]) {\n              add = false;\n              break;\n            }\n          }\n\n          if (add) {\n            select_str += '<option elem_id=\"' + id + '\" value=\"' + id + '\">'\n            if (!only_name) {\n              select_str += id + ': '\n            }\n            select_str += name + '</option>';\n          }\n        });\n\n        select_str += \"</select>\";\n\n        $(id, context).html(select_str);\n\n        if (init_val) {\n          $(id + \" .resource_list_select\", context).val(init_val);\n          if (trigger_change_init_val) {\n            $(id + \" .resource_list_select\", context).change();\n          }\n        }\n      },\n      error: Notifier.onError\n    });\n  }\n\n  return {\n    'insert': _insert\n  }\n})\n;\n","define('utils/progress-bar',['require'],function(require) {\n  var _quotaBarHtml = function(usage, limit, info_str, not_html) {\n    percentage = 0;\n\n    if (limit > 0) {\n      percentage = Math.floor((usage / limit) * 100);\n\n      if (percentage > 100) {\n        percentage = 100;\n      }\n    } else if (limit == 0 && usage > 0) {\n      percentage = 100;\n    }\n\n    info_str = info_str || (usage + ' / ' + ((limit >= 0) ? limit : '-'));\n\n    if (not_html) {\n      return {\n        \"percentage\": percentage,\n        \"str\": info_str\n      }\n    } else {\n      html = '<span class=\"progress-text right\" style=\"font-size: 12px\">' + info_str + '</span><br><div class=\"progress radius\" style=\"height: 10px; margin-bottom:0px\"><span class=\"meter\" style=\"width: '          + percentage + '%\"></div>';\n\n      return html;\n    }\n  }\n\n  return {\n    'html': _quotaBarHtml\n  }\n})\n;\n","define('utils/humanize',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  return {\n    'size': _size,\n    'sizeFromB': _sizeFromB,\n    'sizeFromKB': _sizeFromKB,\n    'sizeFromMB': _sizeFromMB,\n    'prettyDuration': _prettyDuration,\n    'prettyTime': _prettyTime,\n    'prettyTimeAxis': _prettyTimeAxis,\n    'prettyPrintJSON': _prettyPrintJSON,\n    'prettyTimeAgo': _format_date\n  }\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  /*\n    Returns a human readable size in Kilo, Mega, Giga or Tera bytes\n    if no from_bytes, assumes value comes in Ks\n  */\n  function _size(value, from_bytes, sufix) {\n    if (typeof(value) === \"undefined\") {\n      value = 0;\n    }\n    var binarySufix = [\"\", \"K\", \"M\", \"G\", \"T\"];\n\n    var i = from_bytes ? 0 : 1;\n    while (value >= 1024 && i < 4) {\n      value = value / 1024;\n      i++;\n    }\n    value = Math.round(value * 10) / 10;\n\n    if (value - Math.round(value) == 0) {\n      value = Math.round(value);\n    }\n\n    if (sufix == undefined) {\n      sufix = \"B\";\n    }\n\n    var st = value + binarySufix[i] + sufix;\n    return st;\n  }\n\n  function _sizeFromB(value) {\n    return _size(value, true);\n  }\n\n  function _sizeFromKB(value) {\n    return _size(value);\n  }\n\n  function _sizeFromMB(value) {\n    if (typeof(value) === \"undefined\") {\n      value = 0;\n    }\n    var binarySufix =  [\"MB\", \"GB\", \"TB\"];\n    var i = 0;\n    while (value >= 1024 && i < 2) {\n      value = value / 1024;\n      i++;\n    }\n    value = Math.round(value * 10) / 10;\n\n    if (value - Math.round(value) == 0) {\n      value = Math.round(value);\n    }\n\n    var st = value + binarySufix[i];\n    return st;\n  }\n\n  function _prettyDuration(duration) {\n    var days = Math.floor(duration / 86400);\n    duration -= days * 86400;\n\n    var hours = Math.floor(duration / 3600) % 24;\n    duration -= hours * 3600;\n\n    var minutes = Math.floor(duration / 60) % 60;\n    duration -= minutes * 60;\n\n    var seconds = duration % 60;\n\n    var str = \"\";\n    if (days > 0) { str += days + 'd '};\n    if (hours > 0) { str += hours + 'h '};\n    str += minutes + 'm ';\n    return str;\n  }\n\n  //introduces 0s before a number until in reaches 'length'.\n  function _pad(number, length) {\n    var str = '' + number;\n    while (str.length < length)\n        str = '0' + str;\n    return str;\n  }\n\n  //turns a Unix-formatted time into a human readable string\n  function _prettyTime(seconds) {\n    var d = new Date();\n    d.setTime(seconds * 1000);\n\n    var secs = _pad(d.getSeconds(), 2);\n    var hour = _pad(d.getHours(), 2);\n    var mins = _pad(d.getMinutes(), 2);\n    var day = _pad(d.getDate(), 2);\n    var month = _pad(d.getMonth() + 1, 2); //getMonths returns 0-11\n    var year = d.getFullYear();\n\n    return hour + \":\" + mins + \":\" + secs + \" \" + day + \"/\" + month + \"/\" + year;\n  }\n\n  // Format time for plot axis\n  // If show date, only date information is shown\n  function _prettyTimeAxis(time, show_date) {\n    var d = new Date();\n    d.setTime(time * 1000);\n\n    var secs = _pad(d.getSeconds(), 2);\n    var hour = _pad(d.getHours(), 2);\n    var mins = _pad(d.getMinutes(), 2);\n    var day = _pad(d.getDate(), 2);\n    var month = _pad(d.getMonth() + 1, 2); //getMonths returns 0-11\n    var year = d.getFullYear();\n\n    if (show_date)\n        return day + \"/\" + month;\n    else\n        return hour + \":\" + mins;\n  }\n\n  // Returns an HTML string with the json keys and values\n  // Attempts to css format output, giving different values to\n  // margins etc. according to depth level etc.\n  // See example of use in plugins.\n  function _prettyPrintJSON(template_json, padding, weight, border_bottom, padding_top_bottom) {\n    var str = \"\"\n    if (!template_json) { return \"Not defined\";}\n    if (!padding) {padding = 10};\n    if (!weight) {weight = \"bold\";}\n    if (!border_bottom) {border_bottom = \"1px solid #efefef\";}\n    if (!padding_top_bottom) {padding_top_bottom = 6;}\n    var field = null;\n\n    if (template_json.constructor == Array) {\n      for (field = 0; field < template_json.length; ++field) {\n        str += _prettyPrintRowJSON(field, template_json[field], padding, weight, border_bottom, padding_top_bottom);\n      }\n    } else {\n      for (field in template_json) {\n        str += _prettyPrintRowJSON(field, template_json[field], padding, weight, border_bottom, padding_top_bottom);\n      }\n    }\n    return str;\n  }\n\n  function _prettyPrintRowJSON(field, value, padding, weight, border_bottom, padding_top_bottom) {\n    var str = \"\";\n\n    if (typeof value == 'object') {\n      //name of field row\n      str += '<tr>\\\n        <td class=\"key_td\" style=\\\n            \"padding-left:' + padding + 'px;\\\n             font-weight:' + weight + ';\\\n             border-bottom:' + border_bottom + ';\\\n             padding-top:' + padding_top_bottom + 'px;\\\n             padding-bottom:' + padding_top_bottom + 'px;\">' + \n          field +\n        '</td>\\\n        <td class=\"value_td\" style=\\\n            \"border-bottom:' + border_bottom + ';\\\n             padding-top:' + padding_top_bottom + 'px;\\\n             padding-bottom:' + padding_top_bottom + 'px\">\\\n        </td>\\\n      </tr>';\n      //attributes rows\n      //empty row - prettyprint - empty row\n      str += _prettyPrintJSON(value, padding + 25, \"normal\", \"0\", 1);\n    } else {\n      str += '<tr>\\\n        <td class=\"key_td\" style=\"\\\n            padding-left:' + padding + 'px;\\\n            font-weight:' + weight + ';\\\n            border-bottom:' + border_bottom + ';\\\n            padding-top:' + padding_top_bottom + 'px;\\\n            padding-bottom:' + padding_top_bottom + 'px\">' +\n          field +\n        '</td>\\\n        <td class=\"value_td\" style=\"\\\n            border-bottom:' + border_bottom + ';\\\n            padding-top:' + padding_top_bottom + 'px;\\\n            padding-bottom:' + padding_top_bottom + 'px\">' +\n          value +\n        '</td>\\\n      </tr>';\n    };\n\n    return str;\n  }\n\n  function _format_date(unix_timestamp) {\n    var difference_in_seconds = (Math.round((new Date()).getTime() / 1000)) - unix_timestamp,\n        current_date = new Date(unix_timestamp * 1000), minutes, hours;\n\n    if(difference_in_seconds < 60) {\n      return difference_in_seconds + \"s\" + \" ago\";\n    } else if (difference_in_seconds < 60*60) {\n      minutes = Math.floor(difference_in_seconds/60);\n      return minutes + \"m\" + \" ago\";\n    } else if (difference_in_seconds < 60*60*24) {\n      hours = Math.floor(difference_in_seconds/60/60);\n      return hours + \"h\" + \" ago\";\n    } else if (difference_in_seconds > 60*60*24){\n      if(current_date.getYear() !== new Date().getYear())\n        return current_date.getDay() + \" \" + Locale.months[current_date.getMonth()].substr(0,3) + \" \" + _fourdigits(current_date.getYear());\n      else {\n          return current_date.getDay() + \" \" + Locale.months[current_date.getMonth()].substr(0,3);\n      }\n    }\n\n    return difference_in_seconds;\n\n    function _fourdigits(number)  {\n          return (number < 1000) ? number + 1900 : number;}\n\n    //function _plural(number) {\n    //  if(parseInt(number) === 1) {\n    //    return \"\";\n    //  }\n    //  return \"s\";\n    //}\n  }\n})\n;\n","define('utils/quotas/quota-widgets',['require','utils/progress-bar','utils/humanize','utils/locale','sunstone','utils/resource-select','./quota-limits','utils/quotas/quota-defaults'],function(require) {\n  // Dependencies\n  var ProgressBar = require('utils/progress-bar');\n  var Humanize = require('utils/humanize');\n  var Locale = require('utils/locale');\n  var Sunstone = require('sunstone');\n  var ResourceSelect = require('utils/resource-select');\n  var QuotaLimits = require('./quota-limits');\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n\n\n  // Constants\n  var QUOTA_LIMIT_DEFAULT   = QuotaLimits.QUOTA_LIMIT_DEFAULT;\n  var QUOTA_LIMIT_UNLIMITED = QuotaLimits.QUOTA_LIMIT_UNLIMITED;\n\n\n  /**\n   * Returns true if the quotas are empty\n   * @param  {Object} resource_info User/Group object\n   * @return {boolean} true if the quotas are empty\n   */\n  function _emptyQuotas(resource_info){\n    return ($.isEmptyObject(resource_info.VM_QUOTA) &&\n            $.isEmptyObject(resource_info.DATASTORE_QUOTA) &&\n            $.isEmptyObject(resource_info.IMAGE_QUOTA) &&\n            $.isEmptyObject(resource_info.NETWORK_QUOTA) );\n  }\n\n  // If the VM quotas are empty, inits the VM counters to 0, and sets the limit\n  // to 'default'. It is not applied to oneadmin user/group\n  function _initEmptyQuotas(resource){\n    if ($.isEmptyObject(resource.VM_QUOTA) && resource.ID != 0){\n      resource.VM_QUOTA = {\n        VM: {\n          VMS         : QUOTA_LIMIT_DEFAULT,\n          VMS_USED    : 0,\n          CPU         : QUOTA_LIMIT_DEFAULT,\n          CPU_USED    : 0,\n          MEMORY      : QUOTA_LIMIT_DEFAULT,\n          MEMORY_USED : 0,\n          VOLATILE_SIZE      : QUOTA_LIMIT_DEFAULT,\n          VOLATILE_SIZE_USED : 0\n        }\n      };\n    }\n  }\n\n  /**\n   * Returns a widget with the VM quotas\n   * @param  {Object} info User/Group object\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   * @return {string} html string\n   */\n  function _vmsWidget(info, default_quotas){\n    var empty_quotas = $.isEmptyObject(info.VM_QUOTA);\n\n    var quotas_tab_html = \"\";\n\n    if (empty_quotas){\n      quotas_tab_html +=\n        '<fieldset style=\"display: none\" class=\"editable_quota\">';\n    } else {\n      quotas_tab_html +=\n        '<fieldset>';\n    }\n\n    var vms_bar;\n\n    if (!empty_quotas){\n      vms_bar = _editableQuotaBar(\n        info.VM_QUOTA.VM.VMS_USED,\n        info.VM_QUOTA.VM.VMS,\n        default_quotas.VM_QUOTA.VM.VMS,\n        { quota_name: \"VM_VMS\"});\n    } else {\n      vms_bar = _editableQuotaBar(\n        0,\n        QUOTA_LIMIT_DEFAULT,\n        default_quotas.VM_QUOTA.VM.VMS,\n        { quota_name: \"VM_VMS\"});\n    }\n\n    quotas_tab_html +=\n        '<legend>' + Locale.tr(\"VMs\") + '</legend>\\\n        <div>'+vms_bar+'</div>\\\n        <br>\\\n      </fieldset>'\n\n    return quotas_tab_html;\n  }\n\n  /**\n   * Returns a widget with the CPU quotas\n   * @param  {Object} info User/Group object\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   * @return {string} html string\n   */\n  function _cpuWidget(info, default_quotas){\n    var empty_quotas = $.isEmptyObject(info.VM_QUOTA);\n\n    var quotas_tab_html = \"\";\n\n    if (empty_quotas){\n      quotas_tab_html +=\n        '<fieldset style=\"display: none\" class=\"editable_quota\">';\n    } else {\n      quotas_tab_html +=\n        '<fieldset>';\n    }\n\n    var cpu_bar;\n\n    if (!empty_quotas){\n      cpu_bar = _editableQuotaBar(\n            info.VM_QUOTA.VM.CPU_USED,\n            info.VM_QUOTA.VM.CPU,\n            default_quotas.VM_QUOTA.VM.CPU,\n            {   is_float: true,\n                quota_name: \"VM_CPU\"\n            });\n    } else {\n      cpu_bar = _editableQuotaBar(\n            0,\n            QUOTA_LIMIT_DEFAULT,\n            default_quotas.VM_QUOTA.VM.CPU,\n            {   is_float: true,\n                quota_name: \"VM_CPU\"\n            });\n    }\n\n    quotas_tab_html +=\n        '<legend>' + Locale.tr(\"CPU\") + '</legend>\\\n        <div>'+cpu_bar+'</div>\\\n        <br>\\\n        </fieldset>'\n\n    return quotas_tab_html;\n  }\n\n  /**\n   * Returns a widget with the memory quotas\n   * @param  {Object} info User/Group object\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   * @return {string} html string\n   */\n  function _memoryWidget(info, default_quotas){\n    var empty_quotas = $.isEmptyObject(info.VM_QUOTA);\n\n    var quotas_tab_html = \"\";\n\n    if (empty_quotas){\n      quotas_tab_html +=\n        '<fieldset style=\"display: none\" class=\"editable_quota\">';\n    } else {\n      quotas_tab_html +=\n        '<fieldset>';\n    }\n\n    var memory_bar;\n\n    if (!empty_quotas){\n      memory_bar = _editableQuotaBar(\n            info.VM_QUOTA.VM.MEMORY_USED,\n            info.VM_QUOTA.VM.MEMORY,\n            default_quotas.VM_QUOTA.VM.MEMORY,\n            {   mb: true,\n                quota_name: \"VM_MEMORY\"\n            });\n    } else {\n      memory_bar = _editableQuotaBar(\n            0,\n            QUOTA_LIMIT_DEFAULT,\n            default_quotas.VM_QUOTA.VM.MEMORY,\n            {   mb: true,\n                quota_name: \"VM_MEMORY\"\n            });\n    }\n\n    quotas_tab_html +=\n        '<legend>' + Locale.tr(\"Memory\") + '</legend>\\\n        <div>'+memory_bar+'</div>\\\n        <br>\\\n        </fieldset>'\n\n    return quotas_tab_html;\n  }\n\n  /**\n   * Returns a widget with the volatile disk quotas\n   * @param  {Object} info User/Group object\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   * @return {string} html string\n   */\n  function _volatileWidget(info, default_quotas){\n    var empty_quotas = $.isEmptyObject(info.VM_QUOTA);\n\n    var quotas_tab_html = \"\";\n\n    if (empty_quotas){\n      quotas_tab_html +=\n        '<fieldset style=\"display: none\" class=\"editable_quota\">';\n    } else {\n      quotas_tab_html +=\n        '<fieldset>';\n    }\n\n    var volatile_bar;\n\n    if (!empty_quotas){\n      volatile_bar = _editableQuotaBar(\n            info.VM_QUOTA.VM.VOLATILE_SIZE_USED,\n            info.VM_QUOTA.VM.VOLATILE_SIZE,\n            default_quotas.VM_QUOTA.VM.VOLATILE_SIZE,\n            {   mb: true,\n                quota_name: \"VM_VOLATILE_SIZE\"\n            });\n    } else {\n      volatile_bar = _editableQuotaBar(\n            0,\n            QUOTA_LIMIT_DEFAULT,\n            default_quotas.VM_QUOTA.VM.VOLATILE_SIZE,\n            {   mb: true,\n                quota_name: \"VM_VOLATILE_SIZE\"\n            });\n    }\n\n    quotas_tab_html +=\n        '<legend>' + Locale.tr(\"Volatile disks\") + '</legend>\\\n        <div>'+volatile_bar+'</div>\\\n        <br>\\\n        </fieldset>'\n\n    return quotas_tab_html;\n  }\n\n  /**\n   * Returns a widget with the image quotas\n   * @param  {Object} info User/Group object\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   * @return {string} html string\n   */\n  function _imageWidget(info, default_quotas) {\n    var empty_quotas = $.isEmptyObject(info.IMAGE_QUOTA);\n\n    var quotas_tab_html = \"\";\n\n    if (empty_quotas){\n      quotas_tab_html +=\n        '<fieldset style=\"padding: 5px 15px; display: none\" class=\"editable_quota\">';\n    } else {\n      quotas_tab_html +=\n        '<fieldset style=\"padding: 5px 15px\">';\n    }\n\n    quotas_tab_html +=\n          '<legend>'+Locale.tr(\"Image\")+'</legend>\\\n          <table class=\"quota_table extended_table image_quota_table\">\\\n          <thead>\\\n              <tr>\\\n                  <th style=\"width:16%\">'+Locale.tr(\"ID\")+'</th>\\\n                  <th style=\"width:84%\">'+Locale.tr(\"Running VMs\")+'</th>\\\n              </tr>\\\n          </thead>\\\n          <tbody>';\n\n    var img_quotas = [];\n\n    if (!empty_quotas){\n      if ($.isArray(info.IMAGE_QUOTA.IMAGE))\n        img_quotas = info.IMAGE_QUOTA.IMAGE;\n      else if (info.IMAGE_QUOTA.IMAGE.ID)\n        img_quotas = [info.IMAGE_QUOTA.IMAGE];\n    }\n\n    for (var i=0; i < img_quotas.length; i++){\n\n      var default_img_quotas = default_quotas.IMAGE_QUOTA[img_quotas[i].ID]\n\n      if (default_img_quotas == undefined){\n        default_img_quotas = {\n          \"RVMS\"  : QUOTA_LIMIT_UNLIMITED\n        }\n      }\n\n      var rvms_bar = _editableQuotaBar(\n        img_quotas[i].RVMS_USED,\n        img_quotas[i].RVMS,\n        default_img_quotas.RVMS,\n        { quota_name: \"IMAGE_RVMS\"});\n\n      quotas_tab_html +=\n        '<tr class=\"image_quota_tr\" quota_id=\"'+img_quotas[i].ID+'\">\\\n          <td>'+img_quotas[i].ID+'</td>\\\n          <td>'+rvms_bar+'</td>\\\n        </tr>';\n    }\n\n    quotas_tab_html +=\n              '</tbody>\\\n              <tfoot>\\\n                  <tr class=\"editable_quota\" style=\"display: none\">\\\n                      <td colspan=\"2\">\\\n                          <a type=\"button\" \\\n                            class=\"button small radius small-12\" \\\n                            id=\"image_add_quota_btn\"><i class=\"fa fa-plus\"></i>\\\n                            '+Locale.tr(\"Add a new quota\")+'\\\n                          </a>\\\n                      </td>\\\n                  </tr>\\\n              </tfoot>\\\n          </table>\\\n      </fieldset>';\n\n    return quotas_tab_html;\n  }\n\n  /**\n   * @param  {Object} context jquery object, e.g. $(\"panel-id\")\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   */\n  function _setupImageWidget(context, default_quotas){\n    context.off(\"click\", \"#image_add_quota_btn\");\n    context.on(\"click\", \"#image_add_quota_btn\", function(){\n\n      $(\".image_quota_table tbody\", context).append(\n        '<tr class=\"image_quota_tr\" quota_id=\"-1\">\\\n          <td class=\"image_select\" colspan=\"2\"></td>\\\n          <td class=\"rvms_bar\"></td>\\\n        </tr>');\n\n      ResourceSelect.insert(\n        'td.image_select',\n        $(\".image_quota_table tbody tr\", context).last(),\n        \"Image\",\n        null, true);\n\n      $(\".image_quota_table tbody tr\", context).last().off(\n                                            \"change\", \".resource_list_select\");\n\n      $(\".image_quota_table tbody tr\", context).last().on(\n                                  \"change\", \".resource_list_select\", function(){\n\n          $(this).parents(\"td\").attr(\"colspan\", \"1\");\n\n          var image_id = $(this).val();\n          var tr = $(this).parents(\"tr\");\n          tr.attr(\"quota_id\", image_id);\n\n          var default_img_quotas = default_quotas.IMAGE_QUOTA[image_id];\n\n          if (default_img_quotas == undefined){\n            default_img_quotas = {\n              \"RVMS\"  : QUOTA_LIMIT_UNLIMITED\n            }\n          }\n\n          var rvms_bar = _editableQuotaBar(\n            0,\n            QUOTA_LIMIT_DEFAULT,\n            default_img_quotas.RVMS,\n            { quota_name: \"IMAGE_RVMS\"});\n\n          $(\"td.rvms_bar\", tr).html(rvms_bar);\n\n          $(\".editable_quota\", tr).show();\n          $(\".non_editable_quota\", tr).hide();\n\n          $.each($(\"input\", tr), function(){\n            initQuotaInputValue(this);\n          });\n        });\n\n      return false;\n    });\n  }\n\n  /**\n   * Returns a widget with the datastore quotas\n   * @param  {Object} info User/Group object\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   * @return {string} html string\n   */\n  function _datastoreWidget(info, default_quotas) {\n    var empty_quotas = $.isEmptyObject(info.DATASTORE_QUOTA);\n\n    var quotas_tab_html = \"\";\n\n    if (empty_quotas){\n      quotas_tab_html +=\n        '<fieldset style=\"padding: 5px 15px; display: none\" class=\"editable_quota\">';\n    } else {\n      quotas_tab_html +=\n        '<fieldset style=\"padding: 5px 15px\">';\n    }\n\n    quotas_tab_html +=\n        '<legend>'+Locale.tr(\"Datastore\")+'</legend>\\\n        <table class=\"quota_table extended_table ds_quota_table\">\\\n          <thead>\\\n              <tr>\\\n                <th style=\"width:16%\">'+Locale.tr(\"ID\")+'</th>\\\n                <th style=\"width:42%\">'+Locale.tr(\"Images\")+'</th>\\\n                <th style=\"width:42%\">'+Locale.tr(\"Size\")+'</th>\\\n              </tr>\\\n          </thead>\\\n          <tbody>';\n\n    var ds_quotas = [];\n\n    if (!empty_quotas){\n      if ($.isArray(info.DATASTORE_QUOTA.DATASTORE))\n        ds_quotas = info.DATASTORE_QUOTA.DATASTORE;\n      else if (info.DATASTORE_QUOTA.DATASTORE.ID)\n        ds_quotas = [info.DATASTORE_QUOTA.DATASTORE];\n    }\n\n    for (var i=0; i < ds_quotas.length; i++){\n\n      var default_ds_quotas = default_quotas.DATASTORE_QUOTA[ds_quotas[i].ID]\n\n      if (default_ds_quotas == undefined){\n        default_ds_quotas = {\n          \"IMAGES\"    : QUOTA_LIMIT_UNLIMITED,\n          \"SIZE\"      : QUOTA_LIMIT_UNLIMITED\n        }\n      }\n\n      var img_bar = _editableQuotaBar(\n          ds_quotas[i].IMAGES_USED,\n          ds_quotas[i].IMAGES,\n          default_ds_quotas.IMAGES,\n          { quota_name: \"DS_IMAGES\" });\n\n      var size_bar = _editableQuotaBar(\n          ds_quotas[i].SIZE_USED,\n          ds_quotas[i].SIZE,\n          default_ds_quotas.SIZE,\n          {   mb: true,\n              quota_name: \"DS_SIZE\"\n          });\n\n      quotas_tab_html +=\n      '<tr class=\"ds_quota_tr\" quota_id=\"'+ds_quotas[i].ID+'\">\\\n        <td>'+ds_quotas[i].ID+'</td>\\\n        <td>'+img_bar+'</td>\\\n        <td>'+size_bar+'</td>\\\n      </tr>';\n    }\n\n    quotas_tab_html +=\n            '</tbody>\\\n            <tfoot>\\\n                <tr class=\"editable_quota\" style=\"display: none\">\\\n                    <td colspan=\"3\">\\\n                        <a type=\"button\" \\\n                          class=\"button small radius small-12\" \\\n                          id=\"ds_add_quota_btn\"><i class=\"fa fa-plus\"></i>\\\n                          '+Locale.tr(\"Add a new quota\")+'\\\n                        </a>\\\n                    </td>\\\n                </tr>\\\n            </tfoot>\\\n        </table>\\\n        <div class=\"\">\\\n        </div>\\\n    </fieldset>';\n\n    return quotas_tab_html;\n  }\n\n  /**\n   * @param  {Object} context jquery object, e.g. $(\"panel-id\")\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   */\n  function _setupDatastoreWidget(context, default_quotas){\n    context.off(\"click\", \"#ds_add_quota_btn\");\n    context.on(\"click\", \"#ds_add_quota_btn\", function(){\n\n      $(\".ds_quota_table tbody\", context).append(\n        '<tr class=\"ds_quota_tr\" quota_id=\"-1\">\\\n          <td class=\"ds_select\" colspan=\"3\"></td>\\\n          <td class=\"img_bar\"></td>\\\n          <td class=\"size_bar\"></td>\\\n        </tr>');\n\n      ResourceSelect.insert(\n        'td.ds_select',\n        $(\".ds_quota_table tbody tr\", context).last(),\n        \"Datastore\",\n        null, true);\n\n      $(\".ds_quota_table tbody tr\", context).last().off(\n                                            \"change\", \".resource_list_select\");\n\n      $(\".ds_quota_table tbody tr\", context).last().on(\n                                \"change\", \".resource_list_select\", function(){\n\n        $(this).parents(\"td\").attr(\"colspan\", \"1\");\n\n        var ds_id = $(this).val();\n        var tr = $(this).parents(\"tr\");\n        tr.attr(\"quota_id\", ds_id);\n\n        var default_ds_quotas = default_quotas.DATASTORE_QUOTA[ds_id];\n\n        if (default_ds_quotas == undefined){\n            default_ds_quotas = {\n                \"IMAGES\"    : QUOTA_LIMIT_UNLIMITED,\n                \"SIZE\"      : QUOTA_LIMIT_UNLIMITED\n            }\n        }\n\n        var img_bar = _editableQuotaBar(\n            0,\n            QUOTA_LIMIT_DEFAULT,\n            default_ds_quotas.IMAGES,\n            { quota_name: \"DS_IMAGES\" });\n\n        var size_bar = _editableQuotaBar(\n            0,\n            QUOTA_LIMIT_DEFAULT,\n            default_ds_quotas.SIZE,\n            {   mb: true,\n                quota_name: \"DS_SIZE\"\n            });\n\n        $(\"td.img_bar\", tr).html(img_bar);\n        $(\"td.size_bar\", tr).html(size_bar);\n\n        $(\".editable_quota\", tr).show();\n        $(\".non_editable_quota\", tr).hide();\n\n        $.each($(\"input\", tr), function(){\n          initQuotaInputValue(this);\n        });\n      });\n\n      return false;\n    });\n\n    return false;\n  }\n\n  /**\n   * Returns a widget with the network quotas\n   * @param  {Object} info User/Group object\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   * @return {string} html string\n   */\n  function _networkWidget(info, default_quotas) {\n    var empty_quotas = $.isEmptyObject(info.NETWORK_QUOTA);\n\n    var quotas_tab_html = \"\";\n\n    if (empty_quotas){\n      quotas_tab_html +=\n        '<fieldset style=\"padding: 5px 15px; display: none\" class=\"editable_quota\">';\n    } else {\n      quotas_tab_html +=\n        '<fieldset style=\"padding: 5px 15px\">';\n    }\n\n    quotas_tab_html +=\n        '<legend>'+Locale.tr(\"Network\")+'</legend>\\\n        <table class=\"quota_table extended_table network_quota_table\">\\\n            <thead>\\\n                <tr>\\\n                    <th style=\"width:16%\">'+Locale.tr(\"ID\")+'</th>\\\n                    <th style=\"width:84%\">'+Locale.tr(\"Leases\")+'</th>\\\n                </tr>\\\n            </thead>\\\n            <tbody>';\n\n    var net_quotas = [];\n\n    if (!empty_quotas){\n      if ($.isArray(info.NETWORK_QUOTA.NETWORK))\n        net_quotas = info.NETWORK_QUOTA.NETWORK;\n      else if (info.NETWORK_QUOTA.NETWORK.ID)\n        net_quotas = [info.NETWORK_QUOTA.NETWORK];\n    }\n\n    for (var i=0; i < net_quotas.length; i++){\n      var default_net_quotas = default_quotas.NETWORK_QUOTA[net_quotas[i].ID]\n\n      if (default_net_quotas == undefined){\n        default_net_quotas = {\n          \"LEASES\" : QUOTA_LIMIT_UNLIMITED\n        }\n      }\n\n      var leases_bar = _editableQuotaBar(\n          net_quotas[i].LEASES_USED,\n          net_quotas[i].LEASES,\n          default_net_quotas.LEASES,\n          { quota_name: \"NETWORK_LEASES\" });\n\n      quotas_tab_html +=\n        '<tr class=\"network_quota_tr\" quota_id=\"'+net_quotas[i].ID+'\">\\\n          <td>'+net_quotas[i].ID+'</td>\\\n          <td>'+leases_bar+'</td>\\\n        </tr>';\n    }\n\n    quotas_tab_html +=\n            '</tbody>\\\n            <tfoot>\\\n              <tr class=\"editable_quota\" style=\"display: none\">\\\n                <td colspan=\"2\">\\\n                  <a type=\"button\" \\\n                    class=\"button small radius small-12\" \\\n                    id=\"network_add_quota_btn\"><i class=\"fa fa-plus\"></i>\\\n                    '+Locale.tr(\"Add a new quota\")+'\\\n                  </a>\\\n                </td>\\\n              </tr>\\\n            </tfoot>\\\n          </table>\\\n        </fieldset>';\n\n    return quotas_tab_html;\n  }\n\n  /**\n   * @param  {Object} context jquery object, e.g. $(\"panel-id\")\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   */\n  function _setupNetworkWidget(context, default_quotas){\n    context.off(\"click\", \"#network_add_quota_btn\");\n    context.on(\"click\", \"#network_add_quota_btn\", function(){\n\n      $(\".network_quota_table tbody\", context).append(\n          '<tr class=\"network_quota_tr\" quota_id=\"-1\">\\\n              <td class=\"network_select\" colspan=\"2\"></td>\\\n              <td class=\"leases_bar\"></td>\\\n          </tr>');\n\n      ResourceSelect.insert(\n          'td.network_select',\n          $(\".network_quota_table tbody tr\", context).last(),\n          \"Network\",\n          null, true);\n\n      $(\".network_quota_table tbody tr\", context).last().off(\n                                            \"change\", \".resource_list_select\");\n\n      $(\".network_quota_table tbody tr\", context).last().on(\n                                  \"change\", \".resource_list_select\", function(){\n\n        $(this).parents(\"td\").attr(\"colspan\", \"1\");\n\n        var network_id = $(this).val();\n        var tr = $(this).parents(\"tr\");\n        tr.attr(\"quota_id\", network_id);\n\n        var default_net_quotas = default_quotas.NETWORK_QUOTA[network_id];\n\n        if (default_net_quotas == undefined){\n          default_net_quotas = {\n            \"LEASES\" : QUOTA_LIMIT_UNLIMITED\n          }\n        }\n\n        var leases_bar = _editableQuotaBar(\n            0,\n            QUOTA_LIMIT_DEFAULT,\n            default_net_quotas.LEASES,\n            { quota_name: \"NETWORK_LEASES\" });\n\n        $(\"td.leases_bar\", tr).html(leases_bar);\n\n        $(\".editable_quota\", tr).show();\n        $(\".non_editable_quota\", tr).hide();\n\n        $.each($(\"input\", tr), function(){\n          initQuotaInputValue(this);\n        });\n      });\n\n      return false;\n    });\n\n    return false;\n  }\n\n  /**\n   * Creates a quotas panel\n   * @param  {Object} resourece_info User/Group object\n   * @param  {Object} default_quotas default quotas for Users/Groups\n   * @param  {boolean} edit_enabled true to show the edit button and functionality\n   * @return {string} html string with all the quota widgets\n   */\n  function _initQuotasPanel(resource_info, default_quotas, edit_enabled){\n    _initEmptyQuotas(resource_info);\n\n    var vms_quota = _vmsWidget(resource_info, default_quotas);\n    var cpu_quota = _cpuWidget(resource_info, default_quotas);\n    var memory_quota = _memoryWidget(resource_info, default_quotas);\n    var volatile_size_quota = _volatileWidget(resource_info, default_quotas);\n\n    var image_quota = _imageWidget(resource_info, default_quotas);\n    var network_quota = _networkWidget(resource_info, default_quotas);\n    var datastore_quota = _datastoreWidget(resource_info, default_quotas);\n\n    var quotas_html;\n\n    quotas_html = '<div class=\"quotas\">';\n\n    if (edit_enabled) {\n        quotas_html +=\n        '<div class=\"row\">\\\n          <div class=\"large-12 columns\">\\\n            <span class=\"right\">\\\n              <button class=\"button secondary small radius\" id=\"edit_quotas_button\">\\\n                <span class=\"fa fa-pencil-square-o\"></span> '+Locale.tr(\"Edit\")+'\\\n              </button>\\\n              <button class=\"button alert small radius\" id=\"cancel_quotas_button\" style=\"display: none\">\\\n                '+Locale.tr(\"Cancel\")+'\\\n              </button>\\\n              <button class=\"button success small radius\" id=\"submit_quotas_button\" style=\"display: none\">\\\n                '+Locale.tr(\"Apply\")+'\\\n              </button>\\\n            </span>\\\n          </div>\\\n        </div>';\n    }\n\n    if (_emptyQuotas(resource_info)) {\n        quotas_html +=\n        '<div class=\"row non_editable_quota\">\\\n          <div class=\"large-8 large-centered columns\">\\\n            <div class=\"text-center\">\\\n              <span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">\\\n                <i class=\"fa fa-cloud fa-stack-2x\"></i>\\\n                <i class=\"fa fa-align-left fa-stack-1x fa-inverse\"></i>\\\n              </span>\\\n              <br>\\\n              <p style=\"font-size: 18px; color: #999\">\\\n                '+Locale.tr(\"There are no quotas defined\")+'\\\n              </p>\\\n            </div>\\\n          </div>\\\n        </div>';\n    }\n\n    quotas_html +=\n        '<div class=\"row\">\\\n          <div class=\"large-6 columns\">' + vms_quota + '</div>\\\n          <div class=\"large-6 columns\">' + cpu_quota + '</div>\\\n        </div>\\\n        <div class=\"row\">\\\n          <div class=\"large-6 columns\">' + memory_quota + '</div>\\\n          <div class=\"large-6 columns\">' + volatile_size_quota+ '</div>\\\n        </div>\\\n        <br><br>\\\n        <div class=\"row\">\\\n          <div class=\"large-6 columns\">' + image_quota + '</div>\\\n          <div class=\"large-6 columns right\">' + network_quota + '</div>\\\n        </div>\\\n        <br><br>\\\n        <div class=\"row\">\\\n          <div class=\"large-12 columns\">' + datastore_quota + '</div>\\\n        </div>\\\n      </div>';\n\n    return quotas_html;\n  }\n\n  function input_val(input){\n    switch(input.attr(\"quota_mode\")) {\n      case \"edit\":\n        return input.val();\n      case \"default\":\n        return QUOTA_LIMIT_DEFAULT;\n      case \"unlimited\":\n        return QUOTA_LIMIT_UNLIMITED;\n    }\n  }\n\n  function initQuotaInputValue(input){\n    switch($(input).val()) {\n      case QUOTA_LIMIT_DEFAULT:\n        $(input).parents(\".quotabar_container\").find(\".quotabar_default_btn\").click();\n        break;\n      case QUOTA_LIMIT_UNLIMITED:\n        $(input).parents(\".quotabar_container\").find(\".quotabar_unlimited_btn\").click();\n        break;\n      default:\n        break;\n    }\n  }\n\n  function quotasPanelEditAction(parent_container){\n    $(\"#edit_quotas_button\", parent_container).hide();\n    $(\"#cancel_quotas_button\", parent_container).show();\n    $(\"#submit_quotas_button\", parent_container).show();\n\n    $.each($(\"div.quotabar_container input\", parent_container), function(){\n      initQuotaInputValue(this);\n    });\n\n    $(\".editable_quota\", parent_container).show();\n    $(\".non_editable_quota\", parent_container).hide();\n\n    return false;\n  }\n\n  function setupQuotasBarButtons(resource_info, parent_container){\n    parent_container.off(\"click\", \".quotabar_edit_btn\");\n    parent_container.on(\"click\",  \".quotabar_edit_btn\", function() {\n      var input = $(this).parents(\".quotabar_container\").find(\"input\");\n\n      if(input.attr(\"quota_mode\") != \"edit\"){\n        input.attr(\"quota_mode\", \"edit\");\n        input.attr(\"disabled\", false);\n        input.val( input.attr(\"quota_limit\") >= 0 ? input.attr(\"quota_limit\") : \"0\" );\n      }\n\n      return false;\n    });\n\n    parent_container.off(\"click\", \".quotabar_default_btn\");\n    parent_container.on(\"click\",  \".quotabar_default_btn\", function() {\n      var input = $(this).parents(\".quotabar_container\").find(\"input\");\n\n      var default_value = input.attr(\"quota_default\");\n\n      if (default_value == QUOTA_LIMIT_UNLIMITED) {\n        default_value = \"∞\";\n      }\n\n      input.val( Locale.tr(\"Default\") + \" (\" + default_value + \")\" );\n      input.attr(\"quota_mode\", \"default\");\n      input.attr(\"disabled\", \"disabled\");\n\n      return false;\n    });\n\n    parent_container.off(\"click\", \".quotabar_unlimited_btn\");\n    parent_container.on(\"click\",  \".quotabar_unlimited_btn\", function() {\n      var input = $(this).parents(\".quotabar_container\").find(\"input\");\n\n      input.val(Locale.tr(\"Unlimited\"));\n      input.attr(\"quota_mode\", \"unlimited\");\n      input.attr(\"disabled\", \"disabled\");\n\n      return false;\n    });\n  }\n\n  function retrieveQuotasValues(parent_container){\n    var obj = {};\n\n    obj[\"VM\"] = {\n      \"CPU\"           : input_val( $(\"div[quota_name=VM_CPU] input\", parent_container) ),\n      \"MEMORY\"        : input_val( $(\"div[quota_name=VM_MEMORY] input\", parent_container) ),\n      \"VMS\"           : input_val( $(\"div[quota_name=VM_VMS] input\", parent_container) ),\n      \"VOLATILE_SIZE\" : input_val( $(\"div[quota_name=VM_VOLATILE_SIZE] input\", parent_container) )\n    };\n\n    $.each($(\"tr.image_quota_tr\", parent_container), function(){\n      if($(this).attr(\"quota_id\") != \"-1\"){\n        if (obj[\"IMAGE\"] == undefined) {\n          obj[\"IMAGE\"] = [];\n        }\n\n        obj[\"IMAGE\"].push({\n          \"ID\"    : $(this).attr(\"quota_id\"),\n          \"RVMS\"  : input_val( $(\"div[quota_name=IMAGE_RVMS] input\", this) )\n        });\n      }\n    });\n\n    $.each($(\"tr.network_quota_tr\", parent_container), function(){\n      if($(this).attr(\"quota_id\") != \"-1\"){\n        if (obj[\"NETWORK\"] == undefined) {\n          obj[\"NETWORK\"] = [];\n        }\n\n        obj[\"NETWORK\"].push({\n          \"ID\"    : $(this).attr(\"quota_id\"),\n          \"LEASES\": input_val( $(\"div[quota_name=NETWORK_LEASES] input\", this) )\n        });\n      }\n    });\n\n    $.each($(\"tr.ds_quota_tr\", parent_container), function(){\n      if($(this).attr(\"quota_id\") != \"-1\"){\n        if (obj[\"DATASTORE\"] == undefined) {\n          obj[\"DATASTORE\"] = [];\n        }\n\n        obj[\"DATASTORE\"].push({\n          \"ID\"    : $(this).attr(\"quota_id\"),\n          \"IMAGES\": input_val( $(\"div[quota_name=DS_IMAGES] input\", this) ),\n          \"SIZE\"  : input_val( $(\"div[quota_name=DS_SIZE] input\", this) )\n        });\n      }\n    });\n\n    return obj;\n  }\n\n  /**\n   * Setups the html returned by initQuotasPanel, adding listeners for the edit\n   * buttons\n   * @param  {Object} resourece_info User/Group object\n   * @param  {Object} parent_container jquery object, e.g. $(\"panel-id\")\n   * @param  {boolean} edit_enabled true to show the edit button and functionality\n   * @param  {string} resource_name User or Group\n   */\n  function _setupQuotasPanel(resource_info, parent_container, edit_enabled, resource_name){\n    if (edit_enabled) {\n      parent_container.off(\"click\", \"#edit_quotas_button\");\n      parent_container.on(\"click\",  \"#edit_quotas_button\", function() {\n        return quotasPanelEditAction(parent_container);\n      });\n\n      parent_container.off(\"click\", \"#cancel_quotas_button\");\n      parent_container.on(\"click\",  \"#cancel_quotas_button\", function() {\n        Sunstone.runAction(resource_name+\".show\", resource_info.ID);\n        return false;\n      });\n\n      parent_container.off(\"click\", \"#submit_quotas_button\");\n      parent_container.on(\"click\",  \"#submit_quotas_button\", function() {\n        var obj = retrieveQuotasValues(parent_container);\n        Sunstone.runAction(resource_name+\".set_quota\", [resource_info.ID], obj);\n\n        return false;\n      });\n\n      setupQuotasBarButtons(resource_info, parent_container);\n\n      var default_quotas = QuotaDefaults.getDefaultQuotas(resource_name);\n\n      _setupImageWidget(parent_container, default_quotas);\n      _setupNetworkWidget(parent_container, default_quotas);\n      _setupDatastoreWidget(parent_container, default_quotas);\n    }\n  }\n\n  /*\n   * opts.is_float : true to parse quota_limit and default_limit as floats instead of int\n   * opts.mb : true if the quota is in MB\n   * opts.quota_name : string to identify the quota widget\n   */\n  function _editableQuotaBar(usage, quota_limit, default_limit, opts){\n\n      if (!opts) opts = {};\n      if (!opts.quota_name) opts.quota_name = \"\";\n\n      var limit;\n\n      if (opts.is_float){\n          usage = parseFloat(usage, 10);\n          limit = _quotaFloatLimit(quota_limit, default_limit);\n      } else {\n          usage = parseInt(usage, 10);\n          limit = _quotaIntLimit(quota_limit, default_limit);\n      }\n\n      percentage = 0;\n\n      if (limit > 0){\n          percentage = Math.floor((usage / limit) * 100);\n\n          if (percentage > 100){\n              percentage = 100;\n          }\n      } else if (limit == 0 && usage > 0){\n          percentage = 100;\n      }\n\n      var info_str;\n\n      if (opts.mb){\n          info_str = Humanize.size(usage * 1024)+' / '\n              +((limit >= 0) ? Humanize.size(limit * 1024) : '-')\n      } else {\n          info_str = usage+' / '+((limit >= 0) ? limit : '-');\n      }\n\n      html =\n      '<div class=\"quotabar_container\" quota_name=\"'+opts.quota_name+'\">\\\n        <div class=\"row collapse editable_quota\" style=\"font-size: 12px; display: none\">\\\n          <div class=\"small-2 columns\">\\\n            <label style=\"font-size: 12px; margin: 0px\" class=\"inline right\">'+ usage + ' /&nbsp;</label>\\\n          </div>';\n\n\n      if (opts.mb){\n          html +=\n          '<div class=\"small-4 columns\">';\n      }else{\n          html +=\n          '<div class=\"small-5 columns\">';\n      }\n\n      html +=\n            '<input type=\"text\" style=\"font-size: 12px; margin: 0px\" quota_mode=\"edit\" quota_limit=\"'+quota_limit+'\" quota_default=\"'+default_limit+'\" value=\"'+quota_limit+'\"/>\\\n          </div>';\n\n      if (opts.mb){\n          html +=\n          '<div class=\"small-1 columns\">\\\n            <span style=\"font-size: 12px; height: 2.0625rem !important; line-height: 2.0625rem !important;\" class=\"postfix\">MB</span>\\\n          </div>';\n      }\n\n      html +=\n          '<div class=\"small-5 columns\">\\\n            <ul class=\"button-group\">\\\n              <li><a style=\"font-size: 1em; margin: 0px\" class=\"button tiny secondary quotabar_edit_btn\"><span class=\"fa fa-pencil\"></span></a></li>\\\n              <li><a style=\"font-size: 1em; margin: 0px\" class=\"button tiny secondary quotabar_default_btn\"><span class=\"fa fa-file-o\"></span></a></li>\\\n              <li><a style=\"font-size: 1em; margin: 0px\" class=\"button tiny secondary quotabar_unlimited_btn\"><strong>&infin;</strong></a></li>\\\n            </ul>\\\n          </div>\\\n        </div>\\\n        <div class=\"row collapse non_editable_quota\">\\\n          <div class=\"large-12 columns\">\\\n            <div class=\"progress-text right\" style=\"font-size: 12px\">\\\n              '+info_str+'\\\n            </div>\\\n            <br>\\\n            <div class=\"progress radius\" style=\"height: 10px; margin-bottom:0px\">\\\n              <span class=\"meter\" style=\"width: '\n                +percentage+'%\" />\\\n            </div>\\\n          </div>\\\n        </div>\\\n      </div>';\n      return html;\n  }\n\n  function _quotaInfo(usage, limit, default_limit, not_html){\n      var int_usage = parseInt(usage, 10);\n      var int_limit = _quotaIntLimit(limit, default_limit);\n      return _quotaBaseInfo(int_usage, int_limit, null, not_html);\n  }\n\n  function _quotaMBInfo(usage, limit, default_limit, not_html){\n      var int_usage = parseInt(usage, 10);\n      var int_limit = _quotaIntLimit(limit, default_limit);\n\n      info_str = Humanize.size(int_usage * 1024)+' / '\n              +((int_limit >= 0) ? Humanize.size(int_limit * 1024) : '-')\n\n      return _quotaBaseInfo(int_usage, int_limit, info_str, not_html);\n  }\n\n  function _quotaFloatInfo(usage, limit, default_limit, not_html){\n      var float_usage = parseFloat(usage, 10);\n      var float_limit = _quotaFloatLimit(limit, default_limit);\n      return _quotaBaseInfo(float_usage, float_limit, null, not_html);\n  }\n\n  function _quotaBaseInfo(usage, limit, info_str, not_html){\n      percentage = 0;\n\n      if (limit > 0){\n          percentage = Math.floor((usage / limit) * 100);\n\n          if (percentage > 100){\n              percentage = 100;\n          }\n      } else if (limit == 0 && usage > 0){\n          percentage = 100;\n      }\n\n      info_str = info_str || ( usage+' / '+((limit >= 0) ? limit : '-') );\n\n      if (not_html) {\n          return {\n              \"percentage\": percentage,\n              \"str\": info_str\n          }\n      } else {\n          html = '<span class=\"progress-text right\" style=\"font-size: 12px\">'+info_str+'</span><br><div class=\"progress radius\" style=\"height: 10px; margin-bottom:0px\"><span class=\"meter\" style=\"width: '\n              +percentage+'%\"></div>';\n\n          return html;\n      }\n  }\n\n  function _quotaBar(usage, limit, default_limit){\n    var int_usage = parseInt(usage, 10);\n    var int_limit = _quotaIntLimit(limit, default_limit);\n    return ProgressBar.html(int_usage, int_limit, null);\n  }\n\n  function _quotaBarMB(usage, limit, default_limit){\n    var int_usage = parseInt(usage, 10);\n    var int_limit = _quotaIntLimit(limit, default_limit);\n\n    info_str = Humanize.size(int_usage * 1024)+' / ' +\n                  ((int_limit >= 0) ? Humanize.size(int_limit * 1024) : '-');\n\n    return ProgressBar.html(int_usage, int_limit, info_str);\n  }\n\n  function _quotaBarFloat(usage, limit, default_limit){\n    var float_usage = parseFloat(usage, 10);\n    var float_limit = _quotaFloatLimit(limit, default_limit);\n    return ProgressBar.html(float_usage, float_limit, null);\n  }\n\n  function _quotaIntLimit(limit, default_limit){\n    i_limit = parseInt(limit, 10);\n    i_default_limit = parseInt(default_limit, 10);\n\n    if (limit == QUOTA_LIMIT_DEFAULT){\n      i_limit = i_default_limit;\n    }\n\n    if (isNaN(i_limit))\n    {\n      i_limit = 0;\n    }\n\n    return i_limit\n  }\n\n  function _quotaFloatLimit(limit, default_limit){\n    f_limit = parseFloat(limit, 10);\n    f_default_limit = parseFloat(default_limit, 10);\n\n    if (f_limit == parseFloat(QUOTA_LIMIT_DEFAULT, 10)){\n      f_limit = f_default_limit;\n    }\n\n    if (isNaN(f_limit))\n    {\n      f_limit = 0;\n    }\n\n    return f_limit\n  }\n\n  //============================================================================\n  // Quotas dialog\n  //============================================================================\n\n  function _quotas_tmpl(){\n    return '<div class=\"row\">\\\n        <div class=\"large-12 columns\">\\\n          <dl class=\"tabs right-info-tabs text-center\" data-tab>\\\n               <dd class=\"active\"><a href=\"#vm_quota\"><i class=\"fa fa-cloud\"></i><br>'+Locale.tr(\"VM\")+'</a></dd>\\\n               <dd><a href=\"#datastore_quota\"><i class=\"fa fa-folder-open\"></i><br>'+Locale.tr(\"Datastore\")+'</a></dd>\\\n               <dd><a href=\"#image_quota\"><i class=\"fa fa-upload\"></i><br>'+Locale.tr(\"Image\")+'</a></dd>\\\n               <dd><a href=\"#network_quota\"><i class=\"fa fa-globe\"></i><br>'+Locale.tr(\"VNet\")+'</a></dd>\\\n          </dl>\\\n        </div>\\\n      </div>\\\n      <div class=\"row\">\\\n        <div class=\"tabs-content\">\\\n          <div id=\"vm_quota\" class=\"content active\">\\\n          </div>\\\n          <div id=\"datastore_quota\" class=\"content\">\\\n          </div>\\\n          <div id=\"image_quota\" class=\"content\">\\\n          </div>\\\n          <div id=\"network_quota\" class=\"content\">\\\n          </div>\\\n        </div>\\\n      </div>';\n  }\n\n  /**\n   * Sets up a dialog to edit and update user and group quotas\n   */\n  function _setupQuotasDialog(context){\n    $('form', context).submit(function(){\n      var obj = retrieveQuotasValues(context);\n      var action = $('div.form_buttons button',this).val();\n      var sel_elems = Sunstone.getAction(action).elements();\n      Sunstone.runAction(action,sel_elems,obj);\n\n      return false;\n    });\n  }\n\n  function _populateQuotasDialog(resource_info, default_quotas, context){\n    var vms_quota = _vmsWidget(resource_info, default_quotas);\n    var cpu_quota = _cpuWidget(resource_info, default_quotas);\n    var memory_quota = _memoryWidget(resource_info, default_quotas);\n    var volatile_size_quota = _volatileWidget(resource_info, default_quotas);\n\n    var image_quota = _imageWidget(resource_info, default_quotas);\n    var network_quota = _networkWidget(resource_info, default_quotas);\n    var datastore_quota = _datastoreWidget(resource_info, default_quotas);\n\n    $(\"#vm_quota\", context).html(\n        '<div class=\"large-6 columns\">' + vms_quota + '</div>\\\n        <div class=\"large-6 columns\">' + cpu_quota + '</div>\\\n        <div class=\"large-6 columns\">' + memory_quota + '</div>\\\n        <div class=\"large-6 columns\">' + volatile_size_quota+ '</div>');\n\n    $(\"#datastore_quota\", context).html(\n        '<div class=\"large-12 columns\">' + datastore_quota + '</div>');\n\n    $(\"#image_quota\", context).html(\n        '<div class=\"large-12 columns\">' + image_quota + '</div>');\n\n    $(\"#network_quota\", context).html(\n        '<div class=\"large-12 columns\">' + network_quota + '</div>');\n\n    setupQuotasBarButtons(resource_info, context);\n\n    _setupImageWidget(context, default_quotas);\n    _setupNetworkWidget(context, default_quotas);\n    _setupDatastoreWidget(context, default_quotas);\n\n    quotasPanelEditAction(context);\n\n    context.foundation();\n  }\n\n  return {\n    'initEmptyQuotas': _initEmptyQuotas,\n    'quotaBar': _quotaBar,\n    'quotaBarMB': _quotaBarMB,\n    'quotaBarFloat': _quotaBarFloat,\n    'initQuotasPanel': _initQuotasPanel,\n    'setupQuotasPanel': _setupQuotasPanel,\n    'dialogHTML': _quotas_tmpl,\n    'setupQuotasDialog': _setupQuotasDialog,\n    'populateQuotasDialog': _populateQuotasDialog,\n    'quotaFloatInfo': _quotaFloatInfo,\n    'quotaMBInfo': _quotaMBInfo,\n    'quotaInfo': _quotaInfo\n  };\n});\n\n","define('templates/helpers/advancedSection',['require','hbs/handlebars'],function(require) {\n  var Handlebars = require('hbs/handlebars');\n\n  var id = 0;\n\n  var advancedSection = function(title, options) {\n    id += 1;\n\n    var html_id = \"advanced_section_\" + id;\n\n    return new Handlebars.SafeString(\n      '<div class=\"accordion_advanced\">'+\n        '<a href=\"#'+html_id+'\" class=\"accordion_advanced_toggle\">'+\n            '<i class=\"fa fa-fw fa-chevron-down\"/>'+\n            '<i class=\"fa fa-fw fa-chevron-up\"/>'+\n            title+\n        '</a>'+\n        '<div id=\"'+html_id+'\" class=\"content hidden\">'+\n          options.fn(this) +\n        '</div>'+\n      '</div>'\n    );\n  };\n\n  Handlebars.registerHelper('advancedSection', advancedSection);\n\n  return advancedSection;\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/accounting/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/advancedSection'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"    <div class=\\\"row acct_table\\\">\\n      <div class=\\\"large-12 columns graph_legend\\\">\\n        <h3 class=\\\"subheader\\\"><small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small></h3>\\n      </div>\\n      <div class=\\\"large-12 columns\\\" style=\\\"overflow:auto\\\">\\n        <table id=\\\"acct_cpu_datatable\\\" class=\\\"datatable twelve\\\">\\n          <thead>\\n            <tr>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Date\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            </tr>\\n          </thead>\\n          <tbody id=\\\"tbody_acct_cpu_datatable\\\">\\n          </tbody>\\n        </table>\\n      </div>\\n    </div>\\n    <div class=\\\"row acct_table\\\">\\n      <div class=\\\"large-12 columns graph_legend\\\">\\n        <h3 class=\\\"subheader\\\"><small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory GB hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small></h3>\\n      </div>\\n      <div class=\\\"large-12 columns\\\" style=\\\"overflow:auto\\\">\\n        <table id=\\\"acct_mem_datatable\\\" class=\\\"datatable twelve\\\">\\n          <thead>\\n            <tr>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Date\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            </tr>\\n          </thead>\\n          <tbody id=\\\"tbody_acct_mem_datatable\\\">\\n          </tbody>\\n        </table>\\n      </div>\\n    </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"row\\\">\\n  <div id=\\\"acct_start_time_container\\\" class=\\\"left columns\\\">\\n    <label for=\\\"acct_start_time\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Start time\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input id=\\\"acct_start_time\\\" type=\\\"date\\\" placeholder=\\\"2013-06-30\\\"/>\\n  </div>\\n  <div id=\\\"acct_end_time_container\\\" class=\\\"left columns\\\">\\n    <label for=\\\"acct_end_time\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"End time\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input id=\\\"acct_end_time\\\" type=\\\"date\\\" placeholder=\\\"2013-12-30\\\"/>\\n  </div>\\n  <div id=\\\"acct_group_by_container\\\" class=\\\"left columns\\\">\\n    <label for=\\\"acct_group_by\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group by\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <select id=\\\"acct_group_by\\\" name=\\\"acct_group_by\\\">\\n      <option value=\\\"user\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"group\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"vm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n    </select>\\n  </div>\\n  <div id=\\\"acct_owner_container\\\" class=\\\"left columns\\\">\\n    <label for=\\\"acct_owner\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filter\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-5 columns\\\">\\n        <select id=\\\"acct_owner\\\" name=\\\"acct_owner\\\">\\n          <option value=\\\"acct_owner_all\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"All\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          <option value=\\\"acct_owner_group\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          <option value=\\\"acct_owner_user\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        </select>\\n      </div>\\n      <div class=\\\"large-7 columns\\\">\\n        <div id=\\\"acct_owner_select\\\"/>\\n      </div>\\n    </div>\\n  </div>\\n  <div id=\\\"acct_button_container\\\" class=\\\"left columns\\\" style=\\\"margin-top: 15px\\\">\\n    <button class=\\\"button radius success large-12\\\" id=\\\"acct_submit\\\" type=\\\"button\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Get Accounting\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n    </button>\\n  </div>\\n</div>\\n<br>\\n<div id=\\\"acct_placeholder\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-8 large-centered columns\\\">\\n      <div class=\\\"text-center\\\">\\n        <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\">\\n          <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n          <i class=\\\"fa fa-bar-chart-o fa-stack-1x fa-inverse\\\"></i>\\n        </span>\\n        <div id=\\\"acct_no_data\\\" class=\\\"hidden\\\">\\n          <br>\\n          <p style=\\\"font-size: 18px; color: #999\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"There are no accounting records\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </p>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n<div id=\\\"acct_content\\\" class=\\\"hidden\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns graph_legend\\\">\\n      <h3 class=\\\"subheader\\\"><small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small></h3>\\n    </div>\\n    <div class=\\\"large-12 columns\\\">\\n      <div class=\\\"large-12 columns centered graph\\\" id=\\\"acct_cpu_graph\\\" style=\\\"height: 200px;\\\">\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns graph_legend\\\">\\n      <h3 class=\\\"subheader\\\"><small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory GB hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small></h3>\\n    </div>\\n    <div class=\\\"large-12 columns\\\">\\n      <div class=\\\"large-12 columns centered graph\\\" id=\\\"acct_mem_graph\\\" style=\\\"height: 200px;\\\">\\n      </div>\\n    </div>\\n  </div>\\n  <br>\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Accounting Tables\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/accounting/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","/* Javascript plotting library for jQuery, version 0.8.3.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\n*/\n\n// first an inline dependency, jquery.colorhelpers.js, we inline it here\n// for convenience\n\n/* Plugin for jQuery for working with colors.\n *\n * Version 1.1.\n *\n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */\n(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return\"rgb(\"+[o.r,o.g,o.b].join(\",\")+\")\"}else{return\"rgba(\"+[o.r,o.g,o.b,o.a].join(\",\")+\")\"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=\"\"&&c!=\"transparent\")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),\"body\"));if(c==\"rgba(0, 0, 0, 0)\")c=\"transparent\";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name==\"transparent\")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);\n\n// the actual Flot code\n(function($) {\n\n\t// Cache the prototype hasOwnProperty for faster access\n\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n    // A shim to provide 'detach' to jQuery versions prior to 1.4.  Using a DOM\n    // operation produces the same effect as detach, i.e. removing the element\n    // without touching its jQuery data.\n\n    // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+.\n\n    if (!$.fn.detach) {\n        $.fn.detach = function() {\n            return this.each(function() {\n                if (this.parentNode) {\n                    this.parentNode.removeChild( this );\n                }\n            });\n        };\n    }\n\n\t///////////////////////////////////////////////////////////////////////////\n\t// The Canvas object is a wrapper around an HTML5 <canvas> tag.\n\t//\n\t// @constructor\n\t// @param {string} cls List of classes to apply to the canvas.\n\t// @param {element} container Element onto which to append the canvas.\n\t//\n\t// Requiring a container is a little iffy, but unfortunately canvas\n\t// operations don't work unless the canvas is attached to the DOM.\n\n\tfunction Canvas(cls, container) {\n\n\t\tvar element = container.children(\".\" + cls)[0];\n\n\t\tif (element == null) {\n\n\t\t\telement = document.createElement(\"canvas\");\n\t\t\telement.className = cls;\n\n\t\t\t$(element).css({ direction: \"ltr\", position: \"absolute\", left: 0, top: 0 })\n\t\t\t\t.appendTo(container);\n\n\t\t\t// If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas\n\n\t\t\tif (!element.getContext) {\n\t\t\t\tif (window.G_vmlCanvasManager) {\n\t\t\t\t\telement = window.G_vmlCanvasManager.initElement(element);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(\"Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element = element;\n\n\t\tvar context = this.context = element.getContext(\"2d\");\n\n\t\t// Determine the screen's ratio of physical to device-independent\n\t\t// pixels.  This is the ratio between the canvas width that the browser\n\t\t// advertises and the number of pixels actually present in that space.\n\n\t\t// The iPhone 4, for example, has a device-independent width of 320px,\n\t\t// but its screen is actually 640px wide.  It therefore has a pixel\n\t\t// ratio of 2, while most normal devices have a ratio of 1.\n\n\t\tvar devicePixelRatio = window.devicePixelRatio || 1,\n\t\t\tbackingStoreRatio =\n\t\t\t\tcontext.webkitBackingStorePixelRatio ||\n\t\t\t\tcontext.mozBackingStorePixelRatio ||\n\t\t\t\tcontext.msBackingStorePixelRatio ||\n\t\t\t\tcontext.oBackingStorePixelRatio ||\n\t\t\t\tcontext.backingStorePixelRatio || 1;\n\n\t\tthis.pixelRatio = devicePixelRatio / backingStoreRatio;\n\n\t\t// Size the canvas to match the internal dimensions of its container\n\n\t\tthis.resize(container.width(), container.height());\n\n\t\t// Collection of HTML div layers for text overlaid onto the canvas\n\n\t\tthis.textContainer = null;\n\t\tthis.text = {};\n\n\t\t// Cache of text fragments and metrics, so we can avoid expensively\n\t\t// re-calculating them when the plot is re-rendered in a loop.\n\n\t\tthis._textCache = {};\n\t}\n\n\t// Resizes the canvas to the given dimensions.\n\t//\n\t// @param {number} width New width of the canvas, in pixels.\n\t// @param {number} width New height of the canvas, in pixels.\n\n\tCanvas.prototype.resize = function(width, height) {\n\n\t\tif (width <= 0 || height <= 0) {\n\t\t\tthrow new Error(\"Invalid dimensions for plot, width = \" + width + \", height = \" + height);\n\t\t}\n\n\t\tvar element = this.element,\n\t\t\tcontext = this.context,\n\t\t\tpixelRatio = this.pixelRatio;\n\n\t\t// Resize the canvas, increasing its density based on the display's\n\t\t// pixel ratio; basically giving it more pixels without increasing the\n\t\t// size of its element, to take advantage of the fact that retina\n\t\t// displays have that many more pixels in the same advertised space.\n\n\t\t// Resizing should reset the state (excanvas seems to be buggy though)\n\n\t\tif (this.width != width) {\n\t\t\telement.width = width * pixelRatio;\n\t\t\telement.style.width = width + \"px\";\n\t\t\tthis.width = width;\n\t\t}\n\n\t\tif (this.height != height) {\n\t\t\telement.height = height * pixelRatio;\n\t\t\telement.style.height = height + \"px\";\n\t\t\tthis.height = height;\n\t\t}\n\n\t\t// Save the context, so we can reset in case we get replotted.  The\n\t\t// restore ensure that we're really back at the initial state, and\n\t\t// should be safe even if we haven't saved the initial state yet.\n\n\t\tcontext.restore();\n\t\tcontext.save();\n\n\t\t// Scale the coordinate space to match the display density; so even though we\n\t\t// may have twice as many pixels, we still want lines and other drawing to\n\t\t// appear at the same size; the extra pixels will just make them crisper.\n\n\t\tcontext.scale(pixelRatio, pixelRatio);\n\t};\n\n\t// Clears the entire canvas area, not including any overlaid HTML text\n\n\tCanvas.prototype.clear = function() {\n\t\tthis.context.clearRect(0, 0, this.width, this.height);\n\t};\n\n\t// Finishes rendering the canvas, including managing the text overlay.\n\n\tCanvas.prototype.render = function() {\n\n\t\tvar cache = this._textCache;\n\n\t\t// For each text layer, add elements marked as active that haven't\n\t\t// already been rendered, and remove those that are no longer active.\n\n\t\tfor (var layerKey in cache) {\n\t\t\tif (hasOwnProperty.call(cache, layerKey)) {\n\n\t\t\t\tvar layer = this.getTextLayer(layerKey),\n\t\t\t\t\tlayerCache = cache[layerKey];\n\n\t\t\t\tlayer.hide();\n\n\t\t\t\tfor (var styleKey in layerCache) {\n\t\t\t\t\tif (hasOwnProperty.call(layerCache, styleKey)) {\n\t\t\t\t\t\tvar styleCache = layerCache[styleKey];\n\t\t\t\t\t\tfor (var key in styleCache) {\n\t\t\t\t\t\t\tif (hasOwnProperty.call(styleCache, key)) {\n\n\t\t\t\t\t\t\t\tvar positions = styleCache[key].positions;\n\n\t\t\t\t\t\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\t\t\t\t\t\tif (position.active) {\n\t\t\t\t\t\t\t\t\t\tif (!position.rendered) {\n\t\t\t\t\t\t\t\t\t\t\tlayer.append(position.element);\n\t\t\t\t\t\t\t\t\t\t\tposition.rendered = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tpositions.splice(i--, 1);\n\t\t\t\t\t\t\t\t\t\tif (position.rendered) {\n\t\t\t\t\t\t\t\t\t\t\tposition.element.detach();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (positions.length == 0) {\n\t\t\t\t\t\t\t\t\tdelete styleCache[key];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlayer.show();\n\t\t\t}\n\t\t}\n\t};\n\n\t// Creates (if necessary) and returns the text overlay container.\n\t//\n\t// @param {string} classes String of space-separated CSS classes used to\n\t//     uniquely identify the text layer.\n\t// @return {object} The jQuery-wrapped text-layer div.\n\n\tCanvas.prototype.getTextLayer = function(classes) {\n\n\t\tvar layer = this.text[classes];\n\n\t\t// Create the text layer if it doesn't exist\n\n\t\tif (layer == null) {\n\n\t\t\t// Create the text layer container, if it doesn't exist\n\n\t\t\tif (this.textContainer == null) {\n\t\t\t\tthis.textContainer = $(\"<div class='flot-text'></div>\")\n\t\t\t\t\t.css({\n\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t'font-size': \"smaller\",\n\t\t\t\t\t\tcolor: \"#545454\"\n\t\t\t\t\t})\n\t\t\t\t\t.insertAfter(this.element);\n\t\t\t}\n\n\t\t\tlayer = this.text[classes] = $(\"<div></div>\")\n\t\t\t\t.addClass(classes)\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tbottom: 0,\n\t\t\t\t\tright: 0\n\t\t\t\t})\n\t\t\t\t.appendTo(this.textContainer);\n\t\t}\n\n\t\treturn layer;\n\t};\n\n\t// Creates (if necessary) and returns a text info object.\n\t//\n\t// The object looks like this:\n\t//\n\t// {\n\t//     width: Width of the text's wrapper div.\n\t//     height: Height of the text's wrapper div.\n\t//     element: The jQuery-wrapped HTML div containing the text.\n\t//     positions: Array of positions at which this text is drawn.\n\t// }\n\t//\n\t// The positions array contains objects that look like this:\n\t//\n\t// {\n\t//     active: Flag indicating whether the text should be visible.\n\t//     rendered: Flag indicating whether the text is currently visible.\n\t//     element: The jQuery-wrapped HTML div containing the text.\n\t//     x: X coordinate at which to draw the text.\n\t//     y: Y coordinate at which to draw the text.\n\t// }\n\t//\n\t// Each position after the first receives a clone of the original element.\n\t//\n\t// The idea is that that the width, height, and general 'identity' of the\n\t// text is constant no matter where it is placed; the placements are a\n\t// secondary property.\n\t//\n\t// Canvas maintains a cache of recently-used text info objects; getTextInfo\n\t// either returns the cached element or creates a new entry.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {string} text Text string to retrieve info for.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which to rotate the text, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\t// @param {number=} width Maximum width of the text before it wraps.\n\t// @return {object} a text info object.\n\n\tCanvas.prototype.getTextInfo = function(layer, text, font, angle, width) {\n\n\t\tvar textStyle, layerCache, styleCache, info;\n\n\t\t// Cast the value to a string, in case we were given a number or such\n\n\t\ttext = \"\" + text;\n\n\t\t// If the font is a font-spec object, generate a CSS font definition\n\n\t\tif (typeof font === \"object\") {\n\t\t\ttextStyle = font.style + \" \" + font.variant + \" \" + font.weight + \" \" + font.size + \"px/\" + font.lineHeight + \"px \" + font.family;\n\t\t} else {\n\t\t\ttextStyle = font;\n\t\t}\n\n\t\t// Retrieve (or create) the cache for the text's layer and styles\n\n\t\tlayerCache = this._textCache[layer];\n\n\t\tif (layerCache == null) {\n\t\t\tlayerCache = this._textCache[layer] = {};\n\t\t}\n\n\t\tstyleCache = layerCache[textStyle];\n\n\t\tif (styleCache == null) {\n\t\t\tstyleCache = layerCache[textStyle] = {};\n\t\t}\n\n\t\tinfo = styleCache[text];\n\n\t\t// If we can't find a matching element in our cache, create a new one\n\n\t\tif (info == null) {\n\n\t\t\tvar element = $(\"<div></div>\").html(text)\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t'max-width': width,\n\t\t\t\t\ttop: -9999\n\t\t\t\t})\n\t\t\t\t.appendTo(this.getTextLayer(layer));\n\n\t\t\tif (typeof font === \"object\") {\n\t\t\t\telement.css({\n\t\t\t\t\tfont: textStyle,\n\t\t\t\t\tcolor: font.color\n\t\t\t\t});\n\t\t\t} else if (typeof font === \"string\") {\n\t\t\t\telement.addClass(font);\n\t\t\t}\n\n\t\t\tinfo = styleCache[text] = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\telement: element,\n\t\t\t\tpositions: []\n\t\t\t};\n\n\t\t\telement.detach();\n\t\t}\n\n\t\treturn info;\n\t};\n\n\t// Adds a text string to the canvas text overlay.\n\t//\n\t// The text isn't drawn immediately; it is marked as rendering, which will\n\t// result in its addition to the canvas on the next render pass.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {number} x X coordinate at which to draw the text.\n\t// @param {number} y Y coordinate at which to draw the text.\n\t// @param {string} text Text string to draw.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which to rotate the text, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\t// @param {number=} width Maximum width of the text before it wraps.\n\t// @param {string=} halign Horizontal alignment of the text; either \"left\",\n\t//     \"center\" or \"right\".\n\t// @param {string=} valign Vertical alignment of the text; either \"top\",\n\t//     \"middle\" or \"bottom\".\n\n\tCanvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) {\n\n\t\tvar info = this.getTextInfo(layer, text, font, angle, width),\n\t\t\tpositions = info.positions;\n\n\t\t// Tweak the div's position to match the text's alignment\n\n\t\tif (halign == \"center\") {\n\t\t\tx -= info.width / 2;\n\t\t} else if (halign == \"right\") {\n\t\t\tx -= info.width;\n\t\t}\n\n\t\tif (valign == \"middle\") {\n\t\t\ty -= info.height / 2;\n\t\t} else if (valign == \"bottom\") {\n\t\t\ty -= info.height;\n\t\t}\n\n\t\t// Determine whether this text already exists at this position.\n\t\t// If so, mark it for inclusion in the next render pass.\n\n\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\tif (position.x == x && position.y == y) {\n\t\t\t\tposition.active = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// If the text doesn't exist at this position, create a new entry\n\n\t\t// For the very first position we'll re-use the original element,\n\t\t// while for subsequent ones we'll clone it.\n\n\t\tposition = {\n\t\t\tactive: true,\n\t\t\trendered: false,\n\t\t\telement: positions.length ? info.element.clone() : info.element,\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\n\t\tpositions.push(position);\n\n\t\t// Move the element to its final position within the container\n\n\t\tposition.element.css({\n\t\t\ttop: Math.round(y),\n\t\t\tleft: Math.round(x),\n\t\t\t'text-align': halign\t// In case the text wraps\n\t\t});\n\t};\n\n\t// Removes one or more text strings from the canvas text overlay.\n\t//\n\t// If no parameters are given, all text within the layer is removed.\n\t//\n\t// Note that the text is not immediately removed; it is simply marked as\n\t// inactive, which will result in its removal on the next render pass.\n\t// This avoids the performance penalty for 'clear and redraw' behavior,\n\t// where we potentially get rid of all text on a layer, but will likely\n\t// add back most or all of it later, as when redrawing axes, for example.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {number=} x X coordinate of the text.\n\t// @param {number=} y Y coordinate of the text.\n\t// @param {string=} text Text string to remove.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which the text is rotated, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\n\tCanvas.prototype.removeText = function(layer, x, y, text, font, angle) {\n\t\tif (text == null) {\n\t\t\tvar layerCache = this._textCache[layer];\n\t\t\tif (layerCache != null) {\n\t\t\t\tfor (var styleKey in layerCache) {\n\t\t\t\t\tif (hasOwnProperty.call(layerCache, styleKey)) {\n\t\t\t\t\t\tvar styleCache = layerCache[styleKey];\n\t\t\t\t\t\tfor (var key in styleCache) {\n\t\t\t\t\t\t\tif (hasOwnProperty.call(styleCache, key)) {\n\t\t\t\t\t\t\t\tvar positions = styleCache[key].positions;\n\t\t\t\t\t\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\t\t\t\t\t\tposition.active = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar positions = this.getTextInfo(layer, text, font, angle).positions;\n\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\tif (position.x == x && position.y == y) {\n\t\t\t\t\tposition.active = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t// The top-level container for the entire plot.\n\n    function Plot(placeholder, data_, options_, plugins) {\n        // data is on the form:\n        //   [ series1, series2 ... ]\n        // where series is either just the data as [ [x1, y1], [x2, y2], ... ]\n        // or { data: [ [x1, y1], [x2, y2], ... ], label: \"some label\", ... }\n\n        var series = [],\n            options = {\n                // the color theme used for graphs\n                colors: [\"#edc240\", \"#afd8f8\", \"#cb4b4b\", \"#4da74d\", \"#9440ed\"],\n                legend: {\n                    show: true,\n                    noColumns: 1, // number of colums in legend table\n                    labelFormatter: null, // fn: string -> string\n                    labelBoxBorderColor: \"#ccc\", // border color for the little label boxes\n                    container: null, // container (as jQuery object) to put legend in, null means default on top of graph\n                    position: \"ne\", // position of default legend container within plot\n                    margin: 5, // distance from grid edge to default legend container within plot\n                    backgroundColor: null, // null means auto-detect\n                    backgroundOpacity: 0.85, // set to 0 to avoid background\n                    sorted: null    // default to no legend sorting\n                },\n                xaxis: {\n                    show: null, // null = auto-detect, true = always, false = never\n                    position: \"bottom\", // or \"top\"\n                    mode: null, // null or \"time\"\n                    font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: \"italic\", weight: \"bold\", family: \"sans-serif\", variant: \"small-caps\" }\n                    color: null, // base color, labels, ticks\n                    tickColor: null, // possibly different color of ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    transform: null, // null or f: number -> number to transform axis\n                    inverseTransform: null, // if transform is set, this should be the inverse function\n                    min: null, // min. value to show, null means set automatically\n                    max: null, // max. value to show, null means set automatically\n                    autoscaleMargin: null, // margin in % to add if auto-setting min/max\n                    ticks: null, // either [1, 3] or [[1, \"a\"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks\n                    tickFormatter: null, // fn: number -> string\n                    labelWidth: null, // size of tick labels in pixels\n                    labelHeight: null,\n                    reserveSpace: null, // whether to reserve space even if axis isn't shown\n                    tickLength: null, // size in pixels of ticks, or \"full\" for whole line\n                    alignTicksWithAxis: null, // axis number or null for no sync\n                    tickDecimals: null, // no. of decimals, null means auto\n                    tickSize: null, // number or [number, \"unit\"]\n                    minTickSize: null // number or [number, \"unit\"]\n                },\n                yaxis: {\n                    autoscaleMargin: 0.02,\n                    position: \"left\" // or \"right\"\n                },\n                xaxes: [],\n                yaxes: [],\n                series: {\n                    points: {\n                        show: false,\n                        radius: 3,\n                        lineWidth: 2, // in pixels\n                        fill: true,\n                        fillColor: \"#ffffff\",\n                        symbol: \"circle\" // or callback\n                    },\n                    lines: {\n                        // we don't put in show: false so we can see\n                        // whether lines were actively disabled\n                        lineWidth: 2, // in pixels\n                        fill: false,\n                        fillColor: null,\n                        steps: false\n                        // Omit 'zero', so we can later default its value to\n                        // match that of the 'fill' option.\n                    },\n                    bars: {\n                        show: false,\n                        lineWidth: 2, // in pixels\n                        barWidth: 1, // in units of the x axis\n                        fill: true,\n                        fillColor: null,\n                        align: \"left\", // \"left\", \"right\", or \"center\"\n                        horizontal: false,\n                        zero: true\n                    },\n                    shadowSize: 3,\n                    highlightColor: null\n                },\n                grid: {\n                    show: true,\n                    aboveData: false,\n                    color: \"#545454\", // primary color used for outline and labels\n                    backgroundColor: null, // null for transparent, else color\n                    borderColor: null, // set if different from the grid color\n                    tickColor: null, // color for the ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    margin: 0, // distance from the canvas edge to the grid\n                    labelMargin: 5, // in pixels\n                    axisMargin: 8, // in pixels\n                    borderWidth: 2, // in pixels\n                    minBorderMargin: null, // in pixels, null means taken from points radius\n                    markings: null, // array of ranges or fn: axes -> array of ranges\n                    markingsColor: \"#f4f4f4\",\n                    markingsLineWidth: 2,\n                    // interactive stuff\n                    clickable: false,\n                    hoverable: false,\n                    autoHighlight: true, // highlight in case mouse is near\n                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item\n                },\n                interaction: {\n                    redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow\n                },\n                hooks: {}\n            },\n        surface = null,     // the canvas for the plot itself\n        overlay = null,     // canvas for interactive stuff on top of plot\n        eventHolder = null, // jQuery object that events should be bound to\n        ctx = null, octx = null,\n        xaxes = [], yaxes = [],\n        plotOffset = { left: 0, right: 0, top: 0, bottom: 0},\n        plotWidth = 0, plotHeight = 0,\n        hooks = {\n            processOptions: [],\n            processRawData: [],\n            processDatapoints: [],\n            processOffset: [],\n            drawBackground: [],\n            drawSeries: [],\n            draw: [],\n            bindEvents: [],\n            drawOverlay: [],\n            shutdown: []\n        },\n        plot = this;\n\n        // public functions\n        plot.setData = setData;\n        plot.setupGrid = setupGrid;\n        plot.draw = draw;\n        plot.getPlaceholder = function() { return placeholder; };\n        plot.getCanvas = function() { return surface.element; };\n        plot.getPlotOffset = function() { return plotOffset; };\n        plot.width = function () { return plotWidth; };\n        plot.height = function () { return plotHeight; };\n        plot.offset = function () {\n            var o = eventHolder.offset();\n            o.left += plotOffset.left;\n            o.top += plotOffset.top;\n            return o;\n        };\n        plot.getData = function () { return series; };\n        plot.getAxes = function () {\n            var res = {}, i;\n            $.each(xaxes.concat(yaxes), function (_, axis) {\n                if (axis)\n                    res[axis.direction + (axis.n != 1 ? axis.n : \"\") + \"axis\"] = axis;\n            });\n            return res;\n        };\n        plot.getXAxes = function () { return xaxes; };\n        plot.getYAxes = function () { return yaxes; };\n        plot.c2p = canvasToAxisCoords;\n        plot.p2c = axisToCanvasCoords;\n        plot.getOptions = function () { return options; };\n        plot.highlight = highlight;\n        plot.unhighlight = unhighlight;\n        plot.triggerRedrawOverlay = triggerRedrawOverlay;\n        plot.pointOffset = function(point) {\n            return {\n                left: parseInt(xaxes[axisNumber(point, \"x\") - 1].p2c(+point.x) + plotOffset.left, 10),\n                top: parseInt(yaxes[axisNumber(point, \"y\") - 1].p2c(+point.y) + plotOffset.top, 10)\n            };\n        };\n        plot.shutdown = shutdown;\n        plot.destroy = function () {\n            shutdown();\n            placeholder.removeData(\"plot\").empty();\n\n            series = [];\n            options = null;\n            surface = null;\n            overlay = null;\n            eventHolder = null;\n            ctx = null;\n            octx = null;\n            xaxes = [];\n            yaxes = [];\n            hooks = null;\n            highlights = [];\n            plot = null;\n        };\n        plot.resize = function () {\n        \tvar width = placeholder.width(),\n        \t\theight = placeholder.height();\n            surface.resize(width, height);\n            overlay.resize(width, height);\n        };\n\n        // public attributes\n        plot.hooks = hooks;\n\n        // initialize\n        initPlugins(plot);\n        parseOptions(options_);\n        setupCanvases();\n        setData(data_);\n        setupGrid();\n        draw();\n        bindEvents();\n\n\n        function executeHooks(hook, args) {\n            args = [plot].concat(args);\n            for (var i = 0; i < hook.length; ++i)\n                hook[i].apply(this, args);\n        }\n\n        function initPlugins() {\n\n            // References to key classes, allowing plugins to modify them\n\n            var classes = {\n                Canvas: Canvas\n            };\n\n            for (var i = 0; i < plugins.length; ++i) {\n                var p = plugins[i];\n                p.init(plot, classes);\n                if (p.options)\n                    $.extend(true, options, p.options);\n            }\n        }\n\n        function parseOptions(opts) {\n\n            $.extend(true, options, opts);\n\n            // $.extend merges arrays, rather than replacing them.  When less\n            // colors are provided than the size of the default palette, we\n            // end up with those colors plus the remaining defaults, which is\n            // not expected behavior; avoid it by replacing them here.\n\n            if (opts && opts.colors) {\n            \toptions.colors = opts.colors;\n            }\n\n            if (options.xaxis.color == null)\n                options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n            if (options.yaxis.color == null)\n                options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n\n            if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility\n                options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color;\n            if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility\n                options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color;\n\n            if (options.grid.borderColor == null)\n                options.grid.borderColor = options.grid.color;\n            if (options.grid.tickColor == null)\n                options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n\n            // Fill in defaults for axis options, including any unspecified\n            // font-spec fields, if a font-spec was provided.\n\n            // If no x/y axis options were provided, create one of each anyway,\n            // since the rest of the code assumes that they exist.\n\n            var i, axisOptions, axisCount,\n                fontSize = placeholder.css(\"font-size\"),\n                fontSizeDefault = fontSize ? +fontSize.replace(\"px\", \"\") : 13,\n                fontDefaults = {\n                    style: placeholder.css(\"font-style\"),\n                    size: Math.round(0.8 * fontSizeDefault),\n                    variant: placeholder.css(\"font-variant\"),\n                    weight: placeholder.css(\"font-weight\"),\n                    family: placeholder.css(\"font-family\")\n                };\n\n            axisCount = options.xaxes.length || 1;\n            for (i = 0; i < axisCount; ++i) {\n\n                axisOptions = options.xaxes[i];\n                if (axisOptions && !axisOptions.tickColor) {\n                    axisOptions.tickColor = axisOptions.color;\n                }\n\n                axisOptions = $.extend(true, {}, options.xaxis, axisOptions);\n                options.xaxes[i] = axisOptions;\n\n                if (axisOptions.font) {\n                    axisOptions.font = $.extend({}, fontDefaults, axisOptions.font);\n                    if (!axisOptions.font.color) {\n                        axisOptions.font.color = axisOptions.color;\n                    }\n                    if (!axisOptions.font.lineHeight) {\n                        axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15);\n                    }\n                }\n            }\n\n            axisCount = options.yaxes.length || 1;\n            for (i = 0; i < axisCount; ++i) {\n\n                axisOptions = options.yaxes[i];\n                if (axisOptions && !axisOptions.tickColor) {\n                    axisOptions.tickColor = axisOptions.color;\n                }\n\n                axisOptions = $.extend(true, {}, options.yaxis, axisOptions);\n                options.yaxes[i] = axisOptions;\n\n                if (axisOptions.font) {\n                    axisOptions.font = $.extend({}, fontDefaults, axisOptions.font);\n                    if (!axisOptions.font.color) {\n                        axisOptions.font.color = axisOptions.color;\n                    }\n                    if (!axisOptions.font.lineHeight) {\n                        axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15);\n                    }\n                }\n            }\n\n            // backwards compatibility, to be removed in future\n            if (options.xaxis.noTicks && options.xaxis.ticks == null)\n                options.xaxis.ticks = options.xaxis.noTicks;\n            if (options.yaxis.noTicks && options.yaxis.ticks == null)\n                options.yaxis.ticks = options.yaxis.noTicks;\n            if (options.x2axis) {\n                options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);\n                options.xaxes[1].position = \"top\";\n                // Override the inherit to allow the axis to auto-scale\n                if (options.x2axis.min == null) {\n                    options.xaxes[1].min = null;\n                }\n                if (options.x2axis.max == null) {\n                    options.xaxes[1].max = null;\n                }\n            }\n            if (options.y2axis) {\n                options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);\n                options.yaxes[1].position = \"right\";\n                // Override the inherit to allow the axis to auto-scale\n                if (options.y2axis.min == null) {\n                    options.yaxes[1].min = null;\n                }\n                if (options.y2axis.max == null) {\n                    options.yaxes[1].max = null;\n                }\n            }\n            if (options.grid.coloredAreas)\n                options.grid.markings = options.grid.coloredAreas;\n            if (options.grid.coloredAreasColor)\n                options.grid.markingsColor = options.grid.coloredAreasColor;\n            if (options.lines)\n                $.extend(true, options.series.lines, options.lines);\n            if (options.points)\n                $.extend(true, options.series.points, options.points);\n            if (options.bars)\n                $.extend(true, options.series.bars, options.bars);\n            if (options.shadowSize != null)\n                options.series.shadowSize = options.shadowSize;\n            if (options.highlightColor != null)\n                options.series.highlightColor = options.highlightColor;\n\n            // save options on axes for future reference\n            for (i = 0; i < options.xaxes.length; ++i)\n                getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];\n            for (i = 0; i < options.yaxes.length; ++i)\n                getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];\n\n            // add hooks from options\n            for (var n in hooks)\n                if (options.hooks[n] && options.hooks[n].length)\n                    hooks[n] = hooks[n].concat(options.hooks[n]);\n\n            executeHooks(hooks.processOptions, [options]);\n        }\n\n        function setData(d) {\n            series = parseData(d);\n            fillInSeriesOptions();\n            processData();\n        }\n\n        function parseData(d) {\n            var res = [];\n            for (var i = 0; i < d.length; ++i) {\n                var s = $.extend(true, {}, options.series);\n\n                if (d[i].data != null) {\n                    s.data = d[i].data; // move the data instead of deep-copy\n                    delete d[i].data;\n\n                    $.extend(true, s, d[i]);\n\n                    d[i].data = s.data;\n                }\n                else\n                    s.data = d[i];\n                res.push(s);\n            }\n\n            return res;\n        }\n\n        function axisNumber(obj, coord) {\n            var a = obj[coord + \"axis\"];\n            if (typeof a == \"object\") // if we got a real axis, extract number\n                a = a.n;\n            if (typeof a != \"number\")\n                a = 1; // default to first axis\n            return a;\n        }\n\n        function allAxes() {\n            // return flat array without annoying null entries\n            return $.grep(xaxes.concat(yaxes), function (a) { return a; });\n        }\n\n        function canvasToAxisCoords(pos) {\n            // return an object with x/y corresponding to all used axes\n            var res = {}, i, axis;\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used)\n                    res[\"x\" + axis.n] = axis.c2p(pos.left);\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used)\n                    res[\"y\" + axis.n] = axis.c2p(pos.top);\n            }\n\n            if (res.x1 !== undefined)\n                res.x = res.x1;\n            if (res.y1 !== undefined)\n                res.y = res.y1;\n\n            return res;\n        }\n\n        function axisToCanvasCoords(pos) {\n            // get canvas coords from the first pair of x/y found in pos\n            var res = {}, i, axis, key;\n\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used) {\n                    key = \"x\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"x\";\n\n                    if (pos[key] != null) {\n                        res.left = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used) {\n                    key = \"y\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"y\";\n\n                    if (pos[key] != null) {\n                        res.top = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n\n            return res;\n        }\n\n        function getOrCreateAxis(axes, number) {\n            if (!axes[number - 1])\n                axes[number - 1] = {\n                    n: number, // save the number for future reference\n                    direction: axes == xaxes ? \"x\" : \"y\",\n                    options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)\n                };\n\n            return axes[number - 1];\n        }\n\n        function fillInSeriesOptions() {\n\n            var neededColors = series.length, maxIndex = -1, i;\n\n            // Subtract the number of series that already have fixed colors or\n            // color indexes from the number that we still need to generate.\n\n            for (i = 0; i < series.length; ++i) {\n                var sc = series[i].color;\n                if (sc != null) {\n                    neededColors--;\n                    if (typeof sc == \"number\" && sc > maxIndex) {\n                        maxIndex = sc;\n                    }\n                }\n            }\n\n            // If any of the series have fixed color indexes, then we need to\n            // generate at least as many colors as the highest index.\n\n            if (neededColors <= maxIndex) {\n                neededColors = maxIndex + 1;\n            }\n\n            // Generate all the colors, using first the option colors and then\n            // variations on those colors once they're exhausted.\n\n            var c, colors = [], colorPool = options.colors,\n                colorPoolSize = colorPool.length, variation = 0;\n\n            for (i = 0; i < neededColors; i++) {\n\n                c = $.color.parse(colorPool[i % colorPoolSize] || \"#666\");\n\n                // Each time we exhaust the colors in the pool we adjust\n                // a scaling factor used to produce more variations on\n                // those colors. The factor alternates negative/positive\n                // to produce lighter/darker colors.\n\n                // Reset the variation after every few cycles, or else\n                // it will end up producing only white or black colors.\n\n                if (i % colorPoolSize == 0 && i) {\n                    if (variation >= 0) {\n                        if (variation < 0.5) {\n                            variation = -variation - 0.2;\n                        } else variation = 0;\n                    } else variation = -variation;\n                }\n\n                colors[i] = c.scale('rgb', 1 + variation);\n            }\n\n            // Finalize the series options, filling in their colors\n\n            var colori = 0, s;\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                // assign colors\n                if (s.color == null) {\n                    s.color = colors[colori].toString();\n                    ++colori;\n                }\n                else if (typeof s.color == \"number\")\n                    s.color = colors[s.color].toString();\n\n                // turn on lines automatically in case nothing is set\n                if (s.lines.show == null) {\n                    var v, show = true;\n                    for (v in s)\n                        if (s[v] && s[v].show) {\n                            show = false;\n                            break;\n                        }\n                    if (show)\n                        s.lines.show = true;\n                }\n\n                // If nothing was provided for lines.zero, default it to match\n                // lines.fill, since areas by default should extend to zero.\n\n                if (s.lines.zero == null) {\n                    s.lines.zero = !!s.lines.fill;\n                }\n\n                // setup axes\n                s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, \"x\"));\n                s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, \"y\"));\n            }\n        }\n\n        function processData() {\n            var topSentry = Number.POSITIVE_INFINITY,\n                bottomSentry = Number.NEGATIVE_INFINITY,\n                fakeInfinity = Number.MAX_VALUE,\n                i, j, k, m, length,\n                s, points, ps, x, y, axis, val, f, p,\n                data, format;\n\n            function updateAxis(axis, min, max) {\n                if (min < axis.datamin && min != -fakeInfinity)\n                    axis.datamin = min;\n                if (max > axis.datamax && max != fakeInfinity)\n                    axis.datamax = max;\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                // init axis\n                axis.datamin = topSentry;\n                axis.datamax = bottomSentry;\n                axis.used = false;\n            });\n\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                s.datapoints = { points: [] };\n\n                executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);\n            }\n\n            // first pass: clean and copy data\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                data = s.data;\n                format = s.datapoints.format;\n\n                if (!format) {\n                    format = [];\n                    // find out how to copy\n                    format.push({ x: true, number: true, required: true });\n                    format.push({ y: true, number: true, required: true });\n\n                    if (s.bars.show || (s.lines.show && s.lines.fill)) {\n                        var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero));\n                        format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale });\n                        if (s.bars.horizontal) {\n                            delete format[format.length - 1].y;\n                            format[format.length - 1].x = true;\n                        }\n                    }\n\n                    s.datapoints.format = format;\n                }\n\n                if (s.datapoints.pointsize != null)\n                    continue; // already filled in\n\n                s.datapoints.pointsize = format.length;\n\n                ps = s.datapoints.pointsize;\n                points = s.datapoints.points;\n\n                var insertSteps = s.lines.show && s.lines.steps;\n                s.xaxis.used = s.yaxis.used = true;\n\n                for (j = k = 0; j < data.length; ++j, k += ps) {\n                    p = data[j];\n\n                    var nullify = p == null;\n                    if (!nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = p[m];\n                            f = format[m];\n\n                            if (f) {\n                                if (f.number && val != null) {\n                                    val = +val; // convert to number\n                                    if (isNaN(val))\n                                        val = null;\n                                    else if (val == Infinity)\n                                        val = fakeInfinity;\n                                    else if (val == -Infinity)\n                                        val = -fakeInfinity;\n                                }\n\n                                if (val == null) {\n                                    if (f.required)\n                                        nullify = true;\n\n                                    if (f.defaultValue != null)\n                                        val = f.defaultValue;\n                                }\n                            }\n\n                            points[k + m] = val;\n                        }\n                    }\n\n                    if (nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = points[k + m];\n                            if (val != null) {\n                                f = format[m];\n                                // extract min/max info\n                                if (f.autoscale !== false) {\n                                    if (f.x) {\n                                        updateAxis(s.xaxis, val, val);\n                                    }\n                                    if (f.y) {\n                                        updateAxis(s.yaxis, val, val);\n                                    }\n                                }\n                            }\n                            points[k + m] = null;\n                        }\n                    }\n                    else {\n                        // a little bit of line specific stuff that\n                        // perhaps shouldn't be here, but lacking\n                        // better means...\n                        if (insertSteps && k > 0\n                            && points[k - ps] != null\n                            && points[k - ps] != points[k]\n                            && points[k - ps + 1] != points[k + 1]) {\n                            // copy the point to make room for a middle point\n                            for (m = 0; m < ps; ++m)\n                                points[k + ps + m] = points[k + m];\n\n                            // middle point has same y\n                            points[k + 1] = points[k - ps + 1];\n\n                            // we've added a point, better reflect that\n                            k += ps;\n                        }\n                    }\n                }\n            }\n\n            // give the hooks a chance to run\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                executeHooks(hooks.processDatapoints, [ s, s.datapoints]);\n            }\n\n            // second pass: find datamax/datamin for auto-scaling\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                points = s.datapoints.points;\n                ps = s.datapoints.pointsize;\n                format = s.datapoints.format;\n\n                var xmin = topSentry, ymin = topSentry,\n                    xmax = bottomSentry, ymax = bottomSentry;\n\n                for (j = 0; j < points.length; j += ps) {\n                    if (points[j] == null)\n                        continue;\n\n                    for (m = 0; m < ps; ++m) {\n                        val = points[j + m];\n                        f = format[m];\n                        if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity)\n                            continue;\n\n                        if (f.x) {\n                            if (val < xmin)\n                                xmin = val;\n                            if (val > xmax)\n                                xmax = val;\n                        }\n                        if (f.y) {\n                            if (val < ymin)\n                                ymin = val;\n                            if (val > ymax)\n                                ymax = val;\n                        }\n                    }\n                }\n\n                if (s.bars.show) {\n                    // make sure we got room for the bar on the dancing floor\n                    var delta;\n\n                    switch (s.bars.align) {\n                        case \"left\":\n                            delta = 0;\n                            break;\n                        case \"right\":\n                            delta = -s.bars.barWidth;\n                            break;\n                        default:\n                            delta = -s.bars.barWidth / 2;\n                    }\n\n                    if (s.bars.horizontal) {\n                        ymin += delta;\n                        ymax += delta + s.bars.barWidth;\n                    }\n                    else {\n                        xmin += delta;\n                        xmax += delta + s.bars.barWidth;\n                    }\n                }\n\n                updateAxis(s.xaxis, xmin, xmax);\n                updateAxis(s.yaxis, ymin, ymax);\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                if (axis.datamin == topSentry)\n                    axis.datamin = null;\n                if (axis.datamax == bottomSentry)\n                    axis.datamax = null;\n            });\n        }\n\n        function setupCanvases() {\n\n            // Make sure the placeholder is clear of everything except canvases\n            // from a previous plot in this container that we'll try to re-use.\n\n            placeholder.css(\"padding\", 0) // padding messes up the positioning\n                .children().filter(function(){\n                    return !$(this).hasClass(\"flot-overlay\") && !$(this).hasClass('flot-base');\n                }).remove();\n\n            if (placeholder.css(\"position\") == 'static')\n                placeholder.css(\"position\", \"relative\"); // for positioning labels and overlay\n\n            surface = new Canvas(\"flot-base\", placeholder);\n            overlay = new Canvas(\"flot-overlay\", placeholder); // overlay canvas for interactive features\n\n            ctx = surface.context;\n            octx = overlay.context;\n\n            // define which element we're listening for events on\n            eventHolder = $(overlay.element).unbind();\n\n            // If we're re-using a plot object, shut down the old one\n\n            var existing = placeholder.data(\"plot\");\n\n            if (existing) {\n                existing.shutdown();\n                overlay.clear();\n            }\n\n            // save in case we get replotted\n            placeholder.data(\"plot\", plot);\n        }\n\n        function bindEvents() {\n            // bind events\n            if (options.grid.hoverable) {\n                eventHolder.mousemove(onMouseMove);\n\n                // Use bind, rather than .mouseleave, because we officially\n                // still support jQuery 1.2.6, which doesn't define a shortcut\n                // for mouseenter or mouseleave.  This was a bug/oversight that\n                // was fixed somewhere around 1.3.x.  We can return to using\n                // .mouseleave when we drop support for 1.2.6.\n\n                eventHolder.bind(\"mouseleave\", onMouseLeave);\n            }\n\n            if (options.grid.clickable)\n                eventHolder.click(onClick);\n\n            executeHooks(hooks.bindEvents, [eventHolder]);\n        }\n\n        function shutdown() {\n            if (redrawTimeout)\n                clearTimeout(redrawTimeout);\n\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mouseleave\", onMouseLeave);\n            eventHolder.unbind(\"click\", onClick);\n\n            executeHooks(hooks.shutdown, [eventHolder]);\n        }\n\n        function setTransformationHelpers(axis) {\n            // set helper functions on the axis, assumes plot area\n            // has been computed already\n\n            function identity(x) { return x; }\n\n            var s, m, t = axis.options.transform || identity,\n                it = axis.options.inverseTransform;\n\n            // precompute how much the axis is scaling a point\n            // in canvas space\n            if (axis.direction == \"x\") {\n                s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));\n                m = Math.min(t(axis.max), t(axis.min));\n            }\n            else {\n                s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));\n                s = -s;\n                m = Math.max(t(axis.max), t(axis.min));\n            }\n\n            // data point to canvas coordinate\n            if (t == identity) // slight optimization\n                axis.p2c = function (p) { return (p - m) * s; };\n            else\n                axis.p2c = function (p) { return (t(p) - m) * s; };\n            // canvas coordinate to data point\n            if (!it)\n                axis.c2p = function (c) { return m + c / s; };\n            else\n                axis.c2p = function (c) { return it(m + c / s); };\n        }\n\n        function measureTickLabels(axis) {\n\n            var opts = axis.options,\n                ticks = axis.ticks || [],\n                labelWidth = opts.labelWidth || 0,\n                labelHeight = opts.labelHeight || 0,\n                maxWidth = labelWidth || (axis.direction == \"x\" ? Math.floor(surface.width / (ticks.length || 1)) : null),\n                legacyStyles = axis.direction + \"Axis \" + axis.direction + axis.n + \"Axis\",\n                layer = \"flot-\" + axis.direction + \"-axis flot-\" + axis.direction + axis.n + \"-axis \" + legacyStyles,\n                font = opts.font || \"flot-tick-label tickLabel\";\n\n            for (var i = 0; i < ticks.length; ++i) {\n\n                var t = ticks[i];\n\n                if (!t.label)\n                    continue;\n\n                var info = surface.getTextInfo(layer, t.label, font, null, maxWidth);\n\n                labelWidth = Math.max(labelWidth, info.width);\n                labelHeight = Math.max(labelHeight, info.height);\n            }\n\n            axis.labelWidth = opts.labelWidth || labelWidth;\n            axis.labelHeight = opts.labelHeight || labelHeight;\n        }\n\n        function allocateAxisBoxFirstPhase(axis) {\n            // find the bounding box of the axis by looking at label\n            // widths/heights and ticks, make room by diminishing the\n            // plotOffset; this first phase only looks at one\n            // dimension per axis, the other dimension depends on the\n            // other axes so will have to wait\n\n            var lw = axis.labelWidth,\n                lh = axis.labelHeight,\n                pos = axis.options.position,\n                isXAxis = axis.direction === \"x\",\n                tickLength = axis.options.tickLength,\n                axisMargin = options.grid.axisMargin,\n                padding = options.grid.labelMargin,\n                innermost = true,\n                outermost = true,\n                first = true,\n                found = false;\n\n            // Determine the axis's position in its direction and on its side\n\n            $.each(isXAxis ? xaxes : yaxes, function(i, a) {\n                if (a && (a.show || a.reserveSpace)) {\n                    if (a === axis) {\n                        found = true;\n                    } else if (a.options.position === pos) {\n                        if (found) {\n                            outermost = false;\n                        } else {\n                            innermost = false;\n                        }\n                    }\n                    if (!found) {\n                        first = false;\n                    }\n                }\n            });\n\n            // The outermost axis on each side has no margin\n\n            if (outermost) {\n                axisMargin = 0;\n            }\n\n            // The ticks for the first axis in each direction stretch across\n\n            if (tickLength == null) {\n                tickLength = first ? \"full\" : 5;\n            }\n\n            if (!isNaN(+tickLength))\n                padding += +tickLength;\n\n            if (isXAxis) {\n                lh += padding;\n\n                if (pos == \"bottom\") {\n                    plotOffset.bottom += lh + axisMargin;\n                    axis.box = { top: surface.height - plotOffset.bottom, height: lh };\n                }\n                else {\n                    axis.box = { top: plotOffset.top + axisMargin, height: lh };\n                    plotOffset.top += lh + axisMargin;\n                }\n            }\n            else {\n                lw += padding;\n\n                if (pos == \"left\") {\n                    axis.box = { left: plotOffset.left + axisMargin, width: lw };\n                    plotOffset.left += lw + axisMargin;\n                }\n                else {\n                    plotOffset.right += lw + axisMargin;\n                    axis.box = { left: surface.width - plotOffset.right, width: lw };\n                }\n            }\n\n             // save for future reference\n            axis.position = pos;\n            axis.tickLength = tickLength;\n            axis.box.padding = padding;\n            axis.innermost = innermost;\n        }\n\n        function allocateAxisBoxSecondPhase(axis) {\n            // now that all axis boxes have been placed in one\n            // dimension, we can set the remaining dimension coordinates\n            if (axis.direction == \"x\") {\n                axis.box.left = plotOffset.left - axis.labelWidth / 2;\n                axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth;\n            }\n            else {\n                axis.box.top = plotOffset.top - axis.labelHeight / 2;\n                axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight;\n            }\n        }\n\n        function adjustLayoutForThingsStickingOut() {\n            // possibly adjust plot offset to ensure everything stays\n            // inside the canvas and isn't clipped off\n\n            var minMargin = options.grid.minBorderMargin,\n                axis, i;\n\n            // check stuff from the plot (FIXME: this should just read\n            // a value from the series, otherwise it's impossible to\n            // customize)\n            if (minMargin == null) {\n                minMargin = 0;\n                for (i = 0; i < series.length; ++i)\n                    minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2));\n            }\n\n            var margins = {\n                left: minMargin,\n                right: minMargin,\n                top: minMargin,\n                bottom: minMargin\n            };\n\n            // check axis labels, note we don't check the actual\n            // labels but instead use the overall width/height to not\n            // jump as much around with replots\n            $.each(allAxes(), function (_, axis) {\n                if (axis.reserveSpace && axis.ticks && axis.ticks.length) {\n                    if (axis.direction === \"x\") {\n                        margins.left = Math.max(margins.left, axis.labelWidth / 2);\n                        margins.right = Math.max(margins.right, axis.labelWidth / 2);\n                    } else {\n                        margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2);\n                        margins.top = Math.max(margins.top, axis.labelHeight / 2);\n                    }\n                }\n            });\n\n            plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left));\n            plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right));\n            plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top));\n            plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom));\n        }\n\n        function setupGrid() {\n            var i, axes = allAxes(), showGrid = options.grid.show;\n\n            // Initialize the plot's offset from the edge of the canvas\n\n            for (var a in plotOffset) {\n                var margin = options.grid.margin || 0;\n                plotOffset[a] = typeof margin == \"number\" ? margin : margin[a] || 0;\n            }\n\n            executeHooks(hooks.processOffset, [plotOffset]);\n\n            // If the grid is visible, add its border width to the offset\n\n            for (var a in plotOffset) {\n                if(typeof(options.grid.borderWidth) == \"object\") {\n                    plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0;\n                }\n                else {\n                    plotOffset[a] += showGrid ? options.grid.borderWidth : 0;\n                }\n            }\n\n            $.each(axes, function (_, axis) {\n                var axisOpts = axis.options;\n                axis.show = axisOpts.show == null ? axis.used : axisOpts.show;\n                axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace;\n                setRange(axis);\n            });\n\n            if (showGrid) {\n\n                var allocatedAxes = $.grep(axes, function (axis) {\n                    return axis.show || axis.reserveSpace;\n                });\n\n                $.each(allocatedAxes, function (_, axis) {\n                    // make the ticks\n                    setupTickGeneration(axis);\n                    setTicks(axis);\n                    snapRangeToTicks(axis, axis.ticks);\n                    // find labelWidth/Height for axis\n                    measureTickLabels(axis);\n                });\n\n                // with all dimensions calculated, we can compute the\n                // axis bounding boxes, start from the outside\n                // (reverse order)\n                for (i = allocatedAxes.length - 1; i >= 0; --i)\n                    allocateAxisBoxFirstPhase(allocatedAxes[i]);\n\n                // make sure we've got enough space for things that\n                // might stick out\n                adjustLayoutForThingsStickingOut();\n\n                $.each(allocatedAxes, function (_, axis) {\n                    allocateAxisBoxSecondPhase(axis);\n                });\n            }\n\n            plotWidth = surface.width - plotOffset.left - plotOffset.right;\n            plotHeight = surface.height - plotOffset.bottom - plotOffset.top;\n\n            // now we got the proper plot dimensions, we can compute the scaling\n            $.each(axes, function (_, axis) {\n                setTransformationHelpers(axis);\n            });\n\n            if (showGrid) {\n                drawAxisLabels();\n            }\n\n            insertLegend();\n        }\n\n        function setRange(axis) {\n            var opts = axis.options,\n                min = +(opts.min != null ? opts.min : axis.datamin),\n                max = +(opts.max != null ? opts.max : axis.datamax),\n                delta = max - min;\n\n            if (delta == 0.0) {\n                // degenerate case\n                var widen = max == 0 ? 1 : 0.01;\n\n                if (opts.min == null)\n                    min -= widen;\n                // always widen max if we couldn't widen min to ensure we\n                // don't fall into min == max which doesn't work\n                if (opts.max == null || opts.min != null)\n                    max += widen;\n            }\n            else {\n                // consider autoscaling\n                var margin = opts.autoscaleMargin;\n                if (margin != null) {\n                    if (opts.min == null) {\n                        min -= delta * margin;\n                        // make sure we don't go below zero if all values\n                        // are positive\n                        if (min < 0 && axis.datamin != null && axis.datamin >= 0)\n                            min = 0;\n                    }\n                    if (opts.max == null) {\n                        max += delta * margin;\n                        if (max > 0 && axis.datamax != null && axis.datamax <= 0)\n                            max = 0;\n                    }\n                }\n            }\n            axis.min = min;\n            axis.max = max;\n        }\n\n        function setupTickGeneration(axis) {\n            var opts = axis.options;\n\n            // estimate number of ticks\n            var noTicks;\n            if (typeof opts.ticks == \"number\" && opts.ticks > 0)\n                noTicks = opts.ticks;\n            else\n                // heuristic based on the model a*sqrt(x) fitted to\n                // some data points that seemed reasonable\n                noTicks = 0.3 * Math.sqrt(axis.direction == \"x\" ? surface.width : surface.height);\n\n            var delta = (axis.max - axis.min) / noTicks,\n                dec = -Math.floor(Math.log(delta) / Math.LN10),\n                maxDec = opts.tickDecimals;\n\n            if (maxDec != null && dec > maxDec) {\n                dec = maxDec;\n            }\n\n            var magn = Math.pow(10, -dec),\n                norm = delta / magn, // norm is between 1.0 and 10.0\n                size;\n\n            if (norm < 1.5) {\n                size = 1;\n            } else if (norm < 3) {\n                size = 2;\n                // special case for 2.5, requires an extra decimal\n                if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {\n                    size = 2.5;\n                    ++dec;\n                }\n            } else if (norm < 7.5) {\n                size = 5;\n            } else {\n                size = 10;\n            }\n\n            size *= magn;\n\n            if (opts.minTickSize != null && size < opts.minTickSize) {\n                size = opts.minTickSize;\n            }\n\n            axis.delta = delta;\n            axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);\n            axis.tickSize = opts.tickSize || size;\n\n            // Time mode was moved to a plug-in in 0.8, and since so many people use it\n            // we'll add an especially friendly reminder to make sure they included it.\n\n            if (opts.mode == \"time\" && !axis.tickGenerator) {\n                throw new Error(\"Time mode requires the flot.time plugin.\");\n            }\n\n            // Flot supports base-10 axes; any other mode else is handled by a plug-in,\n            // like flot.time.js.\n\n            if (!axis.tickGenerator) {\n\n                axis.tickGenerator = function (axis) {\n\n                    var ticks = [],\n                        start = floorInBase(axis.min, axis.tickSize),\n                        i = 0,\n                        v = Number.NaN,\n                        prev;\n\n                    do {\n                        prev = v;\n                        v = start + i * axis.tickSize;\n                        ticks.push(v);\n                        ++i;\n                    } while (v < axis.max && v != prev);\n                    return ticks;\n                };\n\n\t\t\t\taxis.tickFormatter = function (value, axis) {\n\n\t\t\t\t\tvar factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1;\n\t\t\t\t\tvar formatted = \"\" + Math.round(value * factor) / factor;\n\n\t\t\t\t\t// If tickDecimals was specified, ensure that we have exactly that\n\t\t\t\t\t// much precision; otherwise default to the value's own precision.\n\n\t\t\t\t\tif (axis.tickDecimals != null) {\n\t\t\t\t\t\tvar decimal = formatted.indexOf(\".\");\n\t\t\t\t\t\tvar precision = decimal == -1 ? 0 : formatted.length - decimal - 1;\n\t\t\t\t\t\tif (precision < axis.tickDecimals) {\n\t\t\t\t\t\t\treturn (precision ? formatted : formatted + \".\") + (\"\" + factor).substr(1, axis.tickDecimals - precision);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n                    return formatted;\n                };\n            }\n\n            if ($.isFunction(opts.tickFormatter))\n                axis.tickFormatter = function (v, axis) { return \"\" + opts.tickFormatter(v, axis); };\n\n            if (opts.alignTicksWithAxis != null) {\n                var otherAxis = (axis.direction == \"x\" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];\n                if (otherAxis && otherAxis.used && otherAxis != axis) {\n                    // consider snapping min/max to outermost nice ticks\n                    var niceTicks = axis.tickGenerator(axis);\n                    if (niceTicks.length > 0) {\n                        if (opts.min == null)\n                            axis.min = Math.min(axis.min, niceTicks[0]);\n                        if (opts.max == null && niceTicks.length > 1)\n                            axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);\n                    }\n\n                    axis.tickGenerator = function (axis) {\n                        // copy ticks, scaled to this axis\n                        var ticks = [], v, i;\n                        for (i = 0; i < otherAxis.ticks.length; ++i) {\n                            v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);\n                            v = axis.min + v * (axis.max - axis.min);\n                            ticks.push(v);\n                        }\n                        return ticks;\n                    };\n\n                    // we might need an extra decimal since forced\n                    // ticks don't necessarily fit naturally\n                    if (!axis.mode && opts.tickDecimals == null) {\n                        var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1),\n                            ts = axis.tickGenerator(axis);\n\n                        // only proceed if the tick interval rounded\n                        // with an extra decimal doesn't give us a\n                        // zero at end\n                        if (!(ts.length > 1 && /\\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))\n                            axis.tickDecimals = extraDec;\n                    }\n                }\n            }\n        }\n\n        function setTicks(axis) {\n            var oticks = axis.options.ticks, ticks = [];\n            if (oticks == null || (typeof oticks == \"number\" && oticks > 0))\n                ticks = axis.tickGenerator(axis);\n            else if (oticks) {\n                if ($.isFunction(oticks))\n                    // generate the ticks\n                    ticks = oticks(axis);\n                else\n                    ticks = oticks;\n            }\n\n            // clean up/labelify the supplied ticks, copy them over\n            var i, v;\n            axis.ticks = [];\n            for (i = 0; i < ticks.length; ++i) {\n                var label = null;\n                var t = ticks[i];\n                if (typeof t == \"object\") {\n                    v = +t[0];\n                    if (t.length > 1)\n                        label = t[1];\n                }\n                else\n                    v = +t;\n                if (label == null)\n                    label = axis.tickFormatter(v, axis);\n                if (!isNaN(v))\n                    axis.ticks.push({ v: v, label: label });\n            }\n        }\n\n        function snapRangeToTicks(axis, ticks) {\n            if (axis.options.autoscaleMargin && ticks.length > 0) {\n                // snap to ticks\n                if (axis.options.min == null)\n                    axis.min = Math.min(axis.min, ticks[0].v);\n                if (axis.options.max == null && ticks.length > 1)\n                    axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);\n            }\n        }\n\n        function draw() {\n\n            surface.clear();\n\n            executeHooks(hooks.drawBackground, [ctx]);\n\n            var grid = options.grid;\n\n            // draw background, if any\n            if (grid.show && grid.backgroundColor)\n                drawBackground();\n\n            if (grid.show && !grid.aboveData) {\n                drawGrid();\n            }\n\n            for (var i = 0; i < series.length; ++i) {\n                executeHooks(hooks.drawSeries, [ctx, series[i]]);\n                drawSeries(series[i]);\n            }\n\n            executeHooks(hooks.draw, [ctx]);\n\n            if (grid.show && grid.aboveData) {\n                drawGrid();\n            }\n\n            surface.render();\n\n            // A draw implies that either the axes or data have changed, so we\n            // should probably update the overlay highlights as well.\n\n            triggerRedrawOverlay();\n        }\n\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = allAxes();\n\n            for (var i = 0; i < axes.length; ++i) {\n                axis = axes[i];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? xaxes[0] : yaxes[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n\n            return { from: from, to: to, axis: axis };\n        }\n\n        function drawBackground() {\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, \"rgba(255, 255, 255, 0)\");\n            ctx.fillRect(0, 0, plotWidth, plotHeight);\n            ctx.restore();\n        }\n\n        function drawGrid() {\n            var i, axes, bw, bc;\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // draw markings\n            var markings = options.grid.markings;\n            if (markings) {\n                if ($.isFunction(markings)) {\n                    axes = plot.getAxes();\n                    // xmin etc. is backwards compatibility, to be\n                    // removed in the future\n                    axes.xmin = axes.xaxis.min;\n                    axes.xmax = axes.xaxis.max;\n                    axes.ymin = axes.yaxis.min;\n                    axes.ymax = axes.yaxis.max;\n\n                    markings = markings(axes);\n                }\n\n                for (i = 0; i < markings.length; ++i) {\n                    var m = markings[i],\n                        xrange = extractRange(m, \"x\"),\n                        yrange = extractRange(m, \"y\");\n\n                    // fill in missing\n                    if (xrange.from == null)\n                        xrange.from = xrange.axis.min;\n                    if (xrange.to == null)\n                        xrange.to = xrange.axis.max;\n                    if (yrange.from == null)\n                        yrange.from = yrange.axis.min;\n                    if (yrange.to == null)\n                        yrange.to = yrange.axis.max;\n\n                    // clip\n                    if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||\n                        yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)\n                        continue;\n\n                    xrange.from = Math.max(xrange.from, xrange.axis.min);\n                    xrange.to = Math.min(xrange.to, xrange.axis.max);\n                    yrange.from = Math.max(yrange.from, yrange.axis.min);\n                    yrange.to = Math.min(yrange.to, yrange.axis.max);\n\n                    var xequal = xrange.from === xrange.to,\n                        yequal = yrange.from === yrange.to;\n\n                    if (xequal && yequal) {\n                        continue;\n                    }\n\n                    // then draw\n                    xrange.from = Math.floor(xrange.axis.p2c(xrange.from));\n                    xrange.to = Math.floor(xrange.axis.p2c(xrange.to));\n                    yrange.from = Math.floor(yrange.axis.p2c(yrange.from));\n                    yrange.to = Math.floor(yrange.axis.p2c(yrange.to));\n\n                    if (xequal || yequal) {\n                        var lineWidth = m.lineWidth || options.grid.markingsLineWidth,\n                            subPixel = lineWidth % 2 ? 0.5 : 0;\n                        ctx.beginPath();\n                        ctx.strokeStyle = m.color || options.grid.markingsColor;\n                        ctx.lineWidth = lineWidth;\n                        if (xequal) {\n                            ctx.moveTo(xrange.to + subPixel, yrange.from);\n                            ctx.lineTo(xrange.to + subPixel, yrange.to);\n                        } else {\n                            ctx.moveTo(xrange.from, yrange.to + subPixel);\n                            ctx.lineTo(xrange.to, yrange.to + subPixel);                            \n                        }\n                        ctx.stroke();\n                    } else {\n                        ctx.fillStyle = m.color || options.grid.markingsColor;\n                        ctx.fillRect(xrange.from, yrange.to,\n                                     xrange.to - xrange.from,\n                                     yrange.from - yrange.to);\n                    }\n                }\n            }\n\n            // draw the ticks\n            axes = allAxes();\n            bw = options.grid.borderWidth;\n\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box,\n                    t = axis.tickLength, x, y, xoff, yoff;\n                if (!axis.show || axis.ticks.length == 0)\n                    continue;\n\n                ctx.lineWidth = 1;\n\n                // find the edges\n                if (axis.direction == \"x\") {\n                    x = 0;\n                    if (t == \"full\")\n                        y = (axis.position == \"top\" ? 0 : plotHeight);\n                    else\n                        y = box.top - plotOffset.top + (axis.position == \"top\" ? box.height : 0);\n                }\n                else {\n                    y = 0;\n                    if (t == \"full\")\n                        x = (axis.position == \"left\" ? 0 : plotWidth);\n                    else\n                        x = box.left - plotOffset.left + (axis.position == \"left\" ? box.width : 0);\n                }\n\n                // draw tick bar\n                if (!axis.innermost) {\n                    ctx.strokeStyle = axis.options.color;\n                    ctx.beginPath();\n                    xoff = yoff = 0;\n                    if (axis.direction == \"x\")\n                        xoff = plotWidth + 1;\n                    else\n                        yoff = plotHeight + 1;\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\") {\n                            y = Math.floor(y) + 0.5;\n                        } else {\n                            x = Math.floor(x) + 0.5;\n                        }\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                    ctx.stroke();\n                }\n\n                // draw ticks\n\n                ctx.strokeStyle = axis.options.tickColor;\n\n                ctx.beginPath();\n                for (i = 0; i < axis.ticks.length; ++i) {\n                    var v = axis.ticks[i].v;\n\n                    xoff = yoff = 0;\n\n                    if (isNaN(v) || v < axis.min || v > axis.max\n                        // skip those lying on the axes if we got a border\n                        || (t == \"full\"\n                            && ((typeof bw == \"object\" && bw[axis.position] > 0) || bw > 0)\n                            && (v == axis.min || v == axis.max)))\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        x = axis.p2c(v);\n                        yoff = t == \"full\" ? -plotHeight : t;\n\n                        if (axis.position == \"top\")\n                            yoff = -yoff;\n                    }\n                    else {\n                        y = axis.p2c(v);\n                        xoff = t == \"full\" ? -plotWidth : t;\n\n                        if (axis.position == \"left\")\n                            xoff = -xoff;\n                    }\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\")\n                            x = Math.floor(x) + 0.5;\n                        else\n                            y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                }\n\n                ctx.stroke();\n            }\n\n\n            // draw border\n            if (bw) {\n                // If either borderWidth or borderColor is an object, then draw the border\n                // line by line instead of as one rectangle\n                bc = options.grid.borderColor;\n                if(typeof bw == \"object\" || typeof bc == \"object\") {\n                    if (typeof bw !== \"object\") {\n                        bw = {top: bw, right: bw, bottom: bw, left: bw};\n                    }\n                    if (typeof bc !== \"object\") {\n                        bc = {top: bc, right: bc, bottom: bc, left: bc};\n                    }\n\n                    if (bw.top > 0) {\n                        ctx.strokeStyle = bc.top;\n                        ctx.lineWidth = bw.top;\n                        ctx.beginPath();\n                        ctx.moveTo(0 - bw.left, 0 - bw.top/2);\n                        ctx.lineTo(plotWidth, 0 - bw.top/2);\n                        ctx.stroke();\n                    }\n\n                    if (bw.right > 0) {\n                        ctx.strokeStyle = bc.right;\n                        ctx.lineWidth = bw.right;\n                        ctx.beginPath();\n                        ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top);\n                        ctx.lineTo(plotWidth + bw.right / 2, plotHeight);\n                        ctx.stroke();\n                    }\n\n                    if (bw.bottom > 0) {\n                        ctx.strokeStyle = bc.bottom;\n                        ctx.lineWidth = bw.bottom;\n                        ctx.beginPath();\n                        ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2);\n                        ctx.lineTo(0, plotHeight + bw.bottom / 2);\n                        ctx.stroke();\n                    }\n\n                    if (bw.left > 0) {\n                        ctx.strokeStyle = bc.left;\n                        ctx.lineWidth = bw.left;\n                        ctx.beginPath();\n                        ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom);\n                        ctx.lineTo(0- bw.left/2, 0);\n                        ctx.stroke();\n                    }\n                }\n                else {\n                    ctx.lineWidth = bw;\n                    ctx.strokeStyle = options.grid.borderColor;\n                    ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);\n                }\n            }\n\n            ctx.restore();\n        }\n\n        function drawAxisLabels() {\n\n            $.each(allAxes(), function (_, axis) {\n                var box = axis.box,\n                    legacyStyles = axis.direction + \"Axis \" + axis.direction + axis.n + \"Axis\",\n                    layer = \"flot-\" + axis.direction + \"-axis flot-\" + axis.direction + axis.n + \"-axis \" + legacyStyles,\n                    font = axis.options.font || \"flot-tick-label tickLabel\",\n                    tick, x, y, halign, valign;\n\n                // Remove text before checking for axis.show and ticks.length;\n                // otherwise plugins, like flot-tickrotor, that draw their own\n                // tick labels will end up with both theirs and the defaults.\n\n                surface.removeText(layer);\n\n                if (!axis.show || axis.ticks.length == 0)\n                    return;\n\n                for (var i = 0; i < axis.ticks.length; ++i) {\n\n                    tick = axis.ticks[i];\n                    if (!tick.label || tick.v < axis.min || tick.v > axis.max)\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        halign = \"center\";\n                        x = plotOffset.left + axis.p2c(tick.v);\n                        if (axis.position == \"bottom\") {\n                            y = box.top + box.padding;\n                        } else {\n                            y = box.top + box.height - box.padding;\n                            valign = \"bottom\";\n                        }\n                    } else {\n                        valign = \"middle\";\n                        y = plotOffset.top + axis.p2c(tick.v);\n                        if (axis.position == \"left\") {\n                            x = box.left + box.width - box.padding;\n                            halign = \"right\";\n                        } else {\n                            x = box.left + box.padding;\n                        }\n                    }\n\n                    surface.addText(layer, x, y, tick.label, font, null, null, halign, valign);\n                }\n            });\n        }\n\n        function drawSeries(series) {\n            if (series.lines.show)\n                drawSeriesLines(series);\n            if (series.bars.show)\n                drawSeriesBars(series);\n            if (series.points.show)\n                drawSeriesPoints(series);\n        }\n\n        function drawSeriesLines(series) {\n            function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    prevx = null, prevy = null;\n\n                ctx.beginPath();\n                for (var i = ps; i < points.length; i += ps) {\n                    var x1 = points[i - ps], y1 = points[i - ps + 1],\n                        x2 = points[i], y2 = points[i + 1];\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min) {\n                        if (y2 < axisy.min)\n                            continue;   // line segment is outside\n                        // compute new intersection point\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min) {\n                        if (y1 < axisy.min)\n                            continue;\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max) {\n                        if (y2 > axisy.max)\n                            continue;\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max) {\n                        if (y1 > axisy.max)\n                            continue;\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (x1 != prevx || y1 != prevy)\n                        ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);\n\n                    prevx = x2;\n                    prevy = y2;\n                    ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);\n                }\n                ctx.stroke();\n            }\n\n            function plotLineArea(datapoints, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    bottom = Math.min(Math.max(0, axisy.min), axisy.max),\n                    i = 0, top, areaOpen = false,\n                    ypos = 1, segmentStart = 0, segmentEnd = 0;\n\n                // we process each segment in two turns, first forward\n                // direction to sketch out top, then once we hit the\n                // end we go backwards to sketch the bottom\n                while (true) {\n                    if (ps > 0 && i > points.length + ps)\n                        break;\n\n                    i += ps; // ps is negative if going backwards\n\n                    var x1 = points[i - ps],\n                        y1 = points[i - ps + ypos],\n                        x2 = points[i], y2 = points[i + ypos];\n\n                    if (areaOpen) {\n                        if (ps > 0 && x1 != null && x2 == null) {\n                            // at turning point\n                            segmentEnd = i;\n                            ps = -ps;\n                            ypos = 2;\n                            continue;\n                        }\n\n                        if (ps < 0 && i == segmentStart + ps) {\n                            // done with the reverse sweep\n                            ctx.fill();\n                            areaOpen = false;\n                            ps = -ps;\n                            ypos = 1;\n                            i = segmentStart = segmentEnd + ps;\n                            continue;\n                        }\n                    }\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip x values\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (!areaOpen) {\n                        // open area\n                        ctx.beginPath();\n                        ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));\n                        areaOpen = true;\n                    }\n\n                    // now first check the case where both is outside\n                    if (y1 >= axisy.max && y2 >= axisy.max) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));\n                        continue;\n                    }\n                    else if (y1 <= axisy.min && y2 <= axisy.min) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));\n                        continue;\n                    }\n\n                    // else it's a bit more complicated, there might\n                    // be a flat maxed out rectangle first, then a\n                    // triangular cutout or reverse; to find these\n                    // keep track of the current x values\n                    var x1old = x1, x2old = x2;\n\n                    // clip the y values, without shortcutting, we\n                    // go through all cases in turn\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // if the x value was changed we got a rectangle\n                    // to fill\n                    if (x1 != x1old) {\n                        ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));\n                        // it goes to (x1, y1), but we fill that below\n                    }\n\n                    // fill triangular section, this sometimes result\n                    // in redundant points if (x1, y1) hasn't changed\n                    // from previous line to, but we just ignore that\n                    ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));\n                    ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n\n                    // fill the other rectangle if it's there\n                    if (x2 != x2old) {\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n                        ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));\n                    }\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n            ctx.lineJoin = \"round\";\n\n            var lw = series.lines.lineWidth,\n                sw = series.shadowSize;\n            // FIXME: consider another form of shadow when filling is turned on\n            if (lw > 0 && sw > 0) {\n                // draw shadow as a thick and thin line with transparency\n                ctx.lineWidth = sw;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                // position shadow at angle from the mid of line\n                var angle = Math.PI/18;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);\n                ctx.lineWidth = sw/2;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);\n            if (fillStyle) {\n                ctx.fillStyle = fillStyle;\n                plotLineArea(series.datapoints, series.xaxis, series.yaxis);\n            }\n\n            if (lw > 0)\n                plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function drawSeriesPoints(series) {\n            function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    var x = points[i], y = points[i + 1];\n                    if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                        continue;\n\n                    ctx.beginPath();\n                    x = axisx.p2c(x);\n                    y = axisy.p2c(y) + offset;\n                    if (symbol == \"circle\")\n                        ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);\n                    else\n                        symbol(ctx, x, y, radius, shadow);\n                    ctx.closePath();\n\n                    if (fillStyle) {\n                        ctx.fillStyle = fillStyle;\n                        ctx.fill();\n                    }\n                    ctx.stroke();\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            var lw = series.points.lineWidth,\n                sw = series.shadowSize,\n                radius = series.points.radius,\n                symbol = series.points.symbol;\n\n            // If the user sets the line width to 0, we change it to a very \n            // small value. A line width of 0 seems to force the default of 1.\n            // Doing the conditional here allows the shadow setting to still be \n            // optional even with a lineWidth of 0.\n\n            if( lw == 0 )\n                lw = 0.0001;\n\n            if (lw > 0 && sw > 0) {\n                // draw shadow in two steps\n                var w = sw / 2;\n                ctx.lineWidth = w;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                plotPoints(series.datapoints, radius, null, w + w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n\n                ctx.strokeStyle = \"rgba(0,0,0,0.2)\";\n                plotPoints(series.datapoints, radius, null, w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            plotPoints(series.datapoints, radius,\n                       getFillStyle(series.points, series.color), 0, false,\n                       series.xaxis, series.yaxis, symbol);\n            ctx.restore();\n        }\n\n        function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {\n            var left, right, bottom, top,\n                drawLeft, drawRight, drawTop, drawBottom,\n                tmp;\n\n            // in horizontal mode, we start the bar from the left\n            // instead of from the bottom so it appears to be\n            // horizontal rather than vertical\n            if (horizontal) {\n                drawBottom = drawRight = drawTop = true;\n                drawLeft = false;\n                left = b;\n                right = x;\n                top = y + barLeft;\n                bottom = y + barRight;\n\n                // account for negative bars\n                if (right < left) {\n                    tmp = right;\n                    right = left;\n                    left = tmp;\n                    drawLeft = true;\n                    drawRight = false;\n                }\n            }\n            else {\n                drawLeft = drawRight = drawTop = true;\n                drawBottom = false;\n                left = x + barLeft;\n                right = x + barRight;\n                bottom = b;\n                top = y;\n\n                // account for negative bars\n                if (top < bottom) {\n                    tmp = top;\n                    top = bottom;\n                    bottom = tmp;\n                    drawBottom = true;\n                    drawTop = false;\n                }\n            }\n\n            // clip\n            if (right < axisx.min || left > axisx.max ||\n                top < axisy.min || bottom > axisy.max)\n                return;\n\n            if (left < axisx.min) {\n                left = axisx.min;\n                drawLeft = false;\n            }\n\n            if (right > axisx.max) {\n                right = axisx.max;\n                drawRight = false;\n            }\n\n            if (bottom < axisy.min) {\n                bottom = axisy.min;\n                drawBottom = false;\n            }\n\n            if (top > axisy.max) {\n                top = axisy.max;\n                drawTop = false;\n            }\n\n            left = axisx.p2c(left);\n            bottom = axisy.p2c(bottom);\n            right = axisx.p2c(right);\n            top = axisy.p2c(top);\n\n            // fill the bar\n            if (fillStyleCallback) {\n                c.fillStyle = fillStyleCallback(bottom, top);\n                c.fillRect(left, top, right - left, bottom - top)\n            }\n\n            // draw outline\n            if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {\n                c.beginPath();\n\n                // FIXME: inline moveTo is buggy with excanvas\n                c.moveTo(left, bottom);\n                if (drawLeft)\n                    c.lineTo(left, top);\n                else\n                    c.moveTo(left, top);\n                if (drawTop)\n                    c.lineTo(right, top);\n                else\n                    c.moveTo(right, top);\n                if (drawRight)\n                    c.lineTo(right, bottom);\n                else\n                    c.moveTo(right, bottom);\n                if (drawBottom)\n                    c.lineTo(left, bottom);\n                else\n                    c.moveTo(left, bottom);\n                c.stroke();\n            }\n        }\n\n        function drawSeriesBars(series) {\n            function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    if (points[i] == null)\n                        continue;\n                    drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // FIXME: figure out a way to add shadows (for instance along the right edge)\n            ctx.lineWidth = series.bars.lineWidth;\n            ctx.strokeStyle = series.color;\n\n            var barLeft;\n\n            switch (series.bars.align) {\n                case \"left\":\n                    barLeft = 0;\n                    break;\n                case \"right\":\n                    barLeft = -series.bars.barWidth;\n                    break;\n                default:\n                    barLeft = -series.bars.barWidth / 2;\n            }\n\n            var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;\n            plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function getFillStyle(filloptions, seriesColor, bottom, top) {\n            var fill = filloptions.fill;\n            if (!fill)\n                return null;\n\n            if (filloptions.fillColor)\n                return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);\n\n            var c = $.color.parse(seriesColor);\n            c.a = typeof fill == \"number\" ? fill : 0.4;\n            c.normalize();\n            return c.toString();\n        }\n\n        function insertLegend() {\n\n            if (options.legend.container != null) {\n                $(options.legend.container).html(\"\");\n            } else {\n                placeholder.find(\".legend\").remove();\n            }\n\n            if (!options.legend.show) {\n                return;\n            }\n\n            var fragments = [], entries = [], rowStarted = false,\n                lf = options.legend.labelFormatter, s, label;\n\n            // Build a list of legend entries, with each having a label and a color\n\n            for (var i = 0; i < series.length; ++i) {\n                s = series[i];\n                if (s.label) {\n                    label = lf ? lf(s.label, s) : s.label;\n                    if (label) {\n                        entries.push({\n                            label: label,\n                            color: s.color\n                        });\n                    }\n                }\n            }\n\n            // Sort the legend using either the default or a custom comparator\n\n            if (options.legend.sorted) {\n                if ($.isFunction(options.legend.sorted)) {\n                    entries.sort(options.legend.sorted);\n                } else if (options.legend.sorted == \"reverse\") {\n                \tentries.reverse();\n                } else {\n                    var ascending = options.legend.sorted != \"descending\";\n                    entries.sort(function(a, b) {\n                        return a.label == b.label ? 0 : (\n                            (a.label < b.label) != ascending ? 1 : -1   // Logical XOR\n                        );\n                    });\n                }\n            }\n\n            // Generate markup for the list of entries, in their final order\n\n            for (var i = 0; i < entries.length; ++i) {\n\n                var entry = entries[i];\n\n                if (i % options.legend.noColumns == 0) {\n                    if (rowStarted)\n                        fragments.push('</tr>');\n                    fragments.push('<tr>');\n                    rowStarted = true;\n                }\n\n                fragments.push(\n                    '<td class=\"legendColorBox\"><div style=\"border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px\"><div style=\"width:4px;height:0;border:5px solid ' + entry.color + ';overflow:hidden\"></div></div></td>' +\n                    '<td class=\"legendLabel\">' + entry.label + '</td>'\n                );\n            }\n\n            if (rowStarted)\n                fragments.push('</tr>');\n\n            if (fragments.length == 0)\n                return;\n\n            var table = '<table style=\"font-size:smaller;color:' + options.grid.color + '\">' + fragments.join(\"\") + '</table>';\n            if (options.legend.container != null)\n                $(options.legend.container).html(table);\n            else {\n                var pos = \"\",\n                    p = options.legend.position,\n                    m = options.legend.margin;\n                if (m[0] == null)\n                    m = [m, m];\n                if (p.charAt(0) == \"n\")\n                    pos += 'top:' + (m[1] + plotOffset.top) + 'px;';\n                else if (p.charAt(0) == \"s\")\n                    pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';\n                if (p.charAt(1) == \"e\")\n                    pos += 'right:' + (m[0] + plotOffset.right) + 'px;';\n                else if (p.charAt(1) == \"w\")\n                    pos += 'left:' + (m[0] + plotOffset.left) + 'px;';\n                var legend = $('<div class=\"legend\">' + table.replace('style=\"', 'style=\"position:absolute;' + pos +';') + '</div>').appendTo(placeholder);\n                if (options.legend.backgroundOpacity != 0.0) {\n                    // put in the transparent background\n                    // separately to avoid blended labels and\n                    // label boxes\n                    var c = options.legend.backgroundColor;\n                    if (c == null) {\n                        c = options.grid.backgroundColor;\n                        if (c && typeof c == \"string\")\n                            c = $.color.parse(c);\n                        else\n                            c = $.color.extract(legend, 'background-color');\n                        c.a = 1;\n                        c = c.toString();\n                    }\n                    var div = legend.children();\n                    $('<div style=\"position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);\n                }\n            }\n        }\n\n\n        // interactive features\n\n        var highlights = [],\n            redrawTimeout = null;\n\n        // returns the data item the mouse is over, or null if none is found\n        function findNearbyItem(mouseX, mouseY, seriesFilter) {\n            var maxDistance = options.grid.mouseActiveRadius,\n                smallestDistance = maxDistance * maxDistance + 1,\n                item = null, foundPoint = false, i, j, ps;\n\n            for (i = series.length - 1; i >= 0; --i) {\n                if (!seriesFilter(series[i]))\n                    continue;\n\n                var s = series[i],\n                    axisx = s.xaxis,\n                    axisy = s.yaxis,\n                    points = s.datapoints.points,\n                    mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster\n                    my = axisy.c2p(mouseY),\n                    maxx = maxDistance / axisx.scale,\n                    maxy = maxDistance / axisy.scale;\n\n                ps = s.datapoints.pointsize;\n                // with inverse transforms, we can't use the maxx/maxy\n                // optimization, sadly\n                if (axisx.options.inverseTransform)\n                    maxx = Number.MAX_VALUE;\n                if (axisy.options.inverseTransform)\n                    maxy = Number.MAX_VALUE;\n\n                if (s.lines.show || s.points.show) {\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1];\n                        if (x == null)\n                            continue;\n\n                        // For points and lines, the cursor must be within a\n                        // certain distance to the data point\n                        if (x - mx > maxx || x - mx < -maxx ||\n                            y - my > maxy || y - my < -maxy)\n                            continue;\n\n                        // We have to calculate distances in pixels, not in\n                        // data units, because the scales of the axes may be different\n                        var dx = Math.abs(axisx.p2c(x) - mouseX),\n                            dy = Math.abs(axisy.p2c(y) - mouseY),\n                            dist = dx * dx + dy * dy; // we save the sqrt\n\n                        // use <= to ensure last point takes precedence\n                        // (last generally means on top of)\n                        if (dist < smallestDistance) {\n                            smallestDistance = dist;\n                            item = [i, j / ps];\n                        }\n                    }\n                }\n\n                if (s.bars.show && !item) { // no other point can be nearby\n\n                    var barLeft, barRight;\n\n                    switch (s.bars.align) {\n                        case \"left\":\n                            barLeft = 0;\n                            break;\n                        case \"right\":\n                            barLeft = -s.bars.barWidth;\n                            break;\n                        default:\n                            barLeft = -s.bars.barWidth / 2;\n                    }\n\n                    barRight = barLeft + s.bars.barWidth;\n\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1], b = points[j + 2];\n                        if (x == null)\n                            continue;\n\n                        // for a bar graph, the cursor must be inside the bar\n                        if (series[i].bars.horizontal ?\n                            (mx <= Math.max(b, x) && mx >= Math.min(b, x) &&\n                             my >= y + barLeft && my <= y + barRight) :\n                            (mx >= x + barLeft && mx <= x + barRight &&\n                             my >= Math.min(b, y) && my <= Math.max(b, y)))\n                                item = [i, j / ps];\n                    }\n                }\n            }\n\n            if (item) {\n                i = item[0];\n                j = item[1];\n                ps = series[i].datapoints.pointsize;\n\n                return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),\n                         dataIndex: j,\n                         series: series[i],\n                         seriesIndex: i };\n            }\n\n            return null;\n        }\n\n        function onMouseMove(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return s[\"hoverable\"] != false; });\n        }\n\n        function onMouseLeave(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return false; });\n        }\n\n        function onClick(e) {\n            triggerClickHoverEvent(\"plotclick\", e,\n                                   function (s) { return s[\"clickable\"] != false; });\n        }\n\n        // trigger click or hover event (they send the same parameters\n        // so we share their code)\n        function triggerClickHoverEvent(eventname, event, seriesFilter) {\n            var offset = eventHolder.offset(),\n                canvasX = event.pageX - offset.left - plotOffset.left,\n                canvasY = event.pageY - offset.top - plotOffset.top,\n            pos = canvasToAxisCoords({ left: canvasX, top: canvasY });\n\n            pos.pageX = event.pageX;\n            pos.pageY = event.pageY;\n\n            var item = findNearbyItem(canvasX, canvasY, seriesFilter);\n\n            if (item) {\n                // fill in mouse pos for any listeners out there\n                item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10);\n                item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10);\n            }\n\n            if (options.grid.autoHighlight) {\n                // clear auto-highlights\n                for (var i = 0; i < highlights.length; ++i) {\n                    var h = highlights[i];\n                    if (h.auto == eventname &&\n                        !(item && h.series == item.series &&\n                          h.point[0] == item.datapoint[0] &&\n                          h.point[1] == item.datapoint[1]))\n                        unhighlight(h.series, h.point);\n                }\n\n                if (item)\n                    highlight(item.series, item.datapoint, eventname);\n            }\n\n            placeholder.trigger(eventname, [ pos, item ]);\n        }\n\n        function triggerRedrawOverlay() {\n            var t = options.interaction.redrawOverlayInterval;\n            if (t == -1) {      // skip event queue\n                drawOverlay();\n                return;\n            }\n\n            if (!redrawTimeout)\n                redrawTimeout = setTimeout(drawOverlay, t);\n        }\n\n        function drawOverlay() {\n            redrawTimeout = null;\n\n            // draw highlights\n            octx.save();\n            overlay.clear();\n            octx.translate(plotOffset.left, plotOffset.top);\n\n            var i, hi;\n            for (i = 0; i < highlights.length; ++i) {\n                hi = highlights[i];\n\n                if (hi.series.bars.show)\n                    drawBarHighlight(hi.series, hi.point);\n                else\n                    drawPointHighlight(hi.series, hi.point);\n            }\n            octx.restore();\n\n            executeHooks(hooks.drawOverlay, [octx]);\n        }\n\n        function highlight(s, point, auto) {\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i == -1) {\n                highlights.push({ series: s, point: point, auto: auto });\n\n                triggerRedrawOverlay();\n            }\n            else if (!auto)\n                highlights[i].auto = false;\n        }\n\n        function unhighlight(s, point) {\n            if (s == null && point == null) {\n                highlights = [];\n                triggerRedrawOverlay();\n                return;\n            }\n\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i != -1) {\n                highlights.splice(i, 1);\n\n                triggerRedrawOverlay();\n            }\n        }\n\n        function indexOfHighlight(s, p) {\n            for (var i = 0; i < highlights.length; ++i) {\n                var h = highlights[i];\n                if (h.series == s && h.point[0] == p[0]\n                    && h.point[1] == p[1])\n                    return i;\n            }\n            return -1;\n        }\n\n        function drawPointHighlight(series, point) {\n            var x = point[0], y = point[1],\n                axisx = series.xaxis, axisy = series.yaxis,\n                highlightColor = (typeof series.highlightColor === \"string\") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString();\n\n            if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                return;\n\n            var pointRadius = series.points.radius + series.points.lineWidth / 2;\n            octx.lineWidth = pointRadius;\n            octx.strokeStyle = highlightColor;\n            var radius = 1.5 * pointRadius;\n            x = axisx.p2c(x);\n            y = axisy.p2c(y);\n\n            octx.beginPath();\n            if (series.points.symbol == \"circle\")\n                octx.arc(x, y, radius, 0, 2 * Math.PI, false);\n            else\n                series.points.symbol(octx, x, y, radius, false);\n            octx.closePath();\n            octx.stroke();\n        }\n\n        function drawBarHighlight(series, point) {\n            var highlightColor = (typeof series.highlightColor === \"string\") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(),\n                fillStyle = highlightColor,\n                barLeft;\n\n            switch (series.bars.align) {\n                case \"left\":\n                    barLeft = 0;\n                    break;\n                case \"right\":\n                    barLeft = -series.bars.barWidth;\n                    break;\n                default:\n                    barLeft = -series.bars.barWidth / 2;\n            }\n\n            octx.lineWidth = series.bars.lineWidth;\n            octx.strokeStyle = highlightColor;\n\n            drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,\n                    function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);\n        }\n\n        function getColorOrGradient(spec, bottom, top, defaultColor) {\n            if (typeof spec == \"string\")\n                return spec;\n            else {\n                // assume this is a gradient spec; IE currently only\n                // supports a simple vertical gradient properly, so that's\n                // what we support too\n                var gradient = ctx.createLinearGradient(0, top, 0, bottom);\n\n                for (var i = 0, l = spec.colors.length; i < l; ++i) {\n                    var c = spec.colors[i];\n                    if (typeof c != \"string\") {\n                        var co = $.color.parse(defaultColor);\n                        if (c.brightness != null)\n                            co = co.scale('rgb', c.brightness);\n                        if (c.opacity != null)\n                            co.a *= c.opacity;\n                        c = co.toString();\n                    }\n                    gradient.addColorStop(i / (l - 1), c);\n                }\n\n                return gradient;\n            }\n        }\n    }\n\n    // Add the plot function to the top level of the jQuery object\n\n    $.plot = function(placeholder, data, options) {\n        //var t0 = new Date();\n        var plot = new Plot($(placeholder), data, options, $.plot.plugins);\n        //(window.console ? console.log : alert)(\"time used (msecs): \" + ((new Date()).getTime() - t0.getTime()));\n        return plot;\n    };\n\n    $.plot.version = \"0.8.3\";\n\n    $.plot.plugins = [];\n\n    // Also add the plot function as a chainable property\n\n    $.fn.plot = function(data, options) {\n        return this.each(function() {\n            $.plot(this, data, options);\n        });\n    };\n\n    // round to nearby lower multiple of base\n    function floorInBase(n, base) {\n        return base * Math.floor(n / base);\n    }\n\n})(jQuery);\n\ndefine(\"flot\", [\"jquery\"], function(){});\n\n","/* Flot plugin for stacking data sets rather than overlyaing them.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin assumes the data is sorted on x (or y if stacking horizontally).\nFor line charts, it is assumed that if a line has an undefined gap (from a\nnull point), then the line above it should have the same gap - insert zeros\ninstead of \"null\" if you want another behaviour. This also holds for the start\nand end of the chart. Note that stacking a mix of positive and negative values\nin most instances doesn't make sense (so it looks weird).\n\nTwo or more series are stacked when their \"stack\" attribute is set to the same\nkey (which can be any number or string or just \"true\"). To specify the default\nstack, you can set the stack option like this:\n\n\tseries: {\n\t\tstack: null/false, true, or a key (number/string)\n\t}\n\nYou can also specify it for a single series, like this:\n\n\t$.plot( $(\"#placeholder\"), [{\n\t\tdata: [ ... ],\n\t\tstack: true\n\t}])\n\nThe stacking order is determined by the order of the data series in the array\n(later series end up on top of the previous).\n\nInternally, the plugin modifies the datapoints in each series, adding an\noffset to the y value. For line series, extra data points are inserted through\ninterpolation. If there's a second y value, it's also adjusted (e.g for bar\ncharts or filled areas).\n\n*/\n\n(function ($) {\n    var options = {\n        series: { stack: null } // or number/string\n    };\n    \n    function init(plot) {\n        function findMatchingSeries(s, allseries) {\n            var res = null;\n            for (var i = 0; i < allseries.length; ++i) {\n                if (s == allseries[i])\n                    break;\n                \n                if (allseries[i].stack == s.stack)\n                    res = allseries[i];\n            }\n            \n            return res;\n        }\n        \n        function stackData(plot, s, datapoints) {\n            if (s.stack == null || s.stack === false)\n                return;\n\n            var other = findMatchingSeries(s, plot.getData());\n            if (!other)\n                return;\n\n            var ps = datapoints.pointsize,\n                points = datapoints.points,\n                otherps = other.datapoints.pointsize,\n                otherpoints = other.datapoints.points,\n                newpoints = [],\n                px, py, intery, qx, qy, bottom,\n                withlines = s.lines.show,\n                horizontal = s.bars.horizontal,\n                withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y),\n                withsteps = withlines && s.lines.steps,\n                fromgap = true,\n                keyOffset = horizontal ? 1 : 0,\n                accumulateOffset = horizontal ? 0 : 1,\n                i = 0, j = 0, l, m;\n\n            while (true) {\n                if (i >= points.length)\n                    break;\n\n                l = newpoints.length;\n\n                if (points[i] == null) {\n                    // copy gaps\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(points[i + m]);\n                    i += ps;\n                }\n                else if (j >= otherpoints.length) {\n                    // for lines, we can't use the rest of the points\n                    if (!withlines) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                    }\n                    i += ps;\n                }\n                else if (otherpoints[j] == null) {\n                    // oops, got a gap\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(null);\n                    fromgap = true;\n                    j += otherps;\n                }\n                else {\n                    // cases where we actually got two points\n                    px = points[i + keyOffset];\n                    py = points[i + accumulateOffset];\n                    qx = otherpoints[j + keyOffset];\n                    qy = otherpoints[j + accumulateOffset];\n                    bottom = 0;\n\n                    if (px == qx) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n\n                        newpoints[l + accumulateOffset] += qy;\n                        bottom = qy;\n                        \n                        i += ps;\n                        j += otherps;\n                    }\n                    else if (px > qx) {\n                        // we got past point below, might need to\n                        // insert interpolated extra point\n                        if (withlines && i > 0 && points[i - ps] != null) {\n                            intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px);\n                            newpoints.push(qx);\n                            newpoints.push(intery + qy);\n                            for (m = 2; m < ps; ++m)\n                                newpoints.push(points[i + m]);\n                            bottom = qy; \n                        }\n\n                        j += otherps;\n                    }\n                    else { // px < qx\n                        if (fromgap && withlines) {\n                            // if we come from a gap, we just skip this point\n                            i += ps;\n                            continue;\n                        }\n                            \n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                        \n                        // we might be able to interpolate a point below,\n                        // this can give us a better y\n                        if (withlines && j > 0 && otherpoints[j - otherps] != null)\n                            bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx);\n\n                        newpoints[l + accumulateOffset] += bottom;\n                        \n                        i += ps;\n                    }\n\n                    fromgap = false;\n                    \n                    if (l != newpoints.length && withbottom)\n                        newpoints[l + 2] += bottom;\n                }\n\n                // maintain the line steps invariant\n                if (withsteps && l != newpoints.length && l > 0\n                    && newpoints[l] != null\n                    && newpoints[l] != newpoints[l - ps]\n                    && newpoints[l + 1] != newpoints[l - ps + 1]) {\n                    for (m = 0; m < ps; ++m)\n                        newpoints[l + ps + m] = newpoints[l + m];\n                    newpoints[l + 1] = newpoints[l - ps + 1];\n                }\n            }\n\n            datapoints.points = newpoints;\n        }\n        \n        plot.hooks.processDatapoints.push(stackData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'stack',\n        version: '1.2'\n    });\n})(jQuery);\n\ndefine(\"flot.stack\", [\"flot\"], function(){});\n\n","/* Flot plugin for automatically redrawing plots as the placeholder resizes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nIt works by listening for changes on the placeholder div (through the jQuery\nresize event plugin) - if the size changes, it will redraw the plot.\n\nThere are no options. If you need to disable the plugin for some plots, you\ncan just fix the size of their placeholders.\n\n*/\n\n/* Inline dependency:\n * jQuery resize event - v1.1 - 3/14/2010\n * http://benalman.com/projects/jquery-resize-plugin/\n *\n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n(function($,e,t){\"$:nomunge\";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s=\"setTimeout\",u=\"resize\",m=u+\"-special-event\",o=\"pendingDelay\",l=\"activeDelay\",f=\"throttleWindow\";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(\":visible\")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);\n\n(function ($) {\n    var options = { }; // no options\n\n    function init(plot) {\n        function onResize() {\n            var placeholder = plot.getPlaceholder();\n\n            // somebody might have hidden us and we can't plot\n            // when we don't have the dimensions\n            if (placeholder.width() == 0 || placeholder.height() == 0)\n                return;\n\n            plot.resize();\n            plot.setupGrid();\n            plot.draw();\n        }\n        \n        function bindEvents(plot, eventHolder) {\n            plot.getPlaceholder().resize(onResize);\n        }\n\n        function shutdown(plot, eventHolder) {\n            plot.getPlaceholder().unbind(\"resize\", onResize);\n        }\n        \n        plot.hooks.bindEvents.push(bindEvents);\n        plot.hooks.shutdown.push(shutdown);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'resize',\n        version: '1.0'\n    });\n})(jQuery);\n\ndefine(\"flot.resize\", [\"flot\"], function(){});\n\n","/*\n * jquery.flot.tooltip\n * \n * description: easy-to-use tooltips for Flot charts\n * version: 0.8.4\n * authors: Krzysztof Urbas @krzysu [myviews.pl],Evan Steinkerchner @Roundaround\n * website: https://github.com/krzysu/flot.tooltip\n * \n * build on 2014-08-04\n * released under MIT License, 2012\n*/ \n!function(a){var b={tooltip:!1,tooltipOpts:{id:\"flotTip\",content:\"%s | X: %x | Y: %y\",xDateFormat:null,yDateFormat:null,monthNames:null,dayNames:null,shifts:{x:10,y:20},defaultTheme:!0,lines:{track:!1,threshold:.05},onHover:function(){},$compat:!1}},c=function(a){this.tipPosition={x:0,y:0},this.init(a)};c.prototype.init=function(b){function c(a){var c={};c.x=a.pageX,c.y=a.pageY,b.setTooltipPosition(c)}function d(c,d,f){var g=function(a,b,c,d){return Math.sqrt((c-a)*(c-a)+(d-b)*(d-b))},h=function(a,b,c,d,e,f,h){if(!h||(h=function(a,b,c,d,e,f){if(\"undefined\"!=typeof c)return{x:c,y:b};if(\"undefined\"!=typeof d)return{x:a,y:d};var g,h=-1/((f-d)/(e-c));return{x:g=(e*(a*h-b+d)+c*(a*-h+b-f))/(h*(e-c)+d-f),y:h*g-h*a+b}}(a,b,c,d,e,f),h.x>=Math.min(c,e)&&h.x<=Math.max(c,e)&&h.y>=Math.min(d,f)&&h.y<=Math.max(d,f))){var i=d-f,j=e-c,k=c*f-d*e;return Math.abs(i*a+j*b+k)/Math.sqrt(i*i+j*j)}var l=g(a,b,c,d),m=g(a,b,e,f);return l>m?m:l};if(f)b.showTooltip(f,d);else if(e.plotOptions.series.lines.show&&e.tooltipOptions.lines.track===!0){var i={distance:-1};a.each(b.getData(),function(a,c){for(var f=0,j=-1,k=1;k<c.data.length;k++)c.data[k-1][0]<=d.x&&c.data[k][0]>=d.x&&(f=k-1,j=k);if(-1===j)return void b.hideTooltip();var l={x:c.data[f][0],y:c.data[f][1]},m={x:c.data[j][0],y:c.data[j][1]},n=h(d.x,d.y,l.x,l.y,m.x,m.y,!1);if(n<e.tooltipOptions.lines.threshold){var o=g(l.x,l.y,d.x,d.y)<g(d.x,d.y,m.x,m.y)?f:j,p=(c.datapoints.pointsize,[d.x,l.y+(m.y-l.y)*((d.x-l.x)/(m.x-l.x))]),q={datapoint:p,dataIndex:o,series:c,seriesIndex:a};(-1===i.distance||n<i.distance)&&(i={distance:n,item:q})}}),-1!==i.distance?b.showTooltip(i.item,d):b.hideTooltip()}else b.hideTooltip()}var e=this,f=a.plot.plugins.length;if(this.plotPlugins=[],f)for(var g=0;f>g;g++)this.plotPlugins.push(a.plot.plugins[g].name);b.hooks.bindEvents.push(function(b,f){if(e.plotOptions=b.getOptions(),e.plotOptions.tooltip!==!1&&\"undefined\"!=typeof e.plotOptions.tooltip){e.tooltipOptions=e.plotOptions.tooltipOpts,e.tooltipOptions.$compat?(e.wfunc=\"width\",e.hfunc=\"height\"):(e.wfunc=\"innerWidth\",e.hfunc=\"innerHeight\");{e.getDomElement()}a(b.getPlaceholder()).bind(\"plothover\",d),a(f).bind(\"mousemove\",c)}}),b.hooks.shutdown.push(function(b,e){a(b.getPlaceholder()).unbind(\"plothover\",d),a(e).unbind(\"mousemove\",c)}),b.setTooltipPosition=function(b){var c=e.getDomElement(),d=c.outerWidth()+e.tooltipOptions.shifts.x,f=c.outerHeight()+e.tooltipOptions.shifts.y;b.x-a(window).scrollLeft()>a(window)[e.wfunc]()-d&&(b.x-=d),b.y-a(window).scrollTop()>a(window)[e.hfunc]()-f&&(b.y-=f),e.tipPosition.x=b.x,e.tipPosition.y=b.y},b.showTooltip=function(a,c){var d=e.getDomElement(),f=e.stringFormat(e.tooltipOptions.content,a);d.html(f),b.setTooltipPosition({x:c.pageX,y:c.pageY}),d.css({left:e.tipPosition.x+e.tooltipOptions.shifts.x,top:e.tipPosition.y+e.tooltipOptions.shifts.y}).show(),\"function\"==typeof e.tooltipOptions.onHover&&e.tooltipOptions.onHover(a,d)},b.hideTooltip=function(){e.getDomElement().hide().html(\"\")}},c.prototype.getDomElement=function(){var b=a(\"#\"+this.tooltipOptions.id);return 0===b.length&&(b=a(\"<div />\").attr(\"id\",this.tooltipOptions.id),b.appendTo(\"body\").hide().css({position:\"absolute\"}),this.tooltipOptions.defaultTheme&&b.css({background:\"#fff\",\"z-index\":\"1040\",padding:\"0.4em 0.6em\",\"border-radius\":\"0.5em\",\"font-size\":\"0.8em\",border:\"1px solid #111\",display:\"none\",\"white-space\":\"nowrap\"})),b},c.prototype.stringFormat=function(a,b){var c,d,e,f,g=/%p\\.{0,1}(\\d{0,})/,h=/%s/,i=/%lx/,j=/%ly/,k=/%x\\.{0,1}(\\d{0,})/,l=/%y\\.{0,1}(\\d{0,})/,m=\"%x\",n=\"%y\",o=\"%ct\";if(\"undefined\"!=typeof b.series.threshold?(c=b.datapoint[0],d=b.datapoint[1],e=b.datapoint[2]):\"undefined\"!=typeof b.series.lines&&b.series.lines.steps?(c=b.series.datapoints.points[2*b.dataIndex],d=b.series.datapoints.points[2*b.dataIndex+1],e=\"\"):(c=b.series.data[b.dataIndex][0],d=b.series.data[b.dataIndex][1],e=b.series.data[b.dataIndex][2]),null===b.series.label&&b.series.originSeries&&(b.series.label=b.series.originSeries.label),\"function\"==typeof a&&(a=a(b.series.label,c,d,b)),\"undefined\"!=typeof b.series.percent?f=b.series.percent:\"undefined\"!=typeof b.series.percents&&(f=b.series.percents[b.dataIndex]),\"number\"==typeof f&&(a=this.adjustValPrecision(g,a,f)),a=\"undefined\"!=typeof b.series.label?a.replace(h,b.series.label):a.replace(h,\"\"),a=this.hasAxisLabel(\"xaxis\",b)?a.replace(i,b.series.xaxis.options.axisLabel):a.replace(i,\"\"),a=this.hasAxisLabel(\"yaxis\",b)?a.replace(j,b.series.yaxis.options.axisLabel):a.replace(j,\"\"),this.isTimeMode(\"xaxis\",b)&&this.isXDateFormat(b)&&(a=a.replace(k,this.timestampToDate(c,this.tooltipOptions.xDateFormat,b.series.xaxis.options))),this.isTimeMode(\"yaxis\",b)&&this.isYDateFormat(b)&&(a=a.replace(l,this.timestampToDate(d,this.tooltipOptions.yDateFormat,b.series.yaxis.options))),\"number\"==typeof c&&(a=this.adjustValPrecision(k,a,c)),\"number\"==typeof d&&(a=this.adjustValPrecision(l,a,d)),\"undefined\"!=typeof b.series.xaxis.ticks){var p;p=this.hasRotatedXAxisTicks(b)?\"rotatedTicks\":\"ticks\";var q=b.dataIndex+b.seriesIndex;if(b.series.xaxis[p].length>q&&!this.isTimeMode(\"xaxis\",b)){var r=this.isCategoriesMode(\"xaxis\",b)?b.series.xaxis[p][q].label:b.series.xaxis[p][q].v;r===c&&(a=a.replace(k,b.series.xaxis[p][q].label))}}if(\"undefined\"!=typeof b.series.yaxis.ticks)for(var s in b.series.yaxis.ticks)if(b.series.yaxis.ticks.hasOwnProperty(s)){var t=this.isCategoriesMode(\"yaxis\",b)?b.series.yaxis.ticks[s].label:b.series.yaxis.ticks[s].v;t===d&&(a=a.replace(l,b.series.yaxis.ticks[s].label))}return\"undefined\"!=typeof b.series.xaxis.tickFormatter&&(a=a.replace(m,b.series.xaxis.tickFormatter(c,b.series.xaxis).replace(/\\$/g,\"$$\"))),\"undefined\"!=typeof b.series.yaxis.tickFormatter&&(a=a.replace(n,b.series.yaxis.tickFormatter(d,b.series.yaxis).replace(/\\$/g,\"$$\"))),e&&(a=a.replace(o,e)),a},c.prototype.isTimeMode=function(a,b){return\"undefined\"!=typeof b.series[a].options.mode&&\"time\"===b.series[a].options.mode},c.prototype.isXDateFormat=function(){return\"undefined\"!=typeof this.tooltipOptions.xDateFormat&&null!==this.tooltipOptions.xDateFormat},c.prototype.isYDateFormat=function(){return\"undefined\"!=typeof this.tooltipOptions.yDateFormat&&null!==this.tooltipOptions.yDateFormat},c.prototype.isCategoriesMode=function(a,b){return\"undefined\"!=typeof b.series[a].options.mode&&\"categories\"===b.series[a].options.mode},c.prototype.timestampToDate=function(b,c,d){var e=a.plot.dateGenerator(b,d);return a.plot.formatDate(e,c,this.tooltipOptions.monthNames,this.tooltipOptions.dayNames)},c.prototype.adjustValPrecision=function(a,b,c){var d,e=b.match(a);return null!==e&&\"\"!==RegExp.$1&&(d=RegExp.$1,c=c.toFixed(d),b=b.replace(a,c)),b},c.prototype.hasAxisLabel=function(b,c){return-1!==a.inArray(this.plotPlugins,\"axisLabels\")&&\"undefined\"!=typeof c.series[b].options.axisLabel&&c.series[b].options.axisLabel.length>0},c.prototype.hasRotatedXAxisTicks=function(b){return-1!==a.inArray(this.plotPlugins,\"tickRotor\")&&\"undefined\"!=typeof b.series.xaxis.rotatedTicks};var d=function(a){new c(a)};a.plot.plugins.push({init:d,options:b,name:\"tooltip\",version:\"0.8.4\"})}(jQuery);\ndefine(\"flot.tooltip\", [\"flot\"], function(){});\n\n","/* Pretty handling of time axes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nSet axis.mode to \"time\" to enable. See the section \"Time series data\" in\nAPI.txt for details.\n\n*/\n\n(function($) {\n\n\tvar options = {\n\t\txaxis: {\n\t\t\ttimezone: null,\t\t// \"browser\" for local to the client or timezone for timezone-js\n\t\t\ttimeformat: null,\t// format string to use\n\t\t\ttwelveHourClock: false,\t// 12 or 24 time in time mode\n\t\t\tmonthNames: null\t// list of names of months\n\t\t}\n\t};\n\n\t// round to nearby lower multiple of base\n\n\tfunction floorInBase(n, base) {\n\t\treturn base * Math.floor(n / base);\n\t}\n\n\t// Returns a string with the date d formatted according to fmt.\n\t// A subset of the Open Group's strftime format is supported.\n\n\tfunction formatDate(d, fmt, monthNames, dayNames) {\n\n\t\tif (typeof d.strftime == \"function\") {\n\t\t\treturn d.strftime(fmt);\n\t\t}\n\n\t\tvar leftPad = function(n, pad) {\n\t\t\tn = \"\" + n;\n\t\t\tpad = \"\" + (pad == null ? \"0\" : pad);\n\t\t\treturn n.length == 1 ? pad + n : n;\n\t\t};\n\n\t\tvar r = [];\n\t\tvar escape = false;\n\t\tvar hours = d.getHours();\n\t\tvar isAM = hours < 12;\n\n\t\tif (monthNames == null) {\n\t\t\tmonthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\t\t}\n\n\t\tif (dayNames == null) {\n\t\t\tdayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\t\t}\n\n\t\tvar hours12;\n\n\t\tif (hours > 12) {\n\t\t\thours12 = hours - 12;\n\t\t} else if (hours == 0) {\n\t\t\thours12 = 12;\n\t\t} else {\n\t\t\thours12 = hours;\n\t\t}\n\n\t\tfor (var i = 0; i < fmt.length; ++i) {\n\n\t\t\tvar c = fmt.charAt(i);\n\n\t\t\tif (escape) {\n\t\t\t\tswitch (c) {\n\t\t\t\t\tcase 'a': c = \"\" + dayNames[d.getDay()]; break;\n\t\t\t\t\tcase 'b': c = \"\" + monthNames[d.getMonth()]; break;\n\t\t\t\t\tcase 'd': c = leftPad(d.getDate()); break;\n\t\t\t\t\tcase 'e': c = leftPad(d.getDate(), \" \"); break;\n\t\t\t\t\tcase 'h':\t// For back-compat with 0.7; remove in 1.0\n\t\t\t\t\tcase 'H': c = leftPad(hours); break;\n\t\t\t\t\tcase 'I': c = leftPad(hours12); break;\n\t\t\t\t\tcase 'l': c = leftPad(hours12, \" \"); break;\n\t\t\t\t\tcase 'm': c = leftPad(d.getMonth() + 1); break;\n\t\t\t\t\tcase 'M': c = leftPad(d.getMinutes()); break;\n\t\t\t\t\t// quarters not in Open Group's strftime specification\n\t\t\t\t\tcase 'q':\n\t\t\t\t\t\tc = \"\" + (Math.floor(d.getMonth() / 3) + 1); break;\n\t\t\t\t\tcase 'S': c = leftPad(d.getSeconds()); break;\n\t\t\t\t\tcase 'y': c = leftPad(d.getFullYear() % 100); break;\n\t\t\t\t\tcase 'Y': c = \"\" + d.getFullYear(); break;\n\t\t\t\t\tcase 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n\t\t\t\t\tcase 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n\t\t\t\t\tcase 'w': c = \"\" + d.getDay(); break;\n\t\t\t\t}\n\t\t\t\tr.push(c);\n\t\t\t\tescape = false;\n\t\t\t} else {\n\t\t\t\tif (c == \"%\") {\n\t\t\t\t\tescape = true;\n\t\t\t\t} else {\n\t\t\t\t\tr.push(c);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn r.join(\"\");\n\t}\n\n\t// To have a consistent view of time-based data independent of which time\n\t// zone the client happens to be in we need a date-like object independent\n\t// of time zones.  This is done through a wrapper that only calls the UTC\n\t// versions of the accessor methods.\n\n\tfunction makeUtcWrapper(d) {\n\n\t\tfunction addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) {\n\t\t\tsourceObj[sourceMethod] = function() {\n\t\t\t\treturn targetObj[targetMethod].apply(targetObj, arguments);\n\t\t\t};\n\t\t};\n\n\t\tvar utc = {\n\t\t\tdate: d\n\t\t};\n\n\t\t// support strftime, if found\n\n\t\tif (d.strftime != undefined) {\n\t\t\taddProxyMethod(utc, \"strftime\", d, \"strftime\");\n\t\t}\n\n\t\taddProxyMethod(utc, \"getTime\", d, \"getTime\");\n\t\taddProxyMethod(utc, \"setTime\", d, \"setTime\");\n\n\t\tvar props = [\"Date\", \"Day\", \"FullYear\", \"Hours\", \"Milliseconds\", \"Minutes\", \"Month\", \"Seconds\"];\n\n\t\tfor (var p = 0; p < props.length; p++) {\n\t\t\taddProxyMethod(utc, \"get\" + props[p], d, \"getUTC\" + props[p]);\n\t\t\taddProxyMethod(utc, \"set\" + props[p], d, \"setUTC\" + props[p]);\n\t\t}\n\n\t\treturn utc;\n\t};\n\n\t// select time zone strategy.  This returns a date-like object tied to the\n\t// desired timezone\n\n\tfunction dateGenerator(ts, opts) {\n\t\tif (opts.timezone == \"browser\") {\n\t\t\treturn new Date(ts);\n\t\t} else if (!opts.timezone || opts.timezone == \"utc\") {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t} else if (typeof timezoneJS != \"undefined\" && typeof timezoneJS.Date != \"undefined\") {\n\t\t\tvar d = new timezoneJS.Date();\n\t\t\t// timezone-js is fickle, so be sure to set the time zone before\n\t\t\t// setting the time.\n\t\t\td.setTimezone(opts.timezone);\n\t\t\td.setTime(ts);\n\t\t\treturn d;\n\t\t} else {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t}\n\t}\n\t\n\t// map of app. size of time units in milliseconds\n\n\tvar timeUnitSize = {\n\t\t\"second\": 1000,\n\t\t\"minute\": 60 * 1000,\n\t\t\"hour\": 60 * 60 * 1000,\n\t\t\"day\": 24 * 60 * 60 * 1000,\n\t\t\"month\": 30 * 24 * 60 * 60 * 1000,\n\t\t\"quarter\": 3 * 30 * 24 * 60 * 60 * 1000,\n\t\t\"year\": 365.2425 * 24 * 60 * 60 * 1000\n\t};\n\n\t// the allowed tick sizes, after 1 year we use\n\t// an integer algorithm\n\n\tvar baseSpec = [\n\t\t[1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n\t\t[30, \"second\"], \n\t\t[1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n\t\t[30, \"minute\"], \n\t\t[1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n\t\t[8, \"hour\"], [12, \"hour\"],\n\t\t[1, \"day\"], [2, \"day\"], [3, \"day\"],\n\t\t[0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n\t\t[2, \"month\"]\n\t];\n\n\t// we don't know which variant(s) we'll need yet, but generating both is\n\t// cheap\n\n\tvar specMonths = baseSpec.concat([[3, \"month\"], [6, \"month\"],\n\t\t[1, \"year\"]]);\n\tvar specQuarters = baseSpec.concat([[1, \"quarter\"], [2, \"quarter\"],\n\t\t[1, \"year\"]]);\n\n\tfunction init(plot) {\n\t\tplot.hooks.processOptions.push(function (plot, options) {\n\t\t\t$.each(plot.getAxes(), function(axisName, axis) {\n\n\t\t\t\tvar opts = axis.options;\n\n\t\t\t\tif (opts.mode == \"time\") {\n\t\t\t\t\taxis.tickGenerator = function(axis) {\n\n\t\t\t\t\t\tvar ticks = [];\n\t\t\t\t\t\tvar d = dateGenerator(axis.min, opts);\n\t\t\t\t\t\tvar minSize = 0;\n\n\t\t\t\t\t\t// make quarter use a possibility if quarters are\n\t\t\t\t\t\t// mentioned in either of these options\n\n\t\t\t\t\t\tvar spec = (opts.tickSize && opts.tickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ||\n\t\t\t\t\t\t\t(opts.minTickSize && opts.minTickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ? specQuarters : specMonths;\n\n\t\t\t\t\t\tif (opts.minTickSize != null) {\n\t\t\t\t\t\t\tif (typeof opts.tickSize == \"number\") {\n\t\t\t\t\t\t\t\tminSize = opts.tickSize;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tminSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var i = 0; i < spec.length - 1; ++i) {\n\t\t\t\t\t\t\tif (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n\t\t\t\t\t\t\t\t\t\t\t  + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n\t\t\t\t\t\t\t\t&& spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar size = spec[i][0];\n\t\t\t\t\t\tvar unit = spec[i][1];\n\n\t\t\t\t\t\t// special-case the possibility of several years\n\n\t\t\t\t\t\tif (unit == \"year\") {\n\n\t\t\t\t\t\t\t// if given a minTickSize in years, just use it,\n\t\t\t\t\t\t\t// ensuring that it's an integer\n\n\t\t\t\t\t\t\tif (opts.minTickSize != null && opts.minTickSize[1] == \"year\") {\n\t\t\t\t\t\t\t\tsize = Math.floor(opts.minTickSize[0]);\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tvar magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10));\n\t\t\t\t\t\t\t\tvar norm = (axis.delta / timeUnitSize.year) / magn;\n\n\t\t\t\t\t\t\t\tif (norm < 1.5) {\n\t\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t\t} else if (norm < 3) {\n\t\t\t\t\t\t\t\t\tsize = 2;\n\t\t\t\t\t\t\t\t} else if (norm < 7.5) {\n\t\t\t\t\t\t\t\t\tsize = 5;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsize = 10;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsize *= magn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// minimum size for years is 1\n\n\t\t\t\t\t\t\tif (size < 1) {\n\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taxis.tickSize = opts.tickSize || [size, unit];\n\t\t\t\t\t\tvar tickSize = axis.tickSize[0];\n\t\t\t\t\t\tunit = axis.tickSize[1];\n\n\t\t\t\t\t\tvar step = tickSize * timeUnitSize[unit];\n\n\t\t\t\t\t\tif (unit == \"second\") {\n\t\t\t\t\t\t\td.setSeconds(floorInBase(d.getSeconds(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"minute\") {\n\t\t\t\t\t\t\td.setMinutes(floorInBase(d.getMinutes(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"hour\") {\n\t\t\t\t\t\t\td.setHours(floorInBase(d.getHours(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"month\") {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"quarter\") {\n\t\t\t\t\t\t\td.setMonth(3 * floorInBase(d.getMonth() / 3,\n\t\t\t\t\t\t\t\ttickSize));\n\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\td.setFullYear(floorInBase(d.getFullYear(), tickSize));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset smaller components\n\n\t\t\t\t\t\td.setMilliseconds(0);\n\n\t\t\t\t\t\tif (step >= timeUnitSize.minute) {\n\t\t\t\t\t\t\td.setSeconds(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.hour) {\n\t\t\t\t\t\t\td.setMinutes(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day) {\n\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day * 4) {\n\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.month * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 3));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.quarter * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 6));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.year) {\n\t\t\t\t\t\t\td.setMonth(0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar carry = 0;\n\t\t\t\t\t\tvar v = Number.NaN;\n\t\t\t\t\t\tvar prev;\n\n\t\t\t\t\t\tdo {\n\n\t\t\t\t\t\t\tprev = v;\n\t\t\t\t\t\t\tv = d.getTime();\n\t\t\t\t\t\t\tticks.push(v);\n\n\t\t\t\t\t\t\tif (unit == \"month\" || unit == \"quarter\") {\n\t\t\t\t\t\t\t\tif (tickSize < 1) {\n\n\t\t\t\t\t\t\t\t\t// a bit complicated - we'll divide the\n\t\t\t\t\t\t\t\t\t// month/quarter up but we need to take\n\t\t\t\t\t\t\t\t\t// care of fractions so we don't end up in\n\t\t\t\t\t\t\t\t\t// the middle of a day\n\n\t\t\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t\t\t\tvar start = d.getTime();\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\t(unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t\tvar end = d.getTime();\n\t\t\t\t\t\t\t\t\td.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n\t\t\t\t\t\t\t\t\tcarry = d.getHours();\n\t\t\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\ttickSize * (unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\t\td.setFullYear(d.getFullYear() + tickSize);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\td.setTime(v + step);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (v < axis.max && v != prev);\n\n\t\t\t\t\t\treturn ticks;\n\t\t\t\t\t};\n\n\t\t\t\t\taxis.tickFormatter = function (v, axis) {\n\n\t\t\t\t\t\tvar d = dateGenerator(v, axis.options);\n\n\t\t\t\t\t\t// first check global format\n\n\t\t\t\t\t\tif (opts.timeformat != null) {\n\t\t\t\t\t\t\treturn formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// possibly use quarters if quarters are mentioned in\n\t\t\t\t\t\t// any of these places\n\n\t\t\t\t\t\tvar useQuarters = (axis.options.tickSize &&\n\t\t\t\t\t\t\t\taxis.options.tickSize[1] == \"quarter\") ||\n\t\t\t\t\t\t\t(axis.options.minTickSize &&\n\t\t\t\t\t\t\t\taxis.options.minTickSize[1] == \"quarter\");\n\n\t\t\t\t\t\tvar t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n\t\t\t\t\t\tvar span = axis.max - axis.min;\n\t\t\t\t\t\tvar suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n\t\t\t\t\t\tvar hourCode = (opts.twelveHourClock) ? \"%I\" : \"%H\";\n\t\t\t\t\t\tvar fmt;\n\n\t\t\t\t\t\tif (t < timeUnitSize.minute) {\n\t\t\t\t\t\t\tfmt = hourCode + \":%M:%S\" + suffix;\n\t\t\t\t\t\t} else if (t < timeUnitSize.day) {\n\t\t\t\t\t\t\tif (span < 2 * timeUnitSize.day) {\n\t\t\t\t\t\t\t\tfmt = hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %d \" + hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (t < timeUnitSize.month) {\n\t\t\t\t\t\t\tfmt = \"%b %d\";\n\t\t\t\t\t\t} else if ((useQuarters && t < timeUnitSize.quarter) ||\n\t\t\t\t\t\t\t(!useQuarters && t < timeUnitSize.year)) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"%b\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (useQuarters && t < timeUnitSize.year) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"Q%q\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"Q%q %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfmt = \"%Y\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar rt = formatDate(d, fmt, opts.monthNames, opts.dayNames);\n\n\t\t\t\t\t\treturn rt;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: 'time',\n\t\tversion: '1.0'\n\t});\n\n\t// Time-axis support used to be in Flot core, which exposed the\n\t// formatDate function on the plot object.  Various plugins depend\n\t// on the function, so we need to re-expose it here.\n\n\t$.plot.formatDate = formatDate;\n\t$.plot.dateGenerator = dateGenerator;\n\n})(jQuery);\n\ndefine(\"flot.time\", [\"flot\"], function(){});\n\n","define('utils/accounting',['require','hbs!./accounting/html','utils/locale','opennebula/vm','utils/notifier','utils/resource-select','flot','flot.stack','flot.resize','flot.tooltip','flot.time'],function(require) {\n  \n  var TemplateHTML = require('hbs!./accounting/html');\n  var Locale = require('utils/locale');\n  var OpenNebulaVM = require('opennebula/vm');\n  var Notifier = require('utils/notifier');\n  var ResourceSelect = require('utils/resource-select');\n\n  require('flot');\n  require('flot.stack');\n  require('flot.resize');\n  require('flot.tooltip');\n  require('flot.time');\n\n  function _html(){\n    var html = TemplateHTML({});\n\n    return html;\n  };\n\n  // context is a jQuery selector\n  // The following options can be set:\n  //   fixed_user     fix an owner user ID\n  //   fixed_group    fix an owner group ID\n  //   init_group_by  \"user\", \"group\", \"vm\". init the group-by selector\n  //   fixed_group_by \"user\", \"group\", \"vm\". set a fixed group-by selector\n  function _setup(context, opt) {\n    if (opt == undefined){\n      opt = {};\n    }\n\n    //--------------------------------------------------------------------------\n    // Set column width\n    //--------------------------------------------------------------------------\n\n    var n_columns = 3; // start, end time, button\n\n    if (opt.fixed_user == undefined && opt.fixed_group == undefined){\n      n_columns += 1;     //acct_owner_container\n    }\n\n    if(opt.fixed_group_by == undefined){\n      n_columns += 1;     //acct_group_by_container\n    }\n\n    if (n_columns > 4){\n      // In this case the first row will have 4 inputs, and the\n      // get accounting button will overflow to the second row\n      n_columns = 4;\n    }\n\n    var width = parseInt(12 / n_columns);\n\n    $(\"#acct_start_time_container\", context).addClass(\"large-\"+width);\n    $(\"#acct_end_time_container\",   context).addClass(\"large-\"+width);\n    $(\"#acct_group_by_container\",   context).addClass(\"large-\"+width);\n    $(\"#acct_owner_container\",      context).addClass(\"large-\"+width);\n    $(\"#acct_button_container\",     context).addClass(\"large-\"+width);\n\n    //--------------------------------------------------------------------------\n    // Init start time to 1st of last month\n    //--------------------------------------------------------------------------\n    var d = new Date();\n\n    d.setDate(1);\n    d.setMonth(d.getMonth() - 1);\n\n    $(\"#acct_start_time\", context).val(\n      d.getFullYear() + '-' + ('0'+(d.getMonth()+1)).slice(-2) + '-' + ('0'+d.getDate()).slice(-2));\n\n    //--------------------------------------------------------------------------\n    // Init end time to today\n    //--------------------------------------------------------------------------\n\n    d = new Date();\n\n    $(\"#acct_end_time\", context).val(\n      d.getFullYear() + '-' + ('0'+(d.getMonth()+1)).slice(-2) + '-' + ('0'+d.getDate()).slice(-2));\n\n    //--------------------------------------------------------------------------\n    // VM owner: all, group, user\n    //--------------------------------------------------------------------------\n\n    if (opt.fixed_user != undefined || opt.fixed_group != undefined){\n      $(\"#acct_owner_container\", context).hide();\n    } else {\n      $(\"select#acct_owner\", context).change(function(){\n        var value = $(this).val();\n\n        switch (value){\n        case \"acct_owner_all\":\n          $(\"#acct_owner_select\", context).hide();\n          break;\n\n        case \"acct_owner_group\":\n          $(\"#acct_owner_select\", context).show();\n          ResourceSelect.insert(\"#acct_owner_select\", context, \"Group\");\n          break;\n\n        case \"acct_owner_user\":\n          $(\"#acct_owner_select\", context).show();\n          ResourceSelect.insert(\"#acct_owner_select\", context, \"User\", -1, false,\n              '<option value=\"-1\">'+Locale.tr(\"<< me >>\")+'</option>');\n          break;\n        }\n      });\n    }\n\n    //--------------------------------------------------------------------------\n    // Init group by select\n    //--------------------------------------------------------------------------\n\n    if(opt.init_group_by != undefined){\n      $(\"#acct_group_by\", context).val(opt.init_group_by);\n    }else if(opt.fixed_group_by != undefined){\n      $(\"#acct_group_by\", context).val(opt.fixed_group_by);\n      $(\"#acct_group_by_container\", context).hide();\n    }\n\n    //--------------------------------------------------------------------------\n    // Submit request\n    //--------------------------------------------------------------------------\n    function dateFromString(str) {\n      var a = $.map(str.split(/[^0-9]/), function(s) { return parseInt(s, 10) });\n      return Date.UTC(a[0], a[1]-1 || 0, a[2] || 1, a[3] || 0, a[4] || 0, a[5] || 0, a[6] || 0);\n    }\n\n    $(\"#acct_submit\", context).on(\"click\", function(){\n      var start_time = -1;\n      var end_time = -1;\n\n      var v = $(\"#acct_start_time\", context).val();\n      if (v == \"\"){\n        Notifier.notifyError(Locale.tr(\"Time range start is mandatory\"));\n        return false;\n      }else{\n        start_time = dateFromString(v)\n        //start_time = Date.parse(v+' UTC');\n\n        if (isNaN(start_time)){\n          Notifier.notifyError(Locale.tr(\"Time range start is not a valid date. It must be YYYY/MM/DD\"));\n          return false;\n        }\n\n        // ms to s\n        start_time = start_time / 1000;\n      }\n\n      var v = $(\"#acct_end_time\", context).val();\n      if (v != \"\"){\n        end_time = new Date(v+' UTC');\n\n        if (isNaN(end_time)){\n          Notifier.notifyError(Locale.tr(\"Time range end is not a valid date. It must be YYYY/MM/DD\"));\n          return false;\n        }\n\n        // Add 1 to end_date, because the date is initialized at 00:00.\n        // The difference for this range  01/01, 31/01  is:\n        //   without adjustment: [01, 31)\n        //             adjusted: [01, 31]\n        end_time.setDate(end_time.getDate() + 1);\n\n        // ms to s\n        end_time = end_time.getTime() / 1000;\n      }\n\n      var options = {\n        \"start_time\": start_time,\n        \"end_time\": end_time\n      };\n\n      if (opt.fixed_user != undefined){\n        options.userfilter = opt.fixed_user;\n      } else if (opt.fixed_group != undefined){\n        options.group = opt.fixed_group;\n      } else {\n        var select_val = $(\"#acct_owner_select .resource_list_select\", context).val();\n\n        switch ($(\"select#acct_owner\", context).val()){\n        case \"acct_owner_all\":\n          break;\n\n        case \"acct_owner_group\":\n          if(select_val != \"\"){\n            options.group = select_val;\n          }\n          break;\n\n        case \"acct_owner_user\":\n          if(select_val != \"\"){\n            options.userfilter = select_val;\n          }\n          break;\n        }\n      }\n\n      OpenNebulaVM.accounting({\n        //timeout: true,\n        success: function(req, response){\n          _fillAccounting(context, req, response, false);\n        },\n        error: Notifier.onError,\n        data: options\n      });\n\n      return false;\n    });\n  };\n\n  function _fillAccounting(context, req, response, no_table) {\n    var options = req.request.data[0];\n\n    //--------------------------------------------------------------------------\n    // Time slots\n    //--------------------------------------------------------------------------\n\n    // start_time is mandatory\n    var start = new Date(options.start_time * 1000);\n    start.setUTCHours(0,0,0,0);\n\n    var end;\n    var now = new Date();\n\n    if (options.end_time != undefined && options.end_time != -1) {\n      end = new Date(options.end_time * 1000)\n      if (end > now) {\n        end = now;\n      }\n    } else {\n      end = now;\n    }\n\n    // granularity of 1 day\n    var times = [];\n\n    var tmp_time = start;\n\n    while (tmp_time < end) {\n      times.push(tmp_time.getTime());\n\n      // day += 1\n      tmp_time.setUTCDate( tmp_time.getUTCDate() + 1 );\n    }\n\n    // End time is the start of the last time slot. For the last slot,\n    // we don't add one day if the date is the current day, we add \"up to now\".\n    if (tmp_time > now) {\n      tmp_time = now;\n    }\n\n    times.push(tmp_time.getTime());\n\n    //--------------------------------------------------------------------------\n    // Flot options\n    //--------------------------------------------------------------------------\n\n    var options = {\n      colors: [\"#0098C3\",\"#0A00C2\",\"#AB00C2\",\"#C20037\",\"#C26B00\",\"#78C200\",\"#00C22A\",\"#00B8C2\"],\n\n      xaxis : {\n        mode: \"time\",\n        timeformat: \"%y/%m/%d\",\n        color: \"#efefef\",\n        font: {\n          color: \"#999\",\n          size: 10\n        },\n        ticks: 4,\n        minTickSize: [1, \"day\"]\n      },\n      yaxis : { min: 0,\n        color: \"#efefef\",\n        font: {\n          color: \"#999\",\n          size: 10\n        }\n      },\n      series: {\n        bars: {\n          show: true,\n          lineWidth: 0,\n          fill: true,\n          barWidth: 24*60*60*1000 * 0.8,\n          align: \"center\"\n        },\n        stack: true\n      },\n      legend : {\n        show : false\n      },\n      grid: {\n        borderWidth: 1,\n        borderColor: \"#efefef\",\n        hoverable: true\n      },\n      tooltip: true,\n      tooltipOpts: {\n        content: \"%x | %s | %y\"\n      }\n    };\n\n    //--------------------------------------------------------------------------\n    // Group by\n    //--------------------------------------------------------------------------\n\n    // TODO: Allow to change group by dynamically, instead of calling oned again\n    var group_by_fn;\n    var group_by_name;\n    var group_by_prefix;\n    switch ($(\"#acct_group_by\", context).val()){\n    case \"user\":\n      group_by_fn = function(history){\n        return history.VM.UID;\n      }\n\n      group_by_name = function(history){\n        return history.VM.UNAME;\n      }\n\n      group_by_prefix = Locale.tr(\"User\");\n\n      break;\n\n    case \"group\":\n      group_by_fn = function(history){\n        return history.VM.GID;\n      }\n\n      group_by_name = function(history){\n        return history.VM.GNAME;\n      }\n\n      group_by_prefix = Locale.tr(\"Group\");\n\n      break;\n\n    case \"vm\":\n      group_by_fn = function(history){\n        return history.OID;\n      }\n\n      group_by_name = function(history){\n        return history.VM.NAME;\n      }\n\n      group_by_prefix = Locale.tr(\"VM\");\n\n      break;\n    }\n\n    //--------------------------------------------------------------------------\n    // Filter history entries\n    //--------------------------------------------------------------------------\n\n    // TODO filter\n    // True to proccess, false to discard\n    var filter_by_fn = function(history){\n      // return history.OID == 3605 || history.OID == 2673;\n      return true;\n    }\n\n    //--------------------------------------------------------------------------\n    // Process data series for flot\n    //--------------------------------------------------------------------------\n\n    var series = {};\n\n    $(\"#acct_no_data\", context).hide();\n\n    if(response.HISTORY_RECORDS == undefined){\n      $(\"#acct_placeholder\", context).show();\n      $(\"#acct_content\", context).hide();\n\n      $(\"#acct_no_data\", context).show();\n      return false;\n    }\n\n    $.each(response.HISTORY_RECORDS.HISTORY, function(index, history){\n\n      /*\n      if(!filter_by_fn(history)){\n        return true; //continue\n      }\n      */\n      var group_by = group_by_fn(history);\n\n      if (series[group_by] == undefined){\n        series[group_by] = {};\n        series[group_by].data_points = {};\n\n        series[group_by].data_points[times[0]] = {};\n        series[group_by].data_points[times[times.length-2]] = {};\n\n        series[group_by].data_points[times[0]].CPU_HOURS = 0;\n        series[group_by].data_points[times[times.length-2]].CPU_HOURS = 0;\n\n        series[group_by].data_points[times[0]].MEM_HOURS = 0;\n        series[group_by].data_points[times[times.length-2]].MEM_HOURS = 0;\n\n        var name = group_by_name(history);\n        series[group_by].name = name;\n        series[group_by].label = group_by_prefix+\" \"+group_by+\" \"+name;\n      }\n\n      var serie = series[group_by].data_points;\n\n      for (var i = 0; i<times.length-1; i++){\n\n        var t = times[i];\n        var t_next = times[i+1];\n\n        // To stack values properly, flot needs an entry for all\n        // the time slots\n        if(serie[t] == undefined){\n          serie[t] = {};\n          serie[t].CPU_HOURS = 0;\n          serie[t].MEM_HOURS = 0;\n        }\n\n        if( (history.ETIME*1000 > t || history.ETIME == 0) &&\n            (history.STIME != 0 && history.STIME*1000 <= t_next) ) {\n\n          var stime = t;\n          if(history.STIME != 0){\n            stime = Math.max(t, history.STIME*1000);\n          }\n\n          var etime = t_next;\n          if(history.ETIME != 0){\n            etime = Math.min(t_next, history.ETIME*1000);\n          }\n\n          var n_hours = (etime - stime) / 1000 / 60 / 60;\n\n          // --- cpu ---\n\n          var val = parseFloat(history.VM.TEMPLATE.CPU) * n_hours;\n\n          if (!isNaN(val)){\n            serie[t].CPU_HOURS += val;\n          }\n\n          // --- mem ---\n\n          var val = parseInt(history.VM.TEMPLATE.MEMORY)/1024 * n_hours;\n\n          if (!isNaN(val)){\n            serie[t].MEM_HOURS += val;\n          }\n        }\n      }\n    });\n\n    //--------------------------------------------------------------------------\n    // Create series, draw plots\n    //--------------------------------------------------------------------------\n\n    var cpu_plot_series = [];\n    var mem_plot_series = [];\n\n    $.each(series, function(key, val){\n      var cpu_data = [];\n      var mem_data = [];\n\n      $.each(val.data_points, function(time,num){\n        cpu_data.push([parseInt(time),num.CPU_HOURS]);\n        mem_data.push([parseInt(time),num.MEM_HOURS]);\n      });\n\n      cpu_plot_series.push(\n      {\n        label: val.label,\n        name: val.name,\n        id: key,\n        data: cpu_data\n      });\n\n      mem_plot_series.push(\n      {\n        label: val.label,\n        name: val.name,\n        id: key,\n        data: mem_data\n      });\n    });\n\n    var cpu_plot = $.plot($(\"#acct_cpu_graph\", context), cpu_plot_series, options);\n    var mem_plot = $.plot($(\"#acct_mem_graph\", context), mem_plot_series, options);\n\n    //--------------------------------------------------------------------------\n    // Init dataTables\n    //--------------------------------------------------------------------------\n\n    if (no_table) {\n      $(\".acct_table\",context).hide();\n    } else {\n      $(\"#acct_cpu_datatable\",context).dataTable().fnClearTable();\n      $(\"#acct_cpu_datatable\",context).dataTable().fnDestroy();\n\n      $(\"#acct_cpu_datatable thead\",context).remove();\n      $(\"#acct_cpu_datatable\",context).width(\"100%\");\n\n\n      $(\"#acct_mem_datatable\",context).dataTable().fnClearTable();\n      $(\"#acct_mem_datatable\",context).dataTable().fnDestroy();\n\n      $(\"#acct_mem_datatable thead\",context).remove();\n      $(\"#acct_mem_datatable\",context).width(\"100%\");\n\n\n      cpu_plot_data = cpu_plot.getData();\n      mem_plot_data = mem_plot.getData();\n\n      var thead =\n        '<thead>\\\n          <tr>\\\n            <th>'+Locale.tr(\"Date UTC\")+'</th>\\\n            <th>'+Locale.tr(\"Total\")+'</th>';\n\n      $.each(cpu_plot_data, function(i, serie){\n        thead += '<th style=\"border-bottom: '+serie.color+' 4px solid !important;'+\n              ' border-left: 10px solid white; border-right: 5px solid white;'+\n              ' white-space: nowrap\">'+\n              group_by_prefix+' '+serie.id+'<br/>'+serie.name+'</th>';\n      });\n\n      thead += '</tr></thead>';\n\n      $(\"#acct_cpu_datatable\",context).append(thead);\n\n      thead =\n        '<thead>\\\n          <tr>\\\n            <th>'+Locale.tr(\"Date UTC\")+'</th>\\\n            <th>'+Locale.tr(\"Total\")+'</th>';\n\n      $.each(mem_plot_data, function(i, serie){\n        thead += '<th style=\"border-bottom: '+serie.color+' 4px solid !important;'+\n              ' border-left: 10px solid white; border-right: 5px solid white;'+\n              ' white-space: nowrap\">'+\n              group_by_prefix+' '+serie.id+'<br/>'+serie.name+'</th>';\n      });\n\n      thead += '</tr></thead>';\n\n      $(\"#acct_mem_datatable\",context).append(thead);\n\n\n      var cpu_dataTable_data = [];\n      var mem_dataTable_data = [];\n\n      for (var i = 0; i<times.length-1; i++){\n        var t = times[i];\n\n        var cpu_row = [];\n        var mem_row = [];\n\n        var time_st = time_UTC(t);\n\n        cpu_row.push(time_st);\n        mem_row.push(time_st);\n\n        cpu_row.push(0);\n        mem_row.push(0);\n\n        var cpu_total = 0;\n        var mem_total = 0;\n\n        $.each(series, function(key, val){\n          var v = val.data_points[t];\n\n          if(v != undefined){\n            var cpu_v = (v.CPU_HOURS * 100).toFixed() / 100;\n            var mem_v = (v.MEM_HOURS * 100).toFixed() / 100;\n\n            cpu_total += cpu_v;\n            mem_total += mem_v;\n\n            cpu_row.push(cpu_v);\n            mem_row.push(mem_v);\n          } else {\n            cpu_row.push(0);\n            mem_row.push(0);\n          }\n        });\n\n        cpu_row[1] = (cpu_total * 100).toFixed() / 100;\n        mem_row[1] = (mem_total * 100).toFixed() / 100;\n\n        cpu_dataTable_data.push(cpu_row);\n        mem_dataTable_data.push(mem_row);\n      }\n\n      var acct_cpu_dataTable = $(\"#acct_cpu_datatable\",context).dataTable({\n        \"bSortClasses\" : false,\n        \"bDeferRender\": true,\n        \"aoColumnDefs\": [\n        { \"bSortable\": false, \"aTargets\": ['_all'] },\n        ]\n      });\n\n      var acct_mem_dataTable = $(\"#acct_mem_datatable\",context).dataTable({\n        \"bSortClasses\" : false,\n        \"bDeferRender\": true,\n        \"aoColumnDefs\": [\n        { \"bSortable\": false, \"aTargets\": ['_all'] },\n        ]\n      });\n\n      if (cpu_dataTable_data.length > 0) {\n        acct_cpu_dataTable.fnAddData(cpu_dataTable_data);\n      }\n\n      if (mem_dataTable_data.length > 0) {\n        acct_mem_dataTable.fnAddData(mem_dataTable_data);\n      }\n    }\n\n    $(\"#acct_placeholder\", context).hide();\n    $(\"#acct_content\", context).show();\n  }\n\n  /**\n   * Format time in UTC, YYYY/MM/DD\n   * time is in ms\n   */\n  function time_UTC(time){\n    var d = new Date(time);\n\n    return d.getUTCFullYear() + '/' + (d.getUTCMonth()+1) + '/' + d.getUTCDate();\n  }\n\n  return {\n    'html': _html,\n    'setup': _setup,\n    'fillAccounting': _fillAccounting\n  };\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/showback/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row\\\">\\n  <div id=\\\"showback_user_container\\\" class=\\\"left medium-4 columns\\\">\\n    <label for=\\\"showback_user_select\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filter by user\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <div id=\\\"showback_user_select\\\"/>\\n  </div>\\n  <div id=\\\"showback_group_container\\\" class=\\\"left medium-4 columns\\\">\\n    <label for=\\\"showback_group_select\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filter by group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <div id=\\\"showback_group_select\\\"/>\\n  </div>\\n  <div id=\\\"showback_button_container\\\" class=\\\"right medium-3 columns\\\">\\n    <button class=\\\"button radius success right large-12\\\" id=\\\"showback_submit\\\" type=\\\"button\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Get Showback\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n    </button>\\n  </div>\\n</div>\\n<div id=\\\"showback_placeholder\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-8 large-centered columns\\\">\\n      <div class=\\\"text-center\\\">\\n        <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\">\\n          <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n          <i class=\\\"fa fa-money fa-stack-1x fa-inverse\\\"></i>\\n        </span>\\n        <div id=\\\"showback_no_data\\\" class=\\\"hidden\\\">\\n          <br>\\n          <p style=\\\"font-size: 18px; color: #999\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"There are no showback records\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <div id=\\\"showback_content\\\" class=\\\"hidden\\\">\\n    <div class=\\\"row showback_table\\\">\\n      <div class=\\\"large-12 columns graph_legend\\\">\\n        <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Showback\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n      </div>\\n      <div class=\\\"large-6 columns\\\" style=\\\"overflow:auto\\\">\\n        <table id=\\\"showback_datatable\\\" class=\\\"datatable twelve\\\">\\n          <thead>\\n            <tr>\\n              <th>dateint</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Year\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Month\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Date\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cost\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            </tr>\\n          </thead>\\n          <tbody id=\\\"tbody_showback_datatable\\\">\\n          </tbody>\\n        </table>\\n        <span class=\\\"label secondary radius showback_select_a_row\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select a row to get detailed information of the month\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <div class=\\\"large-12 columns centered graph\\\" id=\\\"showback_graph\\\" style=\\\"height: 200px;\\\">\\n        </div>\\n      </div>\\n    </div>\\n    <div class=\\\"row showback_vms_table hidden\\\">\\n      <div class=\\\"large-12 columns graph_legend\\\">\\n        <h3 class=\\\"subheader\\\" id=\\\"showback_vms_title\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n      </div>\\n      <div class=\\\"large-12 columns\\\" style=\\\"overflow:auto\\\">\\n        <table id=\\\"showback_vms_datatable\\\" class=\\\"datatable twelve\\\">\\n          <thead>\\n            <tr>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Owner\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cost\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            </tr>\\n          </thead>\\n          <tbody id=\\\"tbody_showback_datatable\\\">\\n          </tbody>\\n        </table>\\n      </div>\\n    </div>\\n  </div>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/showback/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('utils/showback',['require','hbs!./showback/html','utils/locale','opennebula/vm','utils/notifier','utils/resource-select','flot','flot.stack','flot.resize','flot.tooltip','flot.time'],function(require) {\n  \n  var TemplateHTML = require('hbs!./showback/html');\n  var Locale = require('utils/locale');\n  var OpenNebulaVM = require('opennebula/vm');\n  var Notifier = require('utils/notifier');\n  var ResourceSelect = require('utils/resource-select');\n\n  require('flot');\n  require('flot.stack');\n  require('flot.resize');\n  require('flot.tooltip');\n  require('flot.time');\n\n  function _html(){\n    var html = TemplateHTML({});\n\n    return html;\n  }\n\n  // context is a jQuery selector\n  // The following options can be set:\n  //   fixed_user     fix an owner user ID. Use \"\" to fix to \"any user\"\n  //   fixed_group    fix an owner group ID. Use \"\" to fix to \"any group\"\n  function _setup(context, opt) {\n    if (opt == undefined){\n      opt = {};\n    }\n\n    //--------------------------------------------------------------------------\n    // VM owner: all, group, user\n    //--------------------------------------------------------------------------\n\n    if (opt.fixed_user != undefined){\n      $(\"#showback_user_container\", context).hide();\n    } else {\n      ResourceSelect.insert(\"#showback_user_select\", context, \"User\", -1, false,\n        '<option value=\"-1\">'+Locale.tr(\"<< me >>\")+'</option>');\n    }\n\n    if (opt.fixed_group != undefined){\n      $(\"#showback_group_container\", context).hide();\n    } else {\n      ResourceSelect.insert(\"#showback_group_select\", context, \"Group\", \"\", true);\n    }\n\n    showback_dataTable = $(\"#showback_datatable\",context).dataTable({\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"iDisplayLength\": 6,\n      \"sDom\": \"t<'row collapse'<'small-12 columns'p>>\",\n      \"aoColumnDefs\": [\n          { \"bVisible\": false, \"aTargets\": [0,1,2]}\n        ]\n    });\n\n    showback_dataTable.fnSort( [ [0, \"desc\"] ] );\n\n    showback_vms_dataTable = $(\"#showback_vms_datatable\",context).dataTable({\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true\n    });\n\n    showback_dataTable.on(\"click\", \"tbody tr\", function(){\n      var cells = showback_dataTable.fnGetData(this);\n      var year = cells[1];\n      var month = cells[2];\n\n      showback_vms_dataTable.fnClearTable();\n      showback_vms_dataTable.fnAddData(\n                    showback_dataTable.data(\"vms_per_date\")[year][month].VMS);\n\n      $(\"#showback_vms_title\", context).text(\n                  Locale.months[month-1] + \" \" + year + \" \" + Locale.tr(\"VMs\"));\n      $(\".showback_vms_table\", context).show();\n      $(\".showback_select_a_row\", context).hide();\n    });\n\n    //--------------------------------------------------------------------------\n    // Submit request\n    //--------------------------------------------------------------------------\n\n    $(\"#showback_submit\", context).on(\"click\", function(){\n      var options = {};\n\n      var userfilter;\n      var group;\n\n      if (opt.fixed_user != undefined){\n        userfilter = opt.fixed_user;\n      } else {\n        userfilter = $(\"#showback_user_select .resource_list_select\", context).val();\n      }\n\n      if (opt.fixed_group != undefined){\n        group = opt.fixed_group;\n      } else {\n        group = $(\"#showback_group_select .resource_list_select\", context).val();\n      }\n\n      if(userfilter != \"\"){\n        options.userfilter = userfilter;\n      }\n\n      if(group != \"\"){\n        options.group = group;\n      }\n\n      OpenNebulaVM.showback({\n        // timeout: true,\n        success: function(req, response){\n          _fillShowback(context, req, response);\n        },\n        error: Notifier.onError,\n        data: options\n      });\n\n      return false;\n    });\n  }\n\n  function _fillShowback(context, req, response) {\n    $(\"#showback_no_data\", context).hide();\n\n    if(response.SHOWBACK_RECORDS == undefined){\n      $(\"#showback_placeholder\", context).show();\n      $(\"#showback_content\", context).hide();\n\n      $(\"#showback_no_data\", context).show();\n      return false;\n    }\n\n    var vms_per_date = {};\n    $.each(response.SHOWBACK_RECORDS.SHOWBACK, function(index, showback){\n      if (vms_per_date[showback.YEAR] == undefined) {\n        vms_per_date[showback.YEAR] = {};\n      }\n\n      if (vms_per_date[showback.YEAR][showback.MONTH] == undefined) {\n        vms_per_date[showback.YEAR][showback.MONTH] = {\n          \"VMS\": [],\n          \"TOTAL\": 0\n        };\n      }\n\n      vms_per_date[showback.YEAR][showback.MONTH].VMS.push(\n        [ showback.VMID,\n          showback.VMNAME,\n          showback.UNAME,\n          showback.HOURS,\n          showback.TOTAL_COST\n        ]);\n\n      vms_per_date[showback.YEAR][showback.MONTH].TOTAL += parseFloat(showback.TOTAL_COST);\n    });\n\n    var series = []\n    var showback_data = [];\n    $.each(vms_per_date, function(year, months){\n      $.each(months, function(month, value){\n        series.push(\n          [ (new Date(year, month-1)).getTime(),\n            year,\n            month,\n            Locale.months[month-1] + \" \" + year, value.TOTAL.toFixed(2)\n          ]);\n\n        showback_data.push([(new Date(year, month-1)), value.TOTAL.toFixed(2) ]);\n      });\n    });\n\n    showback_dataTable.fnClearTable();\n    if (series.length > 0) {\n      showback_dataTable.data(\"vms_per_date\", vms_per_date);\n      showback_dataTable.fnAddData(series);\n    }\n\n    var showback_plot_series = [];\n    showback_plot_series.push(\n    {\n      label: Locale.tr(\"Showback\"),\n      data: showback_data\n    });\n\n    var options = {\n      // colors: [ \"#cdebf5\", \"#2ba6cb\", \"#6f6f6f\" ]\n      colors: [ \"#2ba6cb\", \"#707D85\", \"#AC5A62\" ],\n      legend: {\n        show: false\n      },\n      xaxis : {\n        mode: \"time\",\n        color: \"#efefef\",\n        size: 8,\n        minTickSize: [1, \"month\"]\n      },\n      yaxis : {\n        show: false\n      },\n      series: {\n        bars: {\n          show: true,\n          lineWidth: 0,\n          barWidth: 24 * 60 * 60 * 1000 * 20,\n          fill: true,\n          align: \"left\"\n        }\n      },\n      grid: {\n        borderWidth: 1,\n        borderColor: \"#efefef\",\n        hoverable: true\n      }\n      //tooltip: true,\n      //tooltipOpts: {\n      //    content: \"%x\"\n      //}\n    };\n\n    var showback_plot = $.plot(\n        $(\"#showback_graph\", context), showback_plot_series, options);\n\n    $(\"#showback_placeholder\", context).hide();\n    $(\"#showback_content\", context).show();\n  }\n\n  return {\n    'html': _html,\n    'setup': _setup\n  };\n});\n\n","define('utils/graphs',['require','flot','flot.stack','flot.resize','flot.time','utils/humanize'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('flot');\n  require('flot.stack');\n  require('flot.resize');\n  // TODO Check if necessary require('flot.tooltip');\n  require('flot.time');\n  var Humanize = require('utils/humanize');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  return {\n    'plot': _plotGraph\n  }\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _plotGraph(response, info) {\n    series = [];\n\n    var attributes = info.monitor_resources.split(',');\n\n    if (info.labels) {\n      labels = info.labels.split(',')\n    }\n\n    for (var i = 0; i < attributes.length; i++) {\n      var attribute = attributes[i];\n\n      var data = response.monitoring[attribute];\n\n      if (data) {\n        if (info.derivative == true) {\n          derivative(data);\n        }\n\n        series.push({\n          stack: attribute,\n          // Turns label TEMPLATE/BLABLA into BLABLA\n          label: labels ? labels[i] : attribute[i].split('/').pop(),\n          data: data\n        });\n      }\n    }\n\n    var humanize = info.humanize_figures ?\n        Humanize.size : function(val) { return val };\n\n    var options = {\n      //        colors: [ \"#cdebf5\", \"#2ba6cb\", \"#6f6f6f\" ]\n      colors: [\"#2ba6cb\", \"#707D85\", \"#AC5A62\"],\n      legend : {show : (info.div_legend != undefined),\n                 noColumns: attributes.length,\n                 container: info.div_legend\n               },\n      xaxis : {\n        tickFormatter: function(val, axis) {\n          return Humanize.prettyTimeAxis(val, info.show_date);\n        },\n        color: \"#efefef\",\n        font: {\n          color: \"#999\",\n          size: 10\n        }\n      },\n      yaxis : {\n        tickFormatter: function(val, axis) {\n          return humanize(val, info.convert_from_bytes, info.y_sufix);\n        },\n        min: 0,\n        color: \"#efefef\",\n        font: {\n          color: \"#999\",\n          size: 10\n        }\n      },\n      series: {\n        lines: {\n          lineWidth: 1\n        }\n      },\n      grid: {\n        borderWidth: 1,\n        borderColor: \"#efefef\"\n      }\n    };\n\n    if (series.length > 0) {\n      $.plot(info.div_graph, series, options);\n    };\n  }\n\n  function derivative(data) {\n    for (var i = 0; i < data.length - 1; i++) {\n      // Each elem is [timestamp, cumulative value]\n      var first = data[i];\n      var second = data[i + 1];\n\n      // value now - value before / seconds\n      var speed = (second[1] - first[1]) / (second[0] - first[0]);\n\n      // The first element is replaced with the second one\n      data[i] = [first[0], speed];\n    }\n\n    // The last elem must be removed\n    data.pop();\n  }\n});\n\n",";(function ($, window, document, undefined) {\n  'use strict';\n\n  Foundation.libs.slider = {\n    name : 'slider',\n\n    version : '5.5.1',\n\n    settings : {\n      start : 0,\n      end : 100,\n      step : 1,\n      precision : null,\n      initial : null,\n      display_selector : '',\n      vertical : false,\n      trigger_input_change : false,\n      on_change : function () {}\n    },\n\n    cache : {},\n\n    init : function (scope, method, options) {\n      Foundation.inherit(this, 'throttle');\n      this.bindings(method, options);\n      this.reflow();\n    },\n\n    events : function () {\n      var self = this;\n\n      $(this.scope)\n        .off('.slider')\n        .on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider',\n        '[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) {\n          if (!self.cache.active) {\n            e.preventDefault();\n            self.set_active_slider($(e.target));\n          }\n        })\n        .on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) {\n          if (!!self.cache.active) {\n            e.preventDefault();\n            if ($.data(self.cache.active[0], 'settings').vertical) {\n              var scroll_offset = 0;\n              if (!e.pageY) {\n                scroll_offset = window.scrollY;\n              }\n              self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);\n            } else {\n              self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));\n            }\n          }\n        })\n        .on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) {\n          self.remove_active_slider();\n        })\n        .on('change.fndtn.slider', function (e) {\n          self.settings.on_change();\n        });\n\n      self.S(window)\n        .on('resize.fndtn.slider', self.throttle(function (e) {\n          self.reflow();\n        }, 300));\n    },\n\n    get_cursor_position : function (e, xy) {\n      var pageXY = 'page' + xy.toUpperCase(),\n          clientXY = 'client' + xy.toUpperCase(),\n          position;\n\n      if (typeof e[pageXY] !== 'undefined') {\n        position = e[pageXY];\n      } else if (typeof e.originalEvent[clientXY] !== 'undefined') {\n        position = e.originalEvent[clientXY];\n      } else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') {\n        position = e.originalEvent.touches[0][clientXY];\n      } else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') {\n        position = e.currentPoint[xy];\n      }\n\n      return position;\n    },\n\n    set_active_slider : function ($handle) {\n      this.cache.active = $handle;\n    },\n\n    remove_active_slider : function () {\n      this.cache.active = null;\n    },\n\n    calculate_position : function ($handle, cursor_x) {\n      var self = this,\n          settings = $.data($handle[0], 'settings'),\n          handle_l = $.data($handle[0], 'handle_l'),\n          handle_o = $.data($handle[0], 'handle_o'),\n          bar_l = $.data($handle[0], 'bar_l'),\n          bar_o = $.data($handle[0], 'bar_o');\n\n      requestAnimationFrame(function () {\n        var pct;\n\n        if (Foundation.rtl && !settings.vertical) {\n          pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1);\n        } else {\n          pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1);\n        }\n\n        pct = settings.vertical ? 1 - pct : pct;\n\n        var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision);\n\n        self.set_ui($handle, norm);\n      });\n    },\n\n    set_ui : function ($handle, value) {\n      var settings = $.data($handle[0], 'settings'),\n          handle_l = $.data($handle[0], 'handle_l'),\n          bar_l = $.data($handle[0], 'bar_l'),\n          norm_pct = this.normalized_percentage(value, settings.start, settings.end),\n          handle_offset = norm_pct * (bar_l - handle_l) - 1,\n          progress_bar_length = norm_pct * 100,\n          $handle_parent = $handle.parent(),\n          $hidden_inputs = $handle.parent().children('input[type=hidden]');\n\n      if (Foundation.rtl && !settings.vertical) {\n        handle_offset = -handle_offset;\n      }\n\n      handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset;\n      this.set_translate($handle, handle_offset, settings.vertical);\n\n      if (settings.vertical) {\n        $handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%');\n      } else {\n        $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%');\n      }\n\n      $handle_parent.attr(this.attr_name(), value).trigger('change').trigger('change.fndtn.slider');\n\n      $hidden_inputs.val(value);\n      if (settings.trigger_input_change) {\n          $hidden_inputs.trigger('change');\n      }\n\n      if (!$handle[0].hasAttribute('aria-valuemin')) {\n        $handle.attr({\n          'aria-valuemin' : settings.start,\n          'aria-valuemax' : settings.end\n        });\n      }\n      $handle.attr('aria-valuenow', value);\n\n      if (settings.display_selector != '') {\n        $(settings.display_selector).each(function () {\n          if (this.hasOwnProperty('value')) {\n            $(this).val(value);\n          } else {\n            $(this).text(value);\n          }\n        });\n      }\n\n    },\n\n    normalized_percentage : function (val, start, end) {\n      return Math.min(1, (val - start) / (end - start));\n    },\n\n    normalized_value : function (val, start, end, step, precision) {\n      var range = end - start,\n          point = val * range,\n          mod = (point - (point % step)) / step,\n          rem = point % step,\n          round = ( rem >= step * 0.5 ? step : 0);\n      return ((mod * step + round) + start).toFixed(precision);\n    },\n\n    set_translate : function (ele, offset, vertical) {\n      if (vertical) {\n        $(ele)\n          .css('-webkit-transform', 'translateY(' + offset + 'px)')\n          .css('-moz-transform', 'translateY(' + offset + 'px)')\n          .css('-ms-transform', 'translateY(' + offset + 'px)')\n          .css('-o-transform', 'translateY(' + offset + 'px)')\n          .css('transform', 'translateY(' + offset + 'px)');\n      } else {\n        $(ele)\n          .css('-webkit-transform', 'translateX(' + offset + 'px)')\n          .css('-moz-transform', 'translateX(' + offset + 'px)')\n          .css('-ms-transform', 'translateX(' + offset + 'px)')\n          .css('-o-transform', 'translateX(' + offset + 'px)')\n          .css('transform', 'translateX(' + offset + 'px)');\n      }\n    },\n\n    limit_to : function (val, min, max) {\n      return Math.min(Math.max(val, min), max);\n    },\n\n    initialize_settings : function (handle) {\n      var settings = $.extend({}, this.settings, this.data_options($(handle).parent())),\n          decimal_places_match_result;\n\n      if (settings.precision === null) {\n        decimal_places_match_result = ('' + settings.step).match(/\\.([\\d]*)/);\n        settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0;\n      }\n\n      if (settings.vertical) {\n        $.data(handle, 'bar_o', $(handle).parent().offset().top);\n        $.data(handle, 'bar_l', $(handle).parent().outerHeight());\n        $.data(handle, 'handle_o', $(handle).offset().top);\n        $.data(handle, 'handle_l', $(handle).outerHeight());\n      } else {\n        $.data(handle, 'bar_o', $(handle).parent().offset().left);\n        $.data(handle, 'bar_l', $(handle).parent().outerWidth());\n        $.data(handle, 'handle_o', $(handle).offset().left);\n        $.data(handle, 'handle_l', $(handle).outerWidth());\n      }\n\n      $.data(handle, 'bar', $(handle).parent());\n      $.data(handle, 'settings', settings);\n    },\n\n    set_initial_position : function ($ele) {\n      var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'),\n          initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start),\n          $handle = $ele.children('.range-slider-handle');\n      this.set_ui($handle, initial);\n    },\n\n    set_value : function (value) {\n      var self = this;\n      $('[' + self.attr_name() + ']', this.scope).each(function () {\n        $(this).attr(self.attr_name(), value);\n      });\n      if (!!$(this.scope).attr(self.attr_name())) {\n        $(this.scope).attr(self.attr_name(), value);\n      }\n      self.reflow();\n    },\n\n    reflow : function () {\n      var self = this;\n      self.S('[' + this.attr_name() + ']').each(function () {\n        var handle = $(this).children('.range-slider-handle')[0],\n            val = $(this).attr(self.attr_name());\n        self.initialize_settings(handle);\n\n        if (val) {\n          self.set_ui($(handle), parseFloat(val));\n        } else {\n          self.set_initial_position($(this));\n        }\n      });\n    }\n  };\n\n}(jQuery, window, window.document));\n\ndefine(\"foundation.slider\", [\"foundation.core\"], function(){});\n\n","define('tabs/provision-tab/users/quota-widget',['require','foundation.slider','utils/quotas/quota-limits'],function(require) {\n  require('foundation.slider');\n  var QuotaLimits = require('utils/quotas/quota-limits');\n  \n  return {\n    'setup': setup_provision_quota_widget,\n    'reset': reset_provision_quota_widget,\n    'retrieve': retrieve_provision_quota_widget\n  }\n  \n  function setup_provision_quota_widget(context) {\n    context.foundation('reflow', 'slider');\n    // Mode selector, for the 3 sliders\n    $(\"select.provision_quota_select\", context).on('change', function() {\n        var row = $(this).closest(\".row\");\n\n        switch ($(this).val()) {\n          case \"edit\":\n            $(\"div.provision_quota_edit\", row).show();\n            $(\"div.provision_quota_default\", row).hide();\n            $(\"div.provision_quota_unlimited\", row).hide();\n\n            $(\"input\", row).change();\n\n            break;\n\n          case \"default\":\n            $(\"div.provision_quota_edit\", row).hide();\n            $(\"div.provision_quota_default\", row).show();\n            $(\"div.provision_quota_unlimited\", row).hide();\n\n            break;\n\n          case \"unlimited\":\n            $(\"div.provision_quota_edit\", row).hide();\n            $(\"div.provision_quota_default\", row).hide();\n            $(\"div.provision_quota_unlimited\", row).show();\n\n            break;\n        }\n\n        return false;\n      });\n\n    var provision_rvms_quota_input = $(\".provision_rvms_quota_input\", context);\n\n    $(\".provision_rvms_quota_slider\", context).on('change', function() {\n        provision_rvms_quota_input.val($(this).attr('data-slider'))\n      });\n\n    provision_rvms_quota_input.change(function() {\n      $(\".provision_rvms_quota_slider\", context).foundation(\n                                          'slider', 'set_value', this.value);\n    });\n\n    var provision_cpu_quota_input = $(\".provision_cpu_quota_input\", context);\n\n    $(\".provision_cpu_quota_slider\", context).on('change', function() {\n        provision_cpu_quota_input.val($(this).attr('data-slider'))\n      });\n\n    provision_cpu_quota_input.change(function() {\n      $(\".provision_cpu_quota_slider\", context).foundation(\n                                          'slider', 'set_value', this.value);\n    });\n\n    var provision_memory_quota_input = $(\".provision_memory_quota_input\", context);\n    var provision_memory_quota_tmp_input = $(\".provision_memory_quota_tmp_input\", context);\n\n    var update_final_memory_input = function() {\n        var value = provision_memory_quota_tmp_input.val();\n        if (value > 0) {\n          provision_memory_quota_input.val(Math.floor(value * 1024));\n        } else {\n          provision_memory_quota_input.val(value);\n        }\n      }\n\n    $(\".provision_memory_quota_slider\", context).on('change', function() {\n        provision_memory_quota_tmp_input.val($(this).attr('data-slider'));\n        update_final_memory_input();\n      });\n\n    provision_memory_quota_tmp_input.change(function() {\n      update_final_memory_input();\n      $(\".provision_memory_quota_slider\", context).foundation(\n                                          'slider', 'set_value', this.value);\n    });\n\n    $(\".provision_rvms_quota_input\", context).val('').change();\n    $(\".provision_memory_quota_input\", context).val('').change();\n    $(\".provision_memory_quota_tmp_input\", context).val('').change();\n    $(\".provision_cpu_quota_input\", context).val('').change();\n  }\n\n  function reset_provision_quota_widget(context) {\n    $(\"select.provision_quota_select\", context).val('edit').change();\n\n    $(\".provision_rvms_quota_input\", context).val('').change();\n    $(\".provision_memory_quota_input\", context).val('').change();\n    $(\".provision_memory_quota_tmp_input\", context).val('').change();\n    $(\".provision_cpu_quota_input\", context).val('').change();\n  }\n\n  function retrieve_provision_quota_widget(context) {\n    var retrieve_quota = function(select, input) {\n      switch (select.val()) {\n        case \"edit\":\n          return input.val();\n        case \"default\":\n          return QuotaLimits.QUOTA_LIMIT_DEFAULT;\n        case \"unlimited\":\n          return QuotaLimits.QUOTA_LIMIT_UNLIMITED;\n      }\n    }\n\n    var vms_limit = retrieve_quota(\n          $(\".provision_rvms_quota select.provision_quota_select\", context),\n          $(\".provision_rvms_quota_input\", context));\n\n    var cpu_limit = retrieve_quota(\n          $(\".provision_cpu_quota select.provision_quota_select\", context),\n          $(\".provision_cpu_quota_input\", context));\n\n    var mem_limit = retrieve_quota(\n          $(\".provision_memory_quota select.provision_quota_select\", context),\n          $(\".provision_memory_quota_input\", context));\n\n    return {\n      \"VM\" : {\n        \"VOLATILE_SIZE\": QuotaLimits.QUOTA_LIMIT_DEFAULT,\n        \"VMS\":    vms_limit,\n        \"MEMORY\": mem_limit,\n        \"CPU\":    cpu_limit\n      }\n    };\n  }\n});\n\n",";(function ($, window, document, undefined) {\n  'use strict';\n\n  Foundation.libs.alert = {\n    name : 'alert',\n\n    version : '5.5.1',\n\n    settings : {\n      callback : function () {}\n    },\n\n    init : function (scope, method, options) {\n      this.bindings(method, options);\n    },\n\n    events : function () {\n      var self = this,\n          S = this.S;\n\n      $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) {\n        var alertBox = S(this).closest('[' + self.attr_name() + ']'),\n            settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;\n\n        e.preventDefault();\n        if (Modernizr.csstransitions) {\n          alertBox.addClass('alert-close');\n          alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function (e) {\n            S(this).trigger('close').trigger('close.fndtn.alert').remove();\n            settings.callback();\n          });\n        } else {\n          alertBox.fadeOut(300, function () {\n            S(this).trigger('close').trigger('close.fndtn.alert').remove();\n            settings.callback();\n          });\n        }\n      });\n    },\n\n    reflow : function () {}\n  };\n}(jQuery, window, window.document));\n\ndefine(\"foundation.alert\", [\"foundation.core\"], function(){});\n\n","define('templates/helpers/isTabPanelEnabled',['require','hbs/handlebars','sunstone-config'],function(require) {\n  var Handlebars = require('hbs/handlebars');\n  var Config = require('sunstone-config');\n  \n  var isTabPanelEnabled = function(tabName, panel, options) {\n    if (Config.isTabPanelEnabled(tabName, panel)) {\n      return options.fn(this);\n    } else {\n      return options.inverse(this);\n    }\n  };\n\n  Handlebars.registerHelper('isTabPanelEnabled', isTabPanelEnabled);\n\n  return isTabPanelEnabled;\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/vms/info',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/isTabPanelEnabled'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"The main disk of the Virtual Machine will be saved in a new Image\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"left button small radius success provision_snapshot_button tip-top\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-save\\\"/>\\n          </a>\\n          <a data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"You have to power-off the virtual machine first\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"left button small radius white provision_snapshot_button_disabled tip-top\\\" style=\\\"color: #999\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-save\\\"/>\\n          </a>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"text-center provision_info_vm_loading\\\">\\n  <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i> <i class=\\\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\\\"></i>\\n  </span>\\n  <br>\\n  <br>\\n  <span style=\\\"font-size: 18px; color: #999\\\"></span>\\n</div>\\n<div class=\\\"provision_info_vm\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 large-centered columns\\\">\\n      <ul class=\\\"inline-list provision_action_icons\\\">\\n        <li>\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Open a remote console in a new window\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"left button small radius provision_vnc_button tip-top\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-desktop\\\"/></a>\\n          <a data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"You have to boot the Virtual Machine first\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"left button small radius white provision_vnc_button_disabled tip-top\\\" style=\\\"color: #999\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-desktop\\\"/></a>\\n\";\n  stack1 = ((helpers.isTabPanelEnabled || (depth0 && depth0.isTabPanelEnabled) || helperMissing).call(depth0, \"provision-tab\", \"templates\", {\"name\":\"isTabPanelEnabled\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"        </li>\\n        <li class=\\\"right\\\">\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Delete\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"button small radius alert provision_delete_confirm_button tip-top right\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-trash-o\\\"/>\\n          </a>\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Delete\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"button small radius alert provision_shutdownhard_confirm_button tip-top right\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-trash-o\\\"/>\\n          </a>\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Power off\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"button small radius secondary provision_poweroff_confirm_button tip-top right\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-power-off\\\"/>\\n          </a>\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Power on\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"button small radius secondary provision_poweron_button tip-top right\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-play\\\"/>\\n          </a>\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Reboot\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"button small radius secondary provision_reboot_confirm_button tip-top right\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-repeat\\\"/>\\n          </a>\\n        </li>\\n      </ul>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"provision_confirm_action large-12 large-centered columns\\\"></div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-5 columns\\\">\\n      <ul class=\\\"provision-pricing-table_vm_info provision-pricing-table\\\" style=\\\"border: 0px !important; margin-top: 20px;\\\"></ul>\\n    </div>\\n    <div class=\\\"large-6 columns right\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 medium-6  columns\\\">\\n          <div class=\\\"row text-center\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              <h4 class=\\\"subheader\\\" style=\\\"margin: 0px\\\">\\n                <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n              </h4>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              <div class=\\\"large-12 columns centered graph vm_cpu_graph\\\" style=\\\"height: 100px;\\\"></div>\\n            </div>\\n          </div>\\n          <div class=\\\"row graph_legend\\\">\\n            <div class=\\\"large-12 columns centered vm_cpu_legend\\\"></div>\\n          </div>\\n        </div>\\n        <div class=\\\"large-6 medium-6 columns\\\">\\n          <div class=\\\"row text-center\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              <h4 class=\\\"subheader\\\" style=\\\"margin: 0px\\\">\\n                <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n              </h4>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              <div class=\\\"large-12 columns centered graph vm_memory_graph\\\" style=\\\"height: 100px;\\\"></div>\\n            </div>\\n          </div>\\n          <div class=\\\"row graph_legend\\\">\\n            <div class=\\\"large-12 columns centered vm_memory_legend\\\"></div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <div class=\\\"large-12 columns\\\">\\n      <br>\\n      <div class=\\\"row\\\">\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <div class=\\\"row text-center\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <h4 class=\\\"subheader\\\" style=\\\"margin: 0px\\\">\\n              <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Net RX\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n            </h4>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"large-12 columns centered graph vm_net_rx_graph\\\" style=\\\"height: 100px;\\\"></div>\\n          </div>\\n        </div>\\n        <div class=\\\"row graph_legend\\\">\\n          <div class=\\\"large-12 columns centered vm_net_rx_legend\\\"></div>\\n        </div>\\n      </div>\\n      <div class=\\\"large-3 medium-6  columns\\\">\\n        <div class=\\\"row text-center\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <h4 class=\\\"subheader\\\" style=\\\"margin: 0px\\\">\\n              <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Net TX\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n            </h4>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"large-12 columns centered graph vm_net_tx_graph\\\" style=\\\"height: 100px;\\\"></div>\\n          </div>\\n        </div>\\n        <div class=\\\"row graph_legend\\\">\\n          <div class=\\\"large-12 columns centered vm_net_tx_legend\\\"></div>\\n        </div>\\n      </div>\\n      <div class=\\\"large-3 medium-6  columns\\\">\\n        <div class=\\\"row text-center\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <h4 class=\\\"subheader\\\" style=\\\"margin: 0px\\\">\\n              <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Net Download Speed\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n            </h4>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"large-12 columns centered graph vm_net_rx_speed_graph\\\" style=\\\"height: 100px;\\\"></div>\\n          </div>\\n        </div>\\n        <div class=\\\"row graph_legend\\\">\\n          <div class=\\\"large-12 columns centered vm_net_rx_speed_legend\\\"></div>\\n        </div>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <div class=\\\"row text-center\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <h4 class=\\\"subheader\\\" style=\\\"margin: 0px\\\">\\n              <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Net Upload Speed\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n            </h4>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"large-12 columns centered graph vm_net_tx_speed_graph\\\" style=\\\"height: 100px;\\\"></div>\\n          </div>\\n        </div>\\n        <div class=\\\"row graph_legend\\\">\\n          <div class=\\\"large-12 columns centered vm_net_tx_speed_legend\\\"></div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <br>\\n  <br></div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/vms/info', t);\nHandlebars.registerPartial('tabs/provision-tab/vms/info', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/vms/list',['hbs','hbs/handlebars', 'hbs!tabs/provision-tab/vms/info','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  return \"active\";\n  },\"3\":function(depth0,helpers,partials,data) {\n  return \"style=\\\"display:none\\\"\";\n  },\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<dl class=\\\"accordion accordion_list provision_list_vms\\\" data-accordion>\\n  <dd class=\\\"\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.active : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" accordion-navigation\\\">\\n    <a href=\\\"#provision_list_vm_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"provision_back right only-not-active\\\">\\n      <span class=\\\"button small radius\\\"> <i class=\\\"fa fa-fw fa-lg fa-th\\\"/><i class=\\\"fa fa-fw fa-lg fa-chevron-left\\\"/>\\n      </span>\\n    </a>\\n    <h3 class=\\\"subheader\\\">\\n      <span style=\\\"color: #777\\\">\\n      </span>\\n      <span class=\\\"provision_info_vm_name only-not-active\\\"></span>\\n      <span href\\\"#\\\" class=\\\"right only-active button small radius secondary provision_vms_list_refresh_button\\\" \\n                \";\n  stack1 = helpers.unless.call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.refresh : stack1), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" data-tooltip title=\\\" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Refresh\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-refresh\\\"/></span>\\n      <span href\\\"#\\\" class=\\\"right only-not-active button small radius secondary provision_refresh_info\\\" \\n                \";\n  stack1 = helpers.unless.call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.refresh : stack1), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" data-tooltip title=\\\" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Refresh\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-refresh\\\"/>\\n      </span>\\n      <span href\\\"#\\\" class=\\\"right only-active button small radius secondary provision_vms_list_filter_button\\\" \\n                \";\n  stack1 = helpers.unless.call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.filter : stack1), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" data-tooltip title=\\\" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filter by User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-filter\\\"/>\\n      </span>\\n      <span class=\\\"right only-active provision_list_vms_filter\\\" style=\\\"display: none\\\"></span>\\n      <span>\\n        <span href\\\"#\\\" class=\\\"right  only-active button small radius success provision_create_vm_button\\\" \\n                \";\n  stack1 = helpers.unless.call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.create : stack1), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \">\\n          <i class=\\\"fa fa-fw fa-lg fa-plus-square\\\"/>\\n        </span>\\n        <input type=\\\"search\\\" class=\\\"only-active provision_list_vms_search provision-search-input \\\" placeholder=\\\"Search VMs\\\"/>\\n      </h3>\\n      <div id=\\\"provision_list_vm_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content \";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.active : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 large-centered columns\\\">\\n            <table class=\\\"provision_vms_table\\\">\\n              <thead class=\\\"hidden\\\">\\n                <tr>\\n                  <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                  <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                  <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                </tr>\\n              </thead>\\n              <tbody class=\\\"hidden\\\"></tbody>\\n            </table>\\n            <br></div>\\n        </div>\\n      </div>\\n    </dd>\\n    <dd class=\\\"accordion-navigation\\\">\\n      <a class=\\\"provision_show_vm_accordion\\\" href=\\\"#provision_show_vm_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></a>\\n      <div id=\\\"provision_show_vm_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content\\\">\";\n  stack1 = this.invokePartial(partials['tabs/provision-tab/vms/info'], '', 'tabs/provision-tab/vms/info', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n    </dd>\\n  </dl>\";\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/vms/list', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/provision-tab/vms/list',['require','foundation.alert','opennebula','utils/locale','sunstone-config','utils/notifier','utils/humanize','utils/resource-select','utils/graphs','hbs!./list'],function(require) {\n  require('foundation.alert');\n  var OpenNebula = require('opennebula');\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Notifier = require('utils/notifier');\n  var Humanize = require('utils/humanize');\n  var ResourceSelect = require('utils/resource-select');\n  var Graphs = require('utils/graphs');\n\n  var TemplateVmsList = require('hbs!./list');\n\n  var _accordionId = 0;\n\n  return {\n    'generate': generate_provision_vms_list,\n    'show': show_provision_vm_list,\n    'state': get_provision_vm_state\n  };\n\n  function show_provision_vm_list(timeout, context) {\n    $(\".section_content\").hide();\n    $(\".provision_vms_list_section\").fadeIn();\n\n    $(\"dd:not(.active) .provision_back\", $(\".provision_vms_list_section\")).trigger(\"click\");\n    $(\".provision_vms_list_refresh_button\", $(\".provision_vms_list_section\")).trigger(\"click\");\n  }\n\n  function generate_provision_vms_list(context, opts) {\n    context.off();\n    context.html(html(opts));\n\n    if (opts.data) {\n      $(\".provision_vms_table\", context).data(\"opennebula\", opts.data)\n    }\n\n    setup_provision_vms_list(context, opts);\n    setup_info_vm(context);\n  }\n\n  function html(opts_arg) {\n    opts = $.extend({\n        title: Locale.tr(\"Virtual Machines\"),\n        refresh: true,\n        create: true,\n        filter: true\n      }, opts_arg)\n\n    _accordionId += 1;\n    return TemplateVmsList({'accordionId': _accordionId, 'opts': opts});\n  }\n\n  function fill_provision_vms_datatable(datatable, item_list) {\n    datatable.fnClearTable(true);\n    if (item_list.length == 0) {\n      datatable.html('<div class=\"text-center\">' +\n        '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">' +\n          '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n          '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>' +\n        '</span>' +\n        '<br>' +\n        '<br>' +\n        '<span style=\"font-size: 18px; color: #999\">' +\n          Locale.tr(\"There are no Virtual Machines\") +\n        '</span>' +\n        '<br>' +\n        '<br>' +\n        '</div>');\n    } else {\n      datatable.fnAddData(item_list);\n    }\n  }\n\n  function update_provision_vms_datatable(datatable, timeout) {\n    datatable.html('<div class=\"text-center\">' +\n      '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">' +\n        '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n        '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n      '</span>' +\n      '<br>' +\n      '<br>' +\n      '<span style=\"font-size: 18px; color: #999\">' +\n      '</span>' +\n      '</div>');\n\n    var data = datatable.data('opennebula');\n    if (data) {\n      fill_provision_vms_datatable(datatable, data)\n    } else {\n      setTimeout(function() {\n          OpenNebula.VM.list({\n            timeout: true,\n            success: function (request, item_list) {\n              fill_provision_vms_datatable(datatable, item_list)\n            },\n            error: Notifier.onError\n          })\n        }, timeout);\n    }\n  }\n\n  function setup_provision_vms_list(context, opts) {\n    var provision_vms_datatable = $('.provision_vms_table', context).dataTable({\n      \"iDisplayLength\": 6,\n      \"sDom\" : '<\"H\">t<\"F\"lp>',\n      \"aLengthMenu\": [[6, 12, 36, 72], [6, 12, 36, 72]],\n      \"aaSorting\"  : [[0, \"desc\"]],\n      \"aoColumnDefs\": [\n          { \"bVisible\": false, \"aTargets\": [\"all\"]}\n      ],\n      \"aoColumns\": [\n          { \"mDataProp\": \"VM.ID\" },\n          { \"mDataProp\": \"VM.NAME\" },\n          { \"mDataProp\": \"VM.UID\" }\n      ],\n      \"fnPreDrawCallback\": function (oSettings) {\n        // create a thumbs container if it doesn't exist. put it in the dataTables_scrollbody div\n        if (this.$('tr', {\"filter\": \"applied\"} ).length == 0) {\n          this.html('<div class=\"text-center\">'+\n            '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n              '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n              '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n            '</span>'+\n            '<br>'+\n            '<br>'+\n            '<span style=\"font-size: 18px; color: #999\">'+\n              Locale.tr(\"There are no Virtual Machines\")+\n            '</span>'+\n            '</div>');\n        } else {\n          $(\".provision_vms_table\", context).html('<ul class=\"provision_vms_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center\"></ul>');\n        }\n\n        return true;\n      },\n      \"fnDrawCallback\": function (oSettings) {\n        $(\".provision_vms_ul\", context).foundation('reflow', 'tooltip');\n\n        return true;\n      },\n      \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n        var data = aData.VM;\n        var state = get_provision_vm_state(data);\n\n        $(\".provision_vms_ul\", context).append('<li>'+\n            '<ul class=\"provision-pricing-table\" opennebula_id=\"'+data.ID+'\" datatable_index=\"'+iDisplayIndexFull+'\">'+\n              '<li class=\"provision-title text-left\">'+\n                '<a class=\"provision_info_vm_button\" style=\"color:#555\" href=\"#\">'+ \n                '<span class=\"'+ state.color +'-color\"  data-tooltip title=\"'+state.str+'\">'+\n                  '<i class=\"fa fa-fw fa-square\"/> '+\n                '</span>'+\n                data.NAME + '</a>'+\n              '</li>'+\n              '<li class=\"provision-bullet-item text-left\" >'+\n                '<i class=\"fa fa-fw fa-lg fa-laptop\"/> '+\n                'x'+data.TEMPLATE.CPU+' - '+\n                ((data.TEMPLATE.MEMORY > 1000) ?\n                  (Math.floor(data.TEMPLATE.MEMORY/1024)+'GB') :\n                  (data.TEMPLATE.MEMORY+'MB'))+\n                ' - '+\n                get_provision_disk_image(data) +\n              '</li>'+\n              '<li class=\"provision-bullet-item text-left\" >'+\n                '<span class=\"\">'+\n                  get_provision_ips(data) +\n                '</span>'+\n              '</li>'+\n              '<li class=\"provision-bullet-item-last text-left\" >'+\n                '<span class=\"\">'+\n                  '<i class=\"fa fa-fw fa-lg fa-user\"/> '+\n                  data.UNAME+\n                '</span>'+\n                '<span class=\"right\">'+\n                  Humanize.prettyTimeAgo(data.STIME)+\n                '</span>'+\n              '</li>'+\n            '</ul>'+\n          '</li>');\n\n        return nRow;\n      }\n    });\n\n    $('.provision_list_vms_search', context).keyup(function(){\n      provision_vms_datatable.fnFilter( $(this).val() );\n    })\n\n    $('.provision_list_vms_search', context).change(function(){\n      provision_vms_datatable.fnFilter( $(this).val() );\n    })\n\n    context.on(\"click\", \".provision_vms_list_refresh_button\", function(){\n      OpenNebula.Action.clear_cache(\"VM\");\n      update_provision_vms_datatable(provision_vms_datatable, 0);\n      return false;\n    });\n\n    $(\".provision_list_vms_filter\", context).on(\"change\", \".resource_list_select\", function(){\n      if ($(this).val() != \"-2\"){\n        provision_vms_datatable.fnFilter(\"^\" + $(this).val() + \"$\", 2, true, false);\n      } else {\n        provision_vms_datatable.fnFilter(\"\", 2);\n      }\n    })\n\n    ResourceSelect.insert(\n      \".provision_list_vms_filter\",\n      context,\n      \"User\",\n      (opts.filter_expression ? opts.filter_expression : \"-2\"),\n      false,\n      '<option value=\"-2\">'+Locale.tr(\"ALL\")+'</option>',\n      null,\n      null,\n      true,\n      true);\n\n    context.on(\"click\", \".provision_vms_list_filter_button\", function(){\n      $(\".provision_list_vms_filter\", context).fadeIn();\n      return false;\n    });\n\n    OpenNebula.Action.clear_cache(\"VM\");\n    update_provision_vms_datatable(provision_vms_datatable, 0);\n\n    $(document).foundation();\n  }\n\n  function setup_info_vm(context) {\n    function update_provision_vm_info(vm_id, context) {\n      //var tempScrollTop = $(window).scrollTop();\n      $(\".provision_info_vm_name\", context).text(\"\");\n      $(\".provision_info_vm_loading\", context).show();\n      $(\".provision_info_vm\", context).css('visibility', 'hidden');\n\n      OpenNebula.VM.show({\n        data : {\n          id: vm_id\n        },\n        error: Notifier.onError,\n        success: function(request, response){\n          var data = response.VM\n          var state = get_provision_vm_state(data);\n\n          switch (state.color) {\n            case \"deploying\":\n              $(\".provision_reboot_confirm_button\", context).hide();\n              $(\".provision_poweroff_confirm_button\", context).hide();\n              $(\".provision_poweron_button\", context).hide();\n              $(\".provision_delete_confirm_button\", context).show();\n              $(\".provision_shutdownhard_confirm_button\", context).hide();\n              $(\".provision_snapshot_button\", context).hide();\n              $(\".provision_vnc_button\", context).hide();\n              $(\".provision_snapshot_button_disabled\", context).hide();\n              $(\".provision_vnc_button_disabled\", context).hide();\n              break;\n            case \"running\":\n              $(\".provision_reboot_confirm_button\", context).show();\n              $(\".provision_poweroff_confirm_button\", context).show();\n              $(\".provision_poweron_button\", context).hide();\n              $(\".provision_delete_confirm_button\", context).hide();\n              $(\".provision_shutdownhard_confirm_button\", context).show();\n              $(\".provision_snapshot_button\", context).hide();\n              $(\".provision_vnc_button\", context).show();\n              $(\".provision_snapshot_button_disabled\", context).show();\n              $(\".provision_vnc_button_disabled\", context).hide();\n              break;\n            case \"off\":\n              $(\".provision_reboot_confirm_button\", context).hide();\n              $(\".provision_poweroff_confirm_button\", context).hide();\n              $(\".provision_poweron_button\", context).show();\n              $(\".provision_delete_confirm_button\", context).show();\n              $(\".provision_shutdownhard_confirm_button\", context).hide();\n              $(\".provision_snapshot_button\", context).show();\n              $(\".provision_vnc_button\", context).hide();\n              $(\".provision_snapshot_button_disabled\", context).hide();\n              $(\".provision_vnc_button_disabled\", context).show();\n              break;\n            case \"powering_off\":\n            case \"error\":\n              $(\".provision_reboot_confirm_button\", context).hide();\n              $(\".provision_poweroff_confirm_button\", context).hide();\n              $(\".provision_poweron_button\", context).hide();\n              $(\".provision_delete_confirm_button\", context).show();\n              $(\".provision_shutdownhard_confirm_button\", context).hide();\n              $(\".provision_snapshot_button\", context).hide();\n              $(\".provision_vnc_button\", context).hide();\n              $(\".provision_snapshot_button_disabled\", context).hide();\n              $(\".provision_vnc_button_disabled\", context).hide();\n              break;\n            default:\n              color = 'secondary';\n              $(\".provision_reboot_confirm_button\", context).hide();\n              $(\".provision_poweroff_confirm_button\", context).hide();\n              $(\".provision_poweron_button\", context).hide();\n              $(\".provision_delete_confirm_button\", context).show();\n              $(\".provision_shutdownhard_confirm_button\", context).hide();\n              $(\".provision_snapshot_button\", context).hide();\n              $(\".provision_vnc_button\", context).hide();\n              $(\".provision_snapshot_button_disabled\", context).hide();\n              $(\".provision_vnc_button_disabled\", context).hide();\n              break;\n          }\n\n          if (!OpenNebula.VM.isVNCSupported(data) && !OpenNebula.VM.isSPICESupported(data)) {\n              $(\".provision_vnc_button\", context).hide();\n              $(\".provision_vnc_button_disabled\", context).hide();\n          }\n\n          $(\".provision_info_vm\", context).attr(\"vm_id\", data.ID);\n          $(\".provision_info_vm\", context).data(\"vm\", data);\n\n          $(\".provision_info_vm_name\", context).text(data.NAME);\n\n          $(\".provision-pricing-table_vm_info\", context).html(\n              '<li class=\"text-left provision-bullet-item\">'+\n                '<span class=\"'+ state.color +'-color\">'+\n                  '<i class=\"fa fa-fw fa-lg fa-square\"/>&emsp;'+\n                  state.str+\n                '</span>'+\n              '</li>'+\n              '<li class=\"text-left provision-bullet-item\">'+\n                '<hr style=\"margin: 0px\">'+\n              '</li>'+\n              '<li class=\"text-left provision-bullet-item\" >'+\n                '<span>'+\n                  '<i class=\"fa fa-fw fa-lg fa-laptop\"/>&emsp;'+\n                  'x'+data.TEMPLATE.CPU+' - '+\n                  ((data.TEMPLATE.MEMORY > 1000) ?\n                    (Math.floor(data.TEMPLATE.MEMORY/1024)+'GB') :\n                    (data.TEMPLATE.MEMORY+'MB'))+\n                '</span>'+\n                ' - '+\n                '<span>'+\n                  get_provision_disk_image(data) +\n                '</span>'+\n              '</li>'+\n              '<li class=\"text-left provision-bullet-item\" >'+\n                '<span>'+\n                  get_provision_ips(data) +\n                '</span>'+\n              '</li>'+\n              //'<li  class=\"text-left provision-bullet-item\" >'+\n              //  '<span style=\"color: #afafaf;\" style=\"font-size: 16px\">'+\n              //    \"ID: \" +\n              //    data.ID+\n              //  '</span>' +\n              //'</li>'+\n              '<li class=\"text-left provision-bullet-item\">'+\n                '<hr style=\"margin: 0px\">'+\n              '</li>'+\n              '<li class=\"text-right provision-bullet-item\">'+\n                '<span class=\"left\" style=\"color: #999;\">'+\n                  '<i class=\"fa fa-fw fa-lg fa-user\"/>&emsp;'+\n                  data.UNAME+\n                '</span>'+\n                '<span class=\"right\" style=\"color: #999;\">'+\n                  '<i class=\"fa fa-fw fa-lg fa-clock-o\"/>&emsp;'+\n                  Humanize.prettyTimeAgo(data.STIME)+\n                  ' - '+\n                  'ID: '+\n                  data.ID+\n                '</span>'+\n              '</li>');\n\n          $(\".provision_confirm_action:first\", context).html(\"\");\n\n          $(\".provision_info_vm\", context).css('visibility', 'visible');\n          $(\".provision_info_vm_loading\", context).hide();\n\n          //$(window).scrollTop(tempScrollTop);\n\n          OpenNebula.VM.monitor({\n            data : {\n              timeout: true,\n              id: data.ID,\n              monitor: {\n                monitor_resources : \"CPU,MEMORY,NET_TX,NET_RX\"\n              }\n            },\n            success: function(request, response){\n              var vm_graphs = [\n                  {\n                      monitor_resources : \"CPU\",\n                      labels : \"Real CPU\",\n                      humanize_figures : false,\n                      div_graph : $(\".vm_cpu_graph\", context)\n                  },\n                  {\n                      monitor_resources : \"MEMORY\",\n                      labels : \"Real MEM\",\n                      humanize_figures : true,\n                      div_graph : $(\".vm_memory_graph\", context)\n                  },\n                  {\n                      labels : \"Network reception\",\n                      monitor_resources : \"NET_RX\",\n                      humanize_figures : true,\n                      convert_from_bytes : true,\n                      div_graph : $(\".vm_net_rx_graph\", context)\n                  },\n                  {\n                      labels : \"Network transmission\",\n                      monitor_resources : \"NET_TX\",\n                      humanize_figures : true,\n                      convert_from_bytes : true,\n                      div_graph : $(\".vm_net_tx_graph\", context)\n                  },\n                  {\n                      labels : \"Network reception speed\",\n                      monitor_resources : \"NET_RX\",\n                      humanize_figures : true,\n                      convert_from_bytes : true,\n                      y_sufix : \"B/s\",\n                      derivative : true,\n                      div_graph : $(\".vm_net_rx_speed_graph\", context)\n                  },\n                  {\n                      labels : \"Network transmission speed\",\n                      monitor_resources : \"NET_TX\",\n                      humanize_figures : true,\n                      convert_from_bytes : true,\n                      y_sufix : \"B/s\",\n                      derivative : true,\n                      div_graph : $(\".vm_net_tx_speed_graph\", context)\n                  }\n              ];\n\n              for(var i=0; i<vm_graphs.length; i++) {\n                  Graphs.plot(\n                      response,\n                      vm_graphs[i]\n                  );\n              }\n            }\n          })\n        }\n      })\n    }\n\n    if (Config.isTabPanelEnabled(\"provision-tab\", \"templates\")) {\n      context.on(\"click\", \".provision_snapshot_button\", function(){\n        $(\".provision_confirm_action:first\", context).html(\n          '<div data-alert class=\"alert-box secondary radius\">'+\n            '<div class=\"row\">'+\n              '<div class=\"large-12 columns\">'+\n                '<span style=\"font-size: 14px; line-height: 20px\">'+\n                  Locale.tr(\"This Virtual Machine will be saved in a new Template. Only the main disk will be preserved!\")+\n                '<br>'+\n                  Locale.tr(\"You can then create a new Virtual Machine using this Template\")+\n                '</span>'+\n              '</div>'+\n            '</div>'+\n            '<br>'+\n            '<div class=\"row\">'+\n              '<div class=\"large-11 large-centered columns\">'+\n                '<input type=\"text\" class=\"provision_snapshot_name\" placeholder=\"'+Locale.tr(\"Template Name\")+'\" style=\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important; margin: 0px\"/>'+\n              '</div>'+\n            '</div>'+\n            '<br>'+\n            '<div class=\"row\">'+\n              '<div class=\"large-11 large-centered columns\">'+\n                '<a href\"#\" class=\"provision_snapshot_create_button success button large-12 radius right\">'+Locale.tr(\"Save Virtual Machine to Template\")+'</a>'+\n              '</div>'+\n            '</div>'+\n            '<a href=\"#\" class=\"close\" style=\"top: 20px\">&times;</a>'+\n          '</div>');\n      });\n\n      context.on(\"click\", \".provision_snapshot_create_button\", function(){\n        var button = $(this);\n        button.attr(\"disabled\", \"disabled\");\n        var context = $(\".provision_info_vm[vm_id]\");\n\n        var vm_id = context.attr(\"vm_id\");\n        var template_name = $('.provision_snapshot_name', context).val();\n\n        OpenNebula.VM.save_as_template({\n          data : {\n            id: vm_id,\n            extra_param: {\n              name : template_name\n            }\n          },\n          success: function(request, response){\n            OpenNebula.Action.clear_cache(\"VMTEMPLATE\");\n            Notifier.notifyMessage(Locale.tr(\"Image\") + ' ' + request.request.data[0][1].name + ' ' + Locale.tr(\"saved successfully\"))\n            update_provision_vm_info(vm_id, context);\n            button.removeAttr(\"disabled\");\n          },\n          error: function(request, response){\n            Notifier.onError(request, response);\n            button.removeAttr(\"disabled\");\n          }\n        })\n\n        return false;\n      });\n    }\n\n    context.on(\"click\", \".provision_delete_confirm_button\", function(){\n      $(\".provision_confirm_action:first\", context).html(\n        '<div data-alert class=\"alert-box secondary radius\">'+\n          '<div class=\"row\">'+\n          '<div class=\"large-9 columns\">'+\n            '<span style=\"font-size: 14px; line-height: 20px\">'+\n              Locale.tr(\"Be careful, this action will inmediately destroy your Virtual Machine\")+\n              '<br>'+\n              Locale.tr(\"All the information will be lost!\")+\n            '</span>'+\n          '</div>'+\n          '<div class=\"large-3 columns\">'+\n            '<a href\"#\" class=\"provision_delete_button alert button large-12 radius right\" style=\"margin-right: 15px\">'+Locale.tr(\"Delete\")+'</a>'+\n          '</div>'+\n          '</div>'+\n          '<a href=\"#\" class=\"close\">&times;</a>'+\n        '</div>');\n    });\n\n    context.on(\"click\", \".provision_shutdownhard_confirm_button\", function(){\n      $(\".provision_confirm_action:first\", context).html(\n        '<div data-alert class=\"alert-box secondary radius\">'+\n          '<div class=\"row\">'+\n          '<div class=\"large-9 columns\">'+\n            '<span style=\"font-size: 14px; line-height: 20px\">'+\n              Locale.tr(\"Be careful, this action will inmediately destroy your Virtual Machine\")+\n              '<br>'+\n              Locale.tr(\"All the information will be lost!\")+\n            '</span>'+\n          '</div>'+\n          '<div class=\"large-3 columns\">'+\n            '<a href\"#\" class=\"provision_shutdownhard_button alert button large-12 radius right\" style=\"margin-right: 15px\">'+Locale.tr(\"Delete\")+'</a>'+\n          '</div>'+\n          '</div>'+\n          '<a href=\"#\" class=\"close\" style=\"top: 20px\">&times;</a>'+\n        '</div>');\n    });\n\n    context.on(\"click\", \".provision_poweroff_confirm_button\", function(){\n      $(\".provision_confirm_action:first\", context).html(\n        '<div data-alert class=\"alert-box secondary radius\">'+\n          '<div class=\"row\">'+\n          '<div class=\"large-11 columns\">'+\n            '<span style=\"font-size: 14px; line-height: 20px\">'+\n              Locale.tr(\"This action will power off this Virtual Machine. The Virtual Machine will remain in the poweroff state, and can be powered on later\")+\n              '<br>'+\n              '<br>'+\n              Locale.tr(\"You can send the power off signal to the Virtual Machine (this is equivalent to execute the command from the console). If that doesn't effect your Virtual Machine, try to Power off the machine (this is equivalent to pressing the power off button in a physical computer).\")+\n            '</span>'+\n          '</div>'+\n          '</div>'+\n          '<br>'+\n          '<div class=\"row\">'+\n          '<div class=\"large-12 columns\">'+\n            '<a href\"#\" class=\"provision_poweroff_button button radius right\" style=\"margin-right: 15px\">'+Locale.tr(\"Power off\")+'</a>'+\n            '<label class=\"left\" style=\"margin-left: 25px\">'+\n              '<input type=\"radio\" name=\"provision_poweroff_radio\" value=\"poweroff_hard\" class=\"provision_poweroff_hard_radio\">'+\n              ' <i class=\"fa fa-fw fa-bolt\"/> '+Locale.tr(\"Power off the machine\")+\n            '</label>'+\n            '<label class=\"left\" style=\"margin-left: 25px\">'+\n              '<input type=\"radio\" name=\"provision_poweroff_radio\" value=\"poweroff\" class=\"provision_poweroff_radio\" checked>'+\n              ' <i class=\"fa fa-fw fa-power-off\"/> '+Locale.tr(\"Send the power off signal\")+\n            '</label>'+\n          '</div>'+\n          '</div>'+\n          '<a href=\"#\" class=\"close\" style=\"top: 20px\">&times;</a>'+\n        '</div>');\n    });\n\n    context.on(\"click\", \".provision_reboot_confirm_button\", function(){\n      $(\".provision_confirm_action:first\", context).html(\n        '<div data-alert class=\"alert-box secondary radius\">'+\n          '<div class=\"row\">'+\n          '<div class=\"large-11 columns\">'+\n            '<span style=\"font-size: 14px; line-height: 20px\">'+\n              Locale.tr(\"This action will reboot this Virtual Machine.\")+\n              '<br>'+\n              '<br>'+\n              Locale.tr(\"You can send the reboot signal to the Virtual Machine (this is equivalent to execute the reboot command form the console). If that doesn't effect your Virtual Machine, try to Reboot the machine (this is equivalent to pressing the reset button a physical computer).\")+\n            '</span>'+\n          '</div>'+\n          '</div>'+\n          '<br>'+\n          '<div class=\"row\">'+\n          '<div class=\"large-12 columns\">'+\n            '<a href\"#\" class=\"provision_reboot_button button radius right\" style=\"margin-right: 15px\">'+Locale.tr(\"Reboot\")+'</a>'+\n            '<label class=\"left\" style=\"margin-left: 25px\">'+\n              '<input type=\"radio\" name=\"provision_reboot_radio\" value=\"reset\" class=\"provision_reboot_hard_radio\">'+\n              ' <i class=\"fa fa-fw fa-bolt\"/> '+Locale.tr(\"Reboot the machine\")+\n            '</label>'+\n            '<label class=\"left\" style=\"margin-left: 25px\">'+\n              '<input type=\"radio\" name=\"provision_reboot_radio\" value=\"reboot\" class=\"provision_reboot_radio\" checked>'+\n              ' <i class=\"fa fa-fw fa-power-off\"/> '+Locale.tr(\"Send the reboot signal\")+\n            '</label>'+\n          '</div>'+\n          '</div>'+\n          '<a href=\"#\" class=\"close\" style=\"top: 20px\">&times;</a>'+\n        '</div>');\n    });\n\n    context.on(\"click\", \".provision_delete_button\", function(){\n      var button = $(this);\n      button.attr(\"disabled\", \"disabled\");\n      var vm_id = $(\".provision_info_vm\", context).attr(\"vm_id\");\n\n      OpenNebula.VM.del({\n        data : {\n          id: vm_id\n        },\n        success: function(request, response){\n          $(\".provision_back\", context).click();\n          $(\".provision_vms_list_refresh_button\", context).click();\n          button.removeAttr(\"disabled\");\n        },\n        error: function(request, response){\n          Notifier.onError(request, response);\n          button.removeAttr(\"disabled\");\n        }\n      })\n\n      return false;\n    });\n\n    context.on(\"click\", \".provision_shutdownhard_button\", function(){\n      var button = $(this);\n      button.attr(\"disabled\", \"disabled\");\n      var vm_id = $(\".provision_info_vm\", context).attr(\"vm_id\");\n\n      OpenNebula.VM.cancel({\n        data : {\n          id: vm_id\n        },\n        success: function(request, response){\n          $(\".provision_back\", context).click();\n          $(\".provision_vms_list_refresh_button\", context).click();\n          button.removeAttr(\"disabled\");\n        },\n        error: function(request, response){\n          Notifier.onError(request, response);\n          button.removeAttr(\"disabled\");\n        }\n      })\n\n      return false;\n    });\n\n    context.on(\"click\", \".provision_poweroff_button\", function(){\n      var button = $(this);\n      button.attr(\"disabled\", \"disabled\");\n      var vm_id = $(\".provision_info_vm\", context).attr(\"vm_id\");\n      var poweroff_action = $('input[name=provision_poweroff_radio]:checked').val()\n\n      OpenNebula.VM[poweroff_action]({\n        data : {\n          id: vm_id\n        },\n        success: function(request, response){\n          update_provision_vm_info(vm_id, context);\n          button.removeAttr(\"disabled\");\n        },\n        error: function(request, response){\n          Notifier.onError(request, response);\n          button.removeAttr(\"disabled\");\n        }\n      })\n\n      return false;\n    });\n\n    context.on(\"click\", \".provision_reboot_button\", function(){\n      var button = $(this);\n      button.attr(\"disabled\", \"disabled\");\n\n      var vm_id = $(\".provision_info_vm\", context).attr(\"vm_id\");\n      var reboot_action = $('input[name=provision_reboot_radio]:checked').val()\n\n      OpenNebula.VM[reboot_action]({\n        data : {\n          id: vm_id\n        },\n        success: function(request, response){\n          update_provision_vm_info(vm_id, context);\n          button.removeAttr(\"disabled\");\n        },\n        error: function(request, response){\n          Notifier.onError(request, response);\n          button.removeAttr(\"disabled\");\n        }\n      })\n\n      return false;\n    });\n\n    context.on(\"click\", \".provision_poweron_button\", function(){\n      var button = $(this);\n      button.attr(\"disabled\", \"disabled\");\n      var vm_id = $(\".provision_info_vm\", context).attr(\"vm_id\");\n\n      OpenNebula.VM.resume({\n        data : {\n          id: vm_id\n        },\n        success: function(request, response){\n          update_provision_vm_info(vm_id, context);\n          button.removeAttr(\"disabled\");\n        },\n        error: function(request, response){\n          Notifier.onError(request, response);\n          button.removeAttr(\"disabled\");\n        }\n      })\n\n      return false;\n    });\n\n    context.on(\"click\", \".provision_vnc_button\", function(){\n      var button = $(this);\n      button.attr(\"disabled\", \"disabled\");\n      var vm_id = $(\".provision_info_vm\", context).attr(\"vm_id\");\n      var vm_data = $(\".provision_info_vm\", context).data(\"vm\");\n\n      OpenNebula.VM.vnc({\n        data : {\n          id: vm_id\n        },\n        success: function(request, response){\n          if (OpenNebula.VM.isVNCSupported(vm_data)) {\n            var proxy_host = window.location.hostname;\n            var proxy_port = config['system_config']['vnc_proxy_port'];\n            var pw = response[\"password\"];\n            var token = response[\"token\"];\n            var vm_name = response[\"vm_name\"];\n            var path = '?token='+token;\n\n            var url = \"vnc?\";\n            url += \"host=\" + proxy_host;\n            url += \"&port=\" + proxy_port;\n            url += \"&token=\" + token;\n            url += \"&password=\" + pw;\n            url += \"&encrypt=\" + config['user_config']['vnc_wss'];\n            url += \"&title=\" + vm_name;\n\n            window.open(url, '', '_blank');\n            button.removeAttr(\"disabled\");\n          } else if (OpenNebula.VM.isSPICESupported(vm_data)) {\n            var host, port, password, scheme = \"ws://\", uri, token, vm_name;\n\n            if (config['user_config']['vnc_wss'] == \"yes\") {\n                scheme = \"wss://\";\n            }\n\n            host = window.location.hostname;\n            port = config['system_config']['vnc_proxy_port'];\n            password = response[\"password\"];\n            token = response[\"token\"];\n            vm_name = response[\"vm_name\"];\n\n            uri = scheme + host + \":\" + port + \"?token=\" + token;\n\n            var url = \"spice?\";\n            url += \"host=\" + host;\n            url += \"&port=\" + port;\n            url += \"&token=\" + token;\n            url += \"&password=\" + password;\n            url += \"&encrypt=\" + config['user_config']['vnc_wss'];\n            url += \"&title=\" + vm_name;\n\n            window.open(url, '', '_blank');\n            button.removeAttr(\"disabled\");\n          } else {\n            Notifier.notifyError(\"The remote console is not enabled for this VM\")\n          }\n        },\n        error: function(request, response){\n          Notifier.onError(request, response);\n          button.removeAttr(\"disabled\");\n        }\n      })\n\n      return false;\n    });\n\n    context.on(\"click\", \".provision_refresh_info\", function(){\n      var vm_id = $(\".provision_info_vm\", context).attr(\"vm_id\");\n      update_provision_vm_info(vm_id, context);\n      return false;\n    });\n\n    //\n    // Info VM\n    //\n\n    $(\".provision_list_vms\", context).on(\"click\", \".provision_info_vm_button\", function(){\n      $(\"a.provision_show_vm_accordion\", context).trigger(\"click\");\n      // TODO loading\n\n      var vm_id = $(this).parents(\".provision-pricing-table\").attr(\"opennebula_id\")\n      update_provision_vm_info(vm_id, context);\n      return false;\n    })\n  }\n\n\n  // @params\n  //    data: and VM object\n  //      Example: data.ID\n  // @returns and object containing the following properties\n  //    color: css class for this state.\n  //      color + '-color' font color class\n  //      color + '-bg' background class\n  //    str: user friendly state string\n  function get_provision_vm_state(data) {\n    var state = OpenNebula.VM.stateStr(data.STATE);\n    var state_color;\n    var state_str;\n\n    switch (state) {\n      case \"INIT\":\n      case \"PENDING\":\n      case \"HOLD\":\n        state_color = 'deploying';\n        state_str = Locale.tr(\"DEPLOYING\") + \" (1/3)\";\n        break;\n      case \"FAILED\":\n        state_color = 'error';\n        state_str = Locale.tr(\"ERROR\");\n        break;\n      case \"ACTIVE\":\n        var lcm_state = OpenNebula.VM.shortLcmStateStr(data.LCM_STATE);\n\n        switch (lcm_state) {\n          case \"LCM_INIT\":\n            state_color = 'deploying';\n            state_str = Locale.tr(\"DEPLOYING\") + \" (1/3)\";\n            break;\n          case \"PROLOG\":\n            state_color = 'deploying';\n            state_str = Locale.tr(\"DEPLOYING\") + \" (2/3)\";\n            break;\n          case \"BOOT\":\n            state_color = 'deploying';\n            state_str = Locale.tr(\"DEPLOYING\") + \" (3/3)\";\n            break;\n          case \"RUNNING\":\n          case \"SNAPSHOT\":\n          case \"MIGRATE\":\n            state_color = 'running';\n            state_str = Locale.tr(\"RUNNING\");\n            break;\n          case \"HOTPLUG\":\n            state_color = 'deploying';\n            state_str = Locale.tr(\"SAVING IMAGE\");\n            break;\n          case \"FAILURE\":\n            state_color = 'error';\n            state_str = Locale.tr(\"ERROR\");\n            break;\n          case \"SAVE\":\n          case \"EPILOG\":\n          case \"SHUTDOWN\":\n          case \"CLEANUP\":\n            state_color = 'powering_off';\n            state_str = Locale.tr(\"POWERING OFF\");\n            break;\n          case \"UNKNOWN\":\n            state_color = 'powering_off';\n            state_str = Locale.tr(\"UNKNOWN\");\n            break;\n          default:\n            state_color = 'powering_off';\n            state_str = Locale.tr(\"UNKNOWN\");\n            break;\n        }\n\n        break;\n      case \"STOPPED\":\n      case \"SUSPENDED\":\n      case \"POWEROFF\":\n        state_color = 'off';\n        state_str = Locale.tr(\"OFF\");\n\n        break;\n      default:\n        state_color = 'powering_off';\n        state_str = Locale.tr(\"UNKNOWN\");\n        break;\n    }\n\n    return {\n      color: state_color,\n      str: state_str\n    }\n  }\n\n  function get_provision_disk_image(data) {\n    var disks = []\n    if ($.isArray(data.TEMPLATE.DISK))\n        disks = data.TEMPLATE.DISK\n    else if (!$.isEmptyObject(data.TEMPLATE.DISK))\n        disks = [data.TEMPLATE.DISK]\n\n    if (disks.length > 0) {\n      return disks[0].IMAGE;\n    } else {\n      return '';\n    }\n  }\n\n  function get_provision_ips(data) {\n    return '<i class=\"fa fa-fw fa-lg fa-globe\"></i> ' + OpenNebula.VM.ipsStr(data);\n  }\n\n  // @params\n  //    data: and IMAGE object\n  //      Example: data.ID\n  // @returns and object containing the following properties\n  //    color: css class for this state.\n  //      color + '-color' font color class\n  //      color + '-bg' background class\n  //    str: user friendly state string\n  function get_provision_image_state(data) {\n    var state = OpenNebula.Image.stateStr(data.STATE);\n    var state_color;\n    var state_str;\n\n    switch (state) {\n      case \"READY\":\n      case \"USED\":\n        state_color = 'running';\n        state_str = Locale.tr(\"READY\");\n        break;\n      case \"DISABLED\":\n      case \"USED_PERS\":\n        state_color = 'off';\n        state_str = Locale.tr(\"OFF\");\n        break;\n      case \"LOCKED\":\n      case \"CLONE\":\n      case \"INIT\":\n        state_color = 'deploying';\n        state_str = Locale.tr(\"DEPLOYING\") + \" (1/3)\";\n        break;\n      case \"ERROR\":\n        state_color = 'error';\n        state_str = Locale.tr(\"ERROR\");\n        break;\n      case \"DELETE\":\n        state_color = 'error';\n        state_str = Locale.tr(\"DELETING\");\n        break;\n      default:\n        state_color = 'powering_off';\n        state_str = Locale.tr(\"UNKNOWN\");\n        break;\n    }\n\n    return {\n      color: state_color,\n      str: state_str\n    }\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/templates/list',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  return \"active\";\n  },\"3\":function(depth0,helpers,partials,data) {\n  return \"style=\\\"display:none\\\"\";\n  },\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<dl class=\\\"accordion accordion_list provision_list_templates\\\" data-accordion=\\\"dfsaf\\\">\\n  <dd class=\\\"\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.active : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" accordion-navigation\\\">\\n    <a class=\\\"right only-not-active\\\" href=\\\"#provision_list_template_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n      <span class=\\\"button small radius\\\"> <i class=\\\"fa fa-fw fa-lg fa-th\\\"/><i class=\\\"fa fa-fw fa-lg fa-chevron-left\\\"/>\\n      </span>\\n    </a>\\n    <h3 class=\\\"subheader\\\">\\n      <span href\\\"#\\\" class=\\\"right only-active button small radius secondary provision_templates_list_refresh_button\\\" \\n          \";\n  stack1 = helpers.unless.call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.refresh : stack1), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" data-tooltip title=\\\" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Refresh\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-refresh\\\"/></span>\\n      <span href\\\"#\\\" class=\\\"right only-active button small radius secondary provision_templates_list_filter_button\\\" \\n          \";\n  stack1 = helpers.unless.call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.filter : stack1), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" data-tooltip title=\\\" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filter by User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-filter\\\"/>\\n      </span>\\n      <span class=\\\"right only-active provision_list_templates_filter\\\" style=\\\"display: none\\\"></span>\\n      <input type=\\\"search\\\" class=\\\"provision_list_templates_search only-active provision-search-input\\\" placeholder=\\\"Search Templates\\\"/>\\n    </h3>\\n    <div id=\\\"provision_list_template_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content \";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.active : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"provision_confirm_delete_template_div large-12 large-centered columns\\\"></div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 large-centered columns\\\">\\n          <table class=\\\"provision_templates_table\\\">\\n            <thead class=\\\"hidden\\\">\\n              <tr>\\n                <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Saved\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              </tr>\\n            </thead>\\n            <tbody class=\\\"hidden\\\"></tbody>\\n          </table>\\n          <br></div>\\n      </div>\\n    </div>\\n  </dd>\\n  <dd class=\\\"accordion-navigation\\\">\\n    <a class=\\\"provision_show_template_accordion\\\" href=\\\"#provision_show_template_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></a>\\n    <div id=\\\"provision_show_template_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content\\\"></div>\\n  </dd>\\n</dl>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/templates/list', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/provision-tab/templates/list',['require','foundation.alert','opennebula','utils/locale','sunstone-config','utils/notifier','utils/humanize','utils/resource-select','hbs!./list'],function(require) {\n  require('foundation.alert');\n  var OpenNebula = require('opennebula');\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Notifier = require('utils/notifier');\n  var Humanize = require('utils/humanize');\n  var ResourceSelect = require('utils/resource-select');\n\n  var TemplateTemplatesList = require('hbs!./list');\n\n  var _accordionId = 0;\n\n  return {\n    'generate': generate_provision_templates_list,\n    'show': show_provision_template_list,\n    'updateDatatable': update_provision_templates_datatable,\n  };\n\n  function show_provision_template_list(timeout) {\n    $(\".section_content\").hide();\n    $(\".provision_templates_list_section\").fadeIn();\n\n    $(\".provision_templates_list_refresh_button\", $(\".provision_templates_list_section\")).trigger(\"click\");\n  }\n\n  function generate_provision_templates_list(context, opts) {\n    context.off();\n    context.html(html(opts));\n    setup_provision_templates_list(context, opts);\n  }\n\n  function html(opts_arg){\n    opts = $.extend({\n        title: Locale.tr(\"Saved Templates\"),\n        refresh: true,\n        create: true,\n        active: true,\n        filter: true\n      },opts_arg)\n\n    _accordionId += 1;\n    return TemplateTemplatesList({'accordionId': _accordionId, 'opts': opts});\n  }\n\n  function update_provision_templates_datatable(datatable, timeout) {\n    datatable.html('<div class=\"text-center\">'+\n      '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n        '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n        '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>'+\n      '</span>'+\n      '<br>'+\n      '<br>'+\n      '<span style=\"font-size: 18px; color: #999\">'+\n      '</span>'+\n      '</div>');\n\n    setTimeout( function(){\n      OpenNebula.Template.list({\n        timeout: true,\n        success: function (request, item_list){\n          datatable.fnClearTable(true);\n          if (item_list.length == 0) {\n            datatable.html('<div class=\"text-center\">'+\n              '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n                '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n                '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n              '</span>'+\n              '<br>'+\n              '<br>'+\n              '<span style=\"font-size: 18px; color: #999\">'+\n                Locale.tr(\"There are no templates available\")+\n              '</span>'+\n              '</div>');\n          } else {\n            datatable.fnAddData(item_list);\n          }\n        },\n        error: Notifier.onError\n      });\n    }, timeout);\n  }\n\n  function setup_provision_templates_list(context, opts) {\n    var provision_templates_datatable = $('.provision_templates_table', context).dataTable({\n      \"iDisplayLength\": 8,\n      \"sDom\" : '<\"H\">t<\"F\"lp>',\n      \"aLengthMenu\": [[6, 12, 36, 72], [6, 12, 36, 72]],\n      \"aaSorting\"  : [[0, \"desc\"]],\n      \"aoColumnDefs\": [\n          { \"bVisible\": false, \"aTargets\": [\"all\"]}\n      ],\n      \"aoColumns\": [\n          { \"mDataProp\": \"VMTEMPLATE.ID\" },\n          { \"mDataProp\": \"VMTEMPLATE.NAME\" },\n          { \"mDataProp\": \"VMTEMPLATE.TEMPLATE.SAVED_TEMPLATE_ID\", \"sDefaultContent\" : \"-\"  },\n          { \"mDataProp\": \"VMTEMPLATE.UID\" }\n      ],\n      \"fnPreDrawCallback\": function (oSettings) {\n        // create a thumbs container if it doesn't exist. put it in the dataTables_scrollbody div\n        if (this.$('tr', {\"filter\": \"applied\"} ).length == 0) {\n          this.html('<div class=\"text-center\">'+\n            '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n              '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n              '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n            '</span>'+\n            '<br>'+\n            '<br>'+\n            '<span style=\"font-size: 18px; color: #999\">'+\n              Locale.tr(\"There are no saved templates available\")+\n              '<br>'+\n              Locale.tr(\"Create a template by saving a running Virtual Machine\")+\n            '</span>'+\n            '</div>');\n        } else {\n          $(\".provision_templates_table\", context).html('<ul class=\"provision_templates_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center\"></ul>');\n        }\n        return true;\n      },\n      \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n        var data = aData.VMTEMPLATE;\n        var actions_html = \"\";\n        if (Config.isTabActionEnabled(\"provision-tab\", \"Template.chmod\")) {\n          if (data.UID == config['user_id']) {\n\n            if (data.PERMISSIONS.GROUP_U == \"1\") {\n              actions_html += '<a class=\"provision_confirm_unshare_template_button left\" data-tooltip title=\"'+ Locale.tr(\"Unshare\")+'\" style=\"color:#555\" href=\"#\"><i class=\"fa fa-fw fa-lg fa-ban only-on-hover\"/></a>';\n              actions_html += '<span style=\"font-size:12px; color: #777\">' + Locale.tr(\"SHARED\") + '</span>';\n            } else {\n              actions_html += '<a class=\"provision_confirm_chmod_template_button left\" data-tooltip title=\"'+ Locale.tr(\"Share\")+'\" style=\"color:#555\" href=\"#\"><i class=\"fa fa-fw fa-lg fa-share-alt only-on-hover\"/></a>';\n            }\n          }\n        }\n\n        if (Config.isTabActionEnabled(\"provision-tab\", \"Template.delete\")) {\n          actions_html += '<a class=\"provision_confirm_delete_template_button\" data-tooltip title=\"'+ Locale.tr(\"Delete\")+'\"  style=\"color:#555\" href=\"#\"><i class=\"fa fa-fw fa-lg fa-trash-o right only-on-hover\"/></a>';\n        }\n\n        $(\".provision_templates_ul\", context).append('<li>'+\n            '<ul class=\"provision-pricing-table\" opennebula_id=\"'+data.ID+'\" saved_to_image_id=\"'+data.TEMPLATE.SAVED_TO_IMAGE_ID+'\" datatable_index=\"'+iDisplayIndexFull+'\">'+\n              '<li class=\"provision-title text-left\" title=\"'+data.NAME+'\">'+\n                data.NAME +\n              '</li>'+\n              '<li class=\"provision-bullet-item text-left\" >'+\n                '<i class=\"fa fa-fw fa-lg fa-laptop\"/> '+\n                'x'+data.TEMPLATE.CPU+' - '+\n                ((data.TEMPLATE.MEMORY > 1000) ?\n                  (Math.floor(data.TEMPLATE.MEMORY/1024)+'GB') :\n                  (data.TEMPLATE.MEMORY+'MB'))+\n                ' - '+\n                get_provision_disk_image(data) +\n              '</li>'+\n              '<li class=\"provision-description text-left\" style=\"padding-top:0px; padding-bottom: 5px\">'+\n                (data.TEMPLATE.DESCRIPTION || '')+\n              '</li>'+\n              '<li class=\"provision-bullet-item\" style=\"padding-top:10px\">'+\n                actions_html+\n              '</li>'+\n              '<li class=\"provision-bullet-item-last text-left\" >'+\n                '<span class=\"\">'+\n                  '<i class=\"fa fa-fw fa-lg fa-user\"/> '+\n                  data.UNAME+\n                '</span>'+\n                '<span class=\"right\">'+\n                  Humanize.prettyTimeAgo(data.REGTIME)+\n                '</span>'+\n              '</li>'+\n            '</ul>'+\n          '</li>');\n\n        return nRow;\n      }\n    });\n\n    provision_templates_datatable.fnFilter(\"^(?!\\-$)\", 2, true, false);\n\n    $('.provision_list_templates_search', context).keyup(function(){\n      provision_templates_datatable.fnFilter( $(this).val() );\n    })\n\n    $('.provision_list_templates_search', context).change(function(){\n      provision_templates_datatable.fnFilter( $(this).val() );\n    })\n\n    context.on(\"click\", \".provision_templates_list_refresh_button\", function(){\n      OpenNebula.Action.clear_cache(\"VMTEMPLATE\");\n      $(\".provision_confirm_delete_template_div\", context).html(\"\");\n      update_provision_templates_datatable(provision_templates_datatable, 0);\n      return false;\n    });\n\n    context.on(\"click\", \".provision_templates_list_search_button\", function(){\n      $(\".provision_list_templates_search\", context).fadeIn();\n    });\n\n    $(\".provision_list_templates_filter\", context).on(\"change\", \".resource_list_select\", function(){\n      if ($(this).val() != \"-2\"){\n        provision_templates_datatable.fnFilter(\"^\" + $(this).val() + \"$\", 3, true, false);\n      } else {\n        provision_templates_datatable.fnFilter(\"\", 3);\n      }\n    })\n\n    ResourceSelect.insert(\n      \".provision_list_templates_filter\",\n      context,\n      \"User\",\n      (opts.filter_expression ? opts.filter_expression : \"-2\"),\n      false,\n      '<option value=\"-2\">'+Locale.tr(\"ALL\")+'</option>',\n      null,\n      null,\n      true,\n      true);\n\n    context.on(\"click\", \".provision_templates_list_filter_button\", function(){\n      $(\".provision_list_templates_filter\", context).fadeIn();\n      return false;\n    });\n\n    if (Config.isTabActionEnabled(\"provision-tab\", \"Template.delete\")) {\n      context.on(\"click\", \".provision_confirm_delete_template_button\", function(){\n        var ul_context = $(this).parents(\".provision-pricing-table\");\n        var template_id = ul_context.attr(\"opennebula_id\");\n        var image_id = ul_context.attr(\"saved_to_image_id\");\n        var template_name = $(\".provision-title\", ul_context).text();\n\n        $(\".provision_confirm_delete_template_div\", context).html(\n          '<div data-alert class=\"alert-box secondary radius\">'+\n            '<div class=\"row\">'+\n            '<div class=\"large-9 columns\">'+\n              '<span style=\"font-size: 14px; line-height: 20px\">'+\n                Locale.tr(\"Handle with care! This action will inmediately destroy the template\")+\n                ' \"' + template_name + '\" ' +\n                Locale.tr(\"and the image associated.\") +\n              '</span>'+\n            '</div>'+\n            '<div class=\"large-3 columns\">'+\n              '<a href\"#\" class=\"provision_delete_template_button alert button large-12 radius right\" style=\"margin-right: 15px\" image_id=\"'+image_id+'\" template_id=\"'+template_id+'\">'+Locale.tr(\"Delete\")+'</a>'+\n            '</div>'+\n            '</div>'+\n            '<a href=\"#\" class=\"close\">&times;</a>'+\n          '</div>');\n      });\n\n      context.on(\"click\", \".provision_delete_template_button\", function(){\n        /* TODO SAVED_TO_IMAGE_ID does not exists anymore and now all the images of the template\n            are cloned instead of only the main disk, therefore all the images should be deleted now.\n            Probably this could be done in the core\n\n        var button = $(this);\n        button.attr(\"disabled\", \"disabled\");\n\n        var template_id = $(this).attr(\"template_id\");\n        var image_id = $(this).attr(\"image_id\");\n\n        OpenNebula.Image.del({\n          timeout: true,\n          data : {\n            id : image_id\n          },\n          success: function (){\n            OpenNebula.Template.del({\n              timeout: true,\n              data : {\n                id : template_id\n              },\n              success: function (){\n                $(\".provision_templates_list_refresh_button\", context).trigger(\"click\");\n              },\n              error: function (request,error_json, container) {\n                Notifier.onError(request, error_json, container);\n              }\n            })\n          },\n          error: function (request,error_json, container) {\n            if (error_json.error.http_status==\"404\") {\n              OpenNebula.Template.del({\n                timeout: true,\n                data : {\n                  id : template_id\n                },\n                success: function (){\n                  $(\".provision_templates_list_refresh_button\", context).trigger(\"click\");\n                },\n                error: function (request,error_json, container) {\n                  Notifier.onError(request, error_json, container);\n                  $(\".provision_templates_list_refresh_button\", context).trigger(\"click\");\n                }\n              })\n            } else {\n              Notifier.onError(request, error_json, container);\n            }\n          }\n        })*/\n      });\n    }\n\n\n    if (Config.isTabActionEnabled(\"provision-tab\", \"Template.chmod\")) {\n      context.on(\"click\", \".provision_confirm_chmod_template_button\", function(){\n        var ul_context = $(this).parents(\".provision-pricing-table\");\n        var template_id = ul_context.attr(\"opennebula_id\");\n        var image_id = ul_context.attr(\"saved_to_image_id\");\n        var template_name = $(\".provision-title\", ul_context).text();\n\n        $(\".provision_confirm_delete_template_div\", context).html(\n          '<div data-alert class=\"alert-box secondary radius\">'+\n            '<div class=\"row\">'+\n            '<div class=\"large-8 columns\">'+\n              '<span style=\"font-size: 14px; line-height: 20px\">'+\n                Locale.tr(\"The template\")+\n                ' \"' + template_name + '\" ' +\n                Locale.tr(\"and the image associated will be shared and all the users will be able to instantiate new VMs using this template.\") +\n              '</span>'+\n            '</div>'+\n            '<div class=\"large-4 columns\">'+\n              '<a href\"#\" class=\"provision_chmod_template_button success button large-12 radius right\" style=\"margin-right: 15px\" image_id=\"'+image_id+'\" template_id=\"'+template_id+'\">'+Locale.tr(\"Share template\")+'</a>'+\n            '</div>'+\n            '</div>'+\n            '<a href=\"#\" class=\"close\">&times;</a>'+\n          '</div>');\n      });\n\n      context.on(\"click\", \".provision_chmod_template_button\", function(){\n        /* TODO SAVED_TO_IMAGE_ID does not exists anymore and now all the images of the template\n            are cloned instead of only the main disk, therefore all the images should be chmod now.\n            Probably this could be done in the core\n        var button = $(this);\n        button.attr(\"disabled\", \"disabled\");\n\n        var template_id = $(this).attr(\"template_id\");\n        var image_id = $(this).attr(\"image_id\");\n\n        OpenNebula.Template.chmod({\n          timeout: true,\n          data : {\n            id : template_id,\n            extra_param: {'group_u': 1}\n          },\n          success: function (){\n            $(\".provision_templates_list_refresh_button\", context).trigger(\"click\");\n\n            OpenNebula.Image.chmod({\n              timeout: true,\n              data : {\n                id : image_id,\n                extra_param: {'group_u': 1}\n              },\n              success: function (){\n              },\n              error: Notifier.onError\n            })\n          },\n          error: Notifier.onError\n        })*/\n      });\n\n      context.on(\"click\", \".provision_confirm_unshare_template_button\", function(){\n        var ul_context = $(this).parents(\".provision-pricing-table\");\n        var template_id = ul_context.attr(\"opennebula_id\");\n        var image_id = ul_context.attr(\"saved_to_image_id\");\n        var template_name = $(\".provision-title\", ul_context).first().text();\n\n        $(\".provision_confirm_delete_template_div\", context).html(\n          '<div data-alert class=\"alert-box secondary radius\">'+\n            '<div class=\"row\">'+\n            '<div class=\"large-8 columns\">'+\n              '<span style=\"font-size: 14px; line-height: 20px\">'+\n                Locale.tr(\"The template\")+\n                ' \"' + template_name + '\" ' +\n                Locale.tr(\"and the image associated will be unshared and the users will not be able to instantiate new VMs using this template.\") +\n              '</span>'+\n            '</div>'+\n            '<div class=\"large-4 columns\">'+\n              '<a href\"#\" class=\"provision_unshare_template_button success button large-12 radius right\" style=\"margin-right: 15px\" image_id=\"'+image_id+'\" template_id=\"'+template_id+'\">'+Locale.tr(\"Unshare template\")+'</a>'+\n            '</div>'+\n            '</div>'+\n            '<a href=\"#\" class=\"close\">&times;</a>'+\n          '</div>');\n      });\n\n      context.on(\"click\", \".provision_unshare_template_button\", function(){\n        var button = $(this);\n        button.attr(\"disabled\", \"disabled\");\n\n        var template_id = $(this).attr(\"template_id\");\n        var image_id = $(this).attr(\"image_id\");\n\n        OpenNebula.Template.chmod({\n          timeout: true,\n          data : {\n            id : template_id,\n            extra_param: {'group_u': 0}\n          },\n          success: function (){\n            $(\".provision_templates_list_refresh_button\", context).trigger(\"click\");\n\n            OpenNebula.Image.chmod({\n              timeout: true,\n              data : {\n                id : image_id,\n                extra_param: {'group_u': 0}\n              },\n              success: function (){\n              },\n              error: Notifier.onError\n            })\n          },\n          error: Notifier.onError\n        })\n      });\n    }\n\n    OpenNebula.Action.clear_cache(\"VMTEMPLATE\");\n    update_provision_templates_datatable(provision_templates_datatable, 0);\n    context.foundation();\n  }\n\n  function get_provision_disk_image(data) {\n    var disks = []\n    if ($.isArray(data.TEMPLATE.DISK))\n        disks = data.TEMPLATE.DISK\n    else if (!$.isEmptyObject(data.TEMPLATE.DISK))\n        disks = [data.TEMPLATE.DISK]\n\n    if (disks.length > 0 && disks[0].IMAGE) {\n      return disks[0].IMAGE;\n    } else {\n      return '';\n    }\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/flows/info',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"text-center provision_info_flow_loading\\\">\\n  <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i> <i class=\\\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\\\"></i>\\n  </span>\\n  <br>\\n  <br>\\n  <span style=\\\"font-size: 18px; color: #999\\\"></span>\\n</div>\\n<div class=\\\"provision_info_flow\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 large-centered columns\\\">\\n      <ul class=\\\"inline-list provision_action_icons\\\">\\n        <li>\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Recover a failed service, cleaning the failed VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"left button small radius success provision_recover_button\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-wrench\\\"/></a>\\n        </li>\\n        <li class=\\\"right\\\">\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Delete\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"button small radius alert provision_delete_confirm_button tip-top right\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-trash-o\\\"/></a>\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shutdown\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"button small radius secondary provision_shutdown_confirm_button tip-top right\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-power-off\\\"/>\\n          </a>\\n        </li>\\n      </ul>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"provision_confirm_action large-10 large-centered columns\\\"></div>\\n  </div>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-4 columns\\\">\\n      <ul class=\\\"provision-pricing-table_flow_info provision-pricing-table\\\" style=\\\"border: 0px !important; background: #fff;\\\"></ul>\\n    </div>\\n    <div class=\\\"large-8 columns\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <ul class=\\\"provision_roles_ul large-block-grid-2 medium-block-grid-2 small-block-grid-1 text-center\\\"></ul>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <br>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"provision_role_vms_container large-12 large-centered columns\\\"></div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/flows/info', t);\nHandlebars.registerPartial('tabs/provision-tab/flows/info', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/flows/list',['hbs','hbs/handlebars', 'hbs!tabs/provision-tab/flows/info','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  return \"active\";\n  },\"3\":function(depth0,helpers,partials,data) {\n  return \"style=\\\"display:none\\\"\";\n  },\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<dl class=\\\"accordion accordion_list provision_list_flows\\\" data-accordion>\\n  <dd class=\\\"\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.active : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" accordion-navigation\\\">\\n    <a class=\\\"provision_list_flow_accordion right only-not-active provision_back\\\" href=\\\"#provision_list_flow_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n      <span class=\\\"button small radius\\\"> <i class=\\\"fa fa-fw fa-lg fa-th\\\"/><i class=\\\"fa fa-fw fa-lg fa-chevron-left\\\"/>\\n      </span>\\n    </a>\\n    <h3 class=\\\"subheader\\\">\\n      <span class=\\\"provision_info_flow_name only-not-active\\\"></span>\\n      <span href\\\"#\\\" class=\\\"only-active right button radius small secondary provision_flows_list_refresh_button\\\" \\n              \";\n  stack1 = helpers.unless.call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.refresh : stack1), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" data-tooltip title=\\\" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Refresh\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-refresh\\\"/></span>\\n      <span href\\\"#\\\" class=\\\"only-not-active right button small radius secondary provision_refresh_info\\\" \\n              \";\n  stack1 = helpers.unless.call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.refresh : stack1), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" data-tooltip title=\\\" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Refresh\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-refresh\\\"/>\\n      </span>\\n      <span href\\\"#\\\" class=\\\"only-active right button radius small secondary provision_flows_list_filter_button\\\" \\n              \";\n  stack1 = helpers.unless.call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.filter : stack1), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \" data-tooltip title=\\\" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filter by User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-filter\\\"/>\\n      </span>\\n      <span class=\\\"only-active right provision_list_flows_filter\\\" style=\\\"display: none\\\"></span>\\n      <span>\\n        <input type=\\\"search\\\" class=\\\"only-active provision_list_flows_search provision-search-input\\\" placeholder=\\\"Search Services\\\"/>\\n        <span href\\\"#\\\" class=\\\"only-active right button radius small success provision_create_flow_button\\\" \\n              \";\n  stack1 = helpers.unless.call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.create : stack1), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \">\\n          <i class=\\\"fa fa-fw fa-lg fa-plus-square\\\"/>\\n        </span>\\n      </h3>\\n      <div id=\\\"provision_list_flow_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content \";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.opts : depth0)) != null ? stack1.active : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\\">\\n        <div class=\\\"\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-12 large-centered columns\\\">\\n              <table class=\\\"provision_flows_table\\\">\\n                <thead class=\\\"hidden\\\">\\n                  <tr>\\n                    <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                    <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                    <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                  </tr>\\n                </thead>\\n                <tbody class=\\\"hidden\\\"></tbody>\\n              </table>\\n              <br></div>\\n          </div>\\n        </div>\\n      </div>\\n    </dd>\\n    <dd class=\\\"accordion-navigation\\\">\\n      <a class=\\\"provision_show_flow_accordion\\\" href=\\\"#provision_show_flow_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></a>\\n      <div id=\\\"provision_show_flow_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content\\\">\";\n  stack1 = this.invokePartial(partials['tabs/provision-tab/flows/info'], '', 'tabs/provision-tab/flows/info', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n    </dd>\\n  </dl>\";\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/flows/list', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/provision-tab/flows/list',['require','foundation.alert','opennebula','utils/locale','utils/notifier','utils/humanize','utils/resource-select','tabs/provision-tab/vms/list','hbs!./list'],function(require) {\n  require('foundation.alert');\n  var OpenNebula = require('opennebula');\n  var Locale = require('utils/locale');\n  var Notifier = require('utils/notifier');\n  var Humanize = require('utils/humanize');\n  var ResourceSelect = require('utils/resource-select');\n\n  var ProvisionVmsList = require('tabs/provision-tab/vms/list');\n\n  var TemplateFlowsList = require('hbs!./list');\n\n  var _accordionId = 0;\n\n  return {\n    'generate': generate_provision_flows_list,\n    'show': show_provision_flow_list\n  };\n\n\n  function show_provision_flow_list(timeout) {\n    $(\".section_content\").hide();\n    $(\".provision_flows_list_section\").fadeIn();\n\n    $(\"dd:not(.active) .provision_back\", $(\".provision_flows_list_section\")).trigger(\"click\");\n    $(\".provision_flows_list_refresh_button\", $(\".provision_flows_list_section\")).trigger(\"click\");\n  }\n\n  function generate_provision_flows_list(context, opts) {\n    context.off();\n    context.html(html(opts));\n    setup_provision_flows_list(context, opts);\n    setup_info_flow(context);\n  }\n\n  function html(opts_arg){\n    opts = $.extend({\n        title: Locale.tr(\"Services\"),\n        active: true,\n        refresh: true,\n        create: true,\n        filter: true\n      },opts_arg)\n\n    _accordionId += 1;\n    return TemplateFlowsList({'accordionId': _accordionId, 'opts': opts});\n  }\n\n  function update_provision_flows_datatable(datatable, timeout) {\n    datatable.html('<div class=\"text-center\">'+\n      '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n        '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n        '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>'+\n      '</span>'+\n      '<br>'+\n      '<br>'+\n      '<span style=\"font-size: 18px; color: #999\">'+\n      '</span>'+\n      '</div>');\n\n    setTimeout( function(){\n      OpenNebula.Service.list({\n        timeout: true,\n        success: function (request, item_list){\n          $(\".flow_error_message\").hide();\n          datatable.fnClearTable(true);\n          if (item_list.length == 0) {\n            datatable.html('<div class=\"text-center\">'+\n              '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n                '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n                '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n              '</span>'+\n              '<br>'+\n              '<br>'+\n              '<span style=\"font-size: 18px; color: #999\">'+\n                Locale.tr(\"There are no Services\")+\n              '</span>'+\n              '<br>'+\n              '<br>'+\n              '</div>');\n          } else {\n            datatable.fnAddData(item_list);\n          }\n        },\n        error: function(request, error_json) {\n          datatable.html('<div class=\"text-center\">'+\n            '<br>'+\n            '<br>'+\n            '<div class=\"row flow_error_message\" id=\"\" hidden>'+\n              '<div class=\"small-6 columns small-centered text-center\">'+\n                  '<div class=\"alert-box alert radius\">'+Locale.tr(\"Cannot connect to OneFlow server\")+'</div>'+\n              '</div>'+\n            '</div>'+\n            '<br>'+\n            '<br>'+\n            '<span style=\"font-size: 18px; color: #999\">'+\n            '</span>'+\n            '</div>');\n\n            Notifier.onError(request, error_json, $(\".flow_error_message\"));\n        }\n      })\n    }, timeout );\n  }\n\n  function setup_provision_flows_list(context, opts){\n    //\n    // List Flows\n    //\n\n    provision_flows_datatable = $('.provision_flows_table', context).dataTable({\n      \"iDisplayLength\": 6,\n      \"sDom\" : '<\"H\">t<\"F\"lp>',\n      \"aLengthMenu\": [[6, 12, 36, 72], [6, 12, 36, 72]],\n      \"aaSorting\"  : [[0, \"desc\"]],\n      \"aoColumnDefs\": [\n          { \"bVisible\": false, \"aTargets\": [\"all\"]}\n      ],\n      \"aoColumns\": [\n          { \"mDataProp\": \"DOCUMENT.ID\" },\n          { \"mDataProp\": \"DOCUMENT.NAME\" },\n          { \"mDataProp\": \"DOCUMENT.UID\" }\n      ],\n      \"fnPreDrawCallback\": function (oSettings) {\n        // create a thumbs container if it doesn't exist. put it in the dataTables_scrollbody div\n        if (this.$('tr', {\"filter\": \"applied\"} ).length == 0) {\n          this.html('<div class=\"text-center\">'+\n            '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n              '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n              '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n            '</span>'+\n            '<br>'+\n            '<br>'+\n            '<span style=\"font-size: 18px; color: #999\">'+\n              Locale.tr(\"Looks like you don't have any Service. Click the button below to get started\")+\n            '</span>'+\n            '<br>'+\n            '<br>'+\n            '<div class=\"row\">'+\n              '<div class=\"large-6 large-centered columns\">'+\n                '<a href\"#\" class=\"medium large-12 button radius provision_create_flow_button\"\">'+Locale.tr(\"Create a new Service\")+'</a>'+\n              '</div>'+\n            '</div>'+\n            '<br>'+\n            '<br>'+\n            '</div>');\n        } else {\n          $(\".provision_flows_table\", context).html('<ul class=\"provision_flows_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center\"></ul>');\n        }\n\n        return true;\n      },\n      \"fnDrawCallback\": function (oSettings) {\n        $(\".provision_flows_ul\", context).foundation('reflow', 'tooltip');\n      },\n      \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n        var data = aData.DOCUMENT;\n        var body = data.TEMPLATE.BODY;\n        var state = get_provision_flow_state(body);\n        var start_time = get_provision_flow_start_time(body);\n\n        var roles_li = \"\";\n        if (body.roles) {\n          $.each(body.roles, function(index, role) {\n            var role_state = get_provision_flow_state(role);\n            var rvms = {\n              str : (role.nodes ? role.nodes.length : 0) + \" / \" + role.cardinality ,\n              percentage : Math.floor((role.nodes ? role.nodes.length : 0) / role.cardinality)*100\n            }\n\n            roles_li +=\n              '<li class=\"provision-bullet-item text-left\"\">'+\n                '<i class=\"fa fa-fw fa-lg fa-cube\"/>&emsp;'+\n                role.name+\n                '<span class=\"right\" style=\"font-size: 12px\">'+rvms.str+\" VMs</span>\"+\n              '</li>';\n          });\n        }\n\n        $(\".provision_flows_ul\", context).append('<li>'+\n            '<ul class=\"provision-pricing-table\" opennebula_id=\"'+data.ID+'\" datatable_index=\"'+iDisplayIndexFull+'\">'+\n              '<li class=\"provision-title text-left\">'+\n                '<a class=\"provision_info_flow_button\" style=\"color:#555\" href=\"#\">'+ \n                  '<span class=\"'+ state.color +'-color\" data-tooltip title=\"'+ state.str +'\">'+\n                    '<i class=\"fa fa-fw fa-lg fa-square\"/>&emsp;'+\n                  '</span>'+\n                  data.NAME + \n                '</a>'+\n              '</li>'+\n              roles_li +\n              '<li class=\"provision-bullet-item-last text-right\">'+\n                '<span class=\"left\">'+\n                  '<i class=\"fa fa-fw fa-lg fa-user\"/>&emsp;'+\n                  data.UNAME+\n                '</span>'+\n                '<span>'+\n                  (start_time ? Humanize.prettyTimeAgo(start_time) : '-') +\n                '</span>'+\n              '</li>'+\n            '</ul>'+\n          '</li>');\n\n        return nRow;\n      }\n    });\n\n    $('.provision_list_flows_search', context).keyup(function(){\n      provision_flows_datatable.fnFilter( $(this).val() );\n    })\n\n    $('.provision_list_flows_search', context).change(function(){\n      provision_flows_datatable.fnFilter( $(this).val() );\n    })\n\n    context.on(\"click\", \".provision_flows_list_refresh_button\", function(){\n      OpenNebula.Action.clear_cache(\"SERVICE\");\n      update_provision_flows_datatable(provision_flows_datatable, 0);\n      return false;\n    });\n\n    context.on(\"click\", \".provision_flows_list_search_button\", function(){\n      $(\".provision_list_flows_search\", context).fadeIn();\n    });\n\n    $(\".provision_list_flows_filter\", context).on(\"change\", \".resource_list_select\", function(){\n      if ($(this).val() != \"-2\"){\n        provision_flows_datatable.fnFilter(\"^\" + $(this).val() + \"$\", 2, true, false);\n      } else {\n        provision_flows_datatable.fnFilter(\"\", 2);\n      }\n    })\n\n    ResourceSelect.insert(\n      \".provision_list_flows_filter\",\n      context,\n      \"User\",\n      (opts.filter_expression ? opts.filter_expression : \"-2\"),\n      false,\n      '<option value=\"-2\">'+Locale.tr(\"ALL\")+'</option>',\n      null,\n      null,\n      true,\n      true);\n\n    context.on(\"click\", \".provision_flows_list_filter_button\", function(){\n      $(\".provision_list_flows_filter\", context).fadeIn();\n      return false;\n    });\n\n    OpenNebula.Action.clear_cache(\"SERVICE\");\n    update_provision_flows_datatable(provision_flows_datatable, 0);\n\n    $(document).foundation();\n  }\n\n  function setup_info_flow(context) {\n    function update_provision_flow_info(flow_id, context, role_id) {\n      $(\".provision_info_flow_name\", context).text(\"\");\n      $(\".provision_info_flow\", context).css('visibility', 'hidden');\n      $(\".provision_info_flow_loading\", context).fadeIn();\n      $(\".provision_role_vms_container\").html(\"\");\n\n      OpenNebula.Service.show({\n        data : {\n          id: flow_id\n        },\n        error: Notifier.onError,\n        success: function(request, response){\n          var data = response.DOCUMENT\n          var body = data.TEMPLATE.BODY;\n          var state = get_provision_flow_state(body);\n          var start_time = get_provision_flow_start_time(body);\n\n          switch (state.color) {\n            case \"deploying\":\n              $(\".provision_recover_button\", context).hide();\n              $(\".provision_delete_confirm_button\", context).show();\n              $(\".provision_shutdown_confirm_button\", context).show();\n              break;\n            case \"running\":\n              $(\".provision_recover_button\", context).hide();\n              $(\".provision_delete_confirm_button\", context).show();\n              $(\".provision_shutdown_confirm_button\", context).show();\n              break;\n            case \"off\":\n              $(\".provision_recover_button\", context).hide();\n              $(\".provision_delete_confirm_button\", context).show();\n              $(\".provision_shutdown_confirm_button\", context).hide();\n              break;\n            case \"powering_off\":\n            case \"error\":\n              $(\".provision_recover_button\", context).show();\n              $(\".provision_delete_confirm_button\", context).show();\n              $(\".provision_shutdown_confirm_button\", context).show();\n              break;\n            default:\n              $(\".provision_recover_button\", context).show();\n              $(\".provision_delete_confirm_button\", context).show();\n              $(\".provision_shutdown_confirm_button\", context).show();\n              break;\n          }\n\n          $(\".provision_info_flow\", context).attr(\"flow_id\", data.ID);\n          $(\".provision_info_flow_name\", context).text(data.NAME);\n\n          $(\".provision-pricing-table_flow_info\", context).html(\n              '<li class=\"text-left provision-bullet-item\">'+\n                '<span class=\"'+ state.color +'-color\">'+\n                  '<i class=\"fa fa-fw fa-lg fa-square\"/>&emsp;'+\n                  state.str+\n                '</span>'+\n              '</li>'+\n              '<li class=\"text-left provision-bullet-item\">'+\n                '<hr style=\"margin: 0px\">'+\n              '</li>'+\n              '<li class=\"text-left provision-bullet-item\">'+\n                '<span style=\"color: #999;\">'+\n                  '<i class=\"fa fa-fw fa-lg fa-user\"/>&emsp;'+\n                  data.UNAME+\n                '</span>'+\n                '<span class=\"right\" style=\"color: #999;\">'+\n                  '<i class=\"fa fa-fw fa-lg fa-clock-o\"/>&emsp;'+\n                  (start_time ? Humanize.prettyTimeAgo(start_time) : \"...\") +\n                  ' - '+\n                  'ID: '+\n                  data.ID+\n                '</span>'+\n              '</li>'+\n            '</ul>');\n\n          $(\".provision_roles_ul\", context).html(\"\");\n          if (body.roles) {\n            $.each(body.roles, function(index, role) {\n              var role_state = get_provision_flow_state(role);\n              var rvms = {\n                str : (role.nodes ? role.nodes.length : 0) + \" / \" + role.cardinality ,\n                percentage : Math.floor((role.nodes ? role.nodes.length : 0) / role.cardinality)*100\n              }\n\n              var li = $(\n                '<li>'+\n                  '<ul class=\"provision_role_ul provision-pricing-table\">'+\n                    '<li class=\"provision-title text-left\">'+\n                      '<i class=\"fa fa-fw fa-cube\"/>&emsp;'+\n                      role.name+\n                    '</li>'+\n                    '<li class=\"provision-bullet-item text-left\" style=\"padding-top: 5px; margin-left: 10px; margin-right: 10px\">'+\n                      '<div class=\"progress small radius\" style=\"margin-bottom:0px\">'+\n                      '  <span class=\"meter\" style=\"width: '+rvms.percentage+'%;\"></span>'+\n                      '</div>'+\n                    '</li>'+\n                    '<li class=\"provision-bullet-item text-left\" style=\"padding-top: 0px; margin-left: 10px; margin-right: 10px; font-size: 14px\">'+\n                      '<span class=\"'+ role_state.color +'-color\">'+\n                        role_state.str+\n                      '</span>'+\n                      '<span class=\"right\">'+rvms.str+\" VMs</span>\"+\n                    '</li>'+\n                    '<li class=\"text-left provision-bullet-item\">'+\n                      '<br>'+\n                    '</li>'+\n                    '<li class=\"provision-bullet-item text-left\" style=\"padding-top: 5px; margin-left: 10px; margin-right: 10px\">'+\n                      '<a class=\"provision_role_vms_button button medium radius\">'+\n                        '<i class=\"fa fa-th fa-lg\"></i>'+\n                      '</a>'+\n                      '<a class=\"provision_role_cardinality_button button medium success right radius\">'+\n                        '<i class=\"fa fa-arrows-h fa-lg\"></i>'+\n                      '</a>'+\n                    '</li>'+\n                  '</ul>'+\n                '</li>').appendTo($(\".provision_roles_ul\", context));\n\n                $(\".provision_role_ul\", li).data(\"role\", role);\n                if (role_id && role_id == role.name) {\n                  $(\".provision_role_vms_button\", li).trigger(\"click\");\n                }\n            });\n          }\n\n          $(\".provision_info_flow_state_hr\", context).html('<div style=\"height:1px; margin-top:5px; margin-bottom: 5px; background: #cfcfcf\"></div>');\n\n          $(\".provision_confirm_action:first\", context).html(\"\");\n\n          $(\".provision_info_flow_loading\", context).hide();\n          $(\".provision_info_flow\", context).css('visibility', 'visible');\n        }\n      })\n    }\n\n    context.on(\"click\", \".provision_role_vms_button\", function(){\n      $(\".provision_role_vms_container\", context).html('<div class=\"text-center\">'+\n        '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n          '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n          '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>'+\n        '</span>'+\n        '<br>'+\n        '<br>'+\n        '<span style=\"font-size: 18px; color: #999\">'+\n        '</span>'+\n        '</div>');\n\n      var role = $(this).closest(\".provision_role_ul\").data('role');\n      $(\".provision_info_flow\", context).data(\"role_id\", role.name);\n      var vms = []\n\n      if (role.nodes && role.nodes.length > 0) {\n        $.each(role.nodes, function(index, node){\n          vms.push(node.vm_info);\n        })\n      }\n\n      ProvisionVmsList.generate(\n        $(\".provision_role_vms_container\", context),\n        {\n          title: role.name + ' ' + Locale.tr(\"VMs\"),\n          active: true,\n          refresh: false,\n          create: false,\n          filter: false,\n          data: vms\n        });\n    })\n\n    context.on(\"click\", \".provision_role_cardinality_button\", function(){\n      var role = $(this).closest(\".provision_role_ul\").data('role');\n      var min_vms = (role.min_vms||1);\n      var max_vms = (role.max_vms||100);\n\n      $(\".provision_confirm_action:first\", context).html(\n        '<div data-alert class=\"alert-box secondary radius\">'+\n          '<div class=\"row\">'+\n            '<div class=\"large-12 large-centered columns\">'+\n              '<div class=\"row\">'+\n                '<div class=\"large-4 text-center columns\">'+\n                  '<span class=\"cardinality_value\" style=\"color: #777; font-size:60px\">'+role.cardinality+'</span>'+\n                  '<br>'+\n                  '<span style=\"color: #999; font-size:20px\">'+role.name + ' ' + Locale.tr(\"VMs\")+'</span>'+\n                '</div>'+\n                '<div class=\"large-8 columns text-center\">'+\n                '<div class=\"cardinality_slider_div\">'+\n                  '<br>'+\n                  '<span class=\"left\" style=\"color: #999;\">'+min_vms+'</span>'+\n                  '<span class=\"right\" style=\"color: #999;\">'+max_vms+'</span>'+\n                  '<br>'+\n                  '<div class=\"cardinality_slider\">'+\n                  '</div>'+\n                  '<br>'+\n                  '<a href\"#\" class=\"provision_change_cardinality_button success button radius large-12\" role_id=\"'+role.name+'\">'+Locale.tr(\"Change Cardinality\")+'</a>'+\n                '</div>'+\n                '<div class=\"cardinality_no_slider_div\">'+\n                  '<br>'+\n                  '<br>'+\n                  '<span class=\"\" style=\"color: #999;\">'+Locale.tr(\"The cardinality for this role cannot be changed\")+'</span>'+\n                '</div>'+\n              '</div>'+\n            '</div>'+\n          '</div>'+\n          '<a href=\"#\" class=\"close\" style=\"top: 20px\">&times;</a>'+\n        '</div>');\n\n\n      if (max_vms > min_vms) {\n        $( \".cardinality_slider_div\", context).show();\n        $( \".cardinality_no_slider_div\", context).hide();\n\n        var provision_cardinality_slider = $( \".cardinality_slider\", context).noUiSlider({\n            handles: 1,\n            connect: \"lower\",\n            range: [min_vms, max_vms],\n            step: 1,\n            start: role.cardinality,\n            value: role.cardinality,\n            slide: function(type) {\n                if ( type != \"move\"){\n                  if ($(this).val()) {\n                    $(\".cardinality_value\", context).html($(this).val());\n                  }\n                }\n            }\n        });\n\n        provision_cardinality_slider.val(role.cardinality)\n\n        provision_cardinality_slider.addClass(\"noUiSlider\");\n      } else {\n        $( \".cardinality_slider_div\", context).hide();\n        $( \".cardinality_no_slider_div\", context).show();\n      }\n\n      return false;\n    });\n\n    context.on(\"click\", \".provision_change_cardinality_button\", function(){\n      var flow_id = $(\".provision_info_flow\", context).attr(\"flow_id\");\n      var cardinality = $(\".cardinality_slider\", context).val()\n\n      OpenNebula.Role.update({\n        data : {\n          id: flow_id + '/role/' + $(this).attr(\"role_id\"),\n          extra_param: {\n            cardinality: cardinality\n          }\n        },\n        success: function(request, response){\n          OpenNebula.Action.clear_cache(\"SERVICE\");\n          $(\".provision_refresh_info\", context).trigger(\"click\");\n        },\n        error: Notifier.onError\n      })\n    });\n\n    context.on(\"click\", \".provision_delete_confirm_button\", function(){\n      $(\".provision_confirm_action:first\", context).html(\n        '<div data-alert class=\"alert-box secondary radius\">'+\n          '<div class=\"row\">'+\n          '<div class=\"large-9 columns\">'+\n            '<span style=\"font-size: 14px; line-height: 20px\">'+\n              Locale.tr(\"Be careful, this action will inmediately destroy your Service\")+\n              '<br>'+\n              Locale.tr(\"All the information will be lost!\")+\n            '</span>'+\n          '</div>'+\n          '<div class=\"large-3 columns\">'+\n            '<a href\"#\" class=\"provision_delete_button alert button large-12 radius right\" style=\"margin-right: 15px\">'+Locale.tr(\"Delete\")+'</a>'+\n          '</div>'+\n          '</div>'+\n          '<a href=\"#\" class=\"close\">&times;</a>'+\n        '</div>');\n    });\n\n    context.on(\"click\", \".provision_shutdown_confirm_button\", function(){\n      $(\".provision_confirm_action:first\", context).html(\n        '<div data-alert class=\"alert-box secondary radius\">'+\n          '<div class=\"row\">'+\n          '<div class=\"large-9 columns\">'+\n            '<span style=\"font-size: 14px; line-height: 20px\">'+\n              Locale.tr(\"Be careful, this action will inmediately shutdown your Service\")+\n              '<br>'+\n              Locale.tr(\"All the information will be lost!\")+\n            '</span>'+\n          '</div>'+\n          '<div class=\"large-3 columns\">'+\n            '<a href\"#\" class=\"provision_shutdown_button alert button large-12 radius right\" style=\"margin-right: 15px\">'+Locale.tr(\"Shutdown\")+'</a>'+\n          '</div>'+\n          '</div>'+\n          '<a href=\"#\" class=\"close\">&times;</a>'+\n        '</div>');\n    });\n\n    context.on(\"click\", \".provision_recover_button\", function(){\n      var flow_id = $(\".provision_info_flow\", context).attr(\"flow_id\");\n\n      OpenNebula.Service.recover({\n        data : {\n          id: flow_id\n        },\n        success: function(request, response){\n          update_provision_flow_info(flow_id, context);\n        },\n        error: Notifier.onError\n      })\n    });\n\n    context.on(\"click\", \".provision_shutdown_button\", function(){\n      var flow_id = $(\".provision_info_flow\", context).attr(\"flow_id\");\n\n      OpenNebula.Service.shutdown({\n        data : {\n          id: flow_id\n        },\n        success: function(request, response){\n          update_provision_flow_info(flow_id, context);\n        },\n        error: Notifier.onError\n      })\n    });\n\n    context.on(\"click\", \".provision_delete_button\", function(){\n      var button = $(this);\n      button.attr(\"disabled\", \"disabled\");\n      var flow_id = $(\".provision_info_flow\", context).attr(\"flow_id\");\n\n      OpenNebula.Service.del({\n        data : {\n          id: flow_id\n        },\n        success: function(request, response){\n          $(\".provision_back\", context).click();\n          $(\".provision_flows_list_refresh_button\", context).click();\n          button.removeAttr(\"disabled\");\n        },\n        error: function(request, response){\n          Notifier.onError(request, response);\n          button.removeAttr(\"disabled\");\n        }\n      })\n    });\n\n    context.on(\"click\", \".provision_refresh_info\", function(){\n      var flow_id = $(\".provision_info_flow\", context).attr(\"flow_id\");\n      var role_id = $(\".provision_info_flow\", context).data(\"role_id\");\n      update_provision_flow_info(flow_id, context, role_id);\n      //$(\".provision_flows_list_refresh_button\", $(\".provision_flows_list_section\")).trigger(\"click\");\n      return false;\n    });\n\n    //\n    // Info Flow\n    //\n\n    $(\".provision_list_flows\", context).on(\"click\", \".provision_info_flow_button\", function(){\n      $(\"a.provision_show_flow_accordion\", context).trigger(\"click\");\n\n      var flow_id = $(this).parents(\".provision-pricing-table\").attr(\"opennebula_id\")\n      update_provision_flow_info(flow_id, context);\n      return false;\n    })\n  }\n\n  function get_provision_flow_start_time(data) {\n    if (data.log) {\n      return data.log[0].timestamp\n    } else {\n      return null;\n    }\n  }\n\n  // @params\n  //    data: and BODY object of the Document representing the Service\n  //      Example: data.ID\n  // @returns and object containing the following properties\n  //    color: css class for this state.\n  //      color + '-color' font color class\n  //      color + '-bg' background class\n  //    str: user friendly state string\n  function get_provision_flow_state(data) {\n    var state = OpenNebula.Service.state(data.state);\n    var state_color;\n    var state_str;\n\n    switch (state) {\n      case Locale.tr(\"PENDING\"):\n        state_color = 'deploying';\n        state_str = Locale.tr(\"PENDING\");\n        break;\n      case Locale.tr(\"DEPLOYING\"):\n        state_color = 'deploying';\n        state_str = Locale.tr(\"DEPLOYING\");\n        break;\n      case Locale.tr(\"UNDEPLOYING\"):\n        state_color = 'powering_off';\n        state_str = Locale.tr(\"UNDEPLOYING\");\n        break;\n      case Locale.tr(\"FAILED_UNDEPLOYING\"):\n        state_color = 'error';\n        state_str = Locale.tr(\"FAILED UNDEPLOYING\");\n        break;\n      case Locale.tr(\"FAILED_DEPLOYING\"):\n        state_color = 'error';\n        state_str = Locale.tr(\"FAILED DEPLOYING\");\n        break;\n      case Locale.tr(\"FAILED_SCALING\"):\n        state_color = 'error';\n        state_str = Locale.tr(\"FAILED SCALING\");\n        break;\n      case Locale.tr(\"WARNING\"):\n        state_color = 'error';\n        state_str = Locale.tr(\"WARNING\");\n        break;\n      case Locale.tr(\"RUNNING\"):\n        state_color = 'running';\n        state_str = Locale.tr(\"RUNNING\");\n        break;\n      case Locale.tr(\"SCALING\"):\n        state_color = 'deploying';\n        state_str = Locale.tr(\"SCALING\");\n        break;\n      case Locale.tr(\"COOLDOWN\"):\n        state_color = 'error';\n        state_str = Locale.tr(\"COOLDOWN\");\n        break;\n      case Locale.tr(\"DONE\"):\n        state_color = 'off';\n        state_str = Locale.tr(\"DONE\");\n        break;\n      default:\n        state_color = 'powering_off';\n        state_str = Locale.tr(\"UNKNOWN\");\n        break;\n    }\n\n    return {\n      color: state_color,\n      str: state_str\n    }\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/users/quota-widget/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row\\\">\\n  <div class=\\\"large-12 large-centered columns\\\">\\n    <h5 class=\\\"subheader text-right\\\">\\n      <span class=\\\"left\\\" style=\\\"margin-bottom: 0.5em\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Running VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </h5>\\n  </div>\\n</div>\\n<div class=\\\"row provision_rvms_quota\\\">\\n  <div class=\\\"medium-3 small-12 columns\\\">\\n    <select class=\\\"provision_quota_select\\\">\\n      <option value=\\\"edit\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Manual\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"unlimited\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Unlimited\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"default\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n    </select>\\n  </div>\\n  <div class=\\\"medium-9 small-12 columns provision_quota_edit\\\">\\n    <div class=\\\"row collapse\\\">\\n      <div class=\\\"small-9 columns\\\">\\n        <div class=\\\"range-slider radius provision_rvms_quota_slider\\\" data-slider data-options=\\\"start: 0; end: 50;\\\">\\n          <span class=\\\"range-slider-handle\\\"></span>\\n          <span class=\\\"range-slider-active-segment\\\"></span>\\n          <input type=\\\"hidden\\\"></div>\\n      </div>\\n      <div class=\\\"large-2 small-2 columns\\\">\\n        <input type=\\\"text\\\"  class=\\\"provision-input provision_rvms_quota_input\\\" style=\\\"margin-top: -7px; height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"/>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"medium-9 small-12 columns provision_quota_unlimited\\\" style=\\\"display:none\\\">\\n    <span style=\\\"font-size: 18px; color: #999\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Unlimited. Group quotas will still apply\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n  </div>\\n  <div class=\\\"medium-9 small-12 columns provision_quota_default\\\" style=\\\"display:none\\\">\\n    <span style=\\\"font-size: 18px; color: #999\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Use the default system quotas set by the cloud adminstrator\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n    </span>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-12 large-centered columns\\\">\\n    <h5 class=\\\"subheader text-right\\\">\\n      <span class=\\\"left\\\" style=\\\"margin-bottom: 0.5em\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </h5>\\n  </div>\\n</div>\\n<div class=\\\"row provision_cpu_quota\\\">\\n  <div class=\\\"medium-3 small-12 columns\\\">\\n    <select class=\\\"provision_quota_select\\\">\\n      <option value=\\\"edit\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Manual\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"unlimited\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Unlimited\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"default\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n    </select>\\n  </div>\\n  <div class=\\\"medium-9 small-12 columns provision_quota_edit\\\">\\n    <div class=\\\"row collapse\\\">\\n      <div class=\\\"small-9 columns\\\">\\n        <div class=\\\"range-slider radius provision_cpu_quota_slider\\\" data-slider data-options=\\\"start: 0; end: 50;\\\">\\n          <span class=\\\"range-slider-handle\\\"></span>\\n          <span class=\\\"range-slider-active-segment\\\"></span>\\n          <input type=\\\"hidden\\\"></div>\\n      </div>\\n      <div class=\\\"large-2 small-2 columns\\\">\\n        <input type=\\\"text\\\"  class=\\\"provision-input provision_cpu_quota_input\\\" style=\\\"margin-top: -7px; height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"/>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"medium-9 small-12 columns provision_quota_unlimited\\\" style=\\\"display:none\\\">\\n    <span style=\\\"font-size: 18px; color: #999\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Unlimited. Group quotas will still apply\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n  </div>\\n  <div class=\\\"medium-9 small-12 columns provision_quota_default\\\" style=\\\"display:none\\\">\\n    <span style=\\\"font-size: 18px; color: #999\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Use the default system quotas set by the cloud adminstrator\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n    </span>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-12 large-centered columns\\\">\\n    <h5 class=\\\"subheader text-right\\\">\\n      <span class=\\\"left\\\" style=\\\"margin-bottom: 0.5em\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory (GBs)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </h5>\\n  </div>\\n</div>\\n<div class=\\\"vm_param\\\">\\n  <input type=\\\"hidden\\\" class=\\\"provision_memory_quota_input\\\"/>\\n</div>\\n<div class=\\\"row provision_memory_quota\\\">\\n  <div class=\\\"medium-3 small-12 columns\\\">\\n    <select class=\\\"provision_quota_select\\\">\\n      <option value=\\\"edit\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Manual\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"unlimited\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Unlimited\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"default\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n    </select>\\n  </div>\\n  <div class=\\\"medium-9 small-12 columns provision_quota_edit\\\">\\n    <div class=\\\"row collapse\\\">\\n      <div class=\\\"small-9 columns\\\">\\n        <div class=\\\"range-slider radius provision_memory_quota_slider\\\" data-slider data-options=\\\"start: 0; end: 50;\\\">\\n          <span class=\\\"range-slider-handle\\\"></span>\\n          <span class=\\\"range-slider-active-segment\\\"></span>\\n          <input type=\\\"hidden\\\"></div>\\n      </div>\\n      <div class=\\\"large-2 small-2 columns\\\">\\n        <input type=\\\"text\\\"  class=\\\"provision-input provision_memory_quota_tmp_input\\\" style=\\\"margin-top: -7px; height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"/>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"medium-9 small-12 columns provision_quota_unlimited\\\" style=\\\"display:none\\\">\\n    <span style=\\\"font-size: 18px; color: #999\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Unlimited. Group quotas will still apply\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n  </div>\\n  <div class=\\\"medium-9 small-12 columns provision_quota_default\\\" style=\\\"display:none\\\">\\n    <span style=\\\"font-size: 18px; color: #999\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Use the default system quotas set by the cloud adminstrator\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n    </span>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/users/quota-widget/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/users/empty-graphs',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<span class=\\\"fa-stack fa-2x\\\" style=\\\"color: #dfdfdf\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n</span>\\n<br>\\n<span style=\\\"color: #cfcfcf\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"There is no information available\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/users/empty-graphs', t);\nHandlebars.registerPartial('./empty-graphs', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/users/info',['hbs','hbs/handlebars', 'hbs!tabs/provision-tab/users/empty-graphs','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"text-center provision_info_vdc_user_loading\\\">\\n  <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i> <i class=\\\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\\\"></i>\\n  </span>\\n  <br>\\n  <br>\\n  <span style=\\\"font-size: 18px; color: #999\\\"></span>\\n</div>\\n<div class=\\\"provision_info_vdc_user\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 large-centered columns\\\">\\n      <ul class=\\\"inline-list provision_action_icons\\\">\\n        <li class=\\\"\\\">\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update the User Quotas\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"left button small secondary radius provision_vdc_user_quota_confirm_button tip-top\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-align-left\\\"/></a>\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Change the password of the User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"left button small secondary radius provision_vdc_user_password_confirm_button tip-top\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-lock\\\"/></a>\\n        </li>\\n        <li class=\\\"right\\\">\\n          <a href\\\"#\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Delete the User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" class=\\\"right button small radius alert provision_vdc_user_delete_confirm_button tip-top\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-trash-o\\\"/>\\n          </a>\\n        </li>\\n      </ul>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"provision_vdc_user_confirm_action large-12 columns\\\"></div>\\n  </div>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-4 columns\\\">\\n      <ul class=\\\"provision-pricing-table_user_info provision-pricing-table\\\" style=\\\"border: 0px !important; background: #fff;\\\"></ul>\\n    </div>\\n    <div class=\\\"large-8 columns\\\">\\n      <div class=\\\"row dashboard_vm_accounting\\\">\\n        <div id=\\\"acct_content\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <input style=\\\"display:none;\\\" value=\\\"vm\\\" id=\\\"acct_group_by\\\"/>\\n            <div class=\\\"row\\\">\\n              <div class=\\\"large-12 columns graph_legend text-center\\\">\\n                <span style=\\\"color: #777; font-size: 14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n              </div>\\n              <br>\\n              <div class=\\\"large-12 columns\\\">\\n                <div class=\\\"large-12 columns centered graph\\\" id=\\\"acct_cpu_graph\\\" style=\\\"height: 100px;\\\"></div>\\n              </div>\\n            </div>\\n          </div>\\n          <div class=\\\"large-6 columns\\\">\\n            <div class=\\\"row\\\">\\n              <div class=\\\"large-12 columns graph_legend text-center\\\">\\n                <span style=\\\"color: #777; font-size: 14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory GB hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n              </div>\\n              <div class=\\\"large-12 columns\\\">\\n                <div class=\\\"large-12 columns centered graph\\\" id=\\\"acct_mem_graph\\\" style=\\\"height: 100px;\\\"></div>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n        <div id=\\\"acct_no_data\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-12 columns text-center\\\">\";\n  stack1 = this.invokePartial(partials['./empty-graphs'], '', './empty-graphs', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"provision-user-resource-header large-12 columns text-center\\\"></div>\\n  </div>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"provision_vdc_info_container large-12 columns\\\"></div>\\n  </div>\\n  <br></div>\";\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/users/info', t);\nHandlebars.registerPartial('tabs/provision-tab/users/info', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/users/list',['hbs','hbs/handlebars', 'hbs!tabs/provision-tab/users/info','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<dl class=\\\"accordion accordion_list provision_list_users\\\" data-accordion>\\n  <dd class=\\\"active accordion-navigation\\\">\\n    <a href=\\\"#provision_list_user_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"provision_back right only-not-active\\\">\\n      <span class=\\\"button small radius\\\"> <i class=\\\"fa fa-fw fa-lg fa-th\\\"/><i class=\\\"fa fa-fw fa-lg fa-chevron-left\\\"/>\\n      </span>\\n    </a>\\n    <h3 class=\\\"subheader\\\">\\n      <span class=\\\"provision_info_vdc_user_name only-not-active\\\"></span>\\n      <span href\\\"#\\\" class=\\\"right only-active provision_users_list_refresh_button button small radius secondary\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Refresh\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-refresh\\\"/></span>\\n      <span href\\\"#\\\" class=\\\"right only-not-active provision_refresh_info button small radius secondary\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Refresh\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-refresh\\\"/>\\n      </span>\\n      <input type=\\\"search\\\" class=\\\"provision_list_users_search provision-search-input only-active\\\" placeholder=\\\"Search Users\\\"/>\\n      <span href\\\"#\\\" class=\\\"right only-active provision_create_user_button button small radius success\\\">\\n        <i class=\\\"fa fa-fw fa-lg fa-plus-square\\\"/>\\n      </span>\\n    </h3>\\n    <div id=\\\"provision_list_user_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content active\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 large-centered columns\\\">\\n          <table class=\\\"provision_users_table\\\">\\n            <thead class=\\\"hidden\\\">\\n              <tr>\\n                <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              </tr>\\n            </thead>\\n            <tbody class=\\\"hidden\\\"></tbody>\\n          </table>\\n          <br></div>\\n      </div>\\n    </div>\\n  </dd>\\n  <dd class=\\\"accordion-navigation\\\">\\n    <a class=\\\"provision_show_user_accordion\\\" href=\\\"#provision_show_user_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></a>\\n    <div id=\\\"provision_show_user_accordion\"\n    + escapeExpression(((helper = (helper = helpers.accordionId || (depth0 != null ? depth0.accordionId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"accordionId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content\\\">\";\n  stack1 = this.invokePartial(partials['tabs/provision-tab/users/info'], '', 'tabs/provision-tab/users/info', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n  </dd>\\n</dl>\\n;\";\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/users/list', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/provision-tab/users/list',['require','foundation.alert','opennebula','utils/locale','sunstone-config','utils/notifier','utils/quotas/quota-widgets','utils/quotas/quota-limits','utils/quotas/quota-defaults','utils/accounting','utils/showback','./quota-widget','tabs/provision-tab/vms/list','tabs/provision-tab/templates/list','tabs/provision-tab/flows/list','hbs!./quota-widget/html','hbs!./list'],function(require) {\n  require('foundation.alert');\n  var OpenNebula = require('opennebula');\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Notifier = require('utils/notifier');\n  var QuotaWidgets = require('utils/quotas/quota-widgets');\n  var QuotaLimits = require('utils/quotas/quota-limits');\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n  var Accounting = require('utils/accounting');\n  var Showback = require('utils/showback');\n\n  var ProvisionQuotaWidget = require('./quota-widget');\n  var ProvisionVmsList = require('tabs/provision-tab/vms/list');\n  var ProvisionTemplatesList = require('tabs/provision-tab/templates/list');\n  var ProvisionFlowsList = require('tabs/provision-tab/flows/list');\n\n  var TemplateProvisionQuotaWidget = require('hbs!./quota-widget/html');\n  var TemplateUsersList = require('hbs!./list');\n\n  var _accordionId = 0;\n\n  return {\n    'generate': generate_provision_users_list,\n    'show': show_provision_user_list\n  };\n\n  function show_provision_user_list(timeout) {\n    $(\".section_content\").hide();\n    $(\".provision_users_list_section\").fadeIn();\n\n    $(\"dd:not(.active) .provision_back\", $(\".provision_users_list_section\")).trigger(\"click\");\n    $(\".provision_users_list_refresh_button\", $(\".provision_users_list_section\")).trigger(\"click\");\n  }\n\n  function generate_provision_users_list(context, opts) {\n    context.off();\n    context.html(html(opts));\n    setup_provision_users_list(context);\n    setup_provision_user_info(context);\n  }\n\n  function html(opts_arg) {\n    _accordionId += 1;\n    return TemplateUsersList({'accordionId': _accordionId});\n  }\n\n  function update_provision_users_datatable(datatable, timeout) {\n    datatable.html('<div class=\"text-center\">' +\n      '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">' +\n        '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n        '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n      '</span>' +\n      '<br>' +\n      '<br>' +\n      '<span style=\"font-size: 18px; color: #999\">' +\n      '</span>' +\n      '</div>');\n\n    setTimeout(function() {\n      OpenNebula.User.list({\n        timeout: true,\n        success: function (request, item_list, quotas_list) {\n          datatable.fnClearTable(true);\n          if (item_list.length == 0) {\n            datatable.html('<div class=\"text-center\">' +\n              '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">' +\n                '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>' +\n              '</span>' +\n              '<br>' +\n              '<br>' +\n              '<span style=\"font-size: 18px; color: #999\">' +\n                Locale.tr(\"The list of users is empty\") +\n              '</span>' +\n              '</div>');\n          } else {\n            provision_quotas_list = quotas_list;\n            datatable.fnAddData(item_list);\n          }\n        },\n        error: Notifier.onError\n      })\n    }, timeout);\n  }\n\n  function setup_provision_users_list(context) {\n    var provision_users_datatable = $('.provision_users_table', context).dataTable({\n      \"iDisplayLength\": 6,\n      \"sDom\" : '<\"H\">t<\"F\"lp>',\n      \"aLengthMenu\": [[6, 12, 36, 72], [6, 12, 36, 72]],\n      \"aaSorting\"  : [[0, \"desc\"]],\n      \"aoColumnDefs\": [\n          {\"bVisible\": false, \"aTargets\": [\"all\"]}\n      ],\n      \"aoColumns\": [\n          {\"mDataProp\": \"USER.ID\"},\n          {\"mDataProp\": \"USER.NAME\"}\n      ],\n      \"fnPreDrawCallback\": function (oSettings) {\n        // create a thumbs container if it doesn't exist. put it in the dataTables_scrollbody div\n        if (this.$('tr', {\"filter\": \"applied\"}).length == 0) {\n          this.html('<div class=\"text-center\">' +\n            '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">' +\n              '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n              '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>' +\n            '</span>' +\n            '<br>' +\n            '<br>' +\n            '<span style=\"font-size: 18px; color: #999\">' +\n              Locale.tr(\"The list of users is empty\") +\n            '</span>' +\n            '</div>');\n        } else {\n          $(\".provision_users_table\", context).html('<ul class=\"provision_users_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center\"></ul>');\n        }\n\n        return true;\n      },\n      \"fnRowCallback\": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {\n        var data = aData.USER;\n        //var state = get_provision_vm_state(data);\n        var vms = \"\";\n        var memory = \"\";\n        var cpu = \"\";\n\n        var quotas_html;\n        QuotaWidgets.initEmptyQuotas(data);\n\n        if (!$.isEmptyObject(data.VM_QUOTA)) {\n          var default_user_quotas = QuotaDefaults.getDefaultUserQuotas();\n                \n          quotas = QuotaWidgets.quotaFloatInfo(\n              data.VM_QUOTA.VM.VMS_USED,\n              data.VM_QUOTA.VM.VMS,\n              default_user_quotas.VM_QUOTA.VM.VMS,\n              true);\n\n          quotas_html = \"\";\n          quotas_html += '<li class=\"provision-bullet-item text-left\">' +\n            '<i class=\"fa fa-fw fa-th\"></i> '+ Locale.tr(\"VMs\") +\n            '<span class=\"right\">' + quotas.str + \"</span>\" +\n          '</li>';\n\n          quotas = QuotaWidgets.quotaFloatInfo(\n              data.VM_QUOTA.VM.CPU_USED,\n              data.VM_QUOTA.VM.CPU,\n              default_user_quotas.VM_QUOTA.VM.CPU,\n              true);\n\n          quotas_html += '<li class=\"provision-bullet-item text-left\">' +\n            '<i class=\"fa fa-fw fa-tachometer\"></i> '+ Locale.tr(\"CPU\") +\n            '<span class=\"right\">' + quotas.str + \"</span>\" +\n          '</li>';\n\n          quotas = QuotaWidgets.quotaMBInfo(\n              data.VM_QUOTA.VM.MEMORY_USED,\n              data.VM_QUOTA.VM.MEMORY,\n              default_user_quotas.VM_QUOTA.VM.MEMORY,\n              true);\n\n          quotas_html += '<li class=\"provision-bullet-item text-left\">' +\n            '<i class=\"fa fa-fw fa-align-left\"></i> '+ Locale.tr(\"Memory\") +\n            '<span class=\"right\">' + quotas.str + \"</span>\" +\n          '</li>';\n        } else {\n          quotas = QuotaWidgets.quotaFloatInfo(0, 0, null, true);\n\n          quotas_html = \"\";\n          quotas_html += '<li class=\"provision-bullet-item text-left\">' +\n            '<i class=\"fa fa-fw fa-th\"></i> '+ Locale.tr(\"VMs\") +\n            '<span class=\"right\">' + quotas.str + \"</span>\" +\n          '</li>';\n\n          quotas = QuotaWidgets.quotaFloatInfo(0, 0, null, true);\n\n          quotas_html += '<li class=\"provision-bullet-item text-left\">' +\n            '<i class=\"fa fa-fw fa-tachometer\"></i> '+ Locale.tr(\"CPU\") +\n            '<span class=\"right\">' + quotas.str + \"</span>\" +\n          '</li>';\n\n          quotas = QuotaWidgets.quotaMBInfo(0, 0, null, true);\n\n          quotas_html += '<li class=\"provision-bullet-item text-left\">' +\n            '<i class=\"fa fa-fw fa-align-left\"></i> '+ Locale.tr(\"Memory\") +\n            '<span class=\"right\">' + quotas.str + \"</span>\" +\n          '</li>';\n        }\n\n        $(\".provision_users_ul\", context).append('<li>' +\n            '<ul class=\"provision-pricing-table\" opennebula_id=\"' + data.ID + '\" datatable_index=\"' + iDisplayIndexFull + '\">' +\n              '<li class=\"provision-title text-left\" style=\"padding-bottom: 10px\">' +\n                '<a class=\"provision_info_user_button\" style=\"color:#555\" href=\"#\"><i class=\"fa fa-fw fa-lg fa-sign-in right only-on-hover\"/>' + data.NAME + '</a>' +\n              '</li>' +\n                quotas_html +\n            '</ul>' +\n          '</li>');\n\n        return nRow;\n      }\n    });\n\n    $('.provision_list_users_search', context).keyup(function() {\n      provision_users_datatable.fnFilter($(this).val());\n    })\n\n    $('.provision_list_users_search', context).change(function() {\n      provision_users_datatable.fnFilter($(this).val());\n    })\n\n    context.on(\"click\", \".provision_users_list_refresh_button\", function() {\n      OpenNebula.Action.clear_cache(\"USER\");\n      update_provision_users_datatable(provision_users_datatable, 0);\n      return false;\n    });\n\n    $(document).foundation();\n  }\n\n  function setup_provision_user_info(context) {\n    function update_provision_vdc_user_info(user_id, context) {\n      $(\".provision_info_vdc_user_name\", context).text(\"\");\n      $(\".provision_vdc_info_container\", context).html(\"\");\n      $(\".provision_info_vdc_user\", context).hide();\n      $(\".provision_info_vdc_user_loading\", context).fadeIn();\n\n      OpenNebula.User.show({\n        data : {\n          id: user_id\n        },\n        error: Notifier.onError,\n        success: function(request, response) {\n          var data = response.USER\n\n          $(\".provision_vdc_user_confirm_action\", context).html(\"\");\n          $(\".provision_info_vdc_user_acct\", context).html(\"\");\n\n          $(\".provision_info_vdc_user\", context).attr(\"opennebula_id\", data.ID);\n          $(\".provision_info_vdc_user\", context).attr(\"uname\", data.NAME);\n          $(\".provision_info_vdc_user\", context).attr(\"quotas\", JSON.stringify(data.VM_QUOTA));\n          $(\".provision_info_vdc_user_name\", context).text(data.NAME);\n\n          $(\".provision-pricing-table_user_info\", context).html(\"\");\n\n          QuotaWidgets.initEmptyQuotas(data);\n\n          if (!$.isEmptyObject(data.VM_QUOTA)) {\n            var default_user_quotas = QuotaDefaults.default_quotas(data.DEFAULT_USER_QUOTAS);\n            quotas = QuotaWidgets.quotaFloatInfo(\n                data.VM_QUOTA.VM.VMS_USED,\n                data.VM_QUOTA.VM.VMS,\n                default_user_quotas.VM_QUOTA.VM.VMS,\n                true);\n\n            $(\".provision-pricing-table_user_info\", context).append('<li class=\"provision-bullet-item text-left\">' +\n              '<i class=\"fa fa-fw fa-th\"></i> '+ Locale.tr(\"VMs\") +\n              '<span class=\"right\">' + quotas.str + \"</span>\" +\n            '</li>' +\n            '<li class=\"provision-bullet-item text-left\">' +\n              '<div class=\"progress small radius\" style=\"background: #f7f7f7\">' +\n              '  <span class=\"meter\" style=\"width: ' + quotas.percentage + '%;\"></span>' +\n              '</div>' +\n            '</li>');\n\n            quotas = QuotaWidgets.quotaFloatInfo(\n                data.VM_QUOTA.VM.CPU_USED,\n                data.VM_QUOTA.VM.CPU,\n                default_user_quotas.VM_QUOTA.VM.CPU,\n                true);\n\n            $(\".provision-pricing-table_user_info\", context).append('<li class=\"provision-bullet-item text-left\">' +\n              '<i class=\"fa fa-fw fa-tachometer\"></i> '+ Locale.tr(\"CPU\") +\n              '<span class=\"right\">' + quotas.str + \"</span>\" +\n            '</li>' +\n            '<li class=\"provision-bullet-item text-left\">' +\n              '<div class=\"progress small radius\" style=\"background: #f7f7f7\">' +\n              '  <span class=\"meter\" style=\"width: ' + quotas.percentage + '%;\"></span>' +\n              '</div>' +\n            '</li>');\n\n            quotas = QuotaWidgets.quotaMBInfo(\n                data.VM_QUOTA.VM.MEMORY_USED,\n                data.VM_QUOTA.VM.MEMORY,\n                default_user_quotas.VM_QUOTA.VM.MEMORY,\n                true);\n\n            $(\".provision-pricing-table_user_info\", context).append('<li class=\"provision-bullet-item text-left\">' +\n              '<i class=\"fa fa-fw fa-align-left\"></i> '+ Locale.tr(\"Memory\") +\n              '<span class=\"right\">' + quotas.str + \"</span>\" +\n            '</li>' +\n            '<li class=\"provision-bullet-item text-left\">' +\n              '<div class=\"progress small radius\" style=\"background: #f7f7f7\">' +\n              '  <span class=\"meter\" style=\"width: ' + quotas.percentage + '%;\"></span>' +\n              '</div>' +\n            '</li>');\n          } else {\n            quotas = QuotaWidgets.quotaFloatInfo(0, 0, null, true);\n\n            $(\".provision-pricing-table_user_info\", context).append('<li class=\"provision-bullet-item text-left\">' +\n              '<i class=\"fa fa-fw fa-th\"></i> '+ Locale.tr(\"VMs\") +\n              '<span class=\"right\">' + quotas.str + \"</span>\" +\n            '</li>' +\n            '<li class=\"provision-bullet-item text-left\">' +\n              '<div class=\"progress small radius\" style=\"background: #f7f7f7\">' +\n              '  <span class=\"meter\" style=\"width: ' + quotas.percentage + '%;\"></span>' +\n              '</div>' +\n            '</li>');\n\n            quotas = QuotaWidgets.quotaFloatInfo(0, 0, null, true);\n\n            $(\".provision-pricing-table_user_info\", context).append('<li class=\"provision-bullet-item text-left\">' +\n              '<i class=\"fa fa-fw fa-tachometer\"></i> '+ Locale.tr(\"CPU\") +\n              '<span class=\"right\">' + quotas.str + \"</span>\" +\n            '</li>' +\n            '<li class=\"provision-bullet-item text-left\">' +\n              '<div class=\"progress small radius\" style=\"background: #f7f7f7\">' +\n              '  <span class=\"meter\" style=\"width: ' + quotas.percentage + '%;\"></span>' +\n              '</div>' +\n            '</li>');\n\n            quotas = QuotaWidgets.quotaMBInfo(0, 0, null, true);\n\n            $(\".provision-pricing-table_user_info\", context).append('<li class=\"provision-bullet-item text-left\">' +\n              '<i class=\"fa fa-fw fa-align-left\"></i> '+ Locale.tr(\"Memory\") +\n              '<span class=\"right\">' + quotas.str + \"</span>\" +\n            '</li>' +\n            '<li class=\"provision-bullet-item text-left\">' +\n              '<div class=\"progress small radius\" style=\"background: #f7f7f7\">' +\n              '  <span class=\"meter\" style=\"width: ' + quotas.percentage + '%;\"></span>' +\n              '</div>' +\n            '</li>');\n          }\n\n          $(\".provision-user-resource-header\", context).html(\n                '<span class=\"provision_vdc_user_info_show_vms button medium radius\" data-tooltip title=\"' + Locale.tr(\"User Virtual Machines\") + '\" style=\"margin-right: 10px\">' +\n                  '<i class=\"fa fa-th fa-lg\"></i>' +\n                '</span>' +\n                '<span class=\"provision_vdc_user_info_show_templates button medium radius\" data-tooltip title=\"' + Locale.tr(\"User Saved Templates\") + '\" style=\"margin-right: 10px\">' +\n                  '<i class=\"fa fa-save fa-lg\"></i>' +\n                '</span>' +\n                '<span class=\"provision_vdc_user_info_show_flows button medium radius\" data-tooltip title=\"' + Locale.tr(\"User Services\") + '\" style=\"margin-right: 10px\">' +\n                  '<i class=\"fa fa-cubes fa-lg\"></i>' +\n                '</span>' +\n                '<span class=\"provision_vdc_user_info_show_acct button medium radius\" data-tooltip title=\"' + Locale.tr(\"User Accounting\") + '\" style=\"margin-right: 10px\">' +\n                  '<i class=\"fa fa-bar-chart-o fa-lg\"></i>' +\n                '</span>' +\n                (Config.isFeatureEnabled(\"showback\") ? '<span class=\"provision_vdc_user_info_show_showback button medium radius\" data-tooltip title=\"' + Locale.tr(\"User Showback\") + '\" style=\"margin-right: 10px\">' +\n                  '<i class=\"fa fa-money fa-lg\"></i>' +\n                '</span>' : ''))\n\n          var start_time =  Math.floor(new Date().getTime() / 1000);\n          // ms to s\n\n          // 604800 = 7 days = 7*24*60*60\n          start_time = start_time - 604800;\n\n          // today\n          var end_time = -1;\n\n          var options = {\n            \"start_time\": start_time,\n            \"end_time\": end_time,\n            \"userfilter\": user_id\n          }\n\n          var no_table = true;\n\n          OpenNebula.VM.accounting({\n            success: function(req, response) {\n              Accounting.fillAccounting($(\".dashboard_vm_accounting\", context), req, response, no_table);\n            },\n            error: Notifier.onError,\n            data: options\n          });\n\n          $(\".provision_info_vdc_user\", context).show();\n          $(\".provision_info_vdc_user_loading\", context).hide();\n\n          $(document).foundation();\n          //$(\"#provision_info_vdc_quotas\").html(quotas_html);\n        }\n      })\n    }\n    //\n    // Info User\n    //\n\n    $(\".provision_list_users\", context).on(\"click\", \".provision_info_user_button\", function() {\n      $(\"a.provision_show_user_accordion\", context).trigger(\"click\");\n      // TODO loading\n\n      var user_id = $(this).parents(\".provision-pricing-table\").attr(\"opennebula_id\")\n      update_provision_vdc_user_info(user_id, context);\n    })\n\n    context.on(\"click\", \".provision_vdc_user_info_show_vms\", function() {\n      $(\".provision_vdc_info_container\", context).html('<div class=\"text-center\">' +\n        '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">' +\n          '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n          '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n        '</span>' +\n        '<br>' +\n        '<br>' +\n        '<span style=\"font-size: 18px; color: #999\">' +\n        '</span>' +\n        '</div>');\n\n      ProvisionVmsList.generate(\n        $(\".provision_vdc_info_container\", context),\n        {\n          title:  $(\".provision_info_vdc_user\", context).attr(\"uname\") + ' ' + Locale.tr(\"VMs\"),\n          active: true,\n          refresh: true,\n          create: false,\n          filter: false,\n          filter_expression:  $(\".provision_info_vdc_user\", context).attr(\"opennebula_id\")\n        });\n    })\n\n    context.on(\"click\", \".provision_vdc_user_info_show_templates\", function() {\n      $(\".provision_vdc_info_container\", context).html('<div class=\"text-center\">' +\n        '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">' +\n          '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n          '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n        '</span>' +\n        '<br>' +\n        '<br>' +\n        '<span style=\"font-size: 18px; color: #999\">' +\n        '</span>' +\n        '</div>');\n\n      ProvisionTemplatesList.generate(\n        $(\".provision_vdc_info_container\", context),\n        {\n          title:  $(\".provision_info_vdc_user\", context).attr(\"uname\") + ' ' + Locale.tr(\"Templates\"),\n          active: true,\n          refresh: true,\n          create: false,\n          filter: false,\n          filter_expression:  $(\".provision_info_vdc_user\", context).attr(\"opennebula_id\")\n        });\n    })\n\n    context.on(\"click\", \".provision_vdc_user_info_show_flows\", function() {\n      $(\".provision_vdc_info_container\", context).html('<div class=\"text-center\">' +\n        '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">' +\n          '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n          '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n        '</span>' +\n        '<br>' +\n        '<br>' +\n        '<span style=\"font-size: 18px; color: #999\">' +\n        '</span>' +\n        '</div>');\n\n      ProvisionFlowsList.generate(\n        $(\".provision_vdc_info_container\", context),\n        {\n          title:  $(\".provision_info_vdc_user\", context).attr(\"uname\") + ' ' + Locale.tr(\"Services\"),\n          active: true,\n          refresh: true,\n          create: false,\n          filter: false,\n          filter_expression:  $(\".provision_info_vdc_user\", context).attr(\"opennebula_id\")\n        });\n    })\n\n    context.on(\"click\", \".provision_vdc_user_info_show_acct\", function() {\n      $(\".provision_vdc_info_container\", context).html(\"\");\n\n      $(\".provision_vdc_info_container\", context).html(Accounting.html());\n      Accounting.setup(\n        $(\".provision_vdc_info_container\", context),\n          {fixed_user: $(\".provision_info_vdc_user\", context).attr(\"opennebula_id\"),\n            init_group_by: \"vm\"});\n\n      $(\".provision_vdc_info_container\", context).prepend(\n        '<h2 class=\"subheader\">' +\n          $(\".provision_info_vdc_user\", context).attr(\"uname\") + ' ' + Locale.tr(\"Accounting\") +\n        '</h2>')\n    })\n\n    if (Config.isFeatureEnabled(\"showback\")) { \n      context.on(\"click\", \".provision_vdc_user_info_show_showback\", function() {\n        $(\".provision_vdc_info_container\", context).html(\"\");\n\n        $(\".provision_vdc_info_container\", context).html(Showback.html());\n        Showback.setup(\n          $(\".provision_vdc_info_container\", context),\n            {fixed_user: $(\".provision_info_vdc_user\", context).attr(\"opennebula_id\"),\n              fixed_group: \"\"});\n\n        $(\".provision_vdc_info_container\", context).prepend(\n          '<h2 class=\"subheader\">' +\n            $(\".provision_info_vdc_user\", context).attr(\"uname\") + ' ' + Locale.tr(\"Showback\") +\n          '</h2>')\n      })\n    };\n\n    context.on(\"click\", \".provision_vdc_user_delete_confirm_button\", function() {\n      $(\".provision_vdc_user_confirm_action\", context).html(\n        '<div data-alert class=\"alert-box secondary radius\">' +\n          '<div class=\"row\">' +\n            '<div class=\"large-10 large-centered columns\">' +\n              '<span style=\"font-size: 14px; line-height: 20px\">' +\n                Locale.tr(\"Be careful, this action will inmediately remove the User from OpenNebula\") +\n              '</span>' +\n            '</div>' +\n          '</div>' +\n          '<br>' +\n          '<div class=\"row\">' +\n            '<div class=\"large-10 large-centered columns\">' +\n              '<a href\"#\" class=\"provision_delete_button alert button large-12 large radius\">' + Locale.tr(\"Delete User\") + '</a>' +\n            '</div>' +\n          '</div>' +\n          '<a href=\"#\" class=\"close\" style=\"top: 20px\">&times;</a>' +\n        '</div>');\n    });\n\n    context.on(\"click\", \".provision_vdc_user_password_confirm_button\", function() {\n      $(\".provision_vdc_user_confirm_action\", context).html(\n        '<div data-alert class=\"alert-box secondary radius\">' +\n          '<div class=\"row\">' +\n            '<div class=\"large-10 large-centered columns\">' +\n              '<input type=\"password\" class=\"provision_vdc_user_new_password provision-input\" placeholder=\"' + Locale.tr(\"New Password\") + '\" style=\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\"/>' +\n            '</div>' +\n          '</div>' +\n          '<div class=\"row\">' +\n            '<div class=\"large-10 large-centered columns\">' +\n              '<input type=\"password\" class=\"provision_vdc_user_new_confirm_password provision-input\" placeholder=\"' + Locale.tr(\"Confirm Password\") + '\" style=\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\"/>' +\n              '<br>' +\n            '</div>' +\n          '</div>' +\n          '<div class=\"row\">' +\n            '<div class=\"large-10 large-centered columns\">' +\n              '<button href\"#\" type=\"submit\" class=\"provision_vdc_user_change_password_button button success large radius large-12 small-12\">' + Locale.tr(\"Update Password\") + '</button>' +\n            '</div>' +\n          '</div>' +\n          '<a href=\"#\" class=\"close\" style=\"top: 20px\">&times;</a>' +\n        '</div>');\n\n      context.on(\"click\", \".provision_vdc_user_change_password_button\", function() {\n          var button = $(this);\n          button.attr(\"disabled\", \"disabled\");\n          var user_id = $(\".provision_info_vdc_user\", context).attr(\"opennebula_id\");\n          var pw = $('.provision_vdc_user_new_password', context).val();\n          var confirm_password = $('.provision_vdc_user_new_confirm_password', context).val();\n\n          if (!pw.length) {\n            Notifier.notifyError(Locale.tr(\"Fill in a new password\"));\n            return false;\n          }\n\n          if (pw !== confirm_password) {\n            Notifier.notifyError(Locale.tr(\"Passwords do not match\"));\n            return false;\n          }\n\n          OpenNebula.User.passwd({\n            data : {\n              id: user_id,\n              extra_param: pw\n            },\n            success: function(request, response) {\n              update_provision_vdc_user_info(user_id, context);\n              button.removeAttr(\"disabled\");\n            },\n            error: function(request, response) {\n              Notifier.onError(request, response);\n              button.removeAttr(\"disabled\");\n            }\n          })\n          return false;\n        });\n    });\n\n    context.on(\"click\", \".provision_vdc_user_quota_confirm_button\", function() {\n      $(\".provision_vdc_user_confirm_action\", context).html(\n        '<div data-alert class=\"alert-box secondary radius\">' +\n          TemplateProvisionQuotaWidget() +\n          '<br>' +\n          '<br>' +\n          '<div class=\"row\">' +\n            '<div class=\"large-10 large-centered columns\">' +\n              '<a href\"#\" class=\"provision_update_quota_button success large button large-12 radius\" style=\"margin-right: 15px\">' + Locale.tr(\"Update User Quota\") + '</a>' +\n            '</div>' +\n          '</div>' +\n          '<a href=\"#\" class=\"close\" style=\"top: 20px\">&times;</a>' +\n        '</div>');\n\n      ProvisionQuotaWidget.setup(context);\n\n      $(document).foundation();\n\n      var quotas_str = $(\".provision_info_vdc_user\", context).attr(\"quotas\");\n      if (quotas_str) {\n        var quotas = JSON.parse(quotas_str);\n\n        var vms_limit = QuotaLimits.QUOTA_LIMIT_DEFAULT;\n        var cpu_limit = QuotaLimits.QUOTA_LIMIT_DEFAULT;\n        var mem_limit = QuotaLimits.QUOTA_LIMIT_DEFAULT;\n\n        if (quotas.VM != undefined) {\n          vms_limit = quotas.VM.VMS;\n          cpu_limit = quotas.VM.CPU;\n          mem_limit = quotas.VM.MEMORY;\n\n          if (mem_limit != QuotaLimits.QUOTA_LIMIT_UNLIMITED &&\n             mem_limit != QuotaLimits.QUOTA_LIMIT_DEFAULT) {\n\n            mem_limit = quotas.VM.MEMORY / 1024;\n          }\n        }\n\n        var fill_limits = function(limit, select, input) {\n            switch (limit){\n              case QuotaLimits.QUOTA_LIMIT_DEFAULT:\n                select.val('default').change();\n                input.val('').change();\n                break;\n\n              case QuotaLimits.QUOTA_LIMIT_UNLIMITED:\n                select.val('unlimited').change();\n                input.val('').change();\n                break;\n\n              default:\n                select.val('edit').change();\n                input.val(limit).change();\n            }\n          }\n\n        fill_limits(\n          vms_limit,\n          $(\"div.provision_rvms_quota select.provision_quota_select\", context),\n          $(\".provision_rvms_quota_input\", context));\n\n        fill_limits(\n          cpu_limit,\n          $(\"div.provision_cpu_quota select.provision_quota_select\", context),\n          $(\".provision_cpu_quota_input\", context));\n\n        fill_limits(\n          mem_limit,\n          $(\"div.provision_memory_quota select.provision_quota_select\", context),\n          $(\".provision_memory_quota_tmp_input\", context));\n      }\n    });\n\n    context.on(\"click\", \".provision_delete_button\", function() {\n      var button = $(this);\n      button.attr(\"disabled\", \"disabled\");\n      var user_id = $(\".provision_info_vdc_user\", context).attr(\"opennebula_id\");\n      OpenNebula.User.del({\n        data : {\n          id: user_id\n        },\n        success: function(request, response) {\n          $(\".provision_back\", context).click();\n          $(\".provision_users_list_refresh_button\", context).click();\n          button.removeAttr(\"disabled\");\n        },\n        error: function(request, response) {\n          Notifier.onError(request, response);\n          button.removeAttr(\"disabled\");\n        }\n      })\n    });\n\n    context.on(\"click\", \".provision_update_quota_button\", function() {\n      var button = $(this);\n      button.attr(\"disabled\", \"disabled\");\n      var user_id = $(\".provision_info_vdc_user\", context).attr(\"opennebula_id\");\n\n      quota_json = ProvisionQuotaWidget.retrieve(context);\n\n      OpenNebula.User.set_quota({\n        data : {\n          id: user_id,\n          extra_param: quota_json\n        },\n        success: function(request, response) {\n          update_provision_vdc_user_info(user_id, context);\n          button.removeAttr(\"disabled\");\n        },\n        error: function(request, response) {\n          Notifier.onError(request, response);\n          button.removeAttr(\"disabled\");\n        }\n      })\n    });\n\n    context.on(\"click\", \".provision_refresh_info\", function() {\n      var user_id = $(\".provision_info_vdc_user\", context).attr(\"opennebula_id\");\n      update_provision_vdc_user_info(user_id, context);\n      return false;\n    });\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/vms/create',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form id=\\\"provision_create_vm\\\" class=\\\"hidden section_content\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-10 large-centered columns\\\">\\n      <h2 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create Virtual Machine\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h2>\\n      <br></div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-8 large-centered columns\\\">\\n      <input type=\\\"text\\\" id=\\\"vm_name\\\"  class=\\\"provision-input\\\" placeholder=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Machine Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"/>\\n      <br></div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-10 large-centered columns\\\">\\n      <dl class=\\\"accordion provision_accordion_template\\\" data-accordion=\\\"provision_accordion_template\\\">\\n        <dd style=\\\"border-bottom: 1px solid #efefef;\\\" class=\\\"active accordion-navigation\\\">\\n          <a href=\\\"#provision_dd_template\\\" style=\\\"background: #fff; font-size: 30px\\\">\\n            <span class=\\\"select_template\\\" style=\\\"color:#555\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select a Template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            <span class=\\\"selected_template\\\" style=\\\"display:none; color:#555\\\">\\n              <span class=\\\"provision-logo selected_template_logo\\\" style=\\\"line-height: 80px\\\"></span>\\n              <span class=\\\"selected_template_name\\\"></span>\\n              <span class=\\\"has-tip right\\\" style=\\\"cursor: pointer; margin-right:10px; line-height: 80px\\\"> <i class=\\\"fa fa-pencil\\\"/></span>\\n            </span>\\n          </a>\\n          <div id=\\\"provision_dd_template\\\" class=\\\"active content\\\">\\n            <div class=\\\"row provision_select_template\\\">\\n              <div class=\\\"large-12 large-centered columns\\\">\\n                <dl class=\\\"tabs text-center\\\" data-tab style=\\\"width: 100%\\\">\\n                  <dd class=\\\"active\\\" style=\\\"width: 33%;\\\">\\n                    <a href=\\\"#provision_system_templates_selector\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"System\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n                  </dd>\\n                  <dd style=\\\"width: 33%;\\\">\\n                    <a href=\\\"#provision_vdc_templates_selector\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n                  </dd>\\n                  <dd style=\\\"width: 34%;\\\">\\n                    <a href=\\\"#provision_saved_templates_selector\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Saved\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n                  </dd>\\n                </dl>\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"large-12 large-centered columns\\\">\\n                    <h3 class=\\\"subheader text-right\\\">\\n                      <input type=\\\"search\\\" class=\\\"provision-search-input right\\\" placeholder=\\\"Search\\\" id=\\\"provision_create_template_search\\\"/>\\n                    </h3>\\n                    <br></div>\\n                </div>\\n                <div class=\\\"tabs-content\\\">\\n                  <div class=\\\"content active\\\" id=\\\"provision_system_templates_selector\\\">\\n                    <table id=\\\"provision_system_templates_table\\\">\\n                      <thead class=\\\"hidden\\\">\\n                        <tr>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Saved\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                        </tr>\\n                      </thead>\\n                      <tbody class=\\\"hidden\\\"></tbody>\\n                    </table>\\n                  </div>\\n                  <div class=\\\"content\\\" id=\\\"provision_vdc_templates_selector\\\">\\n                    <table id=\\\"provision_vdc_templates_table\\\">\\n                      <thead class=\\\"hidden\\\">\\n                        <tr>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Saved\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shared\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                        </tr>\\n                      </thead>\\n                      <tbody class=\\\"hidden\\\"></tbody>\\n                    </table>\\n                  </div>\\n                  <div class=\\\"content\\\" id=\\\"provision_saved_templates_selector\\\">\\n                    <table id=\\\"provision_saved_templates_table\\\">\\n                      <thead class=\\\"hidden\\\">\\n                        <tr>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Saved\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shared\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                        </tr>\\n                      </thead>\\n                      <tbody class=\\\"hidden\\\"></tbody>\\n                    </table>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        </dd>\\n      </dl>\\n    </div>\\n  </div>\\n  <br>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-10 large-centered columns\\\">\\n      <div class=\\\"provision_capacity_selector\\\"></div>\\n      <br>\\n      <br>\\n      <div class=\\\"provision_network_selector\\\"></div>\\n      <br>\\n      <br>\\n      <div class=\\\"provision_custom_attributes_selector\\\"></div>\\n    </div>\\n  </div>\\n  <br>\\n  <br>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-7 columns large-centered\\\">\\n      <div data-alert class=\\\"alert-box alert-box-error radius text-center hidden\\\"></div>\\n      <button href=\\\"#\\\" class=\\\"button large success radius large-12 small-12\\\" type=\\\"submit\\\" style=\\\"height: 59px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n    </div>\\n  </div>\\n  <br>\\n  <br></form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/vms/create', t);\nHandlebars.registerPartial('tabs/provision-tab/vms/create', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('templates/helpers/isFeatureEnabled',['require','hbs/handlebars','sunstone-config'],function(require) {\n  var Handlebars = require('hbs/handlebars');\n  var Config = require('sunstone-config');\n  \n  var isFeatureEnabled = function(feature, options) {\n    if (Config.isFeatureEnabled(feature)) {\n      return options.fn(this);\n    } else {\n      return options.inverse(this);\n    }\n  };\n\n  Handlebars.registerHelper('isFeatureEnabled', isFeatureEnabled);\n\n  return isFeatureEnabled;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/group/info',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/isFeatureEnabled'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"  <div class=\\\"row\\\">\\n    <div class=\\\"large-11 large-centered columns\\\">\\n      <h3 class=\\\"subheader text-right\\\">\\n        <span class=\\\"left\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Showback\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </h3>\\n    </div>\\n  </div>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div  id=\\\"provision_info_vdc_group_showback\\\" class=\\\"large-10 large-centered columns\\\"></div>\\n  </div>\\n  <br>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"provision_manage_vdc\\\" class=\\\"hidden section_content\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-11 large-centered columns\\\">\\n      <h3 class=\\\"subheader text-right\\\">\\n        <span class=\\\"left\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Accounting\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </h3>\\n    </div>\\n  </div>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div  id=\\\"provision_info_vdc_group_acct\\\" class=\\\"large-10 large-centered columns\\\"></div>\\n  </div>\\n  <br>\\n\";\n  stack1 = ((helpers.isFeatureEnabled || (depth0 && depth0.isFeatureEnabled) || helperMissing).call(depth0, \"showback\", {\"name\":\"isFeatureEnabled\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  <div class=\\\"row\\\">\\n    <div class=\\\"large-11 large-centered columns\\\">\\n      <h3 class=\\\"subheader text-right\\\">\\n        <span class=\\\"left\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Quotas\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </h3>\\n    </div>\\n  </div>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-11 columns large-centered quotas\\\" id=\\\"provision_vdc_quotas_div\\\"></div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/group/info', t);\nHandlebars.registerPartial('tabs/provision-tab/group/info', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/users/create',['hbs','hbs/handlebars', 'hbs!tabs/provision-tab/users/quota-widget/html','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form id=\\\"provision_create_user\\\" class=\\\"hidden section_content\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-10 large-centered columns\\\">\\n      <h2 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h2>\\n      <br></div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-8 large-centered columns\\\">\\n      <input type=\\\"text\\\" id=\\\"username\\\"  class=\\\"provision-input\\\" placeholder=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Username\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"/>\\n      <br></div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-8 large-centered columns\\\">\\n      <input type=\\\"password\\\" id=\\\"password\\\"  class=\\\"provision-input\\\" placeholder=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"/>\\n      <br></div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-8 large-centered columns\\\">\\n      <input type=\\\"password\\\" id=\\\"repeat_password\\\"  class=\\\"provision-input\\\" placeholder=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Repeat Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"/>\\n      <br></div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-10 large-centered columns\\\">\\n      <h3 class=\\\"subheader text-right\\\">\\n        <span class=\\\"left\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Define Quotas\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </h3>\\n      <br></div>\\n  </div>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-8 large-centered columns\\\">\\n      <dl class=\\\"tabs text-center\\\" data-tab style=\\\"width: 100%\\\">\\n        <dd class=\\\"active\\\" style=\\\"width: 50%;\\\">\\n          <a href=\\\"#provision_create_user_default_quota\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n        </dd>\\n        <dd style=\\\"width: 50%;\\\">\\n          <a href=\\\"#provision_create_user_manual_quota\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Manual\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n        </dd>\\n      </dl>\\n      <div class=\\\"tabs-content\\\">\\n        <div class=\\\"content active\\\" id=\\\"provision_create_user_default_quota\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-12 large-centered columns\\\">\\n              <span style=\\\"font-size: 18px; color: #999\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Use the default system quotas set by the cloud adminstrator\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </div>\\n          </div>\\n        </div>\\n        <div class=\\\"content\\\" id=\\\"provision_create_user_manual_quota\\\">\";\n  stack1 = this.invokePartial(partials['tabs/provision-tab/users/quota-widget/html'], '', 'tabs/provision-tab/users/quota-widget/html', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n      </div>\\n    </div>\\n  </div>\\n  <br>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-5 large-centered columns\\\">\\n      <hr>\\n      <br></div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-7 columns large-centered\\\">\\n      <div data-alert class=\\\"alert-box alert-box-error radius text-center hidden\\\"></div>\\n      <button href=\\\"#\\\" class=\\\"button large radius large-12 small-12\\\" type=\\\"submit\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n    </div>\\n  </div>\\n  <br></form>\";\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/users/create', t);\nHandlebars.registerPartial('tabs/provision-tab/users/create', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/flows/create',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form id=\\\"provision_create_flow\\\" class=\\\"hidden section_content\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-10 large-centered columns\\\">\\n      <h2 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create Service\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h2>\\n      <br></div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-8 large-centered columns\\\">\\n      <input type=\\\"text\\\" id=\\\"flow_name\\\"  class=\\\"provision-input\\\" placeholder=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Service Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"/>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-10 large-centered columns\\\">\\n      <dl class=\\\"accordion provision_accordion_flow_template\\\" data-accordion=\\\"provision_accordion_flow_template\\\">\\n        <dd style=\\\"border-bottom: 1px solid #efefef;\\\" class=\\\"active accordion-navigation\\\">\\n          <a href=\\\"#provision_dd_flow_template\\\" style=\\\"background: #fff; font-size: 30px\\\">\\n            <span class=\\\"select_template\\\" style=\\\"color:#555\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select a Template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            <span class=\\\"selected_template\\\" style=\\\"display:none; color:#555\\\">\\n              <span class=\\\"provision-logo selected_template_logo\\\" style=\\\"color:#555\\\"></span>\\n              <span class=\\\"selected_template_name\\\" style=\\\"color:#555\\\"></span>\\n              <span class=\\\"has-tip right\\\" style=\\\"cursor: pointer; margin-right:10px;\\\"> <i class=\\\"fa fa-pencil\\\"/></span>\\n            </span>\\n          </a>\\n          <div id=\\\"provision_dd_flow_template\\\" class=\\\"provision_select_flow_template active content\\\">\\n            <div class=\\\"row\\\">\\n              <div class=\\\"large-12 large-centered columns\\\">\\n                <h3 class=\\\"subheader text-right\\\">\\n                  <input type=\\\"search\\\" class=\\\"provision-search-input right\\\" placeholder=\\\"Search\\\" id=\\\"provision_create_flow_template_search\\\"/>\\n                </h3>\\n                <br></div>\\n            </div>\\n            <div class=\\\"row\\\">\\n              <div class=\\\"large-12 large-centered columns\\\">\\n                <table id=\\\"provision_flow_templates_table\\\">\\n                  <thead class=\\\"hidden\\\">\\n                    <tr>\\n                      <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                      <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                    </tr>\\n                  </thead>\\n                  <tbody class=\\\"hidden\\\"></tbody>\\n                </table>\\n              </div>\\n            </div>\\n          </div>\\n        </dd>\\n      </dl>\\n    </div>\\n  </div>\\n  <br>\\n  <br>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"provision_network_selector large-9 large-centered columns\\\"></div>\\n  </div>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"provision_custom_attributes_selector large-9 large-centered columns\\\"></div>\\n  </div>\\n  <div id=\\\"provision_customize_flow_template\\\" style=\\\"display: none\\\"></div>\\n  <br>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-7 columns large-centered\\\">\\n      <div data-alert class=\\\"alert-box alert-box-error radius text-center hidden\\\"></div>\\n      <button href=\\\"#\\\" class=\\\"button large success radius large-12 small-12\\\" type=\\\"submit\\\" style=\\\"height: 59px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n    </div>\\n  </div>\\n  <br>\\n  <br></form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/flows/create', t);\nHandlebars.registerPartial('tabs/provision-tab/flows/create', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/content',['hbs','hbs/handlebars', 'hbs!tabs/provision-tab/vms/create', 'hbs!tabs/provision-tab/group/info', 'hbs!tabs/provision-tab/users/create', 'hbs!tabs/provision-tab/flows/create','templates/helpers/isTabPanelEnabled'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  return \"<div class=\\\"provision_templates_list_section hidden section_content\\\"></div>\\n\";\n  },\"3\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"\";\n  stack1 = this.invokePartial(partials['tabs/provision-tab/group/info'], '', 'tabs/provision-tab/group/info', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  stack1 = this.invokePartial(partials['tabs/provision-tab/users/create'], '', 'tabs/provision-tab/users/create', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"<div class=\\\"provision_users_list_section hidden section_content\\\"></div>\\n\";\n},\"5\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"\";\n  stack1 = this.invokePartial(partials['tabs/provision-tab/flows/create'], '', 'tabs/provision-tab/flows/create', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"<div class=\\\"provision_flows_list_section hidden section_content\\\"></div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, buffer = \"<div id=\\\"provision_dashboard\\\" class=\\\"section_content\\\"></div>\\n\\n\";\n  stack1 = this.invokePartial(partials['tabs/provision-tab/vms/create'], '', 'tabs/provision-tab/vms/create', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"<div class=\\\"provision_vms_list_section hidden section_content\\\"></div>\\n\\n\";\n  stack1 = ((helpers.isTabPanelEnabled || (depth0 && depth0.isTabPanelEnabled) || helperMissing).call(depth0, \"provision-tab\", \"templates\", {\"name\":\"isTabPanelEnabled\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n\";\n  stack1 = ((helpers.isTabPanelEnabled || (depth0 && depth0.isTabPanelEnabled) || helperMissing).call(depth0, \"provision-tab\", \"users\", {\"name\":\"isTabPanelEnabled\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n\";\n  stack1 = ((helpers.isTabPanelEnabled || (depth0 && depth0.isTabPanelEnabled) || helperMissing).call(depth0, \"provision-tab\", \"flows\", {\"name\":\"isTabPanelEnabled\",\"hash\":{},\"fn\":this.program(5, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/content', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/header',['hbs','hbs/handlebars','templates/helpers/isTabPanelEnabled','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"        <li>\\n          <a href\\\"#\\\" class=\\\"medium off-color\\\" id=\\\"provision_vdc_info_button\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-bar-chart-o\\\"/>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Info\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </a>\\n        </li>\\n        <li>\\n          <a href\\\"#\\\" class=\\\"medium off-color provision_users_list_button\\\" id=\\\"\\\">\\n          <i class=\\\"fa fa-fw fa-lg fa-users\\\"/>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Users\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </a>\\n        </li>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"        <li>\\n          <a href\\\"#\\\" class=\\\"medium off-color provision_templates_list_button\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-save\\\"/>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Templates\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </a>\\n        </li>\\n\";\n},\"5\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"        <li>\\n          <a href\\\"#\\\" class=\\\"medium off-color provision_flows_list_button\\\" id=\\\"\\\">\\n            <i class=\\\"fa fa-lg fa-fw fa-cubes\\\"/>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Services\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </a>\\n        </li>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div style=\\\" padding: 15px 0px 10px 0px; margin-bottom: 10px\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <a href=\\\"#\\\" class=\\\"provision_image_header\\\" >\\n        <img src=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.logo || (depth0 != null ? depth0.logo : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"logo\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" style=\\\"height:40px; vertical-align:top;\\\"></a>\\n      <br>\\n      <br>\\n      <ul class=\\\"inline-list provision-header text-center\\\">\\n\";\n  stack1 = ((helpers.isTabPanelEnabled || (depth0 && depth0.isTabPanelEnabled) || helperMissing).call(depth0, \"provision-tab\", \"users\", {\"name\":\"isTabPanelEnabled\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"        <li>\\n          <a href\\\"#\\\" class=\\\"medium off-color provision_vms_list_button\\\" id=\\\"\\\">\\n            <i class=\\\"fa fa-fw fa-lg fa-th\\\"/>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </a>\\n        </li>\\n\";\n  stack1 = ((helpers.isTabPanelEnabled || (depth0 && depth0.isTabPanelEnabled) || helperMissing).call(depth0, \"provision-tab\", \"templates\", {\"name\":\"isTabPanelEnabled\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  stack1 = ((helpers.isTabPanelEnabled || (depth0 && depth0.isTabPanelEnabled) || helperMissing).call(depth0, \"provision-tab\", \"flows\", {\"name\":\"isTabPanelEnabled\",\"hash\":{},\"fn\":this.program(5, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"      </ul>\\n    </div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/header', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/dashboard/quotas',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row\\\">\\n  <div class=\\\"large-11 large-centered columns\\\">\\n    <h2 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Quotas\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h2>\\n    <br></div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-10 large-centered columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <span id=\\\"provision_dashboard_rvms_percentage\\\"  style=\\\"font-size:50px\\\">0</span>\\n        <span style=\\\"font-size:20px; color: #999\\\">%</span></div>\\n        <div class=\\\"large-4 columns text-center\\\">\\n          <span id=\\\"provision_dashboard_cpu_percentage\\\"  style=\\\"font-size:50px\\\">0</span>\\n          <span style=\\\"font-size:20px; color: #999\\\">%</span></div>\\n          <div class=\\\"large-4 columns text-center\\\">\\n            <span id=\\\"provision_dashboard_memory_percentage\\\"  style=\\\"font-size:50px\\\">0</span>\\n            <span style=\\\"font-size:20px; color: #999\\\">%</span></div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-4 columns text-center\\\">\\n              <div class=\\\"progress large radius\\\">\\n                <span id=\\\"provision_dashboard_rvms_meter\\\" class=\\\"meter\\\"></span>\\n              </div>\\n            </div>\\n            <div class=\\\"large-4 columns text-center\\\">\\n              <div class=\\\"progress large radius\\\">\\n                <span id=\\\"provision_dashboard_cpu_meter\\\" class=\\\"meter\\\"></span>\\n              </div>\\n            </div>\\n            <div class=\\\"large-4 columns text-center\\\">\\n              <div class=\\\"progress large radius\\\">\\n                <span id=\\\"provision_dashboard_memory_meter\\\" class=\\\"meter\\\"></span>\\n              </div>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-4 columns text-center\\\">\\n              <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"RUNNING VMS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n              <br>\\n              <span id=\\\"provision_dashboard_rvms_str\\\" style=\\\"color: #999; font-size: 14px;\\\"></span>\\n            </div>\\n            <div class=\\\"large-4 columns text-center\\\">\\n              <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n              <br>\\n              <span id=\\\"provision_dashboard_cpu_str\\\" style=\\\"color: #999; font-size: 14px;\\\"></span>\\n            </div>\\n            <div class=\\\"large-4 columns text-center\\\">\\n              <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MEMORY\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n              <br>\\n              <span id=\\\"provision_dashboard_memory_str\\\" style=\\\"color: #999; font-size: 14px;\\\"></span>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n      <br>\\n      <br>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/dashboard/quotas', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/dashboard/vdc-quotas',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row\\\">\\n  <div class=\\\"large-12 large-centered columns\\\">\\n    <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Quotas\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n    <br></div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-12 large-centered columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <span id=\\\"provision_dashboard_vdc_rvms_percentage\\\" style=\\\"font-size:50px\\\">0</span>\\n        <span style=\\\"font-size:20px; color: #999\\\">%</span>\\n      </div>\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <span id=\\\"provision_dashboard_vdc_cpu_percentage\\\" style=\\\"font-size:50px\\\">0</span>\\n        <span style=\\\"font-size:20px; color: #999\\\">%</span>\\n      </div>\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <span id=\\\"provision_dashboard_vdc_memory_percentage\\\" style=\\\"font-size:50px\\\">0</span>\\n        <span style=\\\"font-size:20px; color: #999\\\">%</span>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <div class=\\\"progress large radius\\\">\\n          <span id=\\\"provision_dashboard_vdc_rvms_meter\\\" class=\\\"meter\\\"></span>\\n        </div>\\n      </div>\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <div class=\\\"progress large radius\\\">\\n          <span id=\\\"provision_dashboard_vdc_cpu_meter\\\" class=\\\"meter\\\"></span>\\n        </div>\\n      </div>\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <div class=\\\"progress large radius\\\">\\n          <span id=\\\"provision_dashboard_vdc_memory_meter\\\" class=\\\"meter\\\"></span>\\n        </div>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"RUNNING VMS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        <br>\\n        <span id=\\\"provision_dashboard_vdc_rvms_str\\\" style=\\\"color: #999; font-size: 14px;\\\"></span>\\n      </div>\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        <br>\\n        <span id=\\\"provision_dashboard_vdc_cpu_str\\\" style=\\\"color: #999; font-size: 14px;\\\"></span>\\n      </div>\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MEMORY\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        <br>\\n        <span id=\\\"provision_dashboard_vdc_memory_str\\\" style=\\\"color: #999; font-size: 14px;\\\"></span>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n<br>\\n<br>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/dashboard/vdc-quotas', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/dashboard/empty-graphs',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<span class=\\\"fa-stack fa-2x\\\" style=\\\"color: #dfdfdf\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n</span>\\n<br>\\n<span style=\\\"color: #cfcfcf\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"There is no information available\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/dashboard/empty-graphs', t);\nHandlebars.registerPartial('./empty-graphs', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/dashboard/vms',['hbs','hbs/handlebars', 'hbs!tabs/provision-tab/dashboard/empty-graphs','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-11 large-centered columns\\\">\\n    <h2 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Machines\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h2>\\n    <br></div>\\n</div>\\n<div class=\\\"row\\\" id=\\\"provision_vms_dashboard\\\">\\n  <div class=\\\"large-11 large-centered columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <span  id=\\\"provision_dashboard_total\\\" style=\\\"font-size:80px\\\"> <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n            </span>\\n            <br>\\n            <span style=\\\"color: #999;\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"TOTAL\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </div>\\n        </div>\\n        <br>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns text-center\\\">\\n            <a href\\\"#\\\" class=\\\"medium button success large radius provision_create_vm_button\\\" style=\\\"margin-left: 5px; margin-right: 5px\\\"> <i class=\\\"fa fa-lg fa-plus-square\\\"/></a>\\n            <a href\\\"#\\\" class=\\\"medium button large radius provision_vms_list_button\\\" style=\\\"margin-left: 5px; margin-right: 5px\\\">\\n              <i class=\\\"fa fa-lg fa-th\\\"/></a>\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\"></div>\\n        </div>\\n      </div>\\n      <div class=\\\"large-2 columns\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns text-center\\\">\\n            <span id=\\\"provision_dashboard_running\\\" style=\\\"font-size:40px\\\">\\n              <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n            </span>\\n            <br>\\n            <span  style=\\\"color: #999; font-size: 14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"RUNNING\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns text-center \\\">\\n            <span id=\\\"provision_dashboard_deploying\\\"  style=\\\"font-size:40px\\\">\\n              <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n            </span>\\n            <br>\\n            <span  style=\\\"color: #999; font-size: 14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"DEPLOYING\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns text-center\\\">\\n            <span  id=\\\"provision_dashboard_off\\\" style=\\\"font-size:40px\\\">\\n              <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n            </span>\\n            <br>\\n            <span  style=\\\"color: #999; font-size: 14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"OFF\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns text-center \\\">\\n            <span  id=\\\"provision_dashboard_error\\\" style=\\\"font-size:40px\\\">\\n              <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n            </span>\\n            <br>\\n            <span  style=\\\"color: #999; font-size: 14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ERROR\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"large-6 columns\\\" id=\\\"dashboard_vm_accounting\\\">\\n        <input style=\\\"display:none;\\\" value=\\\"vm\\\" id=\\\"acct_group_by\\\"/>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns graph_legend\\\">\\n            <h3 class=\\\"subheader\\\">\\n              <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n            </h3>\\n          </div>\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"large-12 columns centered graph text-center\\\" id=\\\"acct_cpu_graph\\\" style=\\\"height: 100px;\\\">\";\n  stack1 = this.invokePartial(partials['./empty-graphs'], '', './empty-graphs', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</div>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns graph_legend\\\">\\n            <h3 class=\\\"subheader\\\">\\n              <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory GB hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n            </h3>\\n          </div>\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"large-12 columns centered graph text-center\\\" id=\\\"acct_mem_graph\\\" style=\\\"height: 100px;\\\">\";\n  stack1 = this.invokePartial(partials['./empty-graphs'], '', './empty-graphs', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n<br>\\n<br>\";\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/dashboard/vms', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/dashboard/vdc-vms',['hbs','hbs/handlebars', 'hbs!tabs/provision-tab/dashboard/empty-graphs','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-12 large-centered columns\\\">\\n    <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Virtual Machines\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n    <br></div>\\n</div>\\n<div class=\\\"row\\\" id=\\\"provision_vdc_vms_dashboard\\\">\\n  <div class=\\\"large-12 large-centered columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-4 columns text-center\\\">\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <span  id=\\\"provision_dashboard_vdc_total\\\" style=\\\"font-size:80px\\\"> <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n            </span>\\n            <br>\\n            <span style=\\\"color: #999;\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"TOTAL\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </div>\\n        </div>\\n        <br>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns text-center\\\">\\n            <a href\\\"#\\\" class=\\\"medium button success large radius provision_create_vm_button\\\" style=\\\"margin-left: 5px; margin-right: 5px\\\"> <i class=\\\"fa fa-lg fa-plus-square\\\"/></a>\\n            <a href\\\"#\\\" class=\\\"medium button large radius provision_vms_list_button\\\" style=\\\"margin-left: 5px; margin-right: 5px\\\">\\n              <i class=\\\"fa fa-lg fa-th\\\"/></a>\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\"></div>\\n        </div>\\n      </div>\\n      <div class=\\\"large-2 columns\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns text-center\\\">\\n            <span id=\\\"provision_dashboard_vdc_running\\\" style=\\\"font-size:40px\\\">\\n              <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n            </span>\\n            <br>\\n            <span  style=\\\"color: #999; font-size: 14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"RUNNING\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns text-center \\\">\\n            <span id=\\\"provision_dashboard_vdc_deploying\\\"  style=\\\"font-size:40px\\\">\\n              <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n            </span>\\n            <br>\\n            <span  style=\\\"color: #999; font-size: 14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"DEPLOYING\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns text-center\\\">\\n            <span  id=\\\"provision_dashboard_vdc_off\\\" style=\\\"font-size:40px\\\">\\n              <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n            </span>\\n            <br>\\n            <span  style=\\\"color: #999; font-size: 14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"OFF\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns text-center \\\">\\n            <span  id=\\\"provision_dashboard_vdc_error\\\" style=\\\"font-size:40px\\\">\\n              <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n            </span>\\n            <br>\\n            <span  style=\\\"color: #999; font-size: 14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ERROR\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"large-6 columns\\\" id=\\\"dashboard_vdc_vm_accounting\\\">\\n        <input style=\\\"display:none;\\\" value=\\\"vm\\\" id=\\\"acct_group_by\\\"/>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns graph_legend\\\">\\n            <h3 class=\\\"subheader\\\">\\n              <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n            </h3>\\n          </div>\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"large-12 columns centered graph text-center\\\" id=\\\"acct_cpu_graph\\\" style=\\\"height: 100px;\\\">\";\n  stack1 = this.invokePartial(partials['./empty-graphs'], '', './empty-graphs', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</div>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns graph_legend\\\">\\n            <h3 class=\\\"subheader\\\">\\n              <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory GB hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n            </h3>\\n          </div>\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"large-12 columns centered graph text-center\\\" id=\\\"acct_mem_graph\\\" style=\\\"height: 100px;\\\">\";\n  stack1 = this.invokePartial(partials['./empty-graphs'], '', './empty-graphs', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n<br>\\n<br>\";\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/dashboard/vdc-vms', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/provision-tab/dashboard/users',['hbs','hbs/handlebars', 'hbs!tabs/provision-tab/dashboard/empty-graphs','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"    <div class=\\\"row\\\">\\n      <div class=\\\"large-11 large-centered columns\\\">\\n        <h3 class=\\\"subheader\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Users\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </h3>\\n        <br>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\" id=\\\"provision_users_dashboard\\\">\\n      <div class=\\\"large-12 large-centered columns\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-4 columns text-center\\\">\\n              <br>\\n              <div class=\\\"row\\\">\\n                <div class=\\\"large-12 columns\\\">\\n                  <span  id=\\\"provision_dashboard_users_total\\\" style=\\\"font-size:80px\\\">\\n                    <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n                  </span>\\n                  <br>\\n                  <span style=\\\"color: #999;\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"TOTAL\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n                </div>\\n              </div>\\n              <br>\\n              <br>\\n              <div class=\\\"row\\\">\\n                <div class=\\\"large-12 columns\\\">\\n                  <a href\\\"#\\\" class=\\\"medium button large success radius provision_create_user_button\\\" style=\\\"margin-left: 5px; margin-right: 5px\\\"><i class=\\\"fa fa-lg fa-plus-square\\\"/></a>\\n                  <a href\\\"#\\\" class=\\\"medium button large radius provision_users_list_button\\\" style=\\\"margin-left: 5px; margin-right: 5px\\\"><i class=\\\"fa fa-lg fa-users\\\"/></a>\\n                </div>\\n              </div>\\n              <br>\\n              <div class=\\\"row\\\">\\n                <div class=\\\"large-12 columns\\\">\\n                </div>\\n              </div>\\n            </div>\\n            <div class=\\\"large-8 columns\\\" id=\\\"dashboard_vdc_user_accounting\\\">\\n              <input style=\\\"display:none;\\\" value=\\\"user\\\" id=\\\"acct_group_by\\\"/>\\n              <div class=\\\"row\\\">\\n                <div class=\\\"large-12 columns graph_legend\\\">\\n                  <h3 class=\\\"subheader\\\"><small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small></h3>\\n                </div>\\n                <div class=\\\"large-12 columns\\\">\\n                  <div class=\\\"large-12 columns centered graph text-center\\\" id=\\\"acct_cpu_graph\\\" style=\\\"height: 100px;\\\">\\n\";\n  stack1 = this.invokePartial(partials['./empty-graphs'], '                    ', './empty-graphs', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"                  </div>\\n                </div>\\n              </div>\\n              <div class=\\\"row\\\">\\n                <div class=\\\"large-12 columns graph_legend\\\">\\n                  <h3 class=\\\"subheader\\\"><small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory GB hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small></h3>\\n                </div>\\n                <div class=\\\"large-12 columns\\\">\\n                  <div class=\\\"large-12 columns centered graph text-center\\\" id=\\\"acct_mem_graph\\\" style=\\\"height: 100px;\\\">\\n\";\n  stack1 = this.invokePartial(partials['./empty-graphs'], '                    ', './empty-graphs', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n      </div>\\n    </div>\\n    <br>\\n    <br>\";\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/provision-tab/dashboard/users', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/provision-tab',['require','foundation.core','foundation.accordion','foundation-datatables','utils/locale','sunstone-config','opennebula','sunstone','utils/notifier','utils/resource-select','utils/quotas/quota-widgets','utils/quotas/quota-defaults','utils/accounting','utils/showback','utils/humanize','utils/quotas/quota-limits','utils/graphs','./provision-tab/users/quota-widget','./provision-tab/vms/list','./provision-tab/templates/list','./provision-tab/users/list','./provision-tab/flows/list','hbs!./provision-tab/content','hbs!./provision-tab/header','hbs!./provision-tab/dashboard/quotas','hbs!./provision-tab/dashboard/vdc-quotas','hbs!./provision-tab/dashboard/vms','hbs!./provision-tab/dashboard/vdc-vms','hbs!./provision-tab/dashboard/users','hbs!./provision-tab/group/info','./provision-tab/tabId'],function(require) {\n  require('foundation.core');\n  require('foundation.accordion');\n  require('foundation-datatables');\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var OpenNebula = require('opennebula');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var ResourceSelect = require('utils/resource-select');\n  var QuotaWidgets = require('utils/quotas/quota-widgets');\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n  var Accounting = require('utils/accounting');\n  var Showback = require('utils/showback');\n  var Humanize = require('utils/humanize');\n  var QuotaLimits = require('utils/quotas/quota-limits');\n  var Graphs = require('utils/graphs');\n\n  var ProvisionQuotaWidget = require('./provision-tab/users/quota-widget');\n\n  var ProvisionVmsList = require('./provision-tab/vms/list');\n  var ProvisionTemplatesList = require('./provision-tab/templates/list');\n  var ProvisionUsersList = require('./provision-tab/users/list');\n  var ProvisionFlowsList = require('./provision-tab/flows/list');\n\n  // Templates\n  var TemplateContent = require('hbs!./provision-tab/content');\n  var TemplateHeader = require('hbs!./provision-tab/header');\n\n  var TemplateDashboardQuotas = require('hbs!./provision-tab/dashboard/quotas');\n  var TemplateDashboardVdcQuotas = require('hbs!./provision-tab/dashboard/vdc-quotas');\n  var TemplateDashboardVms = require('hbs!./provision-tab/dashboard/vms');\n  var TemplateDashboardVdcVms = require('hbs!./provision-tab/dashboard/vdc-vms');\n  var TemplateDashboardUsers = require('hbs!./provision-tab/dashboard/users');\n\n  var TemplateGroupInfo = require('hbs!./provision-tab/group/info');\n\n  var TAB_ID = require('./provision-tab/tabId');\n\n  var povision_actions = {\n    \"Provision.User.create\" : {\n        type: \"create\",\n        call: OpenNebula.User.create,\n        callback: function(request, response) {\n          if ( $(\"div#provision_create_user_manual_quota\",\n               $(\"#provision_create_user\")).hasClass(\"active\") ){\n\n            quota_json = ProvisionQuotaWidget.retrieve($(\"#provision_create_user\"));\n\n            Sunstone.runAction(\"Provision.User.set_quota\",\n                                [response.USER.ID], quota_json);\n          } else {\n            clear_provision_create_user();\n          }\n        },\n        error: Notifier.onError\n    },\n\n    \"Provision.User.set_quota\" : {\n        type: \"multiple\",\n        call: OpenNebula.User.set_quota,\n        callback: function(request) {\n          clear_provision_create_user();\n        },\n        error: Notifier.onError\n    },\n\n    \"Provision.Group.show\" : {\n        type: \"single\",\n        call: OpenNebula.Group.show,\n        callback: show_provision_group_info_callback,\n        error: Notifier.onError\n    },\n\n    \"Provision.Flow.instantiate\" : {\n      type: \"single\",\n      call: OpenNebula.ServiceTemplate.instantiate,\n      callback: function(){\n        OpenNebula.Action.clear_cache(\"SERVICE\");\n        ProvisionFlowsList.show(0);\n        var context = $(\"#provision_create_flow\");\n        $(\"#flow_name\", context).val('');\n        //$(\".provision_selected_networks\").html(\"\");\n        $(\".provision-pricing-table\", context).removeClass(\"selected\");\n        //$('a[href=\"#provision_system_templates_selector\"]', context).click();\n      },\n      error: Notifier.onError\n    },\n\n    \"Provision.instantiate\" : {\n      type: \"single\",\n      call: OpenNebula.Template.instantiate,\n      callback: function(){\n        OpenNebula.Action.clear_cache(\"VM\");\n        show_provision_vm_list(0);\n        var context = $(\"#provision_create_vm\");\n        $(\"#vm_name\", context).val('');\n        $(\".provision_selected_networks\").html(\"\");\n        $(\".provision-pricing-table\", context).removeClass(\"selected\");\n        $(\".alert-box-error\", context).hide();\n        $('a[href=\"#provision_system_templates_selector\"]', context).click();\n      },\n      error: Notifier.onError\n    }\n  }\n\n  $(document).foundation();\n\n  function generate_custom_attrs(context, custom_attrs) {\n    context.off();\n    var text_attrs = [];\n\n    $.each(custom_attrs, function(key, value){\n      var parts = value.split(\"|\");\n      // 0 mandatory; 1 type; 2 desc;\n      var attrs = {\n        \"name\": key,\n        \"mandatory\": parts[0],\n        \"type\": parts[1],\n        \"description\": parts[2],\n      }\n\n      switch (parts[1]) {\n        case \"text\":\n          text_attrs.push(attrs)\n          break;\n        case \"password\":\n          text_attrs.push(attrs)\n          break;\n      }\n    })\n\n    if (text_attrs.length > 0) {\n      context.html(\n        '<br>'+\n        '<div class=\"row\">'+\n          '<div class=\"large-12 large-centered columns\">'+\n            '<h3 class=\"subheader text-right\">'+\n              '<span class=\"left\">'+\n                '<i class=\"fa fa-th fa-gears\"></i>&emsp;'+\n                Locale.tr(\"Custom Attributes\")+\n              '</span>'+\n            '</h3>'+\n            '<br>'+\n          '</div>'+\n        '</div>'+\n        '<br>'+\n        '<div class=\"provision_custom_attributes\">'+\n        '</div>'+\n        '<br>'+\n        '<br>'+\n        '<br>');\n\n\n      $.each(text_attrs, function(index, custom_attr){\n        $(\".provision_custom_attributes\", context).append(\n          '<br>'+\n          '<div class=\"row\">'+\n            '<div class=\"large-10 large-centered columns\">'+\n              '<label style=\"font-size: 16px\">' +\n                '<i class=\"fa fa-asterisk\" style=\"color:#0099c3\"/> '+\n                custom_attr.description +\n                '<input type=\"'+custom_attr.type+'\" attr_name=\"'+custom_attr.name+'\" class=\"provision_custom_attribute provision-input\" style=\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\"/>'+\n              '</label>'+\n            '</div>'+\n          '</div>');\n      })\n    } else {\n      context.html(\"\");\n    }\n  }\n\n  function generate_cardinality_selector(context, role_template, template_json) {\n    context.off();\n    var min_vms = (role_template.min_vms||1);\n    var max_vms = (role_template.max_vms||20);\n\n    context.html(\n      '<br>'+\n      '<div class=\"row\">'+\n        '<div class=\"large-12 large-centered columns\">'+\n          '<h3 class=\"subheader text-right\">'+\n            '<span class=\"left\">'+\n              '<i class=\"fa fa-th fa-lg\"></i>&emsp;'+\n              Locale.tr(\"Cardinality\")+\n            '</span>'+\n          '</h3>'+\n          '<br>'+\n        '</div>'+\n      '</div>'+\n      '<br>'+\n      '<br>'+\n      '<div class=\"row\">'+\n        '<div class=\"large-12 columns\">'+\n          '<div class=\"row\">'+\n            '<div class=\"large-2 text-center columns\">'+\n              '<span class=\"cardinality_value\" style=\"color: #777; font-size:40px\">'+role_template.cardinality+'</span>'+\n              '<br>'+\n              '<span style=\"color: #999;\">'+Locale.tr(\"VMs\")+'</span>'+\n            '</div>'+\n            '<div class=\"large-6 columns\">'+\n              '<div class=\"cardinality_slider_div\">'+\n                '<span class=\"\" style=\"color: #777;\">'+Locale.tr(\"Change cardinality\")+'</span>'+\n                '<br>'+\n                '<div class=\"range-slider radius cardinality_slider\" data-slider data-options=\"start: 1; end: 50;\">'+\n                  '<span class=\"range-slider-handle\"></span>'+\n                  '<span class=\"range-slider-active-segment\"></span>'+\n                  '<input type=\"hidden\">'+\n                '</div>'+\n                '<span class=\"left\" style=\"color: #999;\">'+min_vms+'</span>'+\n                '<span class=\"right\" style=\"color: #999;\">'+max_vms+'</span>'+\n              '</div>'+\n              '<div class=\"cardinality_no_slider_div\">'+\n                '<br>'+\n                '<br>'+\n                '<span class=\"\" style=\"color: #999;\">'+Locale.tr(\"The cardinality for this role cannot be changed\")+'</span>'+\n              '</div>'+\n            '</div>'+\n            '<div class=\"large-4 columns text-center provision_create_service_cost_div hidden\">'+\n              '<span class=\"cost_value\" style=\"color: #777; font-size:40px\"></span>'+\n              '<br>'+\n              '<span style=\"color: #999;\">'+Locale.tr(\"COST\")+' / ' + Locale.tr(\"HOUR\") + '</span>'+\n            '</div>'+\n          '</div>'+\n        '</div>'+\n      '</div>');\n\n      var capacity = template_json.VMTEMPLATE.TEMPLATE;\n      var cost = 0;\n      if (capacity.CPU_COST || capacity.MEMORY_COST && Config.isFeatureEnabled(\"showback\")) {\n        $(\".provision_create_service_cost_div\").show();\n\n        if (capacity.CPU && capacity.CPU_COST) {\n          cost += capacity.CPU * capacity.CPU_COST\n          $(\".cost_value\", context).data(\"CPU_COST\", capacity.CPU_COST);\n        }\n\n        if (capacity.MEMORY && capacity.MEMORY_COST) {\n          cost += capacity.MEMORY * capacity.MEMORY_COST\n          $(\".cost_value\", context).data(\"MEMORY_COST\", capacity.MEMORY_COST);\n        }\n\n        $(\".provision_create_service_cost_div\", context).data(\"cost\", cost)\n        var cost_value = cost*parseInt(role_template.cardinality);\n        $(\".cost_value\", context).html(cost_value.toFixed(2));\n      } else {\n        $(\".provision_create_service_cost_div\").hide();\n      }\n\n      if (max_vms > min_vms) {\n        $( \".cardinality_slider\", context).attr('data-options', 'start: '+min_vms+'; end: '+max_vms+';')\n        context.foundation();\n        $( \".cardinality_slider_div\", context).show();\n        $( \".cardinality_no_slider_div\", context).hide();\n\n        $( \".cardinality_slider\", context).foundation('slider', 'set_value', role_template.cardinality);\n\n        $( \".cardinality_slider\", context).on('change', function(){\n          $(\".cardinality_value\",context).html($(this).attr('data-slider'))\n          var cost_value = $(\".provision_create_service_cost_div\", context).data(\"cost\")*$(this).attr('data-slider');\n          $(\".cost_value\", context).html(cost_value.toFixed(2));\n        });\n      } else {\n        $( \".cardinality_slider_div\", context).hide();\n        $( \".cardinality_no_slider_div\", context).show();\n      }\n  }\n\n  var provision_instance_type_accordion_id = 0;\n\n  function generate_provision_instance_type_accordion(context, capacity) {\n    context.off();\n    var memory_value;\n    var memory_unit;\n\n    if (capacity.MEMORY > 1000){\n      memory_value = Math.floor(capacity.MEMORY/1024);\n      memory_unit = \"GB\";\n    } else {\n      memory_value = (capacity.MEMORY ? capacity.MEMORY : '-');\n      memory_unit = \"MB\";\n    }\n\n    context.html(\n      '<br>'+\n      '<div class=\"row\">'+\n        '<div class=\"large-12 large-centered columns\">'+\n          '<h3 class=\"subheader text-right\">'+\n            '<span class=\"left\">'+\n              '<i class=\"fa fa-laptop fa-lg\"></i>&emsp;'+\n              Locale.tr(\"Capacity\")+\n            '</span>'+\n          '</h3>'+\n          '<br>'+\n        '</div>'+\n      '</div>'+\n      '<br>'+\n      '<div class=\"row\">'+\n        '<div class=\"large-12 large-centered columns\">'+\n          '<div class=\"row text-center\">'+\n            '<div class=\"large-4 columns\">'+\n              '<span class=\"cpu_value\" style=\"color: #777; font-size:60px\">'+(capacity.CPU ? capacity.CPU : '-')+'</span>'+\n              '<br>'+\n              '<span style=\"color: #999;\">'+Locale.tr(\"CPU\")+'</span>'+\n            '</div>'+\n            '<div class=\"large-4 columns\">'+\n              '<span class=\"memory_value\" style=\"color: #777; font-size:60px\">'+memory_value+'</span>'+\n              ' '+\n              '<span class=\"memory_unit\" style=\"color: #777; font-size:30px\">'+memory_unit+'</span>'+\n              '<br>'+\n              '<span style=\"color: #999;\">'+Locale.tr(\"MEMORY\")+'</span>'+\n            '</div>'+\n            '<div class=\"large-4 columns provision_create_template_cost_div hidden\">'+\n              '<span class=\"cost_value\" style=\"color: #777; font-size:60px\"></span>'+\n              '<br>'+\n              '<span style=\"color: #999;\">'+Locale.tr(\"COST\")+' / ' + Locale.tr(\"HOUR\") + '</span>'+\n            '</div>'+\n          '</div>'+\n        '</div>'+\n      '</div>'+\n      (Config.provision.create_vm.isEnabled(\"capacity_select\") && (capacity.SUNSTONE_CAPACITY_SELECT != \"NO\") ?\n      '<br>'+\n      '<br>'+\n      '<div class=\"row\">'+\n        '<div class=\"large-12 large-centered columns\">'+\n          '<dl class=\"accordion\" data-accordion=\"provision_accordion_'+provision_instance_type_accordion_id+'\">'+\n            '<dd class=\"accordion-navigation\">'+\n              '<a href=\"#provision_instance_type_dd_'+provision_instance_type_accordion_id+'\" class=\"button large-12 medium radius\" style=\"color: #555;\">'+\n                Locale.tr(\"Change Capacity\")+\n              '</a>'+\n              '<div id=\"provision_instance_type_dd_'+provision_instance_type_accordion_id+'\" class=\"content\">'+\n                '<div class=\"row\">'+\n                  '<div class=\"large-12 large-centered columns\">'+\n                    '<h3 class=\"subheader text-right\">'+\n                      '<input type=\"search\" class=\"provision-search-input right\" placeholder=\"Search\"/>'+\n                    '</h3>'+\n                    '<br>'+\n                  '</div>'+\n                '</div>'+\n                '<div class=\"row\">'+\n                  '<div class=\"large-12 large-centered columns\">'+\n                    '<table class=\"provision_instance_types_table\">'+\n                      '<thead class=\"hidden\">'+\n                        '<tr>'+\n                          '<th>'+Locale.tr(\"Name\")+'</th>'+\n                        '</tr>'+\n                      '</thead>'+\n                      '<tbody class=\"hidden\">'+\n                      '</tbody>'+\n                    '</table>'+\n                    '<br>'+\n                  '</div>'+\n                '</div>'+\n              '</div>'+\n            '</dd>'+\n          '</dl>'+\n        '</div>'+\n      '</div>' : '' ) +\n      '<br>');\n\n    var cost = 0;\n    if (capacity.CPU_COST || capacity.MEMORY_COST && Config.isFeatureEnabled(\"showback\")) {\n      $(\".provision_create_template_cost_div\").show();\n\n      if (capacity.CPU && capacity.CPU_COST) {\n        cost += capacity.CPU * capacity.CPU_COST\n        $(\".cost_value\").data(\"CPU_COST\", capacity.CPU_COST);\n      }\n\n      if (capacity.MEMORY && capacity.MEMORY_COST) {\n        cost += capacity.MEMORY * capacity.MEMORY_COST\n        $(\".cost_value\").data(\"MEMORY_COST\", capacity.MEMORY_COST);\n      }\n\n      $(\".cost_value\").html(cost.toFixed(2));\n    } else {\n      $(\".provision_create_template_cost_div\").hide();\n    }\n\n    if (Config.provision.create_vm.isEnabled(\"capacity_select\") && (capacity.SUNSTONE_CAPACITY_SELECT != \"NO\")) {\n      provision_instance_type_accordion_id += 1;\n\n      var provision_instance_types_datatable = $('.provision_instance_types_table', context).dataTable({\n        \"iDisplayLength\": 6,\n        \"sDom\" : '<\"H\">t<\"F\"lp>',\n        \"bSort\" : false,\n        \"aLengthMenu\": [[6, 12, 36, 72], [6, 12, 36, 72]],\n        \"aoColumnDefs\": [\n            { \"bVisible\": false, \"aTargets\": [\"all\"]}\n        ],\n        \"aoColumns\": [\n            { \"mDataProp\": \"name\" }\n        ],\n        \"fnPreDrawCallback\": function (oSettings) {\n          // create a thumbs container if it doesn't exist. put it in the dataTables_scrollbody div\n          if (this.$('tr', {\"filter\": \"applied\"} ).length == 0) {\n            this.html('<div class=\"text-center\">'+\n              '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n                '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n                '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n              '</span>'+\n              '<br>'+\n              '<br>'+\n              '<span style=\"font-size: 18px; color: #999\">'+\n                Locale.tr(\"There are no instance_types available. Please contact your cloud administrator\")+\n              '</span>'+\n              '</div>');\n          } else {\n            $(\".provision_instance_types_table\", context).html(\n              '<ul class=\"provision_instance_types_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center\">'+\n              '</ul>');\n          }\n\n          return true;\n        },\n        \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n          var data = aData;\n\n          var li = $('<li>'+\n              '<ul class=\"provision-pricing-table hoverable only-one\" cpu=\"'+data.cpu+'\" memory=\"'+data.memory+'\">'+\n                '<li class=\"provision-title\" title=\"'+data.name+'\">'+\n                  data.name+\n                '</li>'+\n                '<li class=\"provision-bullet-item\">'+\n                  '<span style=\"font-size: 40px\">'+\n                  '<i class=\"fa fa-fw fa-laptop\"/>&emsp;'+\n                  '<span style=\"vertical-align: middle; font-size:14px\">'+\n                    'x'+data.cpu+' - '+\n                    ((data.memory > 1000) ?\n                      (Math.floor(data.memory/1024)+'GB') :\n                      (data.memory+'MB'))+\n                  '</span>'+\n                  '</span>'+\n                '</li>'+\n                '<li class=\"provision-description\">'+\n                  (data.description || '')+\n                '</li>'+\n              '</ul>'+\n            '</li>').appendTo($(\".provision_instance_types_ul\", context));\n\n          $(\".provision-pricing-table\", li).data(\"opennebula\", data)\n\n          return nRow;\n        }\n      });\n\n\n      $('.provision-search-input', context).on('keyup',function(){\n        provision_instance_types_datatable.fnFilter( $(this).val() );\n      })\n\n      $('.provision-search-input', context).on('change',function(){\n        provision_instance_types_datatable.fnFilter( $(this).val() );\n      })\n\n      context.on(\"click\", \".provision-pricing-table.only-one\" , function(){\n        $(\".cpu_value\", context).html($(this).attr(\"cpu\"));\n\n        var memory_value;\n        var memory_unit;\n\n        if ($(this).attr(\"memory\") > 1000){\n          memory_value = Math.floor($(this).attr(\"memory\")/1024);\n          memory_unit = \"GB\";\n        } else {\n          memory_value = $(this).attr(\"memory\");\n          memory_unit = \"MB\";\n        }\n\n        $(\".memory_value\", context).html(memory_value);\n        $(\".memory_unit\", context).html(memory_unit);\n\n        if (Config.isFeatureEnabled(\"showback\")) {\n          var cost = 0;\n\n          if ($(\".cost_value\").data(\"CPU_COST\")) {\n            cost += $(this).attr(\"cpu\") * $(\".cost_value\").data(\"CPU_COST\")\n          }\n\n          if ($(\".cost_value\").data(\"MEMORY_COST\")) {\n            cost += $(this).attr(\"memory\") * $(\".cost_value\").data(\"MEMORY_COST\")\n          }\n\n          $(\".cost_value\").html(cost.toFixed(2));\n        }\n\n        $('.accordion a', context).first().trigger(\"click\");\n      })\n\n      $(document).foundation();\n\n      update_provision_instance_types_datatable(provision_instance_types_datatable);\n    }\n  }\n\n  var provision_nic_accordion_id = 0;\n  var provision_nic_accordion_dd_id = 0;\n\n  function generate_provision_network_table(context, nic, vnet_attr){\n    context.off();\n    var nic_span;\n\n    if (nic) {\n      nic_span = '<span class=\"selected_network\" template_nic=\\''+JSON.stringify(nic)+'\\'>'+\n          '<span style=\"color: #999; font-size: 14px\">' + Locale.tr(\"INTERFACE\") + \"</span>&emsp;&emsp;\" +\n          '<span style=\"color: #777;\">' + (nic.NETWORK||nic.NETWORK_ID) + \"</span>\" +\n        '</span>'+\n        '<span class=\"has-tip right provision_remove_nic\" style=\"cursor: pointer;\">'+\n          '<i class=\"fa fa-times\"/>'+\n        '</span>'+\n        '<span class=\"has-tip right\" style=\"cursor: pointer; margin-right:10px\">'+\n          '<i class=\"fa fa-pencil\"/>'+\n        '</span>';\n    } else if (vnet_attr) {\n      nic_span = '<span style=\"color: #777; font-size: 16px\">' + vnet_attr.description + \"</span><br>\"+\n        '<span class=\"selected_network only-not-active\" attr_name=\\''+vnet_attr.name+'\\' style=\"color: #777;\">'+\n          '<span style=\"color: #999; font-size: 14px\">' + Locale.tr(\"INTERFACE\") + \"</span>&emsp;&emsp;\" +\n          '<span class=\"button radius small\">' + Locale.tr(\"Select a Network\") + \"</span>\" +\n        '</span>'+\n        '<span class=\"only-active\" style=\"color:#555\">'+\n          Locale.tr(\"Select a Network for this interface\")+\n        '</span>'+\n        '<span class=\"has-tip right only-not-active\" style=\"cursor: pointer; margin-right:10px\">'+\n          '<i class=\"fa fa-pencil\"/>'+\n        '</span>';\n    } else {\n      nic_span =\n        '<span class=\"selected_network only-not-active\" style=\"color: #777;\">'+\n          '<span style=\"color: #999; font-size: 14px\">' + Locale.tr(\"INTERFACE\") + \"</span>&emsp;&emsp;\" +\n          '<span class=\"button radius small\">' + Locale.tr(\"Select a Network\") + \"</span>\" +\n        '</span>'+\n        '<span class=\"only-active\" style=\"color:#555\">'+\n          Locale.tr(\"Select a Network for this interface\")+\n        '</span>'+\n        '<span class=\"has-tip right provision_remove_nic\" style=\"cursor: pointer;\">'+\n          '<i class=\"fa fa-times\"/>'+\n        '</span>'+\n        '<span class=\"has-tip right only-not-active\" style=\"cursor: pointer; margin-right:10px\">'+\n          '<i class=\"fa fa-pencil\"/>'+\n        '</span>';\n    }\n\n    var dd_context = $('<dd style=\"border-bottom: 1px solid #efefef;\" class=\"accordion-navigation\">'+\n      '<a href=\"#provision_accordion_dd_'+provision_nic_accordion_dd_id+'\" style=\"background: #fff; font-size: 24px\">'+\n        nic_span +\n      '</a>'+\n      '<div id=\"provision_accordion_dd_'+provision_nic_accordion_dd_id+'\" class=\"content\">'+\n        '<div class=\"row\">'+\n          '<div class=\"large-12 large-centered columns\">'+\n            '<h3 class=\"subheader text-right\">'+\n              '<input type=\"search\" class=\"provision-search-input right\" placeholder=\"Search\"/>'+\n            '</h3>'+\n            '<br>'+\n          '</div>'+\n        '</div>'+\n        '<div class=\"row\">'+\n          '<div class=\"large-12 large-centered columns\">'+\n            '<table class=\"provision_networks_table\">'+\n              '<thead class=\"hidden\">'+\n                '<tr>'+\n                  '<th>'+Locale.tr(\"ID\")+'</th>'+\n                  '<th>'+Locale.tr(\"Name\")+'</th>'+\n                '</tr>'+\n              '</thead>'+\n              '<tbody class=\"hidden\">'+\n              '</tbody>'+\n            '</table>'+\n            '<br>'+\n          '</div>'+\n        '</div>'+\n        '</div>'+\n      '</dd>').appendTo(context);\n\n    provision_nic_accordion_dd_id += 1;\n\n    var provision_networks_datatable = $('.provision_networks_table', dd_context).dataTable({\n      \"iDisplayLength\": 6,\n      \"sDom\" : '<\"H\">t<\"F\"lp>',\n      \"aLengthMenu\": [[6, 12, 36, 72], [6, 12, 36, 72]],\n      \"aoColumnDefs\": [\n          { \"bVisible\": false, \"aTargets\": [\"all\"]}\n      ],\n      \"aoColumns\": [\n          { \"mDataProp\": \"VNET.ID\" },\n          { \"mDataProp\": \"VNET.NAME\" }\n      ],\n      \"fnPreDrawCallback\": function (oSettings) {\n        // create a thumbs container if it doesn't exist. put it in the dataTables_scrollbody div\n        if (this.$('tr', {\"filter\": \"applied\"} ).length == 0) {\n          this.html('<div class=\"text-center\">'+\n            '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n              '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n              '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n            '</span>'+\n            '<br>'+\n            '<br>'+\n            '<span style=\"font-size: 18px; color: #999\">'+\n              Locale.tr(\"There are no networks available. Please contact your cloud administrator\")+\n            '</span>'+\n            '</div>');\n        } else {\n          $(\".provision_networks_table\", dd_context).html(\n            '<ul class=\"provision_networks_ul large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center\">'+\n            '</ul>');\n        }\n\n        return true;\n      },\n      \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n        var data = aData.VNET;\n        $(\".provision_networks_ul\", dd_context).append(\n          '<li>'+\n            '<ul class=\"provision-pricing-table hoverable more-than-one\" opennebula_id=\"'+data.ID+'\" opennebula_name=\"'+data.NAME+'\">'+\n              '<li class=\"provision-title\" title=\"'+data.NAME+'\">'+\n                data.NAME+\n              '</li>'+\n              '<li class=\"provision-bullet-item\">'+\n                '<i class=\"fa fa-fw fa-globe\" style=\"font-size:40px;\"/>'+\n              '</li>'+\n              '<li class=\"provision-description\">'+\n                (data.TEMPLATE.DESCRIPTION || '...')+\n              '</li>'+\n            '</ul>'+\n          '</li>');\n\n        return nRow;\n      }\n    });\n\n\n    $('.provision-search-input', dd_context).on('keyup',function(){\n      provision_networks_datatable.fnFilter( $(this).val() );\n    })\n\n    $('.provision-search-input', dd_context).on('change',function(){\n      provision_networks_datatable.fnFilter( $(this).val() );\n    })\n\n    dd_context.on(\"click\", \".provision-pricing-table.more-than-one\" , function(){\n      $(\".selected_network\", dd_context).html(\n          '<span style=\"color: #999; font-size: 14px\">' + Locale.tr(\"INTERFACE\") + \"</span>&emsp;&emsp;\" +\n          '<span style=\"color: #777;\">' + $(this).attr(\"opennebula_name\") + \"</span>\");\n\n      $(\".selected_network\", dd_context).attr(\"opennebula_id\", $(this).attr(\"opennebula_id\"))\n      $(\".selected_network\", dd_context).removeAttr(\"template_nic\")\n\n      $('a', dd_context).first().trigger(\"click\");\n    })\n\n    dd_context.on(\"click\", \".provision_remove_nic\" , function(){\n      dd_context.remove();\n      return false;\n    });\n\n    if (!nic && !vnet_attr) {\n      $('a', dd_context).trigger(\"click\");\n    }\n\n    update_provision_networks_datatable(provision_networks_datatable);\n  }\n\n  function generate_provision_network_accordion(context, hide_add_button){\n    context.off();\n    context.html(\n      '<br>'+\n      '<div class=\"row\">'+\n        '<div class=\"large-12 columns\">'+\n          '<h3 class=\"subheader text-right\">'+\n            '<span class=\"left\">'+\n              '<i class=\"fa fa-globe fa-lg\"></i>&emsp;'+\n              Locale.tr(\"Network\")+\n            '</span>'+\n          '</h3>'+\n          '<br>'+\n        '</div>'+\n      '</div>'+\n      '<br>'+\n      '<div class=\"row\">'+\n        '<div class=\"large-12 large-centered columns\">'+\n          '<dl class=\"accordion provision_nic_accordion\" data-accordion=\"provision_accordion_'+provision_nic_accordion_id+'\">'+\n          '</dl>'+\n          '<br>'+\n          '<a class=\"button large-12 medium radius secondary provision_add_network_interface\" style=\"padding: 1rem; color: #555; ' + (hide_add_button ? 'display:none;' : '') + '\">'+\n            Locale.tr(\"Add another Network Interface\")+\n          '</a>'+\n        '</div>'+\n      '</div>'+\n      '<br>')\n\n    provision_nic_accordion_id += 1;\n\n    $(\".provision_add_network_interface\", context).on(\"click\", function(){\n      generate_provision_network_table($(\".accordion\", context));\n    })\n\n    $(document).foundation();\n  }\n\n  function show_provision_dashboard() {\n    $(\".section_content\").hide();\n    $(\"#provision_dashboard\").fadeIn();\n\n    $(\"#provision_dashboard\").html(\"\");\n\n    if (Config.provision.dashboard.isEnabled(\"quotas\")) {\n      $(\"#provision_dashboard\").append(TemplateDashboardQuotas());\n\n\n      OpenNebula.User.show({\n        data : {\n            id: \"-1\"\n        },\n        success: function(request,user_json){\n          var user = user_json.USER;\n\n          QuotaWidgets.initEmptyQuotas(user);\n\n          if (!$.isEmptyObject(user.VM_QUOTA)){\n              var default_user_quotas = QuotasDefault.default_quotas(user.DEFAULT_USER_QUOTAS);\n\n              var vms = QuotaWidgets.quotaInfo(\n                  user.VM_QUOTA.VM.VMS_USED,\n                  user.VM_QUOTA.VM.VMS,\n                  default_user_quotas.VM_QUOTA.VM.VMS,\n                  true);\n\n              $(\"#provision_dashboard_rvms_percentage\").html(vms[\"percentage\"]);\n              $(\"#provision_dashboard_rvms_str\").html(vms[\"str\"]);\n              $(\"#provision_dashboard_rvms_meter\").css(\"width\", vms[\"percentage\"]+\"%\");\n\n              var memory = QuotaWidgets.quotaMBInfo(\n                  user.VM_QUOTA.VM.MEMORY_USED,\n                  user.VM_QUOTA.VM.MEMORY,\n                  default_user_quotas.VM_QUOTA.VM.MEMORY,\n                  true);\n\n              $(\"#provision_dashboard_memory_percentage\").html(memory[\"percentage\"]);\n              $(\"#provision_dashboard_memory_str\").html(memory[\"str\"]);\n              $(\"#provision_dashboard_memory_meter\").css(\"width\", memory[\"percentage\"]+\"%\");\n\n              var cpu = QuotaWidgets.quotaFloatInfo(\n                  user.VM_QUOTA.VM.CPU_USED,\n                  user.VM_QUOTA.VM.CPU,\n                  default_user_quotas.VM_QUOTA.VM.CPU,\n                  true);\n\n              $(\"#provision_dashboard_cpu_percentage\").html(cpu[\"percentage\"]);\n              $(\"#provision_dashboard_cpu_str\").html(cpu[\"str\"]);\n              $(\"#provision_dashboard_cpu_meter\").css(\"width\", cpu[\"percentage\"]+\"%\");\n          }\n        }\n      })\n    }\n\n    if (Config.provision.dashboard.isEnabled(\"vdcquotas\")) {\n      $(\"#provision_dashboard\").append(TemplateDashboardVdcQuotas());\n\n\n      OpenNebula.Group.show({\n        data : {\n            id: \"-1\"\n        },\n        success: function(request,group_json){\n          var group = group_json.GROUP;\n\n          QuotaWidgets.initEmptyQuotas(group);\n\n          if (!$.isEmptyObject(group.VM_QUOTA)){\n              var default_group_quotas = QuotaDefaults.default_quotas(group.DEFAULT_GROUP_QUOTAS);\n\n              var vms = QuotaWidgets.quotaInfo(\n                  group.VM_QUOTA.VM.VMS_USED,\n                  group.VM_QUOTA.VM.VMS,\n                  default_group_quotas.VM_QUOTA.VM.VMS,\n                  true);\n\n              $(\"#provision_dashboard_vdc_rvms_percentage\").html(vms[\"percentage\"]);\n              $(\"#provision_dashboard_vdc_rvms_str\").html(vms[\"str\"]);\n              $(\"#provision_dashboard_vdc_rvms_meter\").css(\"width\", vms[\"percentage\"]+\"%\");\n\n              var memory = QuotaWidgets.quotaMBInfo(\n                  group.VM_QUOTA.VM.MEMORY_USED,\n                  group.VM_QUOTA.VM.MEMORY,\n                  default_group_quotas.VM_QUOTA.VM.MEMORY,\n                  true);\n\n              $(\"#provision_dashboard_vdc_memory_percentage\").html(memory[\"percentage\"]);\n              $(\"#provision_dashboard_vdc_memory_str\").html(memory[\"str\"]);\n              $(\"#provision_dashboard_vdc_memory_meter\").css(\"width\", memory[\"percentage\"]+\"%\");\n\n              var cpu = QuotaWidgets.quotaFloatInfo(\n                  group.VM_QUOTA.VM.CPU_USED,\n                  group.VM_QUOTA.VM.CPU,\n                  default_group_quotas.VM_QUOTA.VM.CPU,\n                  true);\n\n              $(\"#provision_dashboard_vdc_cpu_percentage\").html(cpu[\"percentage\"]);\n              $(\"#provision_dashboard_vdc_cpu_str\").html(cpu[\"str\"]);\n              $(\"#provision_dashboard_vdc_cpu_meter\").css(\"width\", cpu[\"percentage\"]+\"%\");\n          }\n        }\n      })\n    }\n\n    if (Config.provision.dashboard.isEnabled(\"vms\")) {\n      $(\"#provision_dashboard\").append(TemplateDashboardVms());\n\n      var start_time =  Math.floor(new Date().getTime() / 1000);\n      // ms to s\n\n      // 604800 = 7 days = 7*24*60*60\n      start_time = start_time - 604800;\n\n      // today\n      var end_time = -1;\n\n      var options = {\n        \"start_time\": start_time,\n        \"end_time\": end_time,\n        \"userfilter\": config[\"user_id\"]\n      }\n\n      var no_table = true;\n\n      OpenNebula.VM.accounting({\n          success: function(req, response){\n              Accounting.fillAccounting($(\"#dashboard_vm_accounting\"), req, response, no_table);\n          },\n          error: Notifier.onError,\n          data: options\n      });\n\n      OpenNebula.VM.list({\n        timeout: true,\n        success: function (request, item_list){\n          var total = 0;\n          var running = 0;\n          var off = 0;\n          var error = 0;\n          var deploying = 0;\n\n          $.each(item_list, function(index, vm){\n            if (vm.VM.UID == config[\"user_id\"]) {\n              var state = ProvisionVmsList.state(vm.VM);\n\n              total = total + 1;\n\n              switch (state.color) {\n                case \"deploying\":\n                  deploying = deploying + 1;\n                  break;\n                case \"error\":\n                  error = error + 1;\n                  break;\n                case \"running\":\n                  running = running + 1;\n                  break;\n                case \"powering_off\":\n                  off = off + 1;\n                  break;\n                case \"off\":\n                  off = off + 1;\n                  break;\n              }\n            }\n          })\n\n          var context = $(\"#provision_vms_dashboard\");\n          $(\"#provision_dashboard_total\", context).html(total);\n          $(\"#provision_dashboard_running\", context).html(running);\n          $(\"#provision_dashboard_off\", context).html(off);\n          $(\"#provision_dashboard_error\", context).html(error);\n          $(\"#provision_dashboard_deploying\", context).html(deploying);\n        },\n        error: Notifier.onError\n      });\n    }\n\n    if (Config.provision.dashboard.isEnabled(\"vdcvms\")) {\n      $(\"#provision_dashboard\").append(TemplateDashboardVdcVms());\n\n      var start_time =  Math.floor(new Date().getTime() / 1000);\n      // ms to s\n\n      // 604800 = 7 days = 7*24*60*60\n      start_time = start_time - 604800;\n\n      // today\n      var end_time = -1;\n\n      var options = {\n        \"start_time\": start_time,\n        \"end_time\": end_time\n      }\n\n      var no_table = true;\n\n      OpenNebula.VM.accounting({\n          success: function(req, response){\n              Accounting.fillAccounting($(\"#dashboard_vdc_vm_accounting\"), req, response, no_table);\n          },\n          error: Notifier.onError,\n          data: options\n      });\n\n\n      OpenNebula.VM.list({\n        timeout: true,\n        success: function (request, item_list){\n          var total = 0;\n          var running = 0;\n          var off = 0;\n          var error = 0;\n          var deploying = 0;\n\n          $.each(item_list, function(index, vm){\n              var state = ProvisionVmsList.state(vm.VM);\n\n              total = total + 1;\n\n              switch (state.color) {\n                case \"deploying\":\n                  deploying = deploying + 1;\n                  break;\n                case \"error\":\n                  error = error + 1;\n                  break;\n                case \"running\":\n                  running = running + 1;\n                  break;\n                case \"powering_off\":\n                  off = off + 1;\n                  break;\n                case \"off\":\n                  off = off + 1;\n                  break;\n                default:\n                  break;\n              }\n          })\n\n          var context = $(\"#provision_vdc_vms_dashboard\");\n          $(\"#provision_dashboard_vdc_total\", context).html(total);\n          $(\"#provision_dashboard_vdc_running\", context).html(running);\n          $(\"#provision_dashboard_vdc_off\", context).html(off);\n          $(\"#provision_dashboard_vdc_error\", context).html(error);\n          $(\"#provision_dashboard_vdc_deploying\", context).html(deploying);\n        },\n        error: Notifier.onError\n      });\n    }\n\n    if (Config.provision.dashboard.isEnabled(\"users\")) {\n      $(\"#provision_dashboard\").append(TemplateDashboardUsers());\n\n      var start_time =  Math.floor(new Date().getTime() / 1000);\n      // ms to s\n\n      // 604800 = 7 days = 7*24*60*60\n      start_time = start_time - 604800;\n\n      // today\n      var end_time = -1;\n\n      var options = {\n        \"start_time\": start_time,\n        \"end_time\": end_time,\n        \"group\": config[\"user_gid\"]\n      }\n\n      var no_table = true;\n\n      OpenNebula.VM.accounting({\n          success: function(req, response){\n              Accounting.fillAccounting($(\"#dashboard_vdc_user_accounting\"), req, response, no_table);\n          },\n          error: Notifier.onError,\n          data: options\n      });\n\n      OpenNebula.User.list({\n        timeout: true,\n        success: function (request, item_list){\n          var total = item_list.length || 0;\n\n          var context = $(\"#provision_users_dashboard\");\n          $(\"#provision_dashboard_users_total\", context).html(total);\n        },\n        error: Notifier.onError\n      });\n    }\n\n  }\n\n\n  function show_provision_user_info() {\n    Sunstone.runAction(\"Provision.User.show\", \"-1\");\n    $(\".section_content\").hide();\n    $(\"#provision_user_info\").fadeIn();\n    $(\"dd.active a\", $(\"#provision_user_info\")).trigger(\"click\");\n  }\n\n\n\n  function show_provision_group_info_callback(request, response) {\n    var info = response.GROUP;\n\n    var context = $(\"#provision_manage_vdc\");\n\n    var default_group_quotas = QuotaDefaults.default_quotas(info.DEFAULT_GROUP_QUOTAS);\n\n    var quotas_tab_html = QuotaWidgets.initQuotasPanel(info, default_group_quotas,\n                                        \"#provision_vdc_quotas_div\", false);\n\n    $(\"#provision_vdc_quotas_div\").html(quotas_tab_html);\n\n    QuotaWidgets.setupQuotasPanel(info,\n        \"#provision_vdc_quotas_div\",\n        false,\n        \"Group\");\n\n    $(\"#provision_info_vdc_group_acct\", context).html(Accounting.html());\n    Accounting.setup(\n      $(\"#provision_info_vdc_group_acct\", context),\n      {   fixed_group: info.ID,\n          init_group_by: \"user\" });\n\n    if (Config.isFeatureEnabled(\"showback\")) {\n      $(\"#provision_info_vdc_group_showback\", context).html(Showback.html());\n      Showback.setup(\n        $(\"#provision_info_vdc_group_showback\", context),\n        {   fixed_user: \"\", fixed_group: info.ID });\n    }\n\n    $(\"#acct_placeholder\", context).hide();\n  }\n\n  function show_provision_create_vm() {\n    OpenNebula.Action.clear_cache(\"VMTEMPLATE\");\n    ProvisionTemplatesList.updateDatatable(provision_system_templates_datatable);\n    provision_system_templates_datatable.fnFilter(\"^-$\", 2, true, false)\n\n    ProvisionTemplatesList.updateDatatable(provision_vdc_templates_datatable);\n    provision_vdc_templates_datatable.fnFilter(\"^(?!\\-$)\", 2, true, false);\n    provision_vdc_templates_datatable.fnFilter(\"^1$\", 3, true, false);\n\n    if (Config.isTabPanelEnabled(\"provision-tab\", \"templates\")) {\n      ProvisionTemplatesList.updateDatatable(provision_saved_templates_datatable);\n      provision_saved_templates_datatable.fnFilter(\"^(?!\\-$)\", 2, true, false);\n      provision_saved_templates_datatable.fnFilter(\"^0$\", 3, true, false);\n    }\n\n    $(\".provision_accordion_template .selected_template\").hide();\n    $(\".provision_accordion_template .select_template\").show();\n\n    $(\"#provision_create_vm .provision_capacity_selector\").html(\"\");\n    $(\"#provision_create_vm .provision_network_selector\").html(\"\");\n    $(\"#provision_create_vm .provision_custom_attributes_selector\").html(\"\")\n\n    $(\"#provision_create_vm dd:not(.active) a[href='#provision_dd_template']\").trigger(\"click\")\n\n    $(\".section_content\").hide();\n    $(\"#provision_create_vm\").fadeIn();\n  }\n\n  function show_provision_create_flow() {\n    update_provision_flow_templates_datatable(provision_flow_templates_datatable);\n\n    var context = $(\"#provision_create_flow\");\n\n    $(\"#provision_customize_flow_template\", context).hide();\n    $(\"#provision_customize_flow_template\", context).html(\"\");\n\n    $(\".provision_network_selector\", context).html(\"\")\n    $(\".provision_custom_attributes_selector\", context).html(\"\")\n\n    $(\".provision_accordion_flow_template .selected_template\", context).hide();\n    $(\".provision_accordion_flow_template .select_template\", context).show();\n\n    $(\"dd:not(.active) a[href='#provision_dd_flow_template']\", context).trigger(\"click\")\n\n    $(\".alert-box-error\", context).hide();\n\n    $(\".section_content\").hide();\n    $(\"#provision_create_flow\").fadeIn();\n  }\n\n  function show_provision_create_user() {\n    $(\".section_content\").hide();\n    $(\"#provision_create_user\").fadeIn();\n    $(document).foundation();\n  }\n\n  function show_provision_vdc_info() {\n    $(\".section_content\").hide();\n    $(\"#provision_manage_vdc\").fadeIn();\n\n    Sunstone.runAction('Provision.Group.show', \"-1\");\n  }\n\n  function update_provision_instance_types_datatable(datatable) {\n      datatable.fnClearTable(true);\n      if (!config['instance_types'] || config['instance_types'].length == 0) {\n        datatable.html('<div class=\"text-center\">'+\n          '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n            '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n            '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n          '</span>'+\n          '<br>'+\n          '<br>'+\n          '<span style=\"font-size: 18px; color: #999\">'+\n            Locale.tr(\"There are no instance types available\")+\n          '</span>'+\n          '</div>');\n      } else {\n        datatable.fnAddData(config['instance_types']);\n      }\n  }\n\n  function update_provision_networks_datatable(datatable) {\n    datatable.html('<div class=\"text-center\">'+\n      '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n        '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n        '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>'+\n      '</span>'+\n      '<br>'+\n      '<br>'+\n      '<span style=\"font-size: 18px; color: #999\">'+\n      '</span>'+\n      '</div>');\n\n    OpenNebula.Network.list({\n      timeout: true,\n      success: function (request, item_list){\n        datatable.fnClearTable(true);\n        if (item_list.length == 0) {\n          datatable.html('<div class=\"text-center\">'+\n            '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n              '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n              '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n            '</span>'+\n            '<br>'+\n            '<br>'+\n            '<span style=\"font-size: 18px; color: #999\">'+\n              Locale.tr(\"There are no networks available.\")+\n            '</span>'+\n            '</div>');\n        } else {\n          datatable.fnAddData(item_list);\n        }\n      },\n      error: Notifier.onError\n    });\n  }\n\n  function update_provision_flow_templates_datatable(datatable, timeout) {\n    datatable.html('<div class=\"text-center\">'+\n      '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n        '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n        '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>'+\n      '</span>'+\n      '<br>'+\n      '<br>'+\n      '<span style=\"font-size: 18px; color: #999\">'+\n      '</span>'+\n      '</div>');\n\n    setTimeout( function(){\n      OpenNebula.ServiceTemplate.list({\n        timeout: true,\n        success: function (request, item_list){\n          datatable.fnClearTable(true);\n          if (item_list.length == 0) {\n            datatable.html('<div class=\"text-center\">'+\n              '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n                '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n                '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n              '</span>'+\n              '<br>'+\n              '<br>'+\n              '<span style=\"font-size: 18px; color: #999\">'+\n                Locale.tr(\"There are no templates available\")+\n              '</span>'+\n              '</div>');\n          } else {\n            datatable.fnAddData(item_list);\n          }\n        },\n        error: Notifier.onError\n      });\n    }, timeout);\n  }\n\n  // Closes and resets the create user wizard\n  function clear_provision_create_user(){\n    OpenNebula.Action.clear_cache(\"USER\");\n    ProvisionUsersList.show(0);\n\n    var context = $(\"#provision_create_user\");\n    $(\"#username\", context).val('');\n    $(\"#password\", context).val('');\n    $(\"#repeat_password\", context).val('');\n\n    ProvisionQuotaWidget.reset(context);\n\n    $(\".alert-box-error\", context).hide();\n    $(\".alert-box-error\", context).html(\"\");\n  }\n\n  var Tab = {\n    tabId: TAB_ID,\n    list_header: \"\",\n    actions: povision_actions,\n    content: TemplateContent(),\n    setup: _setup\n  };\n\n  return Tab;\n\n  function _setup() {\n    $(document).ready(function(){\n      var tab_name = 'provision-tab';\n      var tab = $(\"#\"+tab_name);\n\n      if (Config.isTabEnabled(tab_name)) {\n        $('.right-header').prepend(TemplateHeader({'logo': Config.provision.logo}));\n\n        $(\".left-content\").remove();\n        $(\".right-content\").addClass(\"large-centered small-centered\");\n        $(\"#footer\").removeClass(\"right\");\n        $(\"#footer\").addClass(\"large-centered small-centered\");\n\n        //$(\".user-zone-info\").remove();\n\n        $(\"#provision_logout\").click(function(){\n            OpenNebula.Auth.logout({\n              success: function(){\n                window.location.href = \"login\";\n              }\n            });\n\n            return false;\n        });\n\n        ProvisionVmsList.generate($(\".provision_vms_list_section\"), {active: true});\n\n        if (Config.isTabPanelEnabled(\"provision-tab\", \"templates\")) {\n          ProvisionTemplatesList.generate($(\".provision_templates_list_section\"), {active: true});\n        }\n\n        // TODO check if active\n        ProvisionFlowsList.generate($(\".provision_flows_list_section\"), {active: true});\n        ProvisionUsersList.generate($(\".provision_users_list_section\"), {active: true});\n\n        //\n        // Dashboard\n        //\n\n        $(\".provision_image_header\").on(\"click\", function(){\n          Sunstone.showTab(TAB_ID);\n          $('li', '.provision-header').removeClass(\"active\");\n          show_provision_dashboard();\n        })\n\n        $(\".configuration\").on(\"click\", function(){\n          $('li', '.provision-header').removeClass(\"active\");\n        })\n\n        show_provision_dashboard();\n\n        $('.provision-header').on('click', 'li', function(){\n          Sunstone.showTab(TAB_ID);\n          $('li', '.provision-header').removeClass(\"active\");\n          $(this).closest('li').addClass(\"active\");\n        })\n\n        $(document).on(\"click\", \".provision_vms_list_button\", function(){\n          OpenNebula.Action.clear_cache(\"VM\");\n          ProvisionVmsList.show(0);\n        });\n\n        $(document).on(\"click\", \".provision_templates_list_button\", function(){\n          OpenNebula.Action.clear_cache(\"VMTEMPLATE\");\n          ProvisionTemplatesList.show(0);\n        });\n\n        $(document).on(\"click\", \".provision_flows_list_button\", function(){\n          OpenNebula.Action.clear_cache(\"SERVICE\");\n          ProvisionFlowsList.show(0);\n        });\n\n        $(document).on(\"click\", \".provision_users_list_button\", function(){\n          OpenNebula.Action.clear_cache(\"USER\");\n          ProvisionUsersList.show(0);\n        });\n\n        //\n        // Create VM\n        //\n\n        function appendTemplateCard(aData, tableID) {\n          var data = aData.VMTEMPLATE;\n          var logo;\n\n          if (data.TEMPLATE.LOGO) {\n            logo = '<span class=\"provision-logo\" href=\"#\">'+\n                '<img  src=\"'+data.TEMPLATE.LOGO+'\">'+\n              '</span>';\n          } else {\n            logo = '<span style=\"color: #bfbfbf; font-size: 60px;\">'+\n              '<i class=\"fa fa-fw fa-file-text-o\"/>'+\n            '</span>';\n          }\n\n          var li = $('<li>'+\n              '<ul class=\"provision-pricing-table hoverable only-one\" opennebula_id=\"'+data.ID+'\">'+\n                '<li class=\"provision-title\" title=\"'+data.NAME+'\">'+\n                  data.NAME+\n                '</li>'+\n                '<li style=\"height: 85px\" class=\"provision-bullet-item\">'+\n                  logo +\n                '</li>'+\n                '<li class=\"provision-description\">'+\n                  (data.TEMPLATE.DESCRIPTION || '...')+\n                '</li>'+\n              '</ul>'+\n            '</li>').appendTo($(\"#\"+tableID+'_ul'));\n\n          $(\".provision-pricing-table\", li).data(\"opennebula\", aData);\n        }\n\n        function initializeTemplateCards(context, tableID) {\n          // create a thumbs container if it doesn't exist. put it in the dataTables_scrollbody div\n          if (context.$('tr', {\"filter\": \"applied\"} ).length == 0) {\n            context.html('<div class=\"text-center\">'+\n              '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n                '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n                '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n              '</span>'+\n              '<br>'+\n              '<br>'+\n              '<span style=\"font-size: 18px; color: #999\">'+\n                Locale.tr(\"There are no templates available\")+\n              '</span>'+\n              '</div>');\n          } else {\n            $('#'+tableID+'_table').html(\n              '<ul id=\"'+tableID+'_ul\" class=\"large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center\"></ul>');\n          }\n\n          return true;\n        }\n\n        provision_system_templates_datatable = $('#provision_system_templates_table').dataTable({\n          \"iDisplayLength\": 6,\n          \"sDom\" : '<\"H\">t<\"F\"lp>',\n          \"aLengthMenu\": [[6, 12, 36, 72], [6, 12, 36, 72]],\n          \"aoColumnDefs\": [\n              { \"bVisible\": false, \"aTargets\": [\"all\"]}\n          ],\n          \"aoColumns\": [\n              { \"mDataProp\": \"VMTEMPLATE.ID\" },\n              { \"mDataProp\": \"VMTEMPLATE.NAME\" },\n              { \"mDataProp\": \"VMTEMPLATE.TEMPLATE.SAVED_TEMPLATE_ID\", \"sDefaultContent\" : \"-\"  }\n          ],\n          \"fnPreDrawCallback\": function (oSettings) {\n            initializeTemplateCards(this, \"provision_system_templates\")\n          },\n          \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n            appendTemplateCard(aData, \"provision_system_templates\");\n            return nRow;\n          }\n        });\n\n\n        provision_vdc_templates_datatable = $('#provision_vdc_templates_table').dataTable({\n          \"iDisplayLength\": 6,\n          \"sDom\" : '<\"H\">t<\"F\"lp>',\n          \"aLengthMenu\": [[6, 12, 36, 72], [6, 12, 36, 72]],\n          \"aoColumnDefs\": [\n              { \"bVisible\": false, \"aTargets\": [\"all\"]}\n          ],\n          \"aoColumns\": [\n              { \"mDataProp\": \"VMTEMPLATE.ID\" },\n              { \"mDataProp\": \"VMTEMPLATE.NAME\" },\n              { \"mDataProp\": \"VMTEMPLATE.TEMPLATE.SAVED_TEMPLATE_ID\", \"sDefaultContent\" : \"-\"  },\n              { \"mDataProp\": \"VMTEMPLATE.PERMISSIONS.GROUP_U\" }\n          ],\n          \"fnPreDrawCallback\": function (oSettings) {\n            initializeTemplateCards(this, \"provision_vdc_templates\")\n          },\n          \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n            appendTemplateCard(aData, \"provision_vdc_templates\");\n            return nRow;\n          }\n        });\n\n\n        provision_saved_templates_datatable = $('#provision_saved_templates_table').dataTable({\n          \"iDisplayLength\": 6,\n          \"sDom\" : '<\"H\">t<\"F\"lp>',\n          \"aLengthMenu\": [[6, 12, 36, 72], [6, 12, 36, 72]],\n          \"aoColumnDefs\": [\n              { \"bVisible\": false, \"aTargets\": [\"all\"]}\n          ],\n          \"aoColumns\": [\n              { \"mDataProp\": \"VMTEMPLATE.ID\" },\n              { \"mDataProp\": \"VMTEMPLATE.NAME\" },\n              { \"mDataProp\": \"VMTEMPLATE.TEMPLATE.SAVED_TEMPLATE_ID\", \"sDefaultContent\" : \"-\"  },\n              { \"mDataProp\": \"VMTEMPLATE.PERMISSIONS.GROUP_U\" }\n          ],\n          \"fnPreDrawCallback\": function (oSettings) {\n            initializeTemplateCards(this, \"provision_saved_templates\")\n          },\n          \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n            appendTemplateCard(aData, \"provision_saved_templates\");\n            return nRow;\n          }\n        });\n\n\n        $('#provision_create_template_search').on('keyup',function(){\n          provision_system_templates_datatable.fnFilter( $(this).val() );\n          provision_saved_templates_datatable.fnFilter( $(this).val() );\n          provision_vdc_templates_datatable.fnFilter( $(this).val() );\n        })\n\n        $('#provision_create_template_search').on('change',function(){\n          provision_system_templates_datatable.fnFilter( $(this).val() );\n          provision_saved_templates_datatable.fnFilter( $(this).val() );\n          provision_vdc_templates_datatable.fnFilter( $(this).val() );\n        })\n\n        $(\"#provision_create_template_refresh_button\").click(function(){\n          OpenNebula.Action.clear_cache(\"VMTEMPLATE\");\n          ProvisionTemplatesList.updateDatatable(provision_system_templates_datatable);\n          ProvisionTemplatesList.updateDatatable(provision_saved_templates_datatable);\n          ProvisionTemplatesList.updateDatatable(provision_vdc_templates_datatable);\n\n        });\n\n        tab.on(\"click\", \"#provision_create_vm .provision_select_template .provision-pricing-table.only-one\" , function(){\n          var create_vm_context = $(\"#provision_create_vm\");\n\n          if ($(this).hasClass(\"selected\")){\n            $(\".provision_network_selector\", create_vm_context).html(\"\");\n            $(\".provision_capacity_selector\", create_vm_context).html(\"\");\n\n            $(\".provision_accordion_template .selected_template\").hide();\n            $(\".provision_accordion_template .select_template\").show();\n          } else {\n            var template_id = $(this).attr(\"opennebula_id\");\n            var template_json = $(this).data(\"opennebula\");\n\n            var template_nic = template_json.VMTEMPLATE.TEMPLATE.NIC\n            var nics = []\n            if ($.isArray(template_nic))\n                nics = template_nic\n            else if (!$.isEmptyObject(template_nic))\n                nics = [template_nic]\n\n            $(\".provision_accordion_template .selected_template\").show();\n            $(\".provision_accordion_template .select_template\").hide();\n            $(\".provision_accordion_template .selected_template_name\").html(template_json.VMTEMPLATE.NAME)\n            if (template_json.VMTEMPLATE.TEMPLATE.LOGO) {\n              $(\".provision_accordion_template .selected_template_logo\").html('<img  src=\"'+template_json.VMTEMPLATE.TEMPLATE.LOGO+'\">');\n            } else {\n              $(\".provision_accordion_template .selected_template_logo\").html('<i class=\"fa fa-file-text-o fa-lg\"/>&emsp;');\n            }\n\n            $(\".provision_accordion_template a\").first().trigger(\"click\");\n\n            generate_provision_instance_type_accordion(\n              $(\".provision_capacity_selector\", create_vm_context),\n              template_json.VMTEMPLATE.TEMPLATE);\n\n            if (Config.provision.create_vm.isEnabled(\"network_select\") && (template_json.VMTEMPLATE.TEMPLATE.SUNSTONE_NETWORK_SELECT != \"NO\")) {\n              generate_provision_network_accordion(\n                $(\".provision_network_selector\", create_vm_context));\n\n              $.each(nics, function(index, nic){\n                  generate_provision_network_table(\n                    $(\".provision_nic_accordion\", create_vm_context),\n                    nic);\n              })\n            } else {\n              $(\".provision_network_selector\", create_vm_context).html(\"\");\n            }\n            \n            if (template_json.VMTEMPLATE.TEMPLATE.USER_INPUTS) {\n              generate_custom_attrs(\n                $(\".provision_custom_attributes_selector\", create_vm_context),\n                template_json.VMTEMPLATE.TEMPLATE.USER_INPUTS);\n            } else {\n              $(\".provision_custom_attributes_selector\", create_vm_context).html(\"\");\n            }\n          }\n        })\n\n        tab.on(\"click\", \"#provision_create_vm .provision-pricing-table.only-one\" , function(){\n          if ($(this).hasClass(\"selected\")){\n            $(this).removeClass(\"selected\");\n          } else {\n            $(\".provision-pricing-table\", $(this).parents(\".large-block-grid-3,.large-block-grid-2\")).removeClass(\"selected\")\n            $(this).addClass(\"selected\");\n          }\n        })\n\n        $(\"#provision_create_vm\").submit(function(){\n          var context = $(this);\n\n          var vm_name = $(\"#vm_name\", context).val();\n          var template_id = $(\".tabs-content .content.active .selected\", context).attr(\"opennebula_id\");\n\n          var nics = [];\n          var nic;\n          $(\".selected_network\", context).each(function(){\n            if ($(this).attr(\"template_nic\")) {\n              nic = JSON.parse($(this).attr(\"template_nic\"))\n            } else if ($(this).attr(\"opennebula_id\")) {\n              nic = {\n                'network_id': $(this).attr(\"opennebula_id\")\n              }\n            } else {\n              nic = undefined;\n            }\n\n            if (nic) {\n              nics.push(nic);\n            }\n          });\n\n          var instance_type = $(\".provision_instance_types_ul .selected\", context);\n\n          if (!template_id) {\n            $(\".alert-box-error\", context).fadeIn().html(Locale.tr(\"You must select at least a template configuration\"));\n            return false;\n          }\n\n          var extra_info = {\n            'vm_name' : vm_name,\n            'template': {\n            }\n          }\n\n          if (nics.length > 0) {\n            extra_info.template.nic = nics;\n          }\n\n          if (instance_type.length > 0) {\n            var instance_typa_data = instance_type.data(\"opennebula\");\n            delete instance_typa_data.name;\n\n            $.extend(extra_info.template, instance_typa_data)\n          }\n\n          var missing_attr = false;\n          var user_inputs_values = {};\n          if ($(\".provision_custom_attributes\", $(this))) {\n            $(\".provision_custom_attribute\", $(\".provision_custom_attributes\", $(this))).each(function(){\n              if (!$(this).val()) {\n                $(this).parent(\"label\").css(\"color\", \"red\");\n                missing_attr = true;\n              } else {\n                $(this).parent(\"label\").css(\"color\", \"#777\");\n                user_inputs_values[$(this).attr(\"attr_name\")] = $(this).val();\n              }\n            })\n          }\n\n          if (missing_attr) {\n            $(\".alert-box-error\", $(this)).fadeIn().html(Locale.tr(\"You have not specified all the Custom Atrributes for this VM\"));\n            return false;\n          }\n\n          if (!$.isEmptyObject(user_inputs_values)) {\n             $.extend(extra_info.template, user_inputs_values)\n          }\n\n          Sunstone.runAction(\"Provision.instantiate\", template_id, extra_info);\n          return false;\n        })\n\n        $(document).on(\"click\", \".provision_create_vm_button\", function(){\n          show_provision_create_vm();\n        });\n\n\n        //\n        // Create FLOW\n        //\n\n        provision_flow_templates_datatable = $('#provision_flow_templates_table').dataTable({\n          \"iDisplayLength\": 6,\n          \"sDom\" : '<\"H\">t<\"F\"lp>',\n          \"aLengthMenu\": [[6, 12, 36, 72], [6, 12, 36, 72]],\n          \"aaSorting\"  : [[1, \"asc\"]],\n          \"aoColumnDefs\": [\n              { \"bVisible\": false, \"aTargets\": [\"all\"]}\n          ],\n          \"aoColumns\": [\n              { \"mDataProp\": \"DOCUMENT.ID\" },\n              { \"mDataProp\": \"DOCUMENT.NAME\" }\n          ],\n          \"fnPreDrawCallback\": function (oSettings) {\n            // create a thumbs container if it doesn't exist. put it in the dataTables_scrollbody div\n            if (this.$('tr', {\"filter\": \"applied\"} ).length == 0) {\n              this.html('<div class=\"text-center\">'+\n                '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n                  '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n                  '<i class=\"fa fa-info-circle fa-stack-1x fa-inverse\"></i>'+\n                '</span>'+\n                '<br>'+\n                '<br>'+\n                '<span style=\"font-size: 18px; color: #999\">'+\n                  Locale.tr(\"There are no templates available\")+\n                '</span>'+\n                '</div>');\n            } else {\n              $(\"#provision_flow_templates_table\").html('<ul id=\"provision_flow_templates_ul\" class=\"large-block-grid-3 medium-block-grid-3 small-block-grid-1 text-center\"></ul>');\n            }\n\n            return true;\n          },\n          \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n            var data = aData.DOCUMENT;\n            var body = data.TEMPLATE.BODY;\n            var logo;\n\n            var roles_li = \"\";\n            if (body.roles) {\n              $.each(body.roles, function(index, role) {\n                roles_li +=\n                  '<li class=\"provision-bullet-item text-left\" style=\"margin-left: 10px;margin-right: 10px;\">'+\n                    '<i class=\"fa fa-fw fa-cube\"/>&emsp;'+\n                    role.name+\n                    '<span class=\"right\">'+role.cardinality+\" VMs</span>\"+\n                  '</li>';\n              });\n            }\n\n            if (body.LOGO) {\n              logo = '<span class=\"provision-logo\" href=\"#\">'+\n                  '<img  src=\"'+body.LOGO+'\">'+\n                '</span>';\n            } else {\n              logo = '<span style=\"color: #bfbfbf; font-size: 60px;\">'+\n                '<i class=\"fa fa-fw fa-cubes\"/>'+\n              '</span>';\n            }\n\n            var li = $('<li>'+\n                '<ul class=\"provision-pricing-table hoverable only-one\" opennebula_id=\"'+data.ID+'\">'+\n                  '<li class=\"provision-title\" title=\"'+data.NAME+'\">'+\n                    data.NAME+\n                  '</li>'+\n                  '<li style=\"height: 85px\" class=\"provision-bullet-item\">'+\n                    logo +\n                  '</li>'+\n                  roles_li +\n                  '<li class=\"provision-description\" style=\"padding-top:0px\">'+\n                    (data.TEMPLATE.DESCRIPTION || '')+\n                  '</li>'+\n                '</ul>'+\n              '</li>').appendTo($(\"#provision_flow_templates_ul\"));\n\n            $(\".provision-pricing-table\", li).data(\"opennebula\", aData);\n\n            return nRow;\n          }\n        });\n\n        $('#provision_create_flow_template_search').on('keyup',function(){\n          provision_flow_templates_datatable.fnFilter( $(this).val() );\n        })\n\n        $('#provision_create_flow_template_search').on('change',function(){\n          provision_flow_templates_datatable.fnFilter( $(this).val() );\n        })\n\n        $(\"#provision_create_flow_template_refresh_button\").click(function(){\n          OpenNebula.Action.clear_cache(\"SERVICE_TEMPLATE\");\n          update_provision_flow_templates_datatable(provision_flow_templates_datatable);\n\n        });\n\n        tab.on(\"click\", \".provision_select_flow_template .provision-pricing-table.only-one\" , function(){\n          var context = $(\"#provision_create_flow\");\n\n          if ($(this).hasClass(\"selected\")){\n            $(\"#provision_customize_flow_template\").hide();\n            $(\"#provision_customize_flow_template\").html(\"\");\n            $(\".provision_network_selector\", context).html(\"\")\n            $(\".provision_custom_attributes_selector\", context).html(\"\")\n\n            $(\".provision_accordion_flow_template .selected_template\").hide();\n            $(\".provision_accordion_flow_template .select_template\").show();\n          } else {\n            $(\"#provision_customize_flow_template\").show();\n            $(\"#provision_customize_flow_template\").html(\"\");\n\n            var data = $(this).data(\"opennebula\");\n            var body = data.DOCUMENT.TEMPLATE.BODY;\n\n            $(\".provision_accordion_flow_template .selected_template\").show();\n            $(\".provision_accordion_flow_template .select_template\").hide();\n            $(\".provision_accordion_flow_template .selected_template_name\").html(body.name)\n            $(\".provision_accordion_flow_template .selected_template_logo\").html('<i class=\"fa fa-cubes fa-lg\"/>&emsp;');\n            $(\".provision_accordion_flow_template a\").first().trigger(\"click\");\n\n            var context = $(\"#provision_create_flow\");\n\n            if (body.custom_attrs) {\n              var network_attrs = [];\n              var text_attrs = [];\n\n              $.each(body.custom_attrs, function(key, value){\n                var parts = value.split(\"|\");\n                // 0 mandatory; 1 type; 2 desc;\n                var attrs = {\n                  \"name\": key,\n                  \"mandatory\": parts[0],\n                  \"type\": parts[1],\n                  \"description\": parts[2],\n                }\n\n                switch (parts[1]) {\n                  case \"vnet_id\":\n                    network_attrs.push(attrs)\n                    break;\n                  case \"text\":\n                    text_attrs.push(attrs)\n                    break;\n                  case \"password\":\n                    text_attrs.push(attrs)\n                    break;\n                }\n              })\n\n              if (network_attrs.length > 0) {\n                generate_provision_network_accordion(\n                  $(\".provision_network_selector\", context), true);\n\n                $.each(network_attrs, function(index, vnet_attr){\n                  generate_provision_network_table(\n                    $(\".provision_nic_accordion\", context),\n                    null,\n                    vnet_attr);\n                });\n              }\n\n              //if (text_attrs.length > 0) {\n              //  generate_custom_attrs(\n              //    $(\".provision_custom_attributes_selector\", context),\n              //    text_attrs);\n              //}\n            } else {\n              $(\".provision_network_selector\", context).html(\"\")\n              $(\".provision_custom_attributes_selector\", context).html(\"\")\n            }\n\n            $.each(body.roles, function(index, role){\n              var context = $('<div id=\"provision_create_flow_role_'+index+'\" class=\"provision_create_flow_role\">'+\n                '<div class=\"row\">'+\n                  '<div class=\"large-10 large-centered columns\">'+\n                    '<h2 class=\"subheader\">'+\n                      '<i class=\"fa fa-cube fa-lg\"></i>&emsp;'+\n                      role.name+\n                    '</h2>'+\n                    '<br>'+\n                  '</div>'+\n                '</div>'+\n                '<div class=\"row\">'+\n                  '<div class=\"provision_cardinality_selector large-9 large-centered columns\">'+\n                  '</div>'+\n                '</div>'+\n                '<br>'+\n                '<div class=\"row\">'+\n                  '<div class=\"provision_custom_attributes_selector large-9 large-centered columns\">'+\n                  '</div>'+\n                '</div>'+\n              '</div>'+\n              '<br>'+\n              '<br>').appendTo($(\"#provision_customize_flow_template\"))\n\n              context.data(\"opennebula\", role);\n\n              var template_id = role.vm_template;\n              var role_html_id = \"#provision_create_flow_role_\"+index;\n\n              OpenNebula.Template.show({\n                data : {\n                    id: template_id\n                },\n                success: function(request,template_json){\n                  var role_context = $(role_html_id)\n\n                  generate_cardinality_selector(\n                    $(\".provision_cardinality_selector\", context),\n                    role,\n                    template_json);\n\n                  if (template_json.VMTEMPLATE.TEMPLATE.USER_INPUTS) {\n                    generate_custom_attrs(\n                      $(\".provision_custom_attributes_selector\", role_context),\n                      template_json.VMTEMPLATE.TEMPLATE.USER_INPUTS);\n                  } else {\n                    $(\".provision_custom_attributes_selector\", role_context).html(\"\");\n                  }\n                }\n              })\n\n\n            })\n\n            $(document).foundation();\n          }\n        })\n\n        tab.on(\"click\", \"#provision_create_flow .provision-pricing-table.only-one\" , function(){\n          if ($(this).hasClass(\"selected\")){\n            $(this).removeClass(\"selected\");\n          } else {\n            $(\".provision-pricing-table\", $(this).parents(\".large-block-grid-3,.large-block-grid-2\")).removeClass(\"selected\")\n            $(this).addClass(\"selected\");\n          }\n        })\n\n        $(\"#provision_create_flow\").submit(function(){\n          var context = $(this);\n\n          var flow_name = $(\"#flow_name\", context).val();\n          var template_id = $(\".provision_select_flow_template .selected\", context).attr(\"opennebula_id\");\n\n          if (!template_id) {\n            $(\".alert-box-error\", context).fadeIn().html(Locale.tr(\"You must select at least a template configuration\"));\n            return false;\n          }\n\n          var custom_attrs = {}\n          var missing_network = false;\n          if ($(\".provision_nic_accordion\", context)) {\n            $(\".selected_network\", $(\".provision_nic_accordion\", context)).each(function(){\n              if (!$(this).attr(\"opennebula_id\")) {\n                $(this).css(\"color\", \"red\");\n                missing_network = true;\n              } else {\n                $(this).css(\"color\", \"#777\");\n                custom_attrs[$(this).attr(\"attr_name\")] = $(this).attr(\"opennebula_id\");\n              }\n            })\n          }\n\n          if (missing_network) {\n            $(\".alert-box-error\", context).fadeIn().html(Locale.tr(\"You have not specified all the Networks for this Service\"));\n            return false;\n          }\n\n          var roles = [];\n          var missing_attr = false;\n\n          $(\".provision_create_flow_role\", context).each(function(){\n            var user_inputs_values = {};\n            if ($(\".provision_custom_attributes\", $(this))) {\n              $(\".provision_custom_attribute\", $(\".provision_custom_attributes\", $(this))).each(function(){\n                if (!$(this).val()) {\n                  $(this).parent(\"label\").css(\"color\", \"red\");\n                  missing_attr = true;\n                } else {\n                  $(this).parent(\"label\").css(\"color\", \"#777\");\n                  user_inputs_values[$(this).attr(\"attr_name\")] = $(this).val();\n                }\n              })\n            }\n\n            var role_template = $(this).data(\"opennebula\");\n\n            $.each(role_template.elasticity_policies, function(i, pol){\n                pol.expression = htmlDecode(pol.expression);\n            });\n\n            roles.push($.extend(role_template, {\n              \"cardinality\": $(\".cardinality_value\", $(this)).text(),\n              \"user_inputs_values\": user_inputs_values\n            }));\n          })\n\n          var extra_info = {\n            'merge_template': {\n              \"name\" : flow_name,\n              \"roles\" : roles,\n              \"custom_attrs_values\": custom_attrs\n            }\n          }\n\n          if (missing_attr) {\n            $(\".alert-box-error\", $(this)).fadeIn().html(Locale.tr(\"You have not specified all the Custom Atrributes for this Service\"));\n            return false;\n          }\n\n          Sunstone.runAction(\"Provision.Flow.instantiate\", template_id, extra_info);\n          return false;\n        })\n\n        $(\".provision_create_flow_button\").on(\"click\", function(){\n          show_provision_create_flow();\n        });\n\n        //\n        // Group Info\n        //\n\n\n        $(\"#provision_vdc_info_button\").on(\"click\", function(){\n          OpenNebula.Action.clear_cache(\"GROUP\");\n          show_provision_vdc_info();\n        });\n\n        //\n        // Create User\n        //\n\n        var context = $(\"#provision_create_user\");\n\n        ProvisionQuotaWidget.setup(context);\n\n        // Workaround to fix sliders. Apparently the setup fails while they are hidden\n        $('a[href=\"#provision_create_user_manual_quota\"]', context).on(\"click\", function(){\n          $(\".provision_rvms_quota_input\", context).change();\n          $(\".provision_memory_quota_input\", context).change();\n          $(\".provision_memory_quota_tmp_input\", context).change();\n          $(\".provision_cpu_quota_input\", context).change();\n        });\n\n        $(\"#provision_create_user\").submit(function(){\n          var context = $(this);\n\n          var username = $(\"#username\", context).val();\n          var password = $(\"#password\", context).val();\n          var repeat_password = $(\"#repeat_password\", context).val();\n\n          // TODO driver\n          var driver = 'core';\n\n          if (!username.length || !password.length){\n            $(\".alert-box-error\", context).fadeOut();\n            $(\".alert-box-error\", context).fadeIn().html(Locale.tr(\"You have to provide a username and password\"));\n            return false;\n          }\n\n          if (password !== repeat_password){\n            $(\".alert-box-error\", context).fadeOut();\n            $(\".alert-box-error\", context).fadeIn().html(Locale.tr(\"Passwords do not match\"));\n            return false;\n          }\n\n          var user_json = { \"user\" :\n                            { \"name\" : username,\n                              \"password\" : password,\n                              \"auth_driver\" : driver\n                            }\n                          };\n\n          Sunstone.runAction(\"Provision.User.create\",user_json);\n          $(\".alert-box-error\", context).html('<div class=\"text-center\">'+\n            '<span class=\"fa-stack fa-5x\" style=\"color: #dfdfdf\">'+\n              '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n              '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>'+\n            '</span>'+\n            '<br>'+\n            '<br>'+\n            '<span style=\"font-size: 18px; color: #999\">'+\n            '</span>'+\n            '</div>');\n\n          return false;\n        });\n\n        $(document).on(\"click\", \".provision_create_user_button\", function(){\n          show_provision_create_user();\n        });\n      }\n    });\n  }\n\n});\n","define('tabs/users-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"User.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"User.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"User.update_password\" : {\n      type : \"action\",\n      layout: \"main_buttons\",\n      text : Locale.tr(\"Password\")\n    },\n    \"User.change_authentication\" : {\n      type : \"action\",\n      layout: \"main_buttons\",\n      text : Locale.tr(\"Auth\")\n    },\n    \"User.quotas_dialog\" : {\n      type : \"action\",\n      layout: \"main_buttons\",\n      text : Locale.tr(\"Quotas\")\n    },\n    \"User.chgrp\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change group\"),\n      layout: \"user_select\",\n      select: \"Group\",\n      tip: Locale.tr(\"This will change the main group of the selected users. Select the new group\")+\":\"\n    },\n    \"User.addgroup\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Add to group\"),\n      layout: \"user_select\",\n      select: \"Group\",\n      tip: Locale.tr(\"This will add the user to a secondary group. Select the new group\")+\":\"\n    },\n    \"User.delgroup\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Remove from group\"),\n      layout: \"user_select\",\n      select: \"Group\",\n      tip: Locale.tr(\"This will remove the user from a secondary group. Select the group\")+\":\"\n    },\n    \"User.delete\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Delete\"),\n      layout: \"del\"\n    }\n  };\n\n  return Buttons;\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/tab-datatable/empty-table',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"text-center\\\" style=\\\"font-size: 18px; color: #999\\\">\\n  <br>\\n  <span class=\\\"fa-stack fa-3x\\\" style=\\\"color: #dfdfdf\\\"> \\n    <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i> \\n    <i class=\\\"fa fa-info-circle fa-stack-1x fa-inverse\\\"></i>\\n  </span>\\n  <br>\\n  <span style=\\\" color: #999\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"There is no data available\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n</div>\\n<br>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/tab-datatable/empty-table', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n",";(function ($, window, document, undefined) {\n  'use strict';\n\n  Foundation.libs.tooltip = {\n    name : 'tooltip',\n\n    version : '5.5.1',\n\n    settings : {\n      additional_inheritable_classes : [],\n      tooltip_class : '.tooltip',\n      append_to : 'body',\n      touch_close_text : 'Tap To Close',\n      disable_for_touch : false,\n      hover_delay : 0,\n      show_on : 'all',\n      tip_template : function (selector, content) {\n        return '<span data-selector=\"' + selector + '\" id=\"' + selector + '\" class=\"'\n          + Foundation.libs.tooltip.settings.tooltip_class.substring(1)\n          + '\" role=\"tooltip\">' + content + '<span class=\"nub\"></span></span>';\n      }\n    },\n\n    cache : {},\n\n    init : function (scope, method, options) {\n      Foundation.inherit(this, 'random_str');\n      this.bindings(method, options);\n    },\n\n    should_show : function (target, tip) {\n      var settings = $.extend({}, this.settings, this.data_options(target));\n\n      if (settings.show_on === 'all') {\n        return true;\n      } else if (this.small() && settings.show_on === 'small') {\n        return true;\n      } else if (this.medium() && settings.show_on === 'medium') {\n        return true;\n      } else if (this.large() && settings.show_on === 'large') {\n        return true;\n      }\n      return false;\n    },\n\n    medium : function () {\n      return matchMedia(Foundation.media_queries['medium']).matches;\n    },\n\n    large : function () {\n      return matchMedia(Foundation.media_queries['large']).matches;\n    },\n\n    events : function (instance) {\n      var self = this,\n          S = self.S;\n\n      self.create(this.S(instance));\n\n      $(this.scope)\n        .off('.tooltip')\n        .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip',\n          '[' + this.attr_name() + ']', function (e) {\n          var $this = S(this),\n              settings = $.extend({}, self.settings, self.data_options($this)),\n              is_touch = false;\n\n          if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) {\n            return false;\n          }\n\n          if (/mouse/i.test(e.type) && self.ie_touch(e)) {\n            return false;\n          }\n\n          if ($this.hasClass('open')) {\n            if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {\n              e.preventDefault();\n            }\n            self.hide($this);\n          } else {\n            if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {\n              return;\n            } else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {\n              e.preventDefault();\n              S(settings.tooltip_class + '.open').hide();\n              is_touch = true;\n            }\n\n            if (/enter|over/i.test(e.type)) {\n              this.timer = setTimeout(function () {\n                var tip = self.showTip($this);\n              }.bind(this), self.settings.hover_delay);\n            } else if (e.type === 'mouseout' || e.type === 'mouseleave') {\n              clearTimeout(this.timer);\n              self.hide($this);\n            } else {\n              self.showTip($this);\n            }\n          }\n        })\n        .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) {\n          if (/mouse/i.test(e.type) && self.ie_touch(e)) {\n            return false;\n          }\n\n          if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {\n            return;\n          } else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {\n            self.convert_to_touch($(this));\n          } else {\n            self.hide($(this));\n          }\n        })\n        .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) {\n          self.hide(S(this));\n        });\n    },\n\n    ie_touch : function (e) {\n      // How do I distinguish between IE11 and Windows Phone 8?????\n      return false;\n    },\n\n    showTip : function ($target) {\n      var $tip = this.getTip($target);\n      if (this.should_show($target, $tip)) {\n        return this.show($target);\n      }\n      return;\n    },\n\n    getTip : function ($target) {\n      var selector = this.selector($target),\n          settings = $.extend({}, this.settings, this.data_options($target)),\n          tip = null;\n\n      if (selector) {\n        tip = this.S('span[data-selector=\"' + selector + '\"]' + settings.tooltip_class);\n      }\n\n      return (typeof tip === 'object') ? tip : false;\n    },\n\n    selector : function ($target) {\n      var id = $target.attr('id'),\n          dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');\n\n      if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') {\n        dataSelector = this.random_str(6);\n        $target\n          .attr('data-selector', dataSelector)\n          .attr('aria-describedby', dataSelector);\n      }\n\n      return (id && id.length > 0) ? id : dataSelector;\n    },\n\n    create : function ($target) {\n      var self = this,\n          settings = $.extend({}, this.settings, this.data_options($target)),\n          tip_template = this.settings.tip_template;\n\n      if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) {\n        tip_template = window[settings.tip_template];\n      }\n\n      var $tip = $(tip_template(this.selector($target), $('<div></div>').html($target.attr('title')).html())),\n          classes = this.inheritable_classes($target);\n\n      $tip.addClass(classes).appendTo(settings.append_to);\n\n      if (Modernizr.touch) {\n        $tip.append('<span class=\"tap-to-close\">' + settings.touch_close_text + '</span>');\n        $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) {\n          self.hide($target);\n        });\n      }\n\n      $target.removeAttr('title').attr('title', '');\n    },\n\n    reposition : function (target, tip, classes) {\n      var width, nub, nubHeight, nubWidth, column, objPos;\n\n      tip.css('visibility', 'hidden').show();\n\n      width = target.data('width');\n      nub = tip.children('.nub');\n      nubHeight = nub.outerHeight();\n      nubWidth = nub.outerHeight();\n\n      if (this.small()) {\n        tip.css({'width' : '100%'});\n      } else {\n        tip.css({'width' : (width) ? width : 'auto'});\n      }\n\n      objPos = function (obj, top, right, bottom, left, width) {\n        return obj.css({\n          'top' : (top) ? top : 'auto',\n          'bottom' : (bottom) ? bottom : 'auto',\n          'left' : (left) ? left : 'auto',\n          'right' : (right) ? right : 'auto'\n        }).end();\n      };\n\n      objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', target.offset().left);\n\n      if (this.small()) {\n        objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', 12.5, $(this.scope).width());\n        tip.addClass('tip-override');\n        objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left);\n      } else {\n        var left = target.offset().left;\n        if (Foundation.rtl) {\n          nub.addClass('rtl');\n          left = target.offset().left + target.outerWidth() - tip.outerWidth();\n        }\n        objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', left);\n        tip.removeClass('tip-override');\n        if (classes && classes.indexOf('tip-top') > -1) {\n          if (Foundation.rtl) {\n            nub.addClass('rtl');\n          }\n          objPos(tip, (target.offset().top - tip.outerHeight()), 'auto', 'auto', left)\n            .removeClass('tip-override');\n        } else if (classes && classes.indexOf('tip-left') > -1) {\n          objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left - tip.outerWidth() - nubHeight))\n            .removeClass('tip-override');\n          nub.removeClass('rtl');\n        } else if (classes && classes.indexOf('tip-right') > -1) {\n          objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left + target.outerWidth() + nubHeight))\n            .removeClass('tip-override');\n          nub.removeClass('rtl');\n        }\n      }\n\n      tip.css('visibility', 'visible').hide();\n    },\n\n    small : function () {\n      return matchMedia(Foundation.media_queries.small).matches &&\n        !matchMedia(Foundation.media_queries.medium).matches;\n    },\n\n    inheritable_classes : function ($target) {\n      var settings = $.extend({}, this.settings, this.data_options($target)),\n          inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes),\n          classes = $target.attr('class'),\n          filtered = classes ? $.map(classes.split(' '), function (el, i) {\n            if ($.inArray(el, inheritables) !== -1) {\n              return el;\n            }\n          }).join(' ') : '';\n\n      return $.trim(filtered);\n    },\n\n    convert_to_touch : function ($target) {\n      var self = this,\n          $tip = self.getTip($target),\n          settings = $.extend({}, self.settings, self.data_options($target));\n\n      if ($tip.find('.tap-to-close').length === 0) {\n        $tip.append('<span class=\"tap-to-close\">' + settings.touch_close_text + '</span>');\n        $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) {\n          self.hide($target);\n        });\n      }\n\n      $target.data('tooltip-open-event-type', 'touch');\n    },\n\n    show : function ($target) {\n      var $tip = this.getTip($target);\n\n      if ($target.data('tooltip-open-event-type') == 'touch') {\n        this.convert_to_touch($target);\n      }\n\n      this.reposition($target, $tip, $target.attr('class'));\n      $target.addClass('open');\n      $tip.fadeIn(150);\n    },\n\n    hide : function ($target) {\n      var $tip = this.getTip($target);\n\n      $tip.fadeOut(150, function () {\n        $tip.find('.tap-to-close').remove();\n        $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose');\n        $target.removeClass('open');\n      });\n    },\n\n    off : function () {\n      var self = this;\n      this.S(this.scope).off('.fndtn.tooltip');\n      this.S(this.settings.tooltip_class).each(function (i) {\n        $('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text());\n      }).remove();\n    },\n\n    reflow : function () {}\n  };\n}(jQuery, window, window.document));\n\ndefine(\"foundation.tooltip\", [\"foundation.core\"], function(){});\n\n","define('utils/tips',['require','foundation.tooltip'],function(require) {\n  require('foundation.tooltip');\n  //Replaces all class\"tip\" divs with an information icon that\n  //displays the tip information on mouseover.\n  var _setup = function(context, position) {\n    //For each tip in this context\n    $('.tip', context).each(function() {\n      var obj = $(this);\n      obj.removeClass('tip');\n      var tip = obj.html();\n\n      var tip_classes = ['has-tip']\n      if (position) {\n        tip_classes.push(position)\n      }\n      //replace the text with an icon and spans\n      obj.html('<span data-tooltip class=\"' + tip_classes.join(' ') + '\" data-width=\"210\" title=\"' + tip + '\"><i class=\"fa fa-question-circle\"></i></span>');\n    });\n    $(document).foundation('reflow', 'tooltip');\n  }\n\n  return {\n    'setup': _setup\n  }\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/tab-datatable/table',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"  <div class=\\\"row\\\">\\n    <div class=\\\"large-8 small-2 columns\\\">\\n      <a id=\\\"refresh_button_\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" href=\\\"#\\\" class=\\\"button small radius secondary\\\"> <i class=\\\"fa fa-refresh\\\" /></a>\\n    </div>\\n    <div class=\\\"large-4 small-10 columns\\\">\\n      <input id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_search\\\" class=\\\"search\\\" type=\\\"search\\\" placeholder=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Search\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\"/>\\n    </div>\\n  </div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var lambda=this.lambda, escapeExpression=this.escapeExpression;\n  return \"        <th>\"\n    + escapeExpression(lambda(depth0, depth0))\n    + \"</th>\\n\";\n},\"5\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda;\n  return \"  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\" id=\\\"selected_ids_row_\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n      <label for=\\\"selected_resource_id_\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"select_resource_\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radius secondary label\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.selectOptions : depth0)) != null ? stack1.select_resource : stack1), depth0))\n    + \"</label>\\n      <span id=\\\"selected_resource_\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radius secondary label\\\" style=\\\"display: none;\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.selectOptions : depth0)) != null ? stack1.you_selected : stack1), depth0))\n    + \"</span>\\n      <span id=\\\"select_resource_multiple_\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radius secondary label\\\" style=\\\"display: none;\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.selectOptions : depth0)) != null ? stack1.select_resource_multiple : stack1), depth0))\n    + \"</span>\\n      <span id=\\\"selected_resource_multiple_\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radius secondary label\\\" style=\\\"display: none;\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.selectOptions : depth0)) != null ? stack1.you_selected_multiple : stack1), depth0))\n    + \"</span>\\n      <input id=\\\"selected_resource_id_\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"text\\\"/>\\n      <span id=\\\"selected_resource_name_\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radius label\\\" type=\\\"text\\\"></span>\\n    </div>\\n  </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Container\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.conf : depth0)) != null ? stack1.select : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  <table id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dataTableId || (depth0 != null ? depth0.dataTableId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"datatable twelve\\\">\\n    <thead>\\n      <tr>\\n        <th class=\\\"check\\\">\\n          <input type=\\\"checkbox\\\" class=\\\"check_all\\\" value=\\\"\\\"/>\\n        </th>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.columns : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"      </tr>\\n    </thead>\\n    <tbody></tbody>\\n  </table>\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.conf : depth0)) != null ? stack1.select : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(5, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/tab-datatable/table', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/tab-datatable/search-input',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<input id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dataTableSearchId || (depth0 != null ? depth0.dataTableSearchId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dataTableSearchId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"search\\\" placeholder=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Search\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" />\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/tab-datatable/search-input', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('utils/tab-datatable',['require','foundation-datatables','hbs!./tab-datatable/empty-table','sunstone','sunstone-config','utils/locale','utils/tips','opennebula','utils/notifier','hbs!./tab-datatable/table','hbs!./tab-datatable/search-input'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation-datatables');\n  var TemplateEmptyTable = require('hbs!./tab-datatable/empty-table');\n  var Sunstone = require('sunstone');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var OpenNebula = require('opennebula');\n  var Notifier = require('utils/notifier');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateDataTableHTML = require('hbs!./tab-datatable/table');\n  var TemplateSearchInputHTML = require('hbs!./tab-datatable/search-input');\n\n  /*\n    CONSTANTS\n   */\n  \n  var SPINNER = '<img src=\"images/ajax-loader.gif\" alt=\"retrieving\" class=\"loading_img\"/>';\n\n  /*\n    GLOBAL INITIALIZATION\n   */\n  \n  /* Set the defaults for DataTables initialisation */\n  $.extend(true, $.fn.dataTable.defaults, {\n    dom: \"t<'row collapse'<'small-6 columns'i><'small-6 columns'lp>>\",\n    renderer: 'foundation',\n    language: {\n      \"sLengthMenu\": \"_MENU_\",\n      \"emptyTable\": TemplateEmptyTable()\n    }\n  });\n\n  /*\n    CONSTRUCTOR\n   */\n\n  /* Child class must define:\n    this.dataTableId\n    this.resource\n    this.dataTableOptions\n    this.columns\n    this.conf = {\n      'info': true,     enable on click row will show the element\n      'action': true,   enable actions on row elements\n      'select': true,   enable selecting elements from the table\n      'selectOptions': {\n        'filter_fn': function(ds) { return ds.TYPE == 0; }\n      }\n      'customTabContext': jquery selector used when the datatable has associated\n                          buttons. By default it will be the parent tab\n      'customTrListener': function executed when a tr is clicked. Arguments\n                          are (tableObj, tr)\n    }\n\n    1. The table HTML is returned calling the table.dataTableHTML attr\n    2. The table must be initialized after including it in the DOM,\n        using the table.initilize() method\n    3. After that all the methods can be called on the table,\n        depending on the functionalities enabled (info, action, select)\n  */\n  function TabDatatable() {\n    var that = this;\n    if (that.conf.select) {\n      if (!that.selectOptions.select_resource) {\n        that.selectOptions.select_resource = Locale.tr(\"Please select a resource from the list\");\n      }\n\n      if (!that.selectOptions.you_selected) {\n        that.selectOptions.you_selected = Locale.tr(\"You selected the following resource:\");\n      }\n\n      if (that.selectOptions.id_index == undefined) {\n        that.selectOptions.id_index = 0;\n      }\n\n      $.extend(that.selectOptions, that.conf.selectOptions);\n\n      that.selectOptions.fixed_ids_map_orig = {};\n      if (that.selectOptions.fixed_ids != undefined) {\n        $.each(that.selectOptions.fixed_ids, function() {\n          that.selectOptions.fixed_ids_map_orig[this] = true;\n        });\n      }\n\n      that.selectOptions.starred_ids_map = {};\n      if (that.selectOptions.starred_ids != undefined) {\n        $.each(that.selectOptions.starred_ids, function() {\n          that.selectOptions.starred_ids_map[this] = true;\n        });\n      }\n\n      if (that.selectOptions.multiple_choice == undefined) {\n        that.selectOptions.multiple_choice = false;\n      }\n    }\n    \n    that.dataTableHTML = TemplateDataTableHTML({\n                          'dataTableId': this.dataTableId, \n                          'columns': this.columns,\n                          'conf': this.conf,\n                          'selectOptions': this.selectOptions});\n\n    that.searchInputHTML = TemplateSearchInputHTML({'dataTableSearchId': this.dataTableId + 'Search'});\n\n    return that;\n  }\n\n  TabDatatable.prototype = {\n    'initialize': _initialize,\n    'initCheckAllBoxes': _initCheckAllBoxes,\n    'tableCheckboxesListener': _tableCheckboxesListener,\n    'onlyOneCheckboxListener': _onlyOneCheckboxListener,\n    'infoListener': _infoListener,\n    'addElement': _addElement,\n    'deleteElement': _deleteElement,\n    'updateElement': _updateElement,\n    'elements': _elements,\n    'updateView': _updateView,\n    'getElementData': _getElementData,\n    'waitingNodes': _waitingNodes,\n    'recountCheckboxes': _recountCheckboxes,\n    'filter': _filter,\n    'resetResourceTableSelect': _resetResourceTableSelect,\n    'refreshResourceTableSelect': _refreshResourceTableSelect,\n    'selectResourceTableSelect': _selectResourceTableSelect,\n    'retrieveResourceTableSelect': _retrieveResourceTableSelect,\n    'idInput': _idInput,\n    'initSelectResourceTableSelect': _initSelectResourceTableSelect,\n    'updateFn': _updateFn,\n    'list': _list\n  }\n\n  return TabDatatable;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _initialize(opts) {\n    this.dataTable = $('#' + this.dataTableId).dataTable(this.dataTableOptions);\n\n    var that = this; \n    $('#' + this.dataTableId + 'Search').keyup(function() {\n      that.dataTable.fnFilter($(this).val());\n    })\n\n    this.dataTable.on('draw', function() {\n      that.recountCheckboxes();\n    })\n\n    this.dataTable.fnSort([[1, SunstoneConfig.tableOrder]]);\n\n    if (this.conf.actions) {\n      this.initCheckAllBoxes();\n      this.tableCheckboxesListener();\n    }\n\n    if (this.conf.oneSelection == true) {\n      this.onlyOneCheckboxListener();\n    }\n\n    if (this.conf.info) {\n      this.infoListener(_defaultTrListener);\n    } else if (this.conf.customTrListener) {\n      this.infoListener(this.conf.customTrListener);\n    } else {\n      this.infoListener();\n    }\n\n    if (this.conf.select) {\n      if (opts && opts.selectOptions) {\n        $.extend(this.selectOptions, opts.selectOptions);\n      }\n\n      this.initSelectResourceTableSelect();\n    }\n  }\n\n  function _defaultTrListener(tableObj, tr) {\n    var aData = tableObj.dataTable.fnGetData(tr);\n    if (!aData) return true;\n    var id = $(aData[0]).val();\n    if (!id) return true;\n\n    Sunstone.showElement(tableObj.tabId, tableObj.resource + \".show\", id);\n\n    return false;\n  }\n\n  //Shows run a custom action when clicking on rows.\n  function _infoListener(info_action) {\n    var that = this;\n    this.dataTable.on(\"click\", 'tbody tr', function(e) {\n      if ($(e.target).is('input') || $(e.target).is('select') || $(e.target).is('option')) {\n        return true;\n      }\n\n      if (info_action) {\n        //If ctrl is hold down, make check_box click\n        if (e.ctrlKey || e.metaKey || $(e.target).is('input')) {\n          $('.check_item', this).trigger('click');\n        } else {\n          info_action(that, this);\n        }\n      } else {\n        $('.check_item', this).trigger('click');\n      }\n\n      return false;\n    });\n  }\n\n  //call back for actions creating a zone element\n  function _addElement(request, element_json) {\n    var element = this.elementArray(element_json);\n    this.dataTable.fnAddData(element);\n  }\n\n  //deletes an element with id 'tag' from a dataTable\n  function _deleteElement(req) {\n    var tag = '#' + this.resource.toLowerCase() + '_' + req.request.data;\n    var tr = $(tag, this.dataTable).parents('tr')[0];\n    this.dataTable.fnDeleteRow(tr);\n    this.recountCheckboxes();\n\n    var tab = this.dataTable.parents(\".tab\");\n    if (Sunstone.rightInfoVisible(tab)) {\n      $(\"a[href='back']\", tab).click();\n    }\n  }\n\n  //Add a listener to the check-all box of a datatable, enabling it to\n  //check and uncheck all the checkboxes of its elements.\n  function _initCheckAllBoxes() {\n    var that = this;\n    this.dataTable.on(\"change\", '.check_all', function() {\n      var table = $(this).closest('.dataTables_wrapper');\n      if ($(this).is(\":checked\")) { //check all\n        $('tbody input.check_item', table).prop('checked', true);\n        $('td', table).addClass('markrowchecked');\n      } else { //uncheck all\n        $('tbody input.check_item', table).prop('checked', false);\n        $('td', table).removeClass('markrowchecked');\n      };\n\n      that.recountCheckboxes();\n    });\n  }\n\n  //Handle the activation of action buttons and the check_all box\n  //when elements in a datatable are modified.\n  function _recountCheckboxes() {\n    var table = $('tbody', this.dataTable);\n\n    var context;\n    if (this.conf.customTabContext) {\n      context = this.conf.customTabContext;\n    } else {\n      context = table.parents('.tab');\n      if ($(\".right-info\", context).is(':visible')) {\n        return;\n      }\n    }\n\n    var nodes = $('tr', table); //visible nodes\n    var total_length = nodes.length;\n    var checked_length = $('input.check_item:checked', nodes).length;\n    var last_action_b = $('.last_action_button', context);\n\n    if (checked_length) { //at least 1 element checked\n      //enable action buttons\n      $('.top_button, .list_button', context).prop('disabled', false);\n\n      //enable checkall box\n      if (total_length == checked_length) {\n        $('.check_all', this.dataTable).prop('checked', true);\n      } else {\n        $('.check_all', this.dataTable).prop('checked', false);\n      };\n    } else { //no elements cheked\n      //disable action buttons, uncheck checkAll\n      $('.check_all', this.dataTable).prop('checked', false);\n      $('.top_button, .list_button', context).prop('disabled', true).attr('disabled', 'disabled');\n    };\n\n    //any case the create dialog buttons should always be enabled.\n    $('.create_dialog_button', context).prop('disabled', false);\n    $('.alwaysActive', context).prop('disabled', false);\n  }\n\n  //Init action buttons and checkboxes listeners\n  function _tableCheckboxesListener() {\n    //Initialization - disable all buttons\n    var context = this.conf.customTabContext || this.dataTable.parents('.tab');\n\n    $('.last_action_button', context).prop('disabled', true);\n    $('.top_button, .list_button', context).prop('disabled', true);\n    //These are always enabled\n    $('.create_dialog_button', context).prop('disabled', false);\n    $('.alwaysActive', context).prop('disabled', false);\n\n    //listen to changes in the visible inputs\n    var that = this;\n    this.dataTable.on(\"change\", 'tbody input.check_item', function() {\n      var datatable = $(this).parents('table');\n\n      if ($(this).is(\":checked\")) {\n        $(this).parents('tr').children().addClass('markrowchecked');\n      } else {\n        $(this).parents('tr').children().removeClass('markrowchecked');\n      }\n\n      that.recountCheckboxes();\n    });\n  }\n\n  /*\n   * onlyOneCheckboxListener: Only one box can be checked\n   */\n\n  function _onlyOneCheckboxListener() {\n    var that = this;\n    this.dataTable.on(\"change\", 'tbody input.check_item', function() {\n      var checked = $(this).is(':checked');\n      $('td', that.dataTable).removeClass('markrowchecked');\n      $('input.check_item:checked', that.dataTable).prop('checked', false);\n      $(\"td\", $(this).closest('tr')).addClass('markrowchecked')\n      $(this).prop('checked', checked);\n    });\n  }\n\n  // Updates a data_table, with a 2D array containing the new values\n  // Does a partial redraw, so the filter and pagination are kept\n  // fromArray if true do not process the list since it is already an array of elements\n  function _updateView(request, list, fromArray) {\n    var selected_row_id = null;\n    var checked_row_ids = new Array();\n    var that = this;\n\n    if (that.preUpdateView) {\n      that.preUpdateView();\n    }\n\n    var row_id_index = this.dataTable.attr(\"row_id\");\n\n    if (row_id_index != undefined) {\n      $.each($(this.dataTable.fnGetNodes()), function() {\n        if ($('td.markrow', this).length != 0) {\n          var aData = that.dataTable.fnGetData(this);\n\n          selected_row_id = aData[row_id_index];\n\n        }\n      });\n    }\n\n    $.each($(this.dataTable.fnGetNodes()), function() {\n      if ($('td.markrowchecked', this).length != 0) {\n        if (!isNaN($($('td', $(this))[1]).html())) {\n          checked_row_ids.push($($('td', $(this))[1]).html());\n        } else {\n          checked_row_ids.push($($('td', $(this))[0]).html());\n        }\n      }\n    });\n\n    // dataTable.fnSettings is undefined when the table has been detached from\n    // the DOM\n\n    if (this.dataTable && this.dataTable.fnSettings()) {\n      var dTable_settings = this.dataTable.fnSettings();\n      var prev_start = dTable_settings._iDisplayStart;\n\n      this.dataTable.fnClearTable(false);\n\n      var item_list;\n      if (fromArray) {\n        item_list = list;\n      } else {\n        item_list = [];\n        $.each(list, function() {\n          var item = that.elementArray(this);\n          if (item){\n            item_list.push(item);\n          }\n        });\n      }\n\n      var that = this;\n      if (item_list.length > 0) {\n        that.dataTable.fnAddData(item_list, false);\n      }\n\n      var new_start = prev_start;\n\n      if (new_start > item_list.length - 1) {\n        if (item_list.length > 0)\n            new_start = item_list.length - 1;\n        else\n            new_start = 0;\n      }\n\n      dTable_settings.iInitDisplayStart = new_start;\n\n      this.dataTable.fnDraw(true);\n    };\n\n    if (selected_row_id != undefined) {\n      $.each($(this.dataTable.fnGetNodes()), function() {\n\n        var aData = that.dataTable.fnGetData(this);\n\n        if (aData[row_id_index] == selected_row_id) {\n          $('td', this)[0].click();\n        }\n      });\n    }\n\n    if (checked_row_ids.length != 0) {\n      $.each($(this.dataTable.fnGetNodes()), function() {\n        var current_id = $($('td', this)[1]).html();\n\n        if (isNaN(current_id)) {\n          current_id = $($('td', this)[0]).html();\n        }\n\n        if (current_id) {\n          if ($.inArray(current_id, checked_row_ids) != -1) {\n            $('input.check_item', this).first().click();\n            $('td', this).addClass('markrowchecked');\n          }\n        }\n      });\n    }\n\n    if (that.postUpdateView) {\n      that.postUpdateView();\n    }\n  }\n\n  //replaces an element with id 'tag' in a dataTable with a new one\n  function _updateElement(request, element_json) {\n    var id = element_json[this.xmlRoot].ID;\n    var element = this.elementArray(element_json);\n    var tag = '#' + this.resource.toLowerCase() + '_' + id;\n    // fnGetData should be used instead, otherwise it depends on the visible columns\n    var nodes = this.dataTable.fnGetNodes();\n    var tr = $(tag, nodes).parents('tr')[0];\n    if (tr) {\n      var checked_val = $('input.check_item', tr).prop('checked');\n      var position = this.dataTable.fnGetPosition(tr);\n      this.dataTable.fnUpdate(element, position, undefined, false);\n      $('input.check_item', tr).prop('checked', checked_val);\n      this.recountCheckboxes();\n    }\n  }\n\n  function _getElementData(id, resource_tag) {\n    var nodes = this.dataTable.fnGetNodes();\n    var tr = $(resource_tag + '_' + id, nodes).parents('tr')[0];\n    return this.dataTable.fnGetData(tr);\n  }\n\n  function _waitingNodes() {\n    $('tr input.check_item:visible', this.dataTable).replaceWith(SPINNER);\n  }\n\n  //returns an array of ids of selected elements in a dataTable\n  function _elements(forceDataTable) {\n    var selected_nodes = [];\n    if (this.dataTable) {\n      var tab = this.dataTable.parents(\".tab\")\n      if (Sunstone.rightInfoVisible(tab) && !forceDataTable) {\n        selected_nodes.push(Sunstone.rightInfoResourceId(tab));\n      } else {\n        //Which rows of the datatable are checked?\n        var nodes = $('tbody input.check_item:checked', this.dataTable);\n        $.each(nodes, function() {\n          selected_nodes.push($(this).val());\n        });\n      }\n    };\n    return selected_nodes;\n  }\n\n  function _filter(value, columnId) {\n    this.dataTable.fnFilter(value, columnId);\n  }\n\n  /*\n    SELECT RESOURCE FUNCTION DEFINITIONS\n   */\n  \n  function _initSelectResourceTableSelect() {\n    var that = this;\n    var section = $('#' + that.dataTableId + 'Container');\n\n    if (that.selectOptions.id_index == undefined) {\n      that.selectOptions.id_index = 0;\n    }\n\n    if (that.selectOptions.name_index == undefined) {\n      that.selectOptions.name_index = 1;\n    }\n\n    if (that.selectOptions.dataTable_options == undefined) {\n      that.selectOptions.dataTable_options = {};\n    }\n\n    if (that.selectOptions.select_callback == undefined) {\n      that.selectOptions.select_callback = function() {};\n    }\n\n    if (that.selectOptions.unselect_callback == undefined) {\n      that.selectOptions.unselect_callback = function() {};\n    }\n\n    if (that.selectOptions.multiple_choice) {\n      that.selectOptions.dataTable_options.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {\n        var row_id = aData[that.selectOptions.id_index];\n\n        var ids = $('#selected_ids_row_' + that.dataTableId, section).data(\"ids\");\n\n        if (ids[row_id]) {\n          $(\"td\", nRow).addClass('markrowchecked');\n          $('input.check_item', this).prop('checked', true);\n        } else {\n          $(\"td\", nRow).removeClass('markrowchecked');\n          $('input.check_item', this).prop('checked', false);\n        }\n      };\n    } else {\n      that.selectOptions.dataTable_options.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {\n        var row_id = aData[that.selectOptions.id_index];\n\n        var selected_id = $('#selected_resource_id_' + that.dataTableId, section).val();\n\n        if (row_id == selected_id) {\n          $(\"td\", nRow).addClass('markrow');\n          $('input.check_item', this).prop('checked', true);\n        } else {\n          $(\"td\", nRow).removeClass('markrow');\n          $('input.check_item', this).prop('checked', false);\n        }\n      };\n    }\n\n    $('#refresh_button_' + that.dataTableId, section).off(\"click\");\n\n    section.on('click', '#refresh_button_' + that.dataTableId, function() {\n      that.updateFn();\n      return false;\n    });\n\n    $('#' + that.dataTableId + '_search', section).keyup(function() {\n      that.dataTable.fnFilter($(this).val());\n    })\n\n    that.dataTable.fnSort([[that.selectOptions.id_index, config['user_config']['table_order']]]);\n\n    if (that.selectOptions.read_only) {\n      $('#selected_ids_row_' + that.dataTableId, section).hide();\n    } else if (that.selectOptions.multiple_choice) {\n      $('#selected_resource_' + that.dataTableId, section).hide();\n      $('#select_resource_' + that.dataTableId, section).hide();\n\n      $('#selected_resource_multiple_' + that.dataTableId, section).hide();\n      $('#select_resource_multiple_' + that.dataTableId, section).show();\n    }\n\n    $('#selected_resource_id_' + that.dataTableId, section).hide();\n    $('#selected_resource_name_' + that.dataTableId, section).hide();\n\n    $('#selected_ids_row_' + that.dataTableId, section).data(\"options\", that.selectOptions);\n\n    if (that.selectOptions.read_only) {\n\n    } else if (that.selectOptions.multiple_choice) {\n      $('#selected_ids_row_' + that.dataTableId, section).data(\"ids\", {});\n\n      function row_click(row, aData) {\n        that.dataTable.unbind(\"draw\");\n\n        var row_id = aData[that.selectOptions.id_index];\n        var row_name = aData[that.selectOptions.name_index];\n\n        var ids = $('#selected_ids_row_' + that.dataTableId, section).data(\"ids\");\n\n        if (ids[row_id]) {\n          delete ids[row_id];\n\n          // Happens if row is not yet rendered (i.e. higher unvisited page)\n          if (row != undefined) {\n            $(\"td\", row).removeClass('markrowchecked');\n            $('input.check_item', row).prop('checked', false);\n          }\n\n          $('#selected_ids_row_' + that.dataTableId + ' span[row_id=\"' + row_id + '\"]', section).remove();\n\n          that.selectOptions.unselect_callback();\n        } else {\n          ids[row_id] = true;\n\n          // Happens if row is not yet rendered (i.e. higher unvisited page)\n          if (row != undefined) {\n            $(\"td\", row).addClass('markrowchecked');\n            $('input.check_item', row).prop('checked', true);\n          }\n\n          $('#selected_ids_row_' + that.dataTableId, section).append('<span row_id=\"' + row_id + '\" class=\"radius label\">' + row_name + ' <span class=\"fa fa-times blue\"></span></span> ');\n\n          that.selectOptions.select_callback(aData, that.selectOptions);\n        }\n\n        if ($.isEmptyObject(ids)) {\n          $('#selected_resource_multiple_' + that.dataTableId, section).hide();\n          $('#select_resource_multiple_' + that.dataTableId, section).show();\n        } else {\n          $('#selected_resource_multiple_' + that.dataTableId, section).show();\n          $('#select_resource_multiple_' + that.dataTableId, section).hide();\n        }\n\n        $('.alert-box', section).hide();\n\n        return true;\n      };\n\n      $('#' + that.dataTableId + ' tbody', section).on(\"click\", \"tr\", function(e) {\n        var aData = that.dataTable.fnGetData(this);\n        row_click(this, aData);\n      });\n\n      $(section).on(\"click\", '#selected_ids_row_' + that.dataTableId + ' span.fa.fa-times', function() {\n        var row_id = $(this).parent(\"span\").attr('row_id');\n\n        var found = false;\n\n        // TODO: improve preformance, linear search\n        $.each(that.dataTable.fnGetData(), function(index, row) {\n          if (row[that.selectOptions.id_index] == row_id) {\n            found = true;\n            row_click(that.dataTable.fnGetNodes(index), row);\n            return false;\n          }\n        });\n\n        if (!found) {\n          var ids = $('#selected_ids_row_' + that.dataTableId, section).data(\"ids\");\n          delete ids[row_id];\n          $('#selected_ids_row_' + that.dataTableId + ' span[row_id=\"' + row_id + '\"]', section).remove();\n\n          if ($.isEmptyObject(ids)) {\n            $('#selected_resource_multiple_' + that.dataTableId, section).hide();\n            $('#select_resource_multiple_' + that.dataTableId, section).show();\n          } else {\n            $('#selected_resource_multiple_' + that.dataTableId, section).show();\n            $('#select_resource_multiple_' + that.dataTableId, section).hide();\n          }\n        }\n\n        that.selectOptions.unselect_callback(aData, that.selectOptions);\n      });\n    } else {\n      $('#' + that.dataTableId + ' tbody', section).delegate(\"tr\", \"click\", function(e) {\n        that.dataTable.unbind(\"draw\");\n        var aData = that.dataTable.fnGetData(this);\n\n        $(\"td.markrow\", that.dataTable).removeClass('markrow');\n        $('tbody input.check_item', that.dataTable).prop('checked', false);\n\n        $('#selected_resource_' + that.dataTableId, section).show();\n        $('#select_resource_' + that.dataTableId, section).hide();\n        $('.alert-box', section).hide();\n\n        $(\"td\", this).addClass('markrow');\n        $('input.check_item', this).prop('checked', true);\n\n        $('#selected_resource_id_' + that.dataTableId, section).val(aData[that.selectOptions.id_index]).change();\n        $('#selected_resource_id_' + that.dataTableId, section).hide();\n\n        $('#selected_resource_name_' + that.dataTableId, section).text(aData[that.selectOptions.name_index]).change();\n        $('#selected_resource_name_' + that.dataTableId, section).show();\n\n        that.selectOptions.select_callback(aData, that.selectOptions);\n\n        return true;\n      });\n    }\n\n    Tips.setup(section);\n  }\n\n  function _resetResourceTableSelect() {\n    var that = this;\n    var section = $('#' + that.dataTableId + 'Container');\n\n    // TODO: do for multiple_choice\n\n    // TODO: works for more than one page?\n\n    $(\"td.markrow\", that.dataTable).removeClass('markrow');\n    $('tbody input.check_item', that.dataTable).prop('checked', false);\n\n    $('#' + that.dataTableId + '_search', section).val(\"\").trigger(\"keyup\");\n    $('#refresh_button_' + that.dataTableId).click();\n\n    $('#selected_resource_id_' + that.dataTableId, section).val(\"\").hide();\n    $('#selected_resource_name_' + that.dataTableId, section).text(\"\").hide();\n\n    $('#selected_resource_' + that.dataTableId, section).hide();\n    $('#select_resource_' + that.dataTableId, section).show();\n  }\n\n  // Returns an ID, or an array of IDs for that.selectOptions.multiple_choice\n  function _retrieveResourceTableSelect() {\n    var that = this;\n    var section = $('#' + that.dataTableId + 'Container');\n\n    if (that.selectOptions.multiple_choice) {\n      var ids = $('#selected_ids_row_' + that.dataTableId, section).data(\"ids\");\n\n      var arr = [];\n\n      $.each(ids, function(key, val) {\n        arr.push(key);\n      });\n\n      return arr;\n    } else {\n      return $('#selected_resource_id_' + that.dataTableId, section).val();\n    }\n  }\n\n  /**\n   * Returns the jquery selector for the ID input. Can be used to add attributes\n   * to it, such as 'wizard_field'\n   * @return {Object} jquery selector for the ID input\n   */\n  function _idInput() {\n    var that = this;\n    var section = $('#' + that.dataTableId + 'Container');\n\n    if (that.selectOptions.multiple_choice) {\n      return $('#selected_ids_row_' + that.dataTableId, section);\n    } else {\n      return $('#selected_resource_id_' + that.dataTableId, section);\n    }\n  }\n\n  // Clicks the refresh button\n  function _refreshResourceTableSelect() {\n    var that = this;\n    var section = $('#' + that.dataTableId + 'Container');\n    $('#refresh_button_' + that.dataTableId, section).click();\n  }\n\n  /**\n   * Clears the current selection, and selects the given IDs\n   * @param  {object} selectedResources Two alternatives, ids or names.\n   *                - selectedResources.ids must be a single ID,\n   *                            or an array of IDs for options.multiple_choice\n   *                - selectedResources.names must be an array of {name, uname}\n   */\n  function _selectResourceTableSelect(selectedResources) {\n    var that = this;\n    var section = $('#' + that.dataTableId + 'Container');\n\n    if (that.selectOptions.multiple_choice) {\n      that.refreshResourceTableSelect(section, that.dataTableId);\n\n      var data_ids = $('#selected_ids_row_' + that.dataTableId, section).data(\"ids\");\n\n      data_ids = {};\n\n      $('#selected_ids_row_' + that.dataTableId + ' span[row_id]', section).remove();\n\n      if (selectedResources.ids == undefined) {\n        selectedResources.ids = [];\n      }\n\n      // TODO: {name, uname} support for multiple_choice\n\n      $.each(selectedResources.ids, function(index, row_id) {\n        if (isNaN(row_id)) {\n          return true;\n        }\n\n        data_ids[row_id] = true;\n\n        var row_name = \"\" + row_id;\n\n        // TODO: improve preformance, linear search. Needed to get the\n        // name of the resource in the label. If function getName() was\n        // indexed in the cache, it could be used here\n        $.each(that.dataTable.fnGetData(), function(index, row) {\n          if (row[that.selectOptions.id_index] == row_id) {\n            row_name = row[that.selectOptions.name_index];\n            return false;\n          }\n        });\n\n        $('#selected_ids_row_' + that.dataTableId, section).append('<span row_id=\"' + row_id + '\" class=\"radius label\">' + row_name + ' <span class=\"fa fa-times blue\"></span></span> ');\n      });\n\n      $('#selected_ids_row_' + that.dataTableId, section).data(\"ids\", data_ids);\n\n      if ($.isEmptyObject(data_ids)) {\n        $('#selected_resource_multiple_' + that.dataTableId, section).hide();\n        $('#select_resource_multiple_' + that.dataTableId, section).show();\n      } else {\n        $('#selected_resource_multiple_' + that.dataTableId, section).show();\n        $('#select_resource_multiple_' + that.dataTableId, section).hide();\n      }\n\n      $('.alert-box', section).hide();\n\n      that.dataTable.fnDraw();\n    } else {\n      $(\"td.markrow\", that.dataTable).removeClass('markrow');\n      $('tbody input.check_item', that.dataTable).prop('checked', false);\n\n      $('#selected_resource_' + that.dataTableId, section).show();\n      $('#select_resource_' + that.dataTableId, section).hide();\n      $('.alert-box', section).hide();\n\n      var row_id = undefined;\n      var row_name = \"\";\n\n      if (selectedResources.ids != undefined) {\n\n        row_id = selectedResources.ids;\n\n        row_name = \"\" + row_id;\n\n        // TODO: improve preformance, linear search. Needed to get the\n        // name of the resource in the label. If function getName() was\n        // indexed in the cache, it could be used here\n        $.each(that.dataTable.fnGetData(), function(index, row) {\n          if (row[that.selectOptions.id_index] == row_id) {\n            row_name = row[that.selectOptions.name_index];\n            return false;\n          }\n        });\n      } else if (selectedResources.names != undefined) {\n        row_name = selectedResources.names.name;\n        var row_uname = selectedResources.names.uname;\n\n        $.each(that.dataTable.fnGetData(), function(index, row) {\n          if (row[that.selectOptions.name_index] == row_name &&\n             row[that.selectOptions.uname_index] == row_uname) {\n\n            row_id = row[that.selectOptions.id_index];\n            return false;\n          }\n        });\n      }\n\n      //        $(\"td\", this).addClass('markrow');\n      //        $('input.check_item', this).prop('checked', true);\n\n      $('#selected_resource_id_' + that.dataTableId, section).val(row_id).change();\n      $('#selected_resource_id_' + that.dataTableId, section).hide();\n\n      $('#selected_resource_name_' + that.dataTableId, section).text(row_name).change();\n      $('#selected_resource_name_' + that.dataTableId, section).show();\n\n      that.refreshResourceTableSelect(section, that.dataTableId);\n    }\n  }\n\n  function _updateFn() {\n    var that = this;\n    var success_func = function (request, resource_list) {\n      var list_array = [];\n\n      var fixed_ids_map = $.extend({}, that.selectOptions.fixed_ids_map_orig);\n\n      $.each(resource_list, function() {\n        var add = true;\n\n        if (that.selectOptions.filter_fn) {\n          add = that.selectOptions.filter_fn(this[that.xmlRoot]);\n        }\n\n        if (that.selectOptions.fixed_ids != undefined) {\n          add = (add && fixed_ids_map[this[that.xmlRoot].ID]);\n        }\n\n        var elementArray;\n\n        if (add) {\n          elementArray = that.elementArray(this);\n          add = (elementArray != false);\n        }\n\n        if (add) {\n          if (that.selectOptions.starred_ids != undefined){\n            if (that.selectOptions.starred_ids_map[this[that.xmlRoot].ID]){\n              elementArray[that.selectOptions.name_index] =\n                  ('<i class=\"fa fa-star fa-fw\"></i> ' +\n                    elementArray[that.selectOptions.name_index]);\n            } else {\n              elementArray[that.selectOptions.name_index] =\n                  ('<i class=\"fa fa-fw\"></i> ' +\n                    elementArray[that.selectOptions.name_index]);\n            }\n          }\n\n          list_array.push(elementArray);\n\n          delete fixed_ids_map[this[that.xmlRoot].ID];\n        }\n      });\n\n      var n_columns = that.columns.length + 1;\n\n      $.each(fixed_ids_map, function(id, v) {\n        var empty = [];\n\n        for (var i = 0; i <= n_columns; i++) {\n          empty.push(\"\");\n        }\n\n        empty[that.selectOptions.id_index] = id;\n\n        list_array.push(empty);\n      });\n\n      that.updateView(null, list_array, true);\n    }\n\n    var error_func = function(request, error_json, container) {\n      success_func(request, []);\n      Notifier.onError(request, error_json, container);\n    }\n\n    if (that.selectOptions.zone_id == undefined) {\n      OpenNebula[that.resource].list({\n        timeout: true,\n        success: success_func,\n        error: error_func\n      });\n    } else {\n      OpenNebula[that.resource].list_in_zone({\n        data: {zone_id: that.selectOptions.zone_id},\n        timeout: true,\n        success: success_func,\n        error: error_func\n      });\n    }\n  }\n  // Used by panels that contain tables from other resources.\n  // TODO: This is probably duplicated somewhere\n  function _list() {\n    var that = this;\n    OpenNebula[that.resource].list({\n      success: function(req, resp) {\n        that.updateView(req, resp);\n      },\n      error: Notifier.onError\n    });\n  }\n})\n;\n","define('utils/template-utils',['require','utils/locale','sunstone'],function(require) {\n\n  var Locale = require('utils/locale');\n  var Sunstone = require('sunstone');\n\n  //Escape doublequote in a string and return it\n  function _escapeDoubleQuotes(string) {\n    if (string != undefined) {\n      return string.replace(/\\\\/g, '\\\\').replace(/\"/g, '\\\\\"');\n    } else {\n      return string;\n    }\n  }\n  \n  function _htmlDecode(value) {\n    return $('<div/>').html(value).text();\n  }\n\n  // Convert from hash to string\n  function _convert_template_to_string(template_json, unshown_values) {\n    if (unshown_values)\n      template_json = $.extend({}, template_json, unshown_values);\n\n    var template_str = \"\\n\";\n    $.each(template_json, function(key, value) {\n      // value can be an array\n      if (!value) {\n        template_str = template_str + key + \"=\\n\";\n      } else {\n        if (value.constructor == Array) {\n          var it = null;\n          $.each(value, function(index, element) {\n            if (!element) return true;\n            // current value can be an object\n            if (typeof element == 'object') {\n              template_str += key + \"=[\";\n              for (var current_key in element) {\n                template_str += current_key + \"=\\\"\" + element[current_key].toString().replace(/\"/g, \"\\\\\\\"\") + \"\\\",\";\n              }\n              template_str = template_str.substring(0, template_str.length - 1);\n              template_str += \"]\\n\";\n            } else // or a string\n              {\n                template_str = template_str + key + \"=\\\"\" + element.toString().replace(/\"/g, \"\\\\\\\"\") + \"\\\"\\n\";\n              }\n          });\n        } else // or a single value\n        {\n          // which in turn can be an object\n          if (typeof value == 'object') {\n            template_str += key + \"=[\";\n            for (var current_key in value) {\n              template_str += current_key + \"=\\\"\" + value[current_key].toString().replace(/\"/g, \"\\\\\\\"\") + \"\\\",\";\n            }\n            template_str = template_str.substring(0, template_str.length - 1);\n            template_str += \"]\\n\";\n          } else // or a string\n          {\n            template_str = template_str + key + \"=\\\"\" + value.toString().replace(/\"/g, \"\\\\\\\"\") + \"\\\"\\n\";\n          }\n        }\n      }\n    });\n\n    return _htmlDecode(template_str);\n  }\n\n  return {\n    'templateToString': _convert_template_to_string,\n    'htmlDecode': _htmlDecode,\n    'escapeDoubleQuotes': _escapeDoubleQuotes\n  };\n});\n\n\n","define('tabs/users-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','utils/quotas/quota-defaults','utils/quotas/quota-widgets','utils/template-utils','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n  var QuotaWidgets = require('utils/quotas/quota-widgets');\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    CONSTANTS\n   */\n\n  var RESOURCE = \"User\";\n  var XML_ROOT = \"USER\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          { \"bSortable\": false, \"aTargets\": [\"check\",5,6,7] },\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          { \"sWidth\": \"150px\", \"aTargets\": [5,6,7] },\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Group\"),\n      Locale.tr(\"Auth driver\"),\n      Locale.tr(\"VMs\"),\n      Locale.tr(\"Memory\"),\n      Locale.tr(\"CPU\"),\n      Locale.tr(\"Group ID\"),\n      Locale.tr(\"Hidden User Data\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 2,\n      \"select_resource\": Locale.tr(\"Please select a User from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following User:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more users from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following users:\")\n    };\n\n    this.totalUsers = 0;\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n  Table.prototype.preUpdateView = _preUpdateView;\n  Table.prototype.postUpdateView = _postUpdateView;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    this.totalUsers++;\n\n    var element = element_json[XML_ROOT];\n\n    var vms    = '<span class=\"progress-text right\" style=\"font-size: 12px\">-</span>';\n    var memory = '<span class=\"progress-text right\" style=\"font-size: 12px\">-</span>';\n    var cpu    = '<span class=\"progress-text right\" style=\"font-size: 12px\">-</span>';\n\n    var default_user_quotas = QuotaDefaults.getDefaultUserQuotas();\n\n    QuotaWidgets.initEmptyQuotas(element);\n\n    if (!$.isEmptyObject(element.VM_QUOTA)){\n      vms = QuotaWidgets.quotaBar(\n        element.VM_QUOTA.VM.VMS_USED,\n        element.VM_QUOTA.VM.VMS,\n        default_user_quotas.VM_QUOTA.VM.VMS);\n\n      memory = QuotaWidgets.quotaBarMB(\n        element.VM_QUOTA.VM.MEMORY_USED,\n        element.VM_QUOTA.VM.MEMORY,\n        default_user_quotas.VM_QUOTA.VM.MEMORY);\n\n      cpu = QuotaWidgets.quotaBarFloat(\n        element.VM_QUOTA.VM.CPU_USED,\n        element.VM_QUOTA.VM.CPU,\n        default_user_quotas.VM_QUOTA.VM.CPU);\n    }\n\n    // Build hidden user template\n    var hidden_template = TemplateUtils.templateToString(element);\n\n    return [\n      '<input class=\"check_item\" type=\"checkbox\" id=\"'+RESOURCE.toLowerCase()+'_' +\n                           element.ID + '\" name=\"selected_items\" value=\"' +\n                           element.ID + '\"/>',\n      element.ID,\n      element.NAME,\n      element.GNAME,\n      element.AUTH_DRIVER,\n      vms,\n      memory,\n      cpu,\n      element.GID,\n      hidden_template\n    ];\n  }\n\n  function _preUpdateView() {\n    this.totalUsers = 0;\n  }\n\n  function _postUpdateView() {\n    $(\".total_users\").text(this.totalUsers);\n  }\n});\n\n","define('tabs/users-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createUserForm';\n});\n","define('tabs/users-tab/dialogs/password/dialogId',['require'],function(require){\n  return 'userPasswordDialog';\n});\n","define('tabs/users-tab/dialogs/auth-driver/dialogId',['require'],function(require){\n  return 'userAuthDriverDialog';\n});\n","define('tabs/users-tab/dialogs/quotas/dialogId',['require'],function(require){\n  return 'userQuotasDialog';\n});\n","define('tabs/users-tab/actions',['require','sunstone','utils/notifier','utils/locale','./datatable','opennebula/user','./tabId','./form-panels/create/formPanelId','./dialogs/password/dialogId','./dialogs/auth-driver/dialogId','./dialogs/quotas/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var DataTable = require('./datatable');\n  var OpenNebulaResource = require('opennebula/user');\n\n  var RESOURCE = \"User\";\n  var XML_ROOT = \"USER\";\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n  var PASSWORD_DIALOG_ID = require('./dialogs/password/dialogId');\n  var AUTH_DRIVER_DIALOG_ID = require('./dialogs/auth-driver/dialogId');\n  var QUOTAS_DIALOG_ID = require('./dialogs/quotas/dialogId');\n\n  var _actions = {\n    \"User.create\" : {\n      type: \"create\",\n      call: OpenNebulaResource.create,\n      callback : function(request, response) {\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      },\n      notify: true\n    },\n\n    \"User.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    \"User.list\" : {\n      type: \"list\",\n      call: OpenNebulaResource.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"User.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(RESOURCE+\".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(RESOURCE+\".list\", {force: true});\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"User.update_password\" : {\n      type: \"custom\",\n      call: function(){\n        Sunstone.getDialog(PASSWORD_DIALOG_ID).setParams(\n          {selectedElements: Sunstone.getDataTable(TAB_ID).elements()});\n        Sunstone.getDialog(PASSWORD_DIALOG_ID).reset();\n        Sunstone.getDialog(PASSWORD_DIALOG_ID).show();\n      }\n    },\n\n    \"User.passwd\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.passwd,\n      error: Notifier.onError\n    },\n\n    \"User.chgrp\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.chgrp,\n      callback : function(req){\n        Sunstone.runAction(RESOURCE+\".refresh\");\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n    },\n\n    \"User.addgroup\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.addgroup,\n      callback : function(req){\n        Sunstone.runAction(RESOURCE+\".refresh\");\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n    },\n\n    \"User.delgroup\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.delgroup,\n      callback : function(req){\n        Sunstone.runAction(RESOURCE+\".show\",req.request.data[0][0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n    },\n\n    \"User.change_authentication\" : {\n      type: \"custom\",\n      call: function(){\n        Sunstone.getDialog(AUTH_DRIVER_DIALOG_ID).show();\n      }\n    },\n\n    \"User.chauth\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.chauth,\n      error: Notifier.onError,\n    },\n\n    \"User.show\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"User.delete\" : {\n      type: \"multiple\",\n      call : OpenNebulaResource.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n    },\n\n    \"User.update_template\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);\n        if (request.request.data[0][0] == config['user_id']) {\n          Sunstone.runAction('Settings.refresh');\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"User.update_language\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);\n        if (request.request.data[0][0] == config['user_id']) {\n          Sunstone.runAction('Settings.refresh');\n        }\n        Notifier.notifyMessage(Locale.tr(\"The user must refresh the page for the change to take effect\"));\n      },\n      error: Notifier.onError\n    },\n\n    \"User.update_view\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);\n        if (request.request.data[0][0] == config['user_id']) {\n          Sunstone.runAction('Settings.refresh');\n        }\n        Notifier.notifyMessage(Locale.tr(\"The user must refresh the page for the change to take effect\"));\n      },\n      error: Notifier.onError\n    },\n\n    \"User.fetch_quotas\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function (request,response) {\n        Sunstone.getDialog(QUOTAS_DIALOG_ID).setParams({element: response[XML_ROOT]});\n        Sunstone.getDialog(QUOTAS_DIALOG_ID).reset();\n        Sunstone.getDialog(QUOTAS_DIALOG_ID).show();\n      },\n      error: Notifier.onError\n    },\n\n    \"User.quotas_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          $('a[href=\"#user_quotas_tab\"]', tab).click();\n          $('#edit_quotas_button', tab).click();\n        } else {\n          var sel_elems = Sunstone.getDataTable(TAB_ID).elements();\n          //If only one user is selected we fecth the user's quotas\n          if (sel_elems.length == 1){\n            Sunstone.runAction(RESOURCE+'.fetch_quotas',sel_elems[0]);\n          } else {\n            // More than one, shows '0' usage\n            Sunstone.getDialog(QUOTAS_DIALOG_ID).setParams({element: {}});\n            Sunstone.getDialog(QUOTAS_DIALOG_ID).reset();\n            Sunstone.getDialog(QUOTAS_DIALOG_ID).show();\n          }\n        }\n      }\n    },\n \n    \"User.set_quota\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.set_quota,\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      callback: function(request) {\n        Sunstone.getDialog(QUOTAS_DIALOG_ID).hide();\n\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0]);\n      },\n      error: Notifier.onError\n    }\n  };\n\n  return _actions;\n});\n\n","define('utils/dialogs/dialog',['require','foundation.reveal'],function(require) {\n  require('foundation.reveal');\n\n  function BaseDialog() {\n    return this;\n  }\n\n  BaseDialog.prototype = {\n    'insert': _insert,\n    'show': _show,\n    'hide': _hide,\n    'reset': _reset,\n  };\n\n  return BaseDialog;\n\n  function _insert(dialog) {\n    var that = this;\n    var dialogElement = $(that.html()).appendTo('div#dialogs');\n    that.setup(dialogElement);\n    dialogElement.foundation('reveal', 'reflow');\n\n    dialogElement.on('opened.fndtn.reveal', function (e) {\n      if (e.namespace !== 'fndtn.reveal') { return; }\n      that.onShow(dialogElement);\n    });\n\n    dialogElement.on('opened.fndtn.close', function (e) {\n      if (that.onClose) {\n        that.onClose(dialogElement);\n      }\n    });\n\n    dialogElement.on('click', '.resetDialog', function() {\n      that.reset();\n      that.show();\n    });\n\n    that.dialogElement = dialogElement;\n\n    return that.dialogElement;\n  }\n\n  function _show() {\n    this.dialogElement.foundation('reveal', 'open');\n    return false;\n  }\n\n  function _hide() {\n    this.dialogElement.foundation('reveal', 'close');\n  }\n\n  function _reset() {\n    this.dialogElement.remove();\n    this.dialogElement = this.insert();\n    return false;\n  }\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/users-tab/dialogs/password/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n  <form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        \";\n  stack1 = ((helper = (helper = helpers.userCreationHTML || (depth0 != null ? depth0.userCreationHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"userCreationHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      </div>\\n    </div>\\n    <div class=\\\"form_buttons row\\\">\\n      <button type=\\\"submit\\\" class=\\\"button radius right\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Change\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/users-tab/dialogs/password/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/users-tab/utils/user-creation/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n  return \"<div class=\\\"row name_row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <label for=\\\"username\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Username\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input required type=\\\"text\\\" name=\\\"username\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.idPrefix || (depth0 != null ? depth0.idPrefix : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"idPrefix\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_username\\\" />\\n  </div>\\n</div>\\n<div class=\\\"row password_row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <label for=\\\"pass\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input required type=\\\"password\\\" name=\\\"pass\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.idPrefix || (depth0 != null ? depth0.idPrefix : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"idPrefix\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_pass\\\" />\\n  </div>\\n  <div class=\\\"large-12 columns\\\">\\n    <label for=\\\"confirm_password\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Confirm Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input data-equalto=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.idPrefix || (depth0 != null ? depth0.idPrefix : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"idPrefix\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_pass\\\" type=\\\"password\\\" name=\\\"confirm_password\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.idPrefix || (depth0 != null ? depth0.idPrefix : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"idPrefix\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_confirm_password\\\" />\\n    <small class=\\\"error\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Passwords do not match\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n  </div>\\n</div>\\n<div class=\\\"row auth_driver_row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <label for=\\\"driver\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Authentication\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <select name=\\\"driver\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.idPrefix || (depth0 != null ? depth0.idPrefix : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"idPrefix\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_driver\\\">\\n      <option value=\\\"core\\\" selected=\\\"selected\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Core\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"ssh\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"SSH\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"x509\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"x509\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"ldap\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"LDAP\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"public\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Public\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"custom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n    </select>\\n    <div>\\n      <input type=\\\"text\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.idPrefix || (depth0 != null ? depth0.idPrefix : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"idPrefix\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_custom_auth\\\" name=\\\"custom_auth\\\" />\\n    </div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/users-tab/utils/user-creation/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/users-tab/utils/user-creation',['require','hbs!./user-creation/html'],function(require) {\n\n  var TemplateHTML = require('hbs!./user-creation/html');\n\n  /**\n   * @param {string} idPrefix\n   * @param  {object} [options] Options to hide/show each field. Each field is\n   *                            enabled by default.\n   *                            - name: true, false\n   *                            - password: true, false\n   *                            - auth_driver: true, false\n   */\n  function UserCreation(idPrefix, options) {\n    this.idPrefix = idPrefix;\n\n    this.options = options;\n\n    if (this.options == undefined){\n      this.options = {};\n    }\n\n    if (this.options.name == undefined){\n      this.options.name = true;\n    }\n\n    if (this.options.password == undefined){\n      this.options.password = true;\n    }\n\n    if (this.options.auth_driver == undefined){\n      this.options.auth_driver = true;\n    }\n  }\n\n  UserCreation.prototype.constructor = UserCreation;\n  UserCreation.prototype.html = _html;\n  UserCreation.prototype.setup = _setup;\n  UserCreation.prototype.retrieve = _retrieve;\n  UserCreation.prototype.enable = _enable;\n  UserCreation.prototype.disable = _disable;\n  UserCreation.prototype.setName = _setName;\n\n  return UserCreation;\n\n  function _html(){\n    return TemplateHTML({\n      'idPrefix': this.idPrefix\n    });\n  }\n\n  /**\n   * Setups the html\n   * @param  {object} context jquery selector\n   */\n  function _setup(context){\n    var that = this;\n\n    if (this.options.name == false){\n      $('#'+that.idPrefix+'_username',context).removeAttr('required');\n      $('.name_row', context).hide();\n    }\n\n    if (this.options.password == false){\n      $('#'+that.idPrefix+'_pass',context).removeAttr('required');\n      $('.password_row', context).hide();\n    }\n\n    if (this.options.auth_driver == false){\n      $('.auth_driver_row', context).hide();\n    }\n  \n    $('#'+that.idPrefix+'_driver', context).change(function(){\n      if ($(this).val() == \"ldap\"){\n        $('#'+that.idPrefix+'_pass',context).removeAttr('required');\n        $('.password_row', context).hide();\n      } else if (that.options.password) {\n        $('#'+that.idPrefix+'_pass',context).attr('required', '');\n        $('.password_row', context).show();\n      }\n    });\n\n    $('input[name=\"custom_auth\"]',context).parent().hide();\n    $('select#'+that.idPrefix+'_driver',context).change(function(){\n      if ($(this).val() == \"custom\"){\n        $('input[name=\"custom_auth\"]',context).parent().show();\n        $('input[name=\"custom_auth\"]',context).attr('required', '');\n      } else {\n        $('input[name=\"custom_auth\"]',context).parent().hide();\n        $('input[name=\"custom_auth\"]',context).removeAttr('required');\n      }\n    });\n  }\n\n  /**\n   * @param  {object} context jquery selector\n   * @return {object}         Returns an object with the attributes:\n   *                                  - name\n   *                                  - password\n   *                                  - auth_driver\n   */\n  function _retrieve(context){\n    var that = this;\n\n    var user_name = $('#'+that.idPrefix+'_username',context).val();\n    var user_password = $('#'+that.idPrefix+'_pass',context).val();\n    var driver = $('#'+that.idPrefix+'_driver', context).val();\n\n    if (driver == 'custom'){\n      driver = $('input[name=\"custom_auth\"]', context).val();\n    } else if (driver == \"ldap\") {\n      user_password = \"-\";\n    }\n\n    return {\n      \"name\" : user_name,\n      \"password\" : user_password,\n      \"auth_driver\" : driver\n    };\n  }\n\n  /**\n   * Disables all inputs, and removes the abide required tags\n   * @param  {object} context jquery selector\n   */\n  function _disable(context){\n    var that = this;\n\n    $('#'+that.idPrefix+'_username',context).attr('disabled','disabled').removeAttr('required');\n    $('#'+that.idPrefix+'_pass',context).attr('disabled','disabled').removeAttr('required');\n    $('#'+that.idPrefix+'_confirm_password',context).attr('disabled','disabled').removeAttr('required');\n    $('#'+that.idPrefix+'_driver',context).attr('disabled','disabled').removeAttr('required');\n    $('#'+that.idPrefix+'_custom_auth',context).attr('disabled','disabled').removeAttr('required');\n  }\n\n  /**\n   * Enables all inputs, and adds the abide required tags\n   * @param  {object} context jquery selector\n   */\n  function _enable(context){\n    var that = this;\n\n    $('#'+that.idPrefix+'_username',context).removeAttr(\"disabled\").attr('required', '');\n    $('#'+that.idPrefix+'_pass',context).removeAttr(\"disabled\").attr('required', '');\n    $('#'+that.idPrefix+'_confirm_password',context).removeAttr(\"disabled\").attr('required', '');\n    $('#'+that.idPrefix+'_driver',context).removeAttr(\"disabled\").attr('required', '');\n    $('#'+that.idPrefix+'_custom_auth',context).removeAttr(\"disabled\");\n\n    $('select#'+that.idPrefix+'_driver',context).change();\n  }\n\n  function _setName(context, name){\n    $('#'+this.idPrefix+'_username',context).val(name);\n  }\n});\n\n","define('tabs/users-tab/dialogs/password',['require','utils/dialogs/dialog','hbs!./password/html','sunstone','utils/notifier','utils/locale','tabs/users-tab/utils/user-creation','./password/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./password/html');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var UserCreation = require('tabs/users-tab/utils/user-creation');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./password/dialogId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.userCreation = new UserCreation(DIALOG_ID, {name: false, auth_driver: false});\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setParams = _setParams;\n\n  return Dialog;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  /**\n   * @param {object} params\n   *        - params.selectedElements : Array of user ids\n   */\n  function _setParams(params) {\n    this.selectedElements = params.selectedElements;\n  }\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId,\n      'userCreationHTML': this.userCreation.html()\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    this.userCreation.setup(context);\n\n    context.off('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n    context.off('valid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n\n    context.on('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; }\n\n      Notifier.notifyError(Locale.tr(\"One or more required fields are missing or malformed.\"));\n    }).on('valid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; }\n\n      var inputs = that.userCreation.retrieve(context);\n\n      Sunstone.runAction('User.passwd', that.selectedElements, inputs.password);\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      Sunstone.runAction('User.refresh');\n\n      return false;\n    });\n\n    context.foundation('reflow', 'abide');\n\n    return false;\n  }\n\n  function _onShow(context) {\n\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/users-tab/dialogs/auth-driver/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Change authentication\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n  <form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        \";\n  stack1 = ((helper = (helper = helpers.userCreationHTML || (depth0 != null ? depth0.userCreationHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"userCreationHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      </div>\\n    </div>\\n    <div class=\\\"form_buttons row\\\">\\n      <button type=\\\"submit\\\" class=\\\"button radius right\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Change\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/users-tab/dialogs/auth-driver/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/users-tab/dialogs/auth-driver',['require','utils/dialogs/dialog','hbs!./auth-driver/html','sunstone','utils/notifier','utils/locale','tabs/users-tab/utils/user-creation','./auth-driver/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./auth-driver/html');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var UserCreation = require('tabs/users-tab/utils/user-creation');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./auth-driver/dialogId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.userCreation = new UserCreation(DIALOG_ID, {name: false, password: false});\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId,\n      'userCreationHTML': this.userCreation.html()\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    this.userCreation.setup(context);\n\n    context.off('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n    context.off('valid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n\n    context.on('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; }\n\n      Notifier.notifyError(Locale.tr(\"One or more required fields are missing or malformed.\"));\n    }).on('valid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; }\n\n      var inputs = that.userCreation.retrieve(context);\n\n      var selElems = Sunstone.getDataTable(TAB_ID).elements();\n\n      Sunstone.runAction('User.chauth', selElems, inputs.auth_driver);\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      Sunstone.runAction('User.refresh');\n\n      return false;\n    });\n\n    context.foundation('reflow', 'abide');\n\n    return false;\n  }\n\n  function _onShow(context) {\n\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/users-tab/dialogs/quotas/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large max-height\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update Quota\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n  <form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        \";\n  stack1 = ((helper = (helper = helpers.quotasHTML || (depth0 != null ? depth0.quotasHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"quotasHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      </div>\\n    </div>\\n    <div class=\\\"form_buttons row\\\">\\n      <button type=\\\"submit\\\" class=\\\"button radius right\\\" value=\\\"User.set_quota\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Apply changes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/users-tab/dialogs/quotas/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/users-tab/dialogs/quotas',['require','utils/dialogs/dialog','hbs!./quotas/html','utils/locale','utils/quotas/quota-defaults','utils/quotas/quota-widgets','./quotas/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./quotas/html');\n  var Locale = require('utils/locale');\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n  var QuotaWidgets = require('utils/quotas/quota-widgets');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./quotas/dialogId');\n  var TAB_ID = require('../tabId');\n  var RESOURCE = \"User\";\n  var XML_ROOT = \"USER\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.element = undefined;\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setParams = _setParams;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId,\n      'quotasHTML': QuotaWidgets.dialogHTML()\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    QuotaWidgets.setupQuotasDialog(context);\n\n    return false;\n  }\n\n  /**\n   * @param {object} params\n   *        - params.element : user object, or empty object {}\n   */\n  function _setParams(params) {\n    this.element = params.element;\n  }\n\n  function _onShow(context) {\n    QuotaWidgets.populateQuotasDialog(\n      this.element,\n      QuotaDefaults.getDefaultQuotas(RESOURCE),\n      context);\n\n    return false;\n  }\n});\n\n","define('templates/helpers/valOrDefault',['require','hbs/handlebars','utils/locale'],function(require) {\n  var Handlebars = require('hbs/handlebars');\n  var Locale = require('utils/locale');\n\n  var valOrDefault = function(value, defaultValue, options) {\n    var out = value || defaultValue;\n    return new Handlebars.SafeString(out);\n  };\n\n  Handlebars.registerHelper('valOrDefault', valOrDefault);\n  return valOrDefault;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/users-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/valOrDefault'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression;\n  return \"        \"\n    + escapeExpression(lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.SSH_PUBLIC_KEY : stack1), depth0))\n    + \"\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"You can provide a SSH Key for this User clicking on the edit button\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table id=\\\"info_user_table\\\" class=\\\"dataTable extended_table\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" border=\\\"0\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.NAME : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.groupTrHTML || (depth0 != null ? depth0.groupTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"groupTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Secondary groups\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.secondaryGroups || (depth0 != null ? depth0.secondaryGroups : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"secondaryGroups\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Authentication driver\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.AUTH_DRIVER : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\\n            <button id=\\\"update_password\\\" type=\\\"button\\\" class=\\\"button tiny radius secondary\\\" >\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" <a><i class=\\\"fa fa-pencil-square-o\\\"/></a>\\n            </button>\\n          </td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Table Order\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td_table_order\\\">\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.TABLE_ORDER : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td>\\n            <div id=\\\"div_edit_table_order\\\">\\n              <a id=\\\"div_edit_table_order_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n            </div>\\n          </td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Language\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td_language\\\">\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.LANG : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td>\\n            <div id=\\\"div_edit_language\\\">\\n              <a id=\\\"div_edit_language_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n            </div>\\n          </td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"View\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td_view\\\">\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.DEFAULT_VIEW : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td>\\n            <div id=\\\"div_edit_view\\\">\\n              <a id=\\\"div_edit_view_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n            </div>\\n          </td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" border=\\\"0\\\">\\n      <thead>\\n        <tr>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Public SSH Key\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\\n            <a class=\\\"user_ssh_public_key_edit right\\\" href=\\\"#\\\"><i class=\\\"fa fa-pencil-square-o\\\"></i></a>\\n          </th>\\n        </tr>\\n      </thead>\\n    </table>\\n    <textarea rows=\\\"6\\\" type=\\\"text\\\" id=\\\"user_ssh_public_key_textarea\\\" name=\\\"ssh_public_key\\\" class=\\\"hidden\\\">\"\n    + escapeExpression(lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.SSH_PUBLIC_KEY : stack1), depth0))\n    + \"</textarea>\\n    <p id=\\\"user_ssh_public_key_text\\\" name=\\\"ssh_public_key\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.SSH_PUBLIC_KEY : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.program(3, data),\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"    </p>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/users-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/users-tab/panels/info/chgrp-tr',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda;\n  return \"<tr>\\n  <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n  <td id=\\\"value_td_group\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.GNAME : stack1), depth0))\n    + \"</td>\\n  <td>\\n    <div id=\\\"div_edit_chg_group\\\">\\n      <a id=\\\"div_edit_chg_group_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n    </div>\\n  </td>\\n</tr>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/users-tab/panels/info/chgrp-tr', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('utils/panel/template-table',['require','utils/locale','sunstone','utils/template-utils'],function(require) {\n  /*\n    This module insert a table with the template of the resource.\n    New KEY=VALUE entries can be added and existing ones can be edited\n   */\n  \n  var Locale = require('utils/locale');\n  var Sunstone = require('sunstone');\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    Generate the table HTML with the template of the resource and an edit icon\n    @param {Object} templateJSON Resource template (i.e: ZONE.TEMPLATE, IMAGE.TEMPLATE...)\n    @param {String} resourceType Resource type (i.e: Zone, Host, Image...)\n    @param {String} tableName Header of the table (i.e: Locale.tr(\"Attributes\"))\n    @returns {String} HTML table\n   */\n  function _html(templateJSON, resourceType, tableName) {\n    var str = '<table id=\"' + resourceType.toLowerCase() + '_template_table\" class=\"dataTable configuration_attrs\"  cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\\\n                   <thead>\\\n                     <tr>\\\n                       <th colspan=\"3\">'                     +\n                      tableName +\n                     '</th>\\\n                     </tr>\\\n                    </thead>' +\n                  fromJSONtoHTMLTable(templateJSON, resourceType) +\n                  '<tr>\\\n                      <td class=\"key_td\"><input type=\"text\" name=\"new_key\" id=\"new_key\" /></td>\\\n                      <td class=\"value_td\"><textarea rows=\"1\" type=\"text\" name=\"new_value\" id=\"new_value\"></textarea></td>\\\n                      <td class=\"text-right\"><button type=\"button\" id=\"button_add_value\" class=\"button small secondary\">' + Locale.tr(\"Add\") + '</button>\\</td>\\\n                    </tr>'                  +\n                 '</table>'\n\n    return str;\n  }\n\n  /*\n    Initialize the table, clicking the edit icon will add an input to edit the value\n    @param {Object} templateJSON Resource template (i.e: ZONE.TEMPLATE, IMAGE.TEMPLATE...)\n    @param {String} resourceType Resource type (i.e: Zone, Host, Image...)\n    @param {String} resourceId ID of the resource\n    @param {jQuery Object} context Selector including the tr\n    @param {Object} unshownValues Values from the origianl resource template that\n      have been deleted from the templateJSON param. Whithout this, a template\n      update would permanently delete the missing values from OpenNebula\n   */\n  var _setup = function(templateJSON, resourceType, resourceId, context, unshownValues) {\n    // Remove previous listeners\n    context.off(\"keypress\", \"#new_key\");\n    context.off(\"keypress\", \"#new_value\");\n    context.off(\"keypress\", \"#new_value_vectorial\");\n    context.off(\"click\", \"#div_minus\");\n    context.off(\"click\", \"#div_edit\");\n    context.off(\"change\", \".input_edit_value\");\n    context.off(\"click\", \"#div_edit_vectorial\");\n    context.off(\"change\", \".input_edit_value_vectorial\");\n    context.off(\"click\", \"#div_minus_vectorial\");\n    context.off(\"click\", \"#button_add_value\");\n    context.off(\"click\", \"#button_add_value_vectorial\");\n    context.off(\"click\", \"#div_add_vectorial\");\n\n    // Add listener for add key and add value for Extended Template\n    context.on(\"click\", '#button_add_value', function() {\n      new_value = $('#new_value', $(this).parent().parent()).val();\n      new_key   = $('#new_key', $(this).parent().parent()).val();\n\n      if (new_key != \"\") {\n        var templateJSON_bk = $.extend({}, templateJSON);\n        if (templateJSON[$.trim(new_key)] && (templateJSON[$.trim(new_key)] instanceof Array)) {\n          templateJSON[$.trim(new_key)].push($.trim(new_value));\n        } else {\n          templateJSON[$.trim(new_key)] = $.trim(new_value);\n        }\n        template_str  = TemplateUtils.templateToString(templateJSON, unshownValues);\n\n        Sunstone.runAction(resourceType + \".update_template\", resourceId, template_str);\n        templateJSON = templateJSON_bk;\n      }\n    });\n\n    // Capture the enter key\n    context.on(\"keypress\", '#new_value', function(e) {\n      var ev = e || window.event;\n      var key = ev.keyCode;\n\n      if (key == 13 && !ev.altKey) {\n        //Get the button the user wants to have clicked\n        $('#button_add_value', $(this).parent().parent()).click();\n        ev.preventDefault();\n      }\n    })\n\n    // Listener for single values\n\n    // Listener for key,value pair remove action\n    context.on(\"click\", \"#div_minus\", function() {\n      // Remove div_minus_ from the id\n      field               = this.firstElementChild.id.substring(10, this.firstElementChild.id.length);\n      var list_of_classes = this.firstElementChild.className.split(\" \");\n      var ocurrence = null;\n\n      if (list_of_classes.length != 1) {\n        $.each(list_of_classes, function(index, value) {\n          if (value.match(/^ocurrence_/))\n          ocurrence = value.substring(10, value.length);;\n        });\n      }\n\n      // Erase the value from the template\n      if (ocurrence != null)\n          templateJSON[field].splice(ocurrence, 1);\n      else\n          delete templateJSON[field];\n\n      template_str = TemplateUtils.templateToString(templateJSON, unshownValues);\n\n      // Let OpenNebula know\n      Sunstone.runAction(resourceType + \".update_template\", resourceId, template_str);\n    });\n\n    // Listener for key,value pair edit action\n    context.on(\"click\", \"#div_edit\", function() {\n      var key_str = this.firstElementChild.id.substring(9, this.firstElementChild.id.length);\n\n      var value_str = $(\"#value_td_input_\" + key_str).text();\n      input = $(\"#value_td_input_\" + key_str).html('<textarea class=\"input_edit_value\" id=\"input_edit_' + key_str + '\" type=\"text\"></textarea>');\n      $('#input_edit_' + key_str).val(value_str);\n\n      // Capture the enter key\n      context.off(\"keypress\", '#input_edit_' + key_str);\n      context.on(\"keypress\", '#input_edit_' + key_str, function(e) {\n        var ev = e || window.event;\n        var key = ev.keyCode;\n\n        if (key == 13 && !ev.altKey) {\n          $('#input_edit_' + key_str).blur();\n        }\n      })\n\n    });\n\n    context.on(\"change\", \".input_edit_value\", function() {\n      var key_str          = $.trim(this.id.substring(11, this.id.length));\n      var value_str        = $.trim(this.value);\n      var templateJSON_bk = $.extend({}, templateJSON);\n\n      delete templateJSON[key_str];\n      templateJSON[key_str] = value_str;\n\n      template_str = TemplateUtils.templateToString(templateJSON, unshownValues);\n\n      // Let OpenNebula know\n      Sunstone.runAction(resourceType + \".update_template\", resourceId, template_str);\n\n      templateJSON = templateJSON_bk;\n    });\n\n    // Listeners for vectorial attributes\n    // Listener for key,value pair edit action for subelement of vectorial key\n    context.on(\"click\", \"#div_edit_vectorial\", function() {\n      var key_str         = $.trim(this.firstElementChild.id.substring(9, this.firstElementChild.id.length));\n      var list_of_classes = this.firstElementChild.className.split(\" \");\n      var ocurrence       = \" \";\n      var vectorial_key   = null;\n\n      if (list_of_classes.length != 1) {\n        $.each(list_of_classes, function(index, value) {\n          if (value.match(/^ocurrence_/))\n              ocurrence += value + \" \";\n        });\n      }\n\n      if (list_of_classes.length != 1) {\n        $.each(list_of_classes, function(index, value) {\n          if (value.match(/^vectorial_key_/))\n              vectorial_key = value;\n        });\n      }\n\n      if (ocurrence != \" \") {\n        var value_str = $.trim($(\".value_td_input_\" + key_str + \".\" + ocurrence.substring(1, ocurrence.length - 1) + \".\" + vectorial_key).text());\n        $(\".value_td_input_\" + key_str + \".\" + ocurrence.substring(1, ocurrence.length - 1) + \".\" + vectorial_key).html('<input class=\"input_edit_value_vectorial' + ocurrence + vectorial_key + '\" id=\"input_edit_' + key_str + '\" type=\"text\" value=\"' + value_str + '\"/>');\n\n      } else {\n        var value_str = $.trim($(\".value_td_input_\" + key_str + \".\" + vectorial_key).text());\n        $(\".value_td_input_\" + key_str + \".\" + vectorial_key).html('<input class=\"input_edit_value_vectorial' + ocurrence + vectorial_key + '\" id=\"input_edit_' + key_str + '\" type=\"text\" value=\"' + value_str + '\"/>');\n      }\n\n    });\n\n    context.on(\"change\", \".input_edit_value_vectorial\", function() {\n      var key_str          = $.trim(this.id.substring(11, this.id.length));\n      var value_str        = $.trim(this.value);\n      var templateJSON_bk = $.extend({}, templateJSON);\n\n      var list_of_classes  = this.className.split(\" \");\n      var ocurrence        = null;\n      var vectorial_key    = null;\n\n      if (list_of_classes.length != 1) {\n        $.each(list_of_classes, function(index, value) {\n          if (value.match(/^ocurrence_/))\n              ocurrence = value.substring(10, value.length);\n        });\n      }\n\n      if (list_of_classes.length != 1) {\n        $.each(list_of_classes, function(index, value) {\n          if (value.match(/^vectorial_key_/))\n              vectorial_key = value.substring(14, value.length);\n        });\n      }\n\n      if (ocurrence != null)\n          templateJSON[vectorial_key][ocurrence][key_str] = value_str;\n      else\n          templateJSON[vectorial_key][key_str] = value_str;\n\n      template_str = TemplateUtils.templateToString(templateJSON, unshownValues);\n\n      // Let OpenNebula know\n      Sunstone.runAction(resourceType + \".update_template\", resourceId, template_str);\n\n      templateJSON = templateJSON_bk;\n    });\n\n    // Listener for key,value pair remove action\n    context.on(\"click\", \"#div_minus_vectorial\", function() {\n      // Remove div_minus_ from the id\n      var field           = this.firstElementChild.id.substring(10, this.firstElementChild.id.length);\n      var list_of_classes = this.firstElementChild.className.split(\" \");\n      var ocurrence       = null;\n      var vectorial_key   = null;\n\n      if (list_of_classes.length != 1) {\n        $.each(list_of_classes, function(index, value) {\n          if (value.match(/^ocurrence_/))\n              ocurrence = value.substring(10, value.length);\n        });\n      }\n\n      if (list_of_classes.length != 1) {\n        $.each(list_of_classes, function(index, value) {\n          if (value.match(/^vectorial_key_/))\n              vectorial_key = value.substring(14, value.length);\n        });\n      }\n\n      // Erase the value from the template\n      if (ocurrence != null)\n          delete templateJSON[vectorial_key][ocurrence][field];\n      else\n          delete templateJSON[vectorial_key][field];\n\n      template_str = TemplateUtils.templateToString(templateJSON, unshownValues);\n\n      // Let OpenNebula know\n      Sunstone.runAction(resourceType + \".update_template\", resourceId, template_str);\n    });\n\n    // Listener for vectorial key,value pair add action\n    context.on(\"click\", \"#div_add_vectorial\", function() {\n      if (!$('#button_add_value_vectorial').html()) {\n        var field           = this.firstElementChild.id.substring(18, this.firstElementChild.id.length);\n        var list_of_classes = this.firstElementChild.className.split(\" \");\n        var ocurrence       = null;\n        var vectorial_key   = null;\n\n        if (list_of_classes.length != 1) {\n          $.each(list_of_classes, function(index, value) {\n            if (value.match(/^ocurrence_/))\n                ocurrence = value;\n          });\n        }\n\n        if (list_of_classes.length != 1) {\n          $.each(list_of_classes, function(index, value) {\n            if (value.match(/^vectorial_key_/))\n                vectorial_key = value;\n          });\n        }\n\n        $(this).parent().parent().after('<tr>\\\n                                                <td class=\"key_td\"><input type=\"text\" style=\"text-align:center\" name=\"new_key_vectorial\" id=\"new_key_vectorial\" /></td>\\\n                                                <td class=\"value_td\"><input type=\"text\" name=\"new_value\" id=\"new_value_vectorial\" /></td>\\\n                                                <td class=\"\"><button class=\"' + vectorial_key + \" \" + ocurrence + '\" id=\"button_add_value_vectorial\">' + Locale.tr(\"Add\") + '</button>\\</td>\\\n                                               </tr>');\n      }\n    });\n\n    // Add listener for add key and add value for Extended Template\n    context.on(\"click\", '#button_add_value_vectorial', function() {\n      if ($('#new_value_vectorial').val() != \"\" && $('#new_key_vectorial').val() != \"\") {\n        var list_of_classes  = this.className.split(\" \");\n        var ocurrence        = null;\n        var vectorial_key    = null;\n        var templateJSON_bk = $.extend({}, templateJSON);\n\n        if (list_of_classes.length != 1) {\n          $.each(list_of_classes, function(index, value) {\n            if (value.match(/^vectorial_key_/))\n                vectorial_key = value;\n          });\n        }\n\n        if (list_of_classes.length != 1) {\n          $.each(list_of_classes, function(index, value) {\n            if (value.match(/^ocurrence_/))\n                ocurrence = value;\n          });\n        }\n\n        vectorial_key = vectorial_key.substring(14, vectorial_key.length);\n\n        if (ocurrence != null) {\n          ocurrence = ocurrence.substring(10, ocurrence.length);\n          templateJSON[vectorial_key][ocurrence][$('#new_key_vectorial').val()] = $.trim($('#new_value_vectorial').val());\n        } else {\n          templateJSON[vectorial_key][$('#new_key_vectorial').val()] = $.trim($('#new_value_vectorial').val());\n        }\n\n        template_str  = TemplateUtils.templateToString(templateJSON, unshownValues);\n\n        Sunstone.runAction(resourceType + \".update_template\", resourceId, template_str);\n        // This avoids to get a messed template if the update fails\n        templateJSON = templateJSON_bk;\n      }\n    });\n\n    // Capture the enter key\n    context.on(\"keypress\", '#new_value_vectorial', function(e) {\n      var ev = e || window.event;\n      var key = ev.keyCode;\n\n      if (key == 13) {\n        //Get the button the user wants to have clicked\n        $('#button_add_value_vectorial').click();\n        ev.preventDefault();\n      }\n    })\n  }\n\n  // Returns an HTML string with the json keys and values\n  function fromJSONtoHTMLTable(templateJSON, resourceType, vectorial, ocurrence) {\n    var str = \"\"\n    if (!templateJSON) { return \"Not defined\";}\n    var field = null;\n\n    // Iterate for each value in the JSON object\n    for (field in templateJSON) {\n      str += fromJSONtoHTMLRow(field,\n                               templateJSON[field],\n                               resourceType,\n                               vectorial,\n                               ocurrence);\n    }\n\n    return str;\n  }\n\n  // Helper for fromJSONtoHTMLTable function\n  function fromJSONtoHTMLRow(field, value, resourceType, vectorial_key, ocurrence) {\n    var str = \"\";\n\n    // value can be an array\n    if (value.constructor == Array) {\n      var it = null;\n\n      for (it = 0; it < value.length; ++it) {\n        var current_value = value[it];\n\n        // if value is object, we are dealing with a vectorial value\n        if (typeof current_value == 'object') {\n          str += '<tr id=\"' + resourceType.toLowerCase() + '_template_table_' + field + '\">\\\n                             <td class=\"key_td key_vectorial_td\">' + Locale.tr(field) + '</td>\\\n                             <td class=\"value_vectorial_td\"></td>\\\n                             <td class=\"text-right\">\\\n                               <span id=\"div_add_vectorial\">\\\n                                 <a id=\"div_add_vectorial_' + field + '\" class=\"add_vectorial_a ocurrence_' + it + ' vectorial_key_' + field + '\" href=\"#\"><i class=\"fa fa-plus-sign\"/></a>\\\n                               </span>&emsp;\\\n                               <span id=\"div_minus\">\\\n                                 <a id=\"div_minus_' + field + '\" class=\"remove_vectorial_x ocurrence_' + it + '\" href=\"#\"><i class=\"fa fa-pencil-square-o\"/><i class=\"fa fa-trash-o\"/></a>\\\n                               </span>\\\n                             </td>'\n                      \n          str += fromJSONtoHTMLTable(current_value,\n                                     resourceType,\n                                     field,\n                                     it);\n        } else {\n          // if it is a single value, create the row for this occurence of the key\n          str += fromJSONtoHTMLRow(field,\n                                   current_value,\n                                   resourceType,\n                                   false,\n                                   it);\n        }\n      }\n    } else // or value can be a string\n      {\n        var ocurrence_str = \"\";\n        if (ocurrence != null)\n            ocurrence_str = \" ocurrence_\" + ocurrence;\n\n        // If it comes from a vectorial daddy key, then reflect so in the html\n        if (vectorial_key) {\n          str += '<tr>\\\n                       <td class=\"key_td key_vectorial_td\">&emsp;&emsp;' + Locale.tr(field) + '</td>\\\n                       <td class=\"value_td value_vectorial_td value_td_input_' + field + ocurrence_str + ' vectorial_key_' + vectorial_key + '\" id=\"value_td_input_' + field + '\">' + value + '</td>\\\n                       <td class=\"text-right\">\\\n                         <span id=\"div_edit_vectorial\">\\\n                           <a id=\"div_edit_' + field + '\" class=\"edit_e' + ocurrence_str + ' vectorial_key_' + vectorial_key + '\" href=\"#\"><i class=\"fa fa-pencil-square-o\"/></a>\\\n                         </span>&emsp;\\\n                         <span id=\"div_minus_vectorial\">\\\n                           <a id=\"div_minus_' + field + '\" class=\"remove_x' + ocurrence_str + ' vectorial_key_' + vectorial_key + '\" href=\"#\"><i class=\"fa fa-trash-o\"/></a>\\\n                         </span>\\\n                       </td>\\\n                     </tr>'                 ;\n        } else {\n          // If it is not comming from a vectorial daddy key, it can still vectorial itself\n          if (typeof value == 'object') {\n            str += '<tr id=\"' + resourceType.toLowerCase() + '_template_table_' + field + '\">\\\n                             <td class=\"key_td key_vectorial_td\">'                           + Locale.tr(field) + '</td>\\\n                             <td class=\"value_vectorial_td\"></td>\\\n                             <td class=\"text-right\">\\\n                               <span id=\"div_add_vectorial\">\\\n                                 <a id=\"div_add_vectorial_'                               + field + '\" class=\"add_vectorial_a' + ocurrence_str + ' vectorial_key_' + field + '\" href=\"#\"><i class=\"fa fa-plus-sign\"/></a>\\\n                               </span>&emsp;\\\n                               <span id=\"div_minus\">\\\n                                 <a id=\"div_minus_'                               + field + '\" class=\"remove_vectorial_x' + ocurrence_str + '\" href=\"#\"><i class=\"fa fa-trash-o\"/></a>\\\n                               </span>\\\n                             </td>'\n            str += fromJSONtoHTMLTable(value,\n                       resourceType,\n                       field,\n                       ocurrence);\n          } else // or, just a single value\n             {\n               str += '<tr>\\\n                           <td class=\"key_td\">' + Locale.tr(field) + '</td>\\\n                           <td class=\"value_td\" id=\"value_td_input_' + field + '\">' + value + '</td>\\\n                           <td class=\"text-right\">\\\n                             <span id=\"div_edit\">\\\n                               <a id=\"div_edit_' + field + '\" class=\"edit_e' + ocurrence_str + '\" href=\"#\"><i class=\"fa fa-pencil-square-o\"/></a>\\\n                             </span>&emsp;\\\n                             <span id=\"div_minus\">\\\n                               <a id=\"div_minus_' + field + '\" class=\"remove_x' + ocurrence_str + '\" href=\"#\"><i class=\"fa fa-trash-o\"/></a>\\\n                             </span>\\\n                           </td>\\\n                         </tr>'                      ;\n             }\n        }\n\n      }\n\n    return str;\n  }\n\n  return {\n    'html': _html,\n    'setup': _setup\n  }\n})\n;\n","define('tabs/users-tab/panels/info',['require','hbs!./info/html','hbs!./info/chgrp-tr','utils/resource-select','utils/locale','opennebula/user','sunstone','utils/panel/template-table','../tabId','./info/panelId','tabs/users-tab/dialogs/password/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n  var TemplateChgrpTr = require('hbs!./info/chgrp-tr');\n  var ResourceSelect = require('utils/resource-select');\n  var Locale = require('utils/locale');\n  var OpenNebulaUser = require('opennebula/user');\n  var Sunstone = require('sunstone');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateTable = require('utils/panel/template-table');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"User\";\n  var XML_ROOT = \"USER\";\n  var PASSWORD_DIALOG_ID = require('tabs/users-tab/dialogs/password/dialogId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var groupTrHTML = TemplateChgrpTr({'element': this.element});\n\n    // TODO\n    //$(\".resource-info-header\", $(\"#users-tab\")).html(this.element.NAME);\n\n    var secondaryGroups;\n\n    if (typeof this.element.GROUPS.ID == \"object\") {\n      secondaryGroups = this.element.GROUPS.ID.join(\",\");\n    } else {\n      secondaryGroups = \"-\";\n    }\n\n    // TODO: simplify interface?\n    var strippedTemplate = $.extend({}, this.element.TEMPLATE);\n    delete strippedTemplate[\"SSH_PUBLIC_KEY\"];\n    delete strippedTemplate[\"LANG\"];\n    delete strippedTemplate[\"TABLE_ORDER\"];\n    delete strippedTemplate[\"DEFAULT_VIEW\"];\n\n    var templateTableHTML = TemplateTable.html(strippedTemplate, RESOURCE,\n                                              Locale.tr(\"Attributes\"));\n    //====\n\n    return TemplateInfo({\n      'element': this.element,\n      'groupTrHTML': groupTrHTML,\n      'secondaryGroups': secondaryGroups,\n      'templateTableHTML': templateTableHTML\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    // Template update\n    // TODO: simplify interface?\n    var strippedTemplate = $.extend({}, this.element.TEMPLATE);\n    delete strippedTemplate[\"SSH_PUBLIC_KEY\"];\n    delete strippedTemplate[\"LANG\"];\n    delete strippedTemplate[\"TABLE_ORDER\"];\n    delete strippedTemplate[\"DEFAULT_VIEW\"];\n\n    var hiddenValues = {};\n\n    if (this.element.TEMPLATE.SSH_PUBLIC_KEY != undefined) {\n      hiddenValues.SSH_PUBLIC_KEY = this.element.TEMPLATE.SSH_PUBLIC_KEY;\n    }\n    if (this.element.TEMPLATE.LANG != undefined) {\n      hiddenValues.LANG = this.element.TEMPLATE.LANG;\n    }\n    if (this.element.TEMPLATE.TABLE_ORDER != undefined) {\n      hiddenValues.TABLE_ORDER = this.element.TEMPLATE.TABLE_ORDER;\n    }\n    if (this.element.TEMPLATE.DEFAULT_VIEW != undefined) {\n      hiddenValues.DEFAULT_VIEW = this.element.TEMPLATE.DEFAULT_VIEW;\n    }\n\n    TemplateTable.setup(strippedTemplate, RESOURCE, this.element.ID, context, hiddenValues);\n    //===\n\n    // Chgrp\n    context.off(\"click\", \"#div_edit_chg_group_link\");\n    context.on(\"click\", \"#div_edit_chg_group_link\", function() {\n      ResourceSelect.insert(\"#value_td_group\", context, \"Group\", that.element.GID, false);\n    });\n\n    context.off(\"change\", \"#value_td_group .resource_list_select\");\n    context.on(\"change\", \"#value_td_group .resource_list_select\", function() {\n      var newGroupId = $(this).val();\n      if (newGroupId != \"\") {\n        Sunstone.runAction(RESOURCE + \".chgrp\", [that.element.ID], newGroupId);\n      }\n    });\n\n    // SSH input\n\n    context.off(\"click\", \".user_ssh_public_key_edit\");\n    context.on(\"click\", \".user_ssh_public_key_edit\", function() {\n      $(\"#user_ssh_public_key_text\", context).hide();\n      $(\"#user_ssh_public_key_textarea\", context).show().focus();\n    });\n\n    // Password button\n    context.off(\"click\", \"#update_password\");\n    context.on(\"click\", \"#update_password\", function(){\n      Sunstone.getDialog(PASSWORD_DIALOG_ID).setParams(\n        {selectedElements: [that.element.ID]});\n      Sunstone.getDialog(PASSWORD_DIALOG_ID).reset();\n      Sunstone.getDialog(PASSWORD_DIALOG_ID).show();\n    });\n\n    context.off(\"change\", \"#user_ssh_public_key_textarea\");\n    context.on(\"change\", \"#user_ssh_public_key_textarea\", function() {\n      var user_id = that.element.ID;\n\n      // TODO: use update --append instead of a show + update\n\n      OpenNebulaUser.show({\n        data : {\n          id: user_id\n        },\n        success: function(request, user_json) {\n          var template = that.element.TEMPLATE;\n\n          template[\"SSH_PUBLIC_KEY\"] = $(\"#user_ssh_public_key_textarea\", context).val();\n\n          template_str = \"\";\n          $.each(template, function(key, value) {\n            template_str += (key + '=' + '\"' + value + '\"\\n');\n          });\n\n          Sunstone.runAction(\"User.update_template\", user_id, template_str);\n        }\n      });\n    });\n\n    context.off(\"focusout\", \"#user_ssh_public_key_textarea\");\n    context.on(\"focusout\", \"#user_ssh_public_key_textarea\", function() {\n      $(\"#user_ssh_public_key_text\", context).show();\n      $(\"#user_ssh_public_key_textarea\", context).hide();\n    });\n\n    // Change table Order\n    context.off(\"click\", \"#div_edit_table_order\")\n    context.on(\"click\", \"#div_edit_table_order\", function() {\n      $(\".value_td_table_order\", context).html('<select id=\"table_order_select\">' +\n         '<option value=\"asc\">' + Locale.tr(\"ascending\") + '</option>' +\n         '<option value=\"desc\">' + Locale.tr(\"descending\") + '</option>' +\n       '</select>');\n\n      if (that.element.TEMPLATE.TABLE_ORDER) {\n        $('#table_order_select', context).val(that.element.TEMPLATE.TABLE_ORDER);\n      }\n    });\n\n    context.off(\"change\", \"#table_order_select\")\n    context.on(\"change\", \"#table_order_select\", function() {\n      var user_id = that.element.ID;\n      OpenNebulaUser.show({\n        data : {\n          id: user_id\n        },\n        success: function(request, user_json) {\n          var template = that.element.TEMPLATE;\n\n          template[\"TABLE_ORDER\"] = $(\"#table_order_select\", context).val();\n\n          template_str = \"\";\n          $.each(template, function(key, value) {\n            template_str += (key + '=' + '\"' + value + '\"\\n');\n          });\n\n          Sunstone.runAction(\"User.update_template\", user_id, template_str);\n        }\n      });\n    });\n\n    // Change language\n    context.off(\"click\", \"#div_edit_language\")\n    context.on(\"click\", \"#div_edit_language\", function() {\n      $(\".value_td_language\", context).html('<select id=\"language_select\">' +\n         Locale.language_options +\n       '</select>');\n\n      if (that.element.TEMPLATE.LANG) {\n        $('#language_select', context).val(that.element.TEMPLATE.LANG);\n      }\n    });\n\n    context.off(\"change\", \"#language_select\")\n    context.on(\"change\", \"#language_select\", function() {\n      var user_id = that.element.ID;\n      OpenNebulaUser.show({\n        data : {\n          id: user_id\n        },\n        success: function(request, user_json) {\n          var template = that.element.TEMPLATE;\n\n          template[\"LANG\"] = $(\"#language_select\", context).val();\n\n          template_str = \"\";\n          $.each(template, function(key, value) {\n            template_str += (key + '=' + '\"' + value + '\"\\n');\n          });\n\n          Sunstone.runAction(\"User.update_language\", user_id, template_str);\n        }\n      });\n    });\n\n    // Change view\n    context.off(\"click\", \"#div_edit_view\")\n    context.on(\"click\", \"#div_edit_view\", function() {\n      var options = '';\n      $.each( config['available_views'], function(id, view) {\n        options += '<option value=\"'+view+'\">'+view+'</option>';\n      });\n\n      $(\".value_td_view\", context).html('<select id=\"view_select\">' +\n         options +\n       '</select>');\n\n      if (that.element.TEMPLATE.DEFAULT_VIEW) {\n        $('#view_select', context).val(that.element.TEMPLATE.DEFAULT_VIEW);\n      }\n    });\n\n    context.off(\"change\", \"#view_select\")\n    context.on(\"change\", \"#view_select\", function() {\n      var user_id = that.element.ID;\n      OpenNebulaUser.show({\n        data : {\n          id: user_id\n        },\n        success: function(request, user_json) {\n          var template = that.element.TEMPLATE;\n\n          template[\"DEFAULT_VIEW\"] = $(\"#view_select\", context).val();\n\n          template_str = \"\";\n          $.each(template, function(key, value) {\n            template_str += (key + '=' + '\"' + value + '\"\\n');\n          });\n\n          Sunstone.runAction(\"User.update_view\", user_id, template_str);\n        }\n      });\n    });\n\n    return false;\n  }\n});\n  \n","define('tabs/users-tab/panels/quotas',['require','utils/locale','sunstone-config','utils/quotas/quota-defaults','utils/quotas/quota-widgets','../tabId','./quotas/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n  var QuotaWidgets = require('utils/quotas/quota-widgets');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./quotas/panelId');\n  var RESOURCE = \"User\";\n  var XML_ROOT = \"USER\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info, tabId) {\n    this.tabId = tabId || TAB_ID;\n    this.title = Locale.tr(\"Quotas\");\n    this.icon = \"fa-align-left\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return QuotaWidgets.initQuotasPanel(\n      this.element,\n      QuotaDefaults.getDefaultQuotas(RESOURCE),\n      Config.isTabActionEnabled(this.tabId, RESOURCE+\".quotas_dialog\"));\n  }\n\n  function _setup(context) {\n    QuotaWidgets.setupQuotasPanel(\n      this.element,\n      context,\n      Config.isTabActionEnabled(this.tabId, RESOURCE+\".quotas_dialog\"),\n      RESOURCE);\n\n    return false;\n  }\n});\n\n","define('tabs/users-tab/panels/quotas/panelId',['require'],function(require){\n  return 'user_quotas_tab';\n});\n","define('tabs/users-tab/panels/accounting',['require','utils/locale','utils/accounting','../tabId','./accounting/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Accounting = require('utils/accounting');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./accounting/panelId');\n  var RESOURCE = \"User\";\n  var XML_ROOT = \"USER\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Accounting\");\n    this.icon = \"fa-bar-chart-o\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return Accounting.html();\n  }\n\n  function _setup(context) {\n    Accounting.setup(\n      context,\n      { fixed_user: this.element.ID,\n        init_group_by: \"vm\"\n      });\n  }\n});\n\n","define('tabs/users-tab/panels/accounting/panelId',['require'],function(require){\n  return 'user_accounting_tab';\n});\n","define('tabs/users-tab/panels/showback',['require','utils/locale','sunstone-config','utils/showback','../tabId','./showback/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Showback = require('utils/showback');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./showback/panelId');\n  var RESOURCE = \"User\";\n  var XML_ROOT = \"USER\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Showback\");\n    this.icon = \"fa-money\";\n\n    this.element = info[XML_ROOT];\n\n    if (!Config.isFeatureEnabled(\"showback\")) {\n      throw \"Showback is disabled in the configuration\";\n    }\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return Showback.html();\n  }\n\n  function _setup(context) {\n    Showback.setup(\n      context,\n      { fixed_user: this.element.ID,\n        fixed_group: \"\"\n      }\n    );\n  }\n});\n\n","define('tabs/users-tab/panels/showback/panelId',['require'],function(require){\n  return 'user_showback_tab';\n});\n",";(function ($, window, document, undefined) {\n  'use strict';\n\n  Foundation.libs.abide = {\n    name : 'abide',\n\n    version : '5.5.1',\n\n    settings : {\n      live_validate : true,\n      validate_on_blur : true,\n      focus_on_invalid : true,\n      error_labels : true, // labels with a for=\"inputId\" will recieve an `error` class\n      error_class : 'error',\n      timeout : 1000,\n      patterns : {\n        alpha : /^[a-zA-Z]+$/,\n        alpha_numeric : /^[a-zA-Z0-9]+$/,\n        integer : /^[-+]?\\d+$/,\n        number : /^[-+]?\\d*(?:[\\.\\,]\\d+)?$/,\n\n        // amex, visa, diners\n        card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/,\n        cvv : /^([0-9]){3,4}$/,\n\n        // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address\n        email : /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,\n\n        url : /^(https?|ftp|file|ssh):\\/\\/(((([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-zA-Z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-zA-Z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-zA-Z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/,\n        // abc.de\n        domain : /^([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,8}$/,\n\n        datetime : /^([0-2][0-9]{3})\\-([0-1][0-9])\\-([0-3][0-9])T([0-5][0-9])\\:([0-5][0-9])\\:([0-5][0-9])(Z|([\\-\\+]([0-1][0-9])\\:00))$/,\n        // YYYY-MM-DD\n        date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,\n        // HH:MM:SS\n        time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,\n        dateISO : /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/,\n        // MM/DD/YYYY\n        month_day_year : /^(0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.]\\d{4}$/,\n        // DD/MM/YYYY\n        day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \\/.](0[1-9]|1[012])[- \\/.]\\d{4}$/,\n\n        // #FFF or #FFFFFF\n        color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/\n      },\n      validators : {\n        equalTo : function (el, required, parent) {\n          var from  = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,\n              to    = el.value,\n              valid = (from === to);\n\n          return valid;\n        }\n      }\n    },\n\n    timer : null,\n\n    init : function (scope, method, options) {\n      this.bindings(method, options);\n    },\n\n    events : function (scope) {\n      var self = this,\n          form = self.S(scope).attr('novalidate', 'novalidate'),\n          settings = form.data(this.attr_name(true) + '-init') || {};\n\n      this.invalid_attr = this.add_namespace('data-invalid');\n\n      form\n        .off('.abide')\n        .on('submit.fndtn.abide validate.fndtn.abide', function (e) {\n          var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name()));\n          return self.validate(self.S(this).find('input, textarea, select').get(), e, is_ajax);\n        })\n        .on('reset', function () {\n          return self.reset($(this));\n        })\n        .find('input, textarea, select')\n          .off('.abide')\n          .on('blur.fndtn.abide change.fndtn.abide', function (e) {\n            if (settings.validate_on_blur === true) {\n              self.validate([this], e);\n            }\n          })\n          .on('keydown.fndtn.abide', function (e) {\n            if (settings.live_validate === true && e.which != 9) {\n              clearTimeout(self.timer);\n              self.timer = setTimeout(function () {\n                self.validate([this], e);\n              }.bind(this), settings.timeout);\n            }\n          });\n    },\n\n    reset : function (form) {\n      form.removeAttr(this.invalid_attr);\n      $(this.invalid_attr, form).removeAttr(this.invalid_attr);\n      $('.' + this.settings.error_class, form).not('small').removeClass(this.settings.error_class);\n    },\n\n    validate : function (els, e, is_ajax) {\n      var validations = this.parse_patterns(els),\n          validation_count = validations.length,\n          form = this.S(els[0]).closest('form'),\n          submit_event = /submit/.test(e.type);\n\n      // Has to count up to make sure the focus gets applied to the top error\n      for (var i = 0; i < validation_count; i++) {\n        if (!validations[i] && (submit_event || is_ajax)) {\n          if (this.settings.focus_on_invalid) {\n            els[i].focus();\n          }\n          form.trigger('invalid').trigger('invalid.fndtn.abide');\n          this.S(els[i]).closest('form').attr(this.invalid_attr, '');\n          return false;\n        }\n      }\n\n      if (submit_event || is_ajax) {\n        form.trigger('valid').trigger('valid.fndtn.abide');\n      }\n\n      form.removeAttr(this.invalid_attr);\n\n      if (is_ajax) {\n        return false;\n      }\n\n      return true;\n    },\n\n    parse_patterns : function (els) {\n      var i = els.length,\n          el_patterns = [];\n\n      while (i--) {\n        el_patterns.push(this.pattern(els[i]));\n      }\n\n      return this.check_validation_and_apply_styles(el_patterns);\n    },\n\n    pattern : function (el) {\n      var type = el.getAttribute('type'),\n          required = typeof el.getAttribute('required') === 'string';\n\n      var pattern = el.getAttribute('pattern') || '';\n\n      if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {\n        return [el, this.settings.patterns[pattern], required];\n      } else if (pattern.length > 0) {\n        return [el, new RegExp(pattern), required];\n      }\n\n      if (this.settings.patterns.hasOwnProperty(type)) {\n        return [el, this.settings.patterns[type], required];\n      }\n\n      pattern = /.*/;\n\n      return [el, pattern, required];\n    },\n\n    // TODO: Break this up into smaller methods, getting hard to read.\n    check_validation_and_apply_styles : function (el_patterns) {\n      var i = el_patterns.length,\n          validations = [],\n          form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),\n          settings = form.data(this.attr_name(true) + '-init') || {};\n      while (i--) {\n        var el = el_patterns[i][0],\n            required = el_patterns[i][2],\n            value = el.value.trim(),\n            direct_parent = this.S(el).parent(),\n            validator = el.getAttribute(this.add_namespace('data-abide-validator')),\n            is_radio = el.type === 'radio',\n            is_checkbox = el.type === 'checkbox',\n            label = this.S('label[for=\"' + el.getAttribute('id') + '\"]'),\n            valid_length = (required) ? (el.value.length > 0) : true,\n            el_validations = [];\n\n        var parent, valid;\n\n        // support old way to do equalTo validations\n        if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' }\n\n        if (!direct_parent.is('label')) {\n          parent = direct_parent;\n        } else {\n          parent = direct_parent.parent();\n        }\n\n        if (validator) {\n          valid = this.settings.validators[validator].apply(this, [el, required, parent]);\n          el_validations.push(valid);\n        }\n\n        if (is_radio && required) {\n          el_validations.push(this.valid_radio(el, required));\n        } else if (is_checkbox && required) {\n          el_validations.push(this.valid_checkbox(el, required));\n        } else {\n\n          if (el_patterns[i][1].test(value) && valid_length ||\n            !required && el.value.length < 1 || $(el).attr('disabled')) {\n            el_validations.push(true);\n          } else {\n            el_validations.push(false);\n          }\n\n          el_validations = [el_validations.every(function (valid) {return valid;})];\n\n          if (el_validations[0]) {\n            this.S(el).removeAttr(this.invalid_attr);\n            el.setAttribute('aria-invalid', 'false');\n            el.removeAttribute('aria-describedby');\n            parent.removeClass(this.settings.error_class);\n            if (label.length > 0 && this.settings.error_labels) {\n              label.removeClass(this.settings.error_class).removeAttr('role');\n            }\n            $(el).triggerHandler('valid');\n          } else {\n            this.S(el).attr(this.invalid_attr, '');\n            el.setAttribute('aria-invalid', 'true');\n\n            // Try to find the error associated with the input\n            var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class);\n            var errorID = errorElem.length > 0 ? errorElem[0].id : '';\n            if (errorID.length > 0) {\n              el.setAttribute('aria-describedby', errorID);\n            }\n\n            // el.setAttribute('aria-describedby', $(el).find('.error')[0].id);\n            parent.addClass(this.settings.error_class);\n            if (label.length > 0 && this.settings.error_labels) {\n              label.addClass(this.settings.error_class).attr('role', 'alert');\n            }\n            $(el).triggerHandler('invalid');\n          }\n        }\n        validations.push(el_validations[0]);\n      }\n      validations = [validations.every(function (valid) {return valid;})];\n      return validations;\n    },\n\n    valid_checkbox : function (el, required) {\n      var el = this.S(el),\n          valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled'));\n\n      if (valid) {\n        el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);\n      } else {\n        el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);\n      }\n\n      return valid;\n    },\n\n    valid_radio : function (el, required) {\n      var name = el.getAttribute('name'),\n          group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find(\"[name='\" + name + \"']\"),\n          count = group.length,\n          valid = false,\n          disabled = false;\n\n      // Has to count up to make sure the focus gets applied to the top error\n        for (var i=0; i < count; i++) {\n            if( group[i].getAttribute('disabled') ){\n                disabled=true;\n                valid=true;\n            } else {\n                if (group[i].checked){\n                    valid = true;\n                } else {\n                    if( disabled ){\n                        valid = false;\n                    }\n                }\n            }\n        }\n\n      // Has to count up to make sure the focus gets applied to the top error\n      for (var i = 0; i < count; i++) {\n        if (valid) {\n          this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);\n        } else {\n          this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);\n        }\n      }\n\n      return valid;\n    },\n\n    valid_equal : function (el, required, parent) {\n      var from  = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,\n          to    = el.value,\n          valid = (from === to);\n\n      if (valid) {\n        this.S(el).removeAttr(this.invalid_attr);\n        parent.removeClass(this.settings.error_class);\n        if (label.length > 0 && settings.error_labels) {\n          label.removeClass(this.settings.error_class);\n        }\n      } else {\n        this.S(el).attr(this.invalid_attr, '');\n        parent.addClass(this.settings.error_class);\n        if (label.length > 0 && settings.error_labels) {\n          label.addClass(this.settings.error_class);\n        }\n      }\n\n      return valid;\n    },\n\n    valid_oneof : function (el, required, parent, doNotValidateOthers) {\n      var el = this.S(el),\n        others = this.S('[' + this.add_namespace('data-oneof') + ']'),\n        valid = others.filter(':checked').length > 0;\n\n      if (valid) {\n        el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);\n      } else {\n        el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);\n      }\n\n      if (!doNotValidateOthers) {\n        var _this = this;\n        others.each(function () {\n          _this.valid_oneof.call(_this, this, null, null, true);\n        });\n      }\n\n      return valid;\n    }\n  };\n}(jQuery, window, window.document));\n\ndefine(\"foundation.abide\", [\"foundation.core\"], function(){});\n\n","define('utils/form-panels/form-panel',['require','foundation.abide','utils/notifier','utils/locale','sunstone'],function(require) {\n  // Dependencies\n  require('foundation.abide');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var Sunstone = require('sunstone');\n\n  function BaseFormPanel() {\n    return this;\n  }\n\n  BaseFormPanel.prototype = {\n    'insert': _insert,\n    'reset': _reset,\n    'setAction': _setAction,\n    'title': _title,\n    'buttonText': _buttonText,\n    'resetButton': _resetButton,\n    'actionOptions': _actionOptions\n  }\n\n  return BaseFormPanel;\n\n  function _insert(context) {\n    var that = this;\n    this.wizardElement = $(that.htmlWizard()).appendTo( $(\"#wizardForms\", context) );\n    if (that.htmlAdvanced) {\n      this.advancedElement = $(that.htmlAdvanced()).appendTo( $(\"#advancedForms\", context) );\n    }\n    \n    context.off('invalid.fndtn.abide', '#' + that.formPanelId + 'Wizard');\n    context.off('valid.fndtn.abide', '#' + that.formPanelId + 'Wizard');\n    context.on('invalid.fndtn.abide', '#' + that.formPanelId + 'Wizard', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; };\n\n      Notifier.notifyError(Locale.tr(\"One or more required fields are missing or malformed.\"));\n      Sunstone.hideFormPanelLoading(that.tabId);\n    }).on('valid.fndtn.abide', '#' + that.formPanelId + 'Wizard', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; };\n\n      that.submitWizard(this);\n      return false;\n    });\n\n    context.off('invalid.fndtn.abide', '#' + that.formPanelId + 'Advanced');\n    context.off('valid.fndtn.abide', '#' + that.formPanelId + 'Advanced');\n    context.on('invalid.fndtn.abide', '#' + that.formPanelId + 'Advanced', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; };\n\n      Notifier.notifyError(Locale.tr(\"One or more required fields are missing or malformed.\"));\n      Sunstone.hideFormPanelLoading(that.tabId);\n    }).on('valid.fndtn.abide', '#' + that.formPanelId + 'Advanced', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; };\n\n      that.submitAdvanced(this);\n      return false;\n    });\n\n    context.foundation('reflow', 'abide');\n    that.setup(context);\n  }\n\n  function _reset(context) {\n    this.wizardElement.remove();\n    if (this.htmlAdvanced) {\n      this.advancedElement.remove();\n    }\n\n    this.insert(context);\n  }\n\n  function _setAction(context, action) {\n    var prevAction = this.action;\n\n    this.action = action;\n\n    if (prevAction != action || action == \"update\") {\n      this.reset(context);\n    }\n  }\n\n  // @return [Object] actionOptions of the form based on the defined action\n  function _actionOptions() {\n    if (this.action) {\n      var actionOptions = this.actions[this.action]\n      if (actionOptions) {\n        return actionOptions;\n      } else {\n        return null;\n      }\n    } else {\n      return null;\n    }\n  }\n\n  // @return [String] The title of the form based on the defined action\n  function _title() {\n    var actionOptions = this.actionOptions();\n    if (actionOptions) {\n      return actionOptions.title;\n    } else {\n      return \"\";\n    }\n  }\n\n  // @return [String] The buttonText of the form based on the defined action\n  function _buttonText() {\n    var actionOptions = this.actionOptions();\n    if (actionOptions) {\n      return actionOptions.buttonText;\n    } else {\n      return \"\";\n    }\n  }\n\n  // @return [Boolean] Is enabled the reset button based on the defined action\n  function _resetButton() {\n    var actionOptions = this.actionOptions();\n    if (actionOptions) {\n      return actionOptions.resetButton;\n    } else {\n      return false;\n    }\n  }\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/users-tab/form-panels/create/wizard',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\" >\\n    <div class=\\\"medium-6 columns\\\">\\n      \";\n  stack1 = ((helper = (helper = helpers.userCreationHTML || (depth0 != null ? depth0.userCreationHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"userCreationHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/users-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/users-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','tabs/users-tab/utils/user-creation','hbs!./create/wizard','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var UserCreation = require('tabs/users-tab/utils/user-creation');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n\n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create User\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      }\n    };\n\n    this.userCreation = new UserCreation(FORM_PANEL_ID);\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId,\n      'userCreationHTML': this.userCreation.html()\n    });\n  }\n\n  function _setup(context) {\n    this.userCreation.setup(context);\n  }\n\n  function _submitWizard(context) {\n    var user_json = {\n      \"user\" : this.userCreation.retrieve(context)\n    };\n\n    Sunstone.runAction(\"User.create\",user_json);\n    return false;\n  }\n\n  function _onShow(context) {\n  }\n});\n\n","define('tabs/users-tab',['require','utils/locale','./users-tab/buttons','./users-tab/actions','./users-tab/datatable','./users-tab/tabId','./users-tab/dialogs/password','./users-tab/dialogs/auth-driver','./users-tab/dialogs/quotas','./users-tab/panels/info','./users-tab/panels/quotas','./users-tab/panels/accounting','./users-tab/panels/showback','./users-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./users-tab/buttons');\n  var Actions = require('./users-tab/actions');\n  var Table = require('./users-tab/datatable');\n\n  var TAB_ID = require('./users-tab/tabId');\n  var DATATABLE_ID = \"dataTableUsers\";\n\n  var _dialogs = [\n    require('./users-tab/dialogs/password'),\n    require('./users-tab/dialogs/auth-driver'),\n    require('./users-tab/dialogs/quotas')\n  ];\n\n  var _panels = [\n    require('./users-tab/panels/info'),\n    require('./users-tab/panels/quotas'),\n    require('./users-tab/panels/accounting'),\n    require('./users-tab/panels/showback')\n  ];\n\n  var _formPanels = [\n    require('./users-tab/form-panels/create')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Users\"),\n    tabClass: \"subTab\",\n    parentTab: \"system-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-user\"></i>&emsp;'+Locale.tr(\"Users\"),\n    infoHeader: '<i class=\"fa fa-fw fa-user\"></i>&emsp;'+Locale.tr(\"User\"),\n    subheader: '<span>\\\n        <span class=\"total_users\"/> <small>'+Locale.tr(\"TOTAL\")+'</small>\\\n      </span>',\n    resource: 'User',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/settings-tab/panels/user-config/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 large-centered columns\\\">\\n        <dl class=\\\"accordion\\\" data-accordion>\\n          <dd class=\\\"accordion-navigation\\\">\\n            <a href=\\\"#provision_update_language_accordion\\\" class=\\\"text-center accordion-a\\\">\\n              <div class=\\\"row only-not-active\\\">\\n                <div class=\\\"large-12 large-centered columns\\\">\\n                  <div class=\\\"text-center\\\">\\n                    <span class=\\\"fa-stack fa-3x\\\" style=\\\"color: #777\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i> <i class=\\\"fa fa-comments fa-stack-1x fa-inverse\\\"></i>\\n                    </span>\\n                  </div>\\n                </div>\\n              </div>\\n              <br class=\\\"only-not-active\\\">\\n              <i class=\\\"fa fa-lg fa-comments only-active\\\"></i>\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Change Language\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </a>\\n            <div id=\\\"provision_update_language_accordion\\\" class=\\\"content\\\">\\n              <br>\\n              <form id=\\\"provision_change_language_form\\\">\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"large-12 columns\\\">\\n                    <select type=\\\"language\\\" id=\\\"provision_new_language\\\" class=\\\"provision-input\\\" style=\\\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\">\";\n  stack1 = ((helper = (helper = helpers.languageOptions || (depth0 != null ? depth0.languageOptions : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"languageOptions\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</select>\\n                  </div>\\n                </div>\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"large-12 columns\\\">\\n                    <button href\\\"#\\\" type=\\\"submit\\\" class=\\\"button large radius large-12 small-12\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update Language\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n                  </div>\\n                </div>\\n              </form>\\n            </div>\\n          </dd>\\n        </dl>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 large-centered columns\\\">\\n        <dl class=\\\"accordion\\\" data-accordion>\\n          <dd class=\\\"accordion-navigation\\\">\\n            <a href=\\\"#provision_update_password_accordion\\\" class=\\\"text-center accordion-a\\\">\\n              <div class=\\\"row only-not-active\\\">\\n                <div class=\\\"large-12 large-centered columns\\\">\\n                  <div class=\\\"text-center\\\">\\n                    <span class=\\\"fa-stack fa-3x\\\" style=\\\"color: #777\\\">\\n                      <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n                      <i class=\\\"fa fa-lock fa-stack-1x fa-inverse\\\"></i>\\n                    </span>\\n                  </div>\\n                </div>\\n              </div>\\n              <br class=\\\"only-not-active\\\">\\n              <i class=\\\"fa fa-lg fa-lock only-active\\\"></i>\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Change Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </a>\\n            <div id=\\\"provision_update_password_accordion\\\" class=\\\"content\\\">\\n              <br>\\n              <form id=\\\"provision_change_password_form\\\">\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"large-12 columns\\\">\\n                    <input type=\\\"password\\\" id=\\\"provision_new_password\\\" class=\\\"provision-input\\\" placeholder=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"New Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"/>\\n                  </div>\\n                </div>\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"large-12 columns\\\">\\n                    <input type=\\\"password\\\" id=\\\"provision_new_confirm_password\\\" class=\\\"provision-input\\\" placeholder=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Confirm Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"/>\\n                  </div>\\n                </div>\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"large-12 columns\\\">\\n                    <button href\\\"#\\\" type=\\\"submit\\\" class=\\\"button large radius large-12 small-12\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n                  </div>\\n                </div>\\n              </form>\\n            </div>\\n          </dd>\\n        </dl>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n<br>\\n<br>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 large-centered columns\\\">\\n        <dl class=\\\"accordion\\\" data-accordion>\\n          <dd class=\\\"accordion-navigation\\\">\\n            <a href=\\\"#provision_update_view_accordion\\\" class=\\\"text-center accordion-a\\\">\\n              <div class=\\\"row only-not-active\\\">\\n                <div class=\\\"large-12 large-centered columns\\\">\\n                  <div class=\\\"text-center\\\">\\n                    <span class=\\\"fa-stack fa-3x\\\" style=\\\"color: #777\\\">\\n                      <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n                      <i class=\\\"fa fa-picture-o fa-stack-1x fa-inverse\\\"></i>\\n                    </span>\\n                  </div>\\n                </div>\\n              </div>\\n              <br class=\\\"only-not-active\\\">\\n              <i class=\\\"fa fa-lg fa-picture-o only-active\\\"></i>\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Change view\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </a>\\n            <div id=\\\"provision_update_view_accordion\\\" class=\\\"content\\\">\\n              <br>\\n              <form id=\\\"provision_change_view_form\\\">\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"large-12 columns\\\">\\n                    <select id=\\\"provision_user_views_select\\\" class=\\\"provision-input\\\" style=\\\"height: 40px !important; font-size: 16px; padding: 0.5rem  !important;\\\"></select>\\n                  </div>\\n                </div>\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"large-12 columns\\\">\\n                    <button href\\\"#\\\" type=\\\"submit\\\" class=\\\"button large radius large-12 small-12\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update view\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n                  </div>\\n                </div>\\n              </form>\\n            </div>\\n          </dd>\\n        </dl>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <form id=\\\"provision_add_ssh_key_form\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 large-centered columns\\\">\\n          <dl class=\\\"accordion\\\" data-accordion>\\n            <dd class=\\\"accordion-navigation\\\">\\n              <a href=\\\"#provision_add_ssh_key_accordion\\\" class=\\\"text-center accordion-a\\\">\\n                <div class=\\\"row only-not-active\\\">\\n                  <div class=\\\"large-12 large-centered columns\\\">\\n                    <div class=\\\"text-center\\\">\\n                      <span class=\\\"fa-stack fa-3x\\\" style=\\\"color: #777\\\">\\n                        <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n                        <i class=\\\"fa fa-key fa-stack-1x fa-inverse\\\"></i>\\n                      </span>\\n                    </div>\\n                  </div>\\n                </div>\\n                <br class=\\\"only-not-active\\\">\\n                <i class=\\\"fa fa-key fa-lg only-active\\\"></i>\\n                <span class=\\\"provision_add_ssh_key_button\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add SSH Key\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n                <span class=\\\"provision_update_ssh_key_button\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update SSH Key\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n              </a>\\n              <div id=\\\"provision_add_ssh_key_accordion\\\" class=\\\"content\\\">\\n                <br>\\n                <p style=\\\"font-size: 16px; color: #999\\\">\\n                  <span class=\\\"provision_add_ssh_key_button\\\">\\n                    \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add a public SSH key to your account!\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                    <br>\\n                    \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"You will be able to access your Virtual Machines without password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                  </span>\\n                  <span class=\\\"provision_update_ssh_key_button\\\">\\n                    \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update your public SSH key!\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                    <br>\\n                    \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"You will be able to access your Virtual Machines without password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                  </span>\\n                </p>\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"large-12 large-centered columns\\\">\\n                    <textarea id=\\\"provision_ssh_key\\\" style=\\\"height: 100px; font-size: 14px\\\" placeholder=\\\"SSH key\\\" class=\\\"provision-input\\\"></textarea>\\n                  </div>\\n                </div>\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"large-12 large-centered columns\\\">\\n                    <button href=\\\"#\\\" type=\\\"submit\\\" class=\\\"provision_add_ssh_key_button button large radius large-12 small-12\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add SSH Key\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n                    <button href=\\\"#\\\" type=\\\"submit\\\" class=\\\"provision_update_ssh_key_button button large radius large-12 small-12 hidden\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update SSH Key\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n                  </div>\\n                </div>\\n              </div>\\n            </dd>\\n          </dl>\\n        </div>\\n      </div>\\n    </form>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/settings-tab/panels/user-config/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/settings-tab/panels/user-config',['require','foundation.accordion','utils/locale','sunstone-config','opennebula','hbs!./user-config/html','../tabId','./user-config/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  require('foundation.accordion');\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var OpenNebula = require('opennebula');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateEasyInfo = require('hbs!./user-config/html');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./user-config/panelId');\n  var RESOURCE = \"User\";\n  var XML_ROOT = \"USER\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info, tabId) {\n    this.tabId = tabId || TAB_ID;\n    this.title = Locale.tr(\"Config\");\n    this.icon = \"fa-info\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateEasyInfo({'languageOptions': Locale.language_options});\n  }\n\n  function _setup(context) {\n    $(document).foundation('accordion', 'reflow');\n    var ssh_key = this.element.TEMPLATE.SSH_PUBLIC_KEY;\n    if (ssh_key && ssh_key.length) {\n      $(\"#provision_ssh_key\", context).val(ssh_key);\n      $(\".provision_add_ssh_key_button\", context).hide();\n      $(\".provision_update_ssh_key_button\"), context.show();\n    } else {\n      $(\".provision_add_ssh_key_button\", context).show();\n      $(\".provision_update_ssh_key_button\", context).hide();\n    }\n\n    $('#provision_new_language option[value=\"' + config['user_config'][\"lang\"] + '\"]', context).attr('selected', 'selected');\n    $('#provision_user_views_select option[value=\"' + config['user_config'][\"default_view\"] + '\"]', context).attr('selected', 'selected');\n\n    $.each(config['available_views'], function(id, view) {\n      $('select#provision_user_views_select', context).append('<option value=\"' + view + '\">' + view + '</option>')\n    });\n\n    $(\"#provision_change_password_form\").submit(function() {\n      var pw = $('#provision_new_password', this).val();\n      var confirm_password = $('#provision_new_confirm_password', this).val();\n\n      if (!pw.length) {\n        Notifier.notifyError(Locale.tr(\"Fill in a new password\"));\n        return false;\n      }\n\n      if (pw !== confirm_password) {\n        Notifier.notifyError(Locale.tr(\"Passwords do not match\"));\n        return false;\n      }\n\n      Sunstone.runAction(\"User.passwd\", \"-1\", pw);\n      return false;\n    });\n\n    $(\"#provision_add_ssh_key_form\").submit(function() {\n      var keypair = $('#provision_ssh_key', this).val();\n\n      if (!keypair.length) {\n        Notifier.notifyError(Locale.tr(\"You have to provide an SSH key\"));\n        return false;\n      }\n\n      OpenNebula.User.show({\n        data : {\n          id: \"-1\"\n        },\n        success: function(request, user_json) {\n          var template = user_json.USER.TEMPLATE;\n\n          template[\"SSH_PUBLIC_KEY\"] = keypair;\n\n          template_str = \"\";\n          $.each(template, function(key, value) {\n            template_str += (key + '=' + '\"' + value + '\"\\n');\n          });\n\n          Sunstone.runAction(\"User.update_template\", \"-1\", template_str);\n        }\n      })\n      return false;\n    });\n\n    $(\"#provision_change_view_form\").submit(function() {\n      var view = $('#provision_user_views_select', this).val();\n\n      OpenNebula.User.show({\n        data : {\n          id: \"-1\"\n        },\n        success: function(request, user_json) {\n          var template = user_json.USER.TEMPLATE;\n\n          template[\"DEFAULT_VIEW\"] = view;\n\n          template_str = \"\";\n          $.each(template, function(key, value) {\n            template_str += (key + '=' + '\"' + value + '\"\\n');\n          });\n\n          var data = OpenNebula.Helper.action('update', {\"template_raw\" : template_str});\n\n          $.ajax({\n            url: 'config',\n            type: \"POST\",\n            dataType: \"json\",\n            data: JSON.stringify(data),\n            success: function() {\n              window.location.href = \".\";\n            },\n            error: function(response) {\n            }\n          });\n        }\n      })\n      return false;\n    });\n\n    $(\"#provision_change_language_form\").submit(function() {\n      var lang = $('#provision_new_language', this).val();\n\n      OpenNebula.User.show({\n        data : {\n          id: \"-1\"\n        },\n        success: function(request, user_json) {\n          var template = user_json.USER.TEMPLATE;\n\n          template[\"LANG\"] = lang;\n\n          template_str = \"\";\n          $.each(template, function(key, value) {\n            template_str += (key + '=' + '\"' + value + '\"\\n');\n          });\n\n          var data = OpenNebula.Helper.action('update', {\"template_raw\" : template_str});\n\n          $.ajax({\n            url: 'config',\n            type: \"POST\",\n            dataType: \"json\",\n            data: JSON.stringify(data),\n            success: function() {\n              window.location.href = \".\";\n            },\n            error: function(response) {\n            }\n          });\n        }\n      })\n      return false;\n    });\n\n    return false;\n  }\n});\n\n","define('tabs/settings-tab/panels/user-config/panelId',['require'],function(require) {\n  return 'user_config_tab';\n});\n\n","define('tabs/settings-tab/panels/group-quotas',['require','utils/locale','sunstone-config','utils/quotas/quota-defaults','utils/quotas/quota-widgets','opennebula/group','../tabId','./group-quotas/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n  var QuotaWidgets = require('utils/quotas/quota-widgets');\n  var OpenNebulaGroup = require('opennebula/group');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./group-quotas/panelId');\n  var RESOURCE = \"User\";\n  var XML_ROOT = \"USER\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info, tabId) {\n    this.tabId = tabId || TAB_ID;\n    this.title = Locale.tr(\"Group Quotas\");\n    this.icon = \"fa-align-left\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return '<div class=\"row\">\\\n              <div class=\"large-6 columns\">\\\n                <label>' + Locale.tr(\"Select group\") + ':\\\n                  <select id=\"quota_group_sel\">\\\n                  </select>\\\n                </label>\\\n              </div>\\\n            </div>\\\n            <div id=\"group_quotasTabBody\" class=\"row\">\\\n            </div>';\n  }\n\n  function _setup(context) {\n\n    var groups = this.element.GROUPS.ID;\n\n    if (!$.isArray(groups)){\n      groups = [groups];\n    }\n\n    var groupDropdownOptions = \"\";\n    $.each(groups, function(){\n      groupDropdownOptions +=\n      '<option elem_id=\"'+this+\n      '\" value=\"'+this+'\">'+\n      OpenNebulaGroup.getName(this)+' (id:'+this+')</option>';\n    });\n\n    $('select#quota_group_sel', context).html(groupDropdownOptions);\n\n    $(\"#quota_group_sel\", context).off(\"change\");\n    $(\"#quota_group_sel\", context).on(\"change\", function() {\n        var value_str = $('select#quota_group_sel').val();\n        if(value_str!=\"\")\n        {\n          fillGroupQuotas(value_str, context);\n        }\n    });\n\n    fillGroupQuotas('-1', context);\n    \n    return false;\n  }\n\n  function fillGroupQuotas(group_id, context){\n    OpenNebulaGroup.show({\n      data : {\n        id: group_id\n      },\n      success: function(request,group_json){\n        var info = group_json.GROUP;\n\n        var quotas_tab_html = QuotaWidgets.initQuotasPanel(\n          info,\n          QuotaDefaults.getDefaultQuotas(\"Group\"),\n          false);\n\n        $(\"#group_quotasTabBody\", context).html(quotas_tab_html);\n\n        QuotaWidgets.setupQuotasPanel(\n          info,\n          $(\"#group_quotasTabBody\", context),\n          false,\n          \"Group\");\n\n        $(\"select#quota_group_sel\", context).val(info.ID);\n      }\n    });\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/acls-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"medium-6 columns\\\">\\n      <fieldset>\\n        <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"This rule applies to\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-4 columns\\\">\\n            <input type=\\\"radio\\\" class=\\\"applies\\\" name=\\\"applies_select\\\" value=\\\"*\\\" id=\\\"applies_all\\\">\\n            <label class=\\\"applies\\\" for=\\\"applies_all\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"All\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          </div>\\n          <div class=\\\"large-4 columns\\\">\\n            <input type=\\\"radio\\\" class=\\\"applies\\\" name=\\\"applies_select\\\" value=\\\"applies_to_user\\\" id=\\\"applies_id\\\">\\n            <label class=\\\"applies\\\" for=\\\"applies_id\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          </div>\\n          <div class=\\\"large-4 columns\\\">\\n            <input type=\\\"radio\\\" class=\\\"applies\\\" name=\\\"applies_select\\\" value=\\\"applies_to_group\\\" id=\\\"applies_group\\\">\\n            <label class=\\\"applies\\\" for=\\\"applies_group\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"applies_to_user\\\">\\n              <label for=\\\"applies_to_user\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n              <div name=\\\"applies_to_user\\\" id=\\\"applies_to_user\\\">\\n              </div>\\n            </div>\\n            <div class=\\\"applies_to_group\\\">\\n              <label for=\\\"applies_to_group\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n              <div name=\\\"applies_to_group\\\" id=\\\"applies_to_group\\\">\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </fieldset>\\n    </div>\\n    <div class=\\\"medium-6 columns\\\">\\n      <label for=\\\"zones_applies\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Zones where the rule applies\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      <div name=\\\"zones_applies\\\" id=\\\"zones_applies\\\">\\n      </div>\\n    </div>\\n  </div>\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Affected resources\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_host\\\" name=\\\"res_host\\\" class=\\\"resource_cb\\\" value=\\\"HOST\\\">\\n        <label for=\\\"res_host\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hosts\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_cluster\\\" name=\\\"res_cluster\\\" class=\\\"resource_cb\\\" value=\\\"CLUSTER\\\">\\n        <label for=\\\"res_cluster\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Clusters\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_datastore\\\" name=\\\"res_datastore\\\" class=\\\"resource_cb\\\" value=\\\"DATASTORE\\\">\\n        <label for=\\\"res_datastore\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastores\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_vm\\\" name=\\\"res_vm\\\" class=\\\"resource_cb\\\" value=\\\"VM\\\">\\n        <label for=\\\"res_vm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Machines\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_net\\\" name=\\\"res_net\\\" class=\\\"resource_cb\\\" value=\\\"NET\\\">\\n        <label for=\\\"res_net\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Networks\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_image\\\" name=\\\"res_image\\\" class=\\\"resource_cb\\\" value=\\\"IMAGE\\\">\\n        <label for=\\\"res_image\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Images\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_template\\\" name=\\\"res_template\\\" class=\\\"resource_cb\\\" value=\\\"TEMPLATE\\\">\\n        <label for=\\\"res_template\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Templates\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_user\\\" name=\\\"res_user\\\" class=\\\"resource_cb\\\" value=\\\"USER\\\">\\n        <label for=\\\"res_user\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Users\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_group\\\" name=\\\"res_group\\\" class=\\\"resource_cb\\\" value=\\\"GROUP\\\">\\n        <label for=\\\"res_group\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Groups\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_document\\\" name=\\\"res_document\\\" class=\\\"resource_cb\\\" value=\\\"DOCUMENT\\\">\\n        <label for=\\\"res_document\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Documents\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_zone\\\" name=\\\"res_zone\\\" class=\\\"resource_cb\\\" value=\\\"ZONE\\\">\\n        <label for=\\\"res_zone\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Zones\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_secgroup\\\" name=\\\"res_secgroup\\\" class=\\\"resource_cb\\\" value=\\\"SECGROUP\\\">\\n        <label for=\\\"res_secgroup\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Security Groups\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"res_vdc\\\" name=\\\"res_vdc\\\" class=\\\"resource_cb\\\" value=\\\"VDC\\\">\\n        <label for=\\\"res_vdc\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VDCs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n    </div>\\n  </fieldset>\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Resource subset\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-3 columns\\\">\\n        <input type=\\\"radio\\\" class=\\\"res_subgroup\\\" name=\\\"mode_select\\\" value=\\\"*\\\" id=\\\"res_subgroup_all\\\">\\n        <label class=\\\"res_subgroup\\\" for=\\\"res_subgroup_all\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"All\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 columns\\\">\\n        <input type=\\\"radio\\\" class=\\\"res_subgroup\\\" name=\\\"mode_select\\\" value=\\\"res_id\\\" id=\\\"res_subgroup_id\\\">\\n        <label class=\\\"res_subgroup\\\" for=\\\"res_subgroup_id\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 columns\\\">\\n        <input type=\\\"radio\\\" class=\\\"res_subgroup\\\" name=\\\"mode_select\\\" value=\\\"belonging_to\\\" id=\\\"res_subgroup_group\\\">\\n        <label class=\\\"res_subgroup\\\" for=\\\"res_subgroup_group\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 columns\\\">\\n        <input type=\\\"radio\\\" class=\\\"res_subgroup\\\" name=\\\"mode_select\\\" value=\\\"in_cluster\\\" id=\\\"res_subgroup_cluster\\\">\\n        <label class=\\\"res_subgroup\\\" for=\\\"res_subgroup_cluster\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cluster\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <div class=\\\"res_id\\\">\\n          <label for=\\\"res_id\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Resource ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n          <input type=\\\"text\\\" name=\\\"res_id\\\" id=\\\"res_id\\\"></input>\\n        </div>\\n        <div class=\\\"belonging_to\\\">\\n          <label for=\\\"belonging_to\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n          <div name=\\\"belonging_to\\\" id=\\\"belonging_to\\\">\\n          </div>\\n        </div>\\n        <div class=\\\"in_cluster\\\">\\n          <label for=\\\"in_cluster\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cluster\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n          <div name=\\\"in_cluster\\\" id=\\\"in_cluster\\\">\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </fieldset>\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Allowed operations\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"right_delete\\\" name=\\\"right_delete\\\" class=\\\"right_cb\\\" value=\\\"USE\\\">\\n        <label for=\\\"right_delete\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Use\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"right_use\\\" name=\\\"right_use\\\" class=\\\"right_cb\\\" value=\\\"MANAGE\\\">\\n        <label for=\\\"right_use\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Manage\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"right_manage\\\" name=\\\"right_manage\\\" class=\\\"right_cb\\\" value=\\\"ADMIN\\\">\\n        <label for=\\\"right_manage\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Administrate\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n      <div class=\\\"large-3 medium-6 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"right_create\\\" name=\\\"right_create\\\" class=\\\"right_cb\\\" value=\\\"CREATE\\\">\\n        <label for=\\\"right_create\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n    </div>\\n  </fieldset>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <label for=\\\"acl_preview\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ACL String preview\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n      <input type=\\\"text\\\" name=\\\"acl_preview\\\" id=\\\"acl_preview\\\"></input>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/acls-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/acls-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','utils/notifier','utils/resource-select','hbs!./create/wizard','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Notifier = require('utils/notifier');\n  var ResourceSelect = require('utils/resource-select');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n\n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create ACL\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      }\n    };\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId\n    });\n  }\n\n  function _setup(context) {\n    //Default selected options\n    $('#applies_all',context).attr('checked','checked');\n    $('.applies_to_user',context).hide();\n    $('.applies_to_group',context).hide();\n\n    $('#res_subgroup_all',context).attr('checked','checked');\n    $('.res_id',context).hide();\n    $('.belonging_to',context).hide();\n    $('.in_cluster',context).hide();\n\n    //Applies to subset radio buttons\n    $('.applies',context).click(function(){\n      var value = $(this).val();\n      switch (value) {\n      case \"*\":\n        $('.applies_to_user',context).hide();\n        $('.applies_to_group',context).hide();\n        break;\n      case \"applies_to_user\":\n        $('.applies_to_user',context).show();\n        $('.applies_to_group',context).hide();\n        break;\n      case \"applies_to_group\":\n        $('.applies_to_user',context).hide();\n        $('.applies_to_group',context).show();\n        break;\n      }\n    });\n\n    //Resource subset radio buttons\n    $('.res_subgroup',context).click(function(){\n      var value = $(this).val();\n      switch (value) {\n      case \"*\":\n        $('.res_id',context).hide();\n        $('.belonging_to',context).hide();\n        $('.in_cluster',context).hide();\n        break;\n      case \"res_id\":\n        $('.res_id',context).show();\n        $('.belonging_to').hide();\n        $('.in_cluster',context).hide();\n        break;\n      case \"belonging_to\":\n        $('.res_id',context).hide();\n        $('.belonging_to',context).show();\n        $('.in_cluster',context).hide();\n        break;\n      case \"in_cluster\":\n        $('.res_id',context).hide();\n        $('.belonging_to',context).hide();\n        $('.in_cluster',context).show();\n        break;\n      }\n    });\n\n    //trigger ACL string preview on keyup\n    $('input#res_id',context).keyup(function(){\n      $(this).trigger(\"change\");\n    });\n\n    //update the rule preview every time some field changes\n    context.off('change', 'input,select');\n    context.on('change', 'input,select', function(){\n      var user=\"\";\n      var mode = $('.applies:checked',context).val();\n      switch (mode) {\n        case \"*\":\n          user=\"*\";\n          break;\n        case \"applies_to_user\":\n          user=\"#\"+$('div#applies_to_user .resource_list_select',context).val();\n          break;\n        case \"applies_to_group\":\n          user=\"@\"+$('div#applies_to_group .resource_list_select',context).val();\n          break;\n      }\n\n      var resources = \"\";\n      $('.resource_cb:checked',context).each(function(){\n        resources+=$(this).val()+'+';\n      });\n\n      if (resources.length) {\n        resources = resources.substring(0,resources.length-1);\n      }\n\n      var belonging=\"\";\n      var mode = $('.res_subgroup:checked',context).val();\n      switch (mode) {\n        case \"*\":\n          belonging=\"*\";\n          break;\n        case \"res_id\":\n          belonging=\"#\"+$('#res_id',context).val();\n          break;\n        case \"belonging_to\":\n          belonging=\"@\"+$('div#belonging_to .resource_list_select',context).val();\n          break;\n        case \"in_cluster\":\n          belonging=\"%\"+$('#in_cluster .resource_list_select',context).val();\n          break;\n      }\n\n      var rights = \"\";\n      $('.right_cb:checked',context).each(function(){\n        rights+=$(this).val()+'+';\n      });\n      if (rights.length) {\n        rights = rights.substring(0,rights.length-1);\n      }\n\n      var zone = $('#zones_applies .resource_list_select',context).val();\n\n      if (zone != \"*\"){\n        zone = '#'+zone;\n      }\n\n      var acl_string = user + ' ' + resources + '/' + belonging + ' ' +\n                       rights + ' ' + zone;\n      $('#acl_preview',context).val(acl_string);\n    });\n  }\n\n  function _submitWizard(context) {\n    var mode = $('.applies:checked',context).val();\n    switch (mode) {\n      case \"applies_to_user\":\n        var l=$('#applies_to_user .resource_list_select',context).val().length;\n        if (!l){\n          Sunstone.hideFormPanelLoading(this.tabId);\n          Notifier.notifyError(Locale.tr(\"Please select a user to whom the acl applies\"));\n          return false;\n        }\n        break;\n      case \"applies_to_group\":\n        var l=$('#applies_to_group .resource_list_select',context).val().length;\n        if (!l){\n          Sunstone.hideFormPanelLoading(this.tabId);\n          Notifier.notifyError(Locale.tr(\"Please select a group to whom the acl applies\"));\n          return false;\n        }\n        break;\n    }\n\n    var resources = $('.resource_cb:checked',context).length;\n    if (!resources) {\n      Sunstone.hideFormPanelLoading(this.tabId);\n      Notifier.notifyError(Locale.tr(\"Please select at least one resource\"));\n      return false;\n    }\n\n    var mode = $('.res_subgroup:checked',context).val();\n    switch (mode) {\n      case \"res_id\":\n        var l=$('#res_id',context).val().length;\n        if (!l){\n          Sunstone.hideFormPanelLoading(this.tabId);\n          Notifier.notifyError(Locale.tr(\"Please provide a resource ID for the resource(s) in this rule\"));\n          return false;\n        }\n        break;\n      case \"belonging_to\":\n        var l=$('#belonging_to .resource_list_select',context).val().length;\n        if (!l){\n          Sunstone.hideFormPanelLoading(this.tabId);\n          Notifier.notifyError(\"Please select a group to which the selected resources belong to\");\n          return false;\n        }\n        break;\n      case \"in_cluster\":\n        var l=$('#in_cluster .resource_list_select',context).val().length;\n        if (!l){\n          Sunstone.hideFormPanelLoading(this.tabId);\n          Notifier.notifyError(\"Please select a cluster to which the selected resources belong to\");\n          return false;\n        }\n        break;\n    }\n\n    var rights = $('.right_cb:checked',context).length;\n    if (!rights) {\n      Sunstone.hideFormPanelLoading(this.tabId);\n      Notifier.notifyError(\"Please select at least one operation\");\n      return false;\n    }\n\n    var acl_string = $('#acl_preview',context).val();\n\n    var acl_json = { \"acl\" : acl_string };\n    Sunstone.runAction(\"Acl.create\",acl_json);\n    return false;\n  }\n\n  function _onShow(context) {\n    ResourceSelect.insert('div#applies_to_user', context, \"User\", null, true);\n    ResourceSelect.insert('div#applies_to_group', context, \"Group\", null, true);\n\n    ResourceSelect.insert('div#belonging_to', context, \"Group\", null, true);\n    ResourceSelect.insert('#in_cluster',context, \"Cluster\", null, true);\n\n    // TODO BUG: doesn't work if the cluster.list callback is not finished yet\n    // Delete cluster -1 option\n    $('#in_cluster select option[value=\"-1\"]',context).remove();\n\n    ResourceSelect.insert('div#zones_applies', context, \"Zone\", \"*\", false,\n                        '<option value=\"*\">'+Locale.tr(\"All\")+'</option>');\n\n  }\n});\n\n","define('tabs/acls-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createAclForm';\n});\n","define('tabs/settings-tab',['require','utils/locale','opennebula/user','sunstone','./users-tab/actions','./settings-tab/tabId','tabs/users-tab/tabId','tabs/users-tab/dialogs/password','tabs/users-tab/panels/info','tabs/settings-tab/panels/user-config','tabs/users-tab/panels/quotas','tabs/settings-tab/panels/group-quotas','tabs/users-tab/panels/accounting','tabs/users-tab/panels/showback','./acls-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var OpenNebulaUser = require('opennebula/user');\n  var Sunstone = require('sunstone');\n  var _actions = require('./users-tab/actions');\n\n  var TAB_ID = require('./settings-tab/tabId');\n  var USERS_TAB_ID = require('tabs/users-tab/tabId');\n\n  _actions[\"Settings.refresh\"] = {\n    type: \"custom\",\n    call: _onShow\n  };\n\n  var _dialogs = [\n    require('tabs/users-tab/dialogs/password')\n  ];\n\n  var _panels = [\n    require('tabs/users-tab/panels/info'),\n    require('tabs/settings-tab/panels/user-config'),\n    require('tabs/users-tab/panels/quotas'),\n    require('tabs/settings-tab/panels/group-quotas'),\n    require('tabs/users-tab/panels/accounting'),\n    require('tabs/users-tab/panels/showback')\n  ];\n\n  var _formPanels = [\n    require('./acls-tab/form-panels/create')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: '<i class=\"fa fa-lg fa-fw fa-cog\"></i>&emsp;' + Locale.tr(\"Settings\"),\n    listHeader: '<i class=\"fa fa-cog\"></i>&emsp;' + Locale.tr(\"Settings\"),\n    resource: 'Settings',\n    actions: _actions,\n    content: '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n      '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n      '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n    '</span>',\n    dialogs: _dialogs,\n    panels: _panels,\n  };\n\n  return Tab;\n\n  function _onShow() {\n    OpenNebulaUser.show({\n      data : {\n        id: -1\n      },\n      success: function(request, user_json) {\n        Sunstone.insertPanels(TAB_ID, user_json, TAB_ID, $(\".right-list\", $(\"#\" + TAB_ID)))\n      }\n    });\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/dashboard-tab/html',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, lambda=this.lambda, buffer = \"    <div class=\\\"small-12 large-12 columns\\\">\\n      \";\n  stack1 = lambda(depth0, depth0);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    </div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var stack1, lambda=this.lambda, buffer = \"    <div class=\\\"small-4 large-4 columns\\\">\\n      \";\n  stack1 = lambda(depth0, depth0);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    </div>\\n\";\n},\"5\":function(depth0,helpers,partials,data) {\n  var stack1, lambda=this.lambda, buffer = \"    <div class=\\\"small-6 large-6 columns\\\">\\n      \";\n  stack1 = lambda(depth0, depth0);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"<div>\\n  <div id=\\\"one_per_row\\\">\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.onePerRow : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  </div>\\n  <div id=\\\"three_per_row\\\" class=\\\"row\\\">\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.threePerRow : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  </div>\\n  <div id=\\\"two_per_row\\\" class=\\\"row\\\">\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.twoPerRow : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(5, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  </div>\\n  <div id=\\\"one_footer\\\">\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.oneFooter : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/dashboard-tab/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vms-tab/tabId',['require'],function(require) {\n  return \"vms-tab\";\n})\n;\n","define('tabs/hosts-tab/tabId',['require'],function(require){\n  return 'hosts-tab';\n});\n","define('tabs/images-tab/tabId',['require'],function(require){\n  return 'images-tab';\n});\n","define('tabs/vms-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createVMForm';\n});\n","define('tabs/vnets-tab/tabId',['require'],function(require){\n  return 'vnets-tab';\n});\n","define('tabs/hosts-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createHostForm';\n});\n","define('tabs/images-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createImageForm';\n});\n","define('tabs/vnets-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createVNetForm';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/dashboard-tab/storage',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row totals-info dashboard-widget-footer\\\">\\n  <div class=\\\"small-12 large-12 columns text-center\\\">\\n    <h2 class=\\\"subheader\\\">\\n      <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IMAGES\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      <br>\\n      <span class=\\\"total_images subheader\\\"></span>\\n      <small><i class=\\\"fa fa-fw fa-upload\\\"></i> </small>\\n    </h2>\\n  </div>\\n  <div class=\\\"small-12 large-12 columns text-center\\\">\\n    <h5 class=\\\"subheader\\\">\\n      <span class=\\\"size_images subheader\\\"></span>\\n      <br>\\n      <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"USED\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n    </h5>\\n  </div>\\n    <div class=\\\"small-12 large-12 columns text-center\\\">\\n      <br>\\n      <a class=\\\"button secondary radius tiny show_images_tab\\\"> <i class=\\\"fa fa-lg fa-list fa-fw\\\"></i>\\n      </a>\\n      <a class=\\\"button secondary  radius tiny show_create_image\\\">\\n        <i class=\\\"fa fa-lg fa-plus fa-fw\\\"></i><i class=\\\"fa fa-fw fa-lg fa-upload\\\"></i>\\n      </a>\\n    </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/dashboard-tab/storage', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/dashboard-tab/empty-graph',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<span class=\\\"fa-stack fa-2x\\\" style=\\\"color: #dfdfdf\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n</span>\\n<br>\\n<span style=\\\"color: #cfcfcf\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"There is no information available\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/dashboard-tab/empty-graph', t);\nHandlebars.registerPartial('./empty-graph', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/dashboard-tab/users',['hbs','hbs/handlebars', 'hbs!tabs/dashboard-tab/empty-graph','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"row totals-info\\\">\\n  <div class=\\\"large-3 medium-6 small-12 columns\\\">\\n    <div class=\\\"small-12 large-12 columns text-center\\\">\\n      <h2 class=\\\"subheader\\\">\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"USERS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n        <br>\\n        <span class=\\\"subheader total_users\\\">-</span>\\n        <small><i class=\\\"fa fa-fw fa-user\\\"></i> </small>\\n      </h2>\\n    </div>\\n    <div class=\\\"small-12 large-12 columns text-center\\\" style=\\\"margin-top: 20px\\\">\\n      <a class=\\\"button secondary radius tiny show_users_tab\\\"> <i class=\\\"fa fa-lg fa-list fa-fw\\\"></i></a>\\n      <a class=\\\"button secondary radius tiny show_create_user\\\">\\n        <i class=\\\"fa fa-lg fa-plus fa-fw\\\"></i><i class=\\\"fa fa-fw fa-lg fa-user\\\"></i></a>\\n    </div>\\n  </div>\\n  <div class=\\\"large-9 medium-6 small-12 columns text-center\\\" id=\\\"dashboard_vdc_user_accounting\\\">\\n    <input style=\\\"display:none;\\\" value=\\\"user\\\" id=\\\"acct_group_by\\\"/>\\n    <div class=\\\"small-12 large-6 columns\\\">\\n      <h4 class=\\\"subheader\\\">\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h4>\\n      <div class=\\\"large-12 columns centered graph text-center\\\" id=\\\"acct_cpu_graph\\\" style=\\\"height: 100px;\\\">\";\n  stack1 = this.invokePartial(partials['./empty-graph'], '', './empty-graph', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</div>\\n    </div>\\n    <div class=\\\"small-12 large-6 columns\\\">\\n      <h4 class=\\\"subheader\\\">\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory GB hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h4>\\n      <div class=\\\"large-12 columns centered graph text-center\\\" id=\\\"acct_mem_graph\\\" style=\\\"height: 100px;\\\">\";\n  stack1 = this.invokePartial(partials['./empty-graph'], '', './empty-graph', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n    </div>\\n  </div>\\n</div>\\n<div class=\\\"row dashboard-widget-footer\\\">\\n  <div class=\\\"small-3 large-3 columns text-center\\\"></div>\\n</div>\";\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/dashboard-tab/users', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/dashboard-tab/network',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row totals-info dashboard-widget-footer\\\">\\n  <div class=\\\"small-12 large-12 columns text-center\\\">\\n    <h2 class=\\\"subheader\\\">\\n      <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VNETs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      <br>\\n      <span class=\\\"total_vnets subheader\\\"></span>\\n      <small><i class=\\\"fa fa-fw fa-sitemap\\\"></i> </small>\\n    </h2>\\n  </div>\\n  <div class=\\\"small-12 large-12 columns text-center\\\">\\n    <h5 class=\\\"subheader\\\">\\n      <span class=\\\"addresses_vnets subheader\\\"></span>\\n      <br>\\n      <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"USED IPs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n    </h5>\\n  </div>\\n    <div class=\\\"small-12 large-12 columns text-center\\\">\\n      <br>\\n      <a class=\\\"button secondary radius tiny show_vnets_tab\\\"> <i class=\\\"fa fa-lg fa-list fa-fw\\\"></i>\\n      </a>\\n      <a class=\\\"button secondary  radius tiny show_create_vnet\\\">\\n        <i class=\\\"fa fa-lg fa-plus fa-fw\\\"></i><i class=\\\"fa fa-fw fa-lg fa-sitemap\\\"></i>\\n      </a>\\n    </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/dashboard-tab/network', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/dashboard-tab/hosts',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row  totals-info\\\">\\n  <div class=\\\"small-12 medium-6 large-3 columns centered\\\">\\n    <div class=\\\"small-12 large-12 columns text-center\\\">\\n      <h2 class=\\\"subheader\\\">\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"HOSTs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n        <br>\\n        <span class=\\\"total_hosts subheader\\\"/> \\n        <small><i class=\\\"fa fa-fw fa-lg fa-hdd-o\\\"></i></small>\\n      </h2>\\n    </div>\\n    <div class=\\\"small-4 large-4 columns text-center\\\">\\n      <h5 class=\\\"subheader\\\">\\n        <span class=\\\"on_hosts subheader success-color\\\"/>\\n        <br>\\n        <small class=\\\"success-color\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ON\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h5>\\n    </div>\\n    <div class=\\\"small-4 large-4 columns text-center\\\">\\n      <h5 class=\\\"subheader\\\">\\n        <span class=\\\"off_hosts subheader\\\"/>\\n        <br>\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"OFF\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h5>\\n    </div>\\n    <div class=\\\"small-4 large-4 columns text-center\\\">\\n      <h5 class=\\\"subheader\\\">\\n        <span class=\\\"error_hosts subheader alert-color\\\"/>\\n        <br>\\n        <small class=\\\"alert-color\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ERROR\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h5>\\n    </div>\\n    <div class=\\\"small-12 large-12 columns text-center\\\">\\n      <br>\\n      <a class=\\\"button secondary radius tiny show_hosts_tab\\\"> <i class=\\\"fa fa-lg fa-list fa-fw\\\"></i>\\n      </a>\\n      <a class=\\\"button secondary  radius tiny show_create_host\\\">\\n        <i class=\\\"fa fa-lg fa-plus fa-fw\\\"></i><i class=\\\"fa fa-fw fa-lg fa-hdd-o\\\"></i>\\n      </a>\\n    </div>\\n  </div>\\n  <div class=\\\"small-12 medium-6 large-9 columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"small-12 large-6 columns\\\">\\n        <div id=\\\"dashboard_host_allocated_cpu\\\" style=\\\"padding: 0px 40px\\\"></div>\\n        <br>\\n        <div id=\\\"dashboard_host_real_cpu\\\" style=\\\"padding: 0px 40px\\\"></div>\\n      </div>\\n      <div class=\\\"small-12 large-6 columns\\\">\\n        <div id=\\\"dashboard_host_allocated_mem\\\" style=\\\"padding: 0px 40px\\\"></div>\\n        <br>\\n        <div id=\\\"dashboard_host_real_mem\\\" style=\\\"padding: 0px 40px\\\"></div>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n<div class=\\\"row dashboard-widget-footer\\\">\\n  <div class=\\\"small-3 large-3 columns text-center\\\"></div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/dashboard-tab/hosts', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/dashboard-tab/vms',['hbs','hbs/handlebars', 'hbs!tabs/dashboard-tab/empty-graph','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"row totals-info\\\">\\n  <div class=\\\"small-12 medium-6 large-3 columns\\\">\\n    <div class=\\\"small-12 large-12 columns text-center\\\">\\n      <h2 class=\\\"subheader\\\">\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n        <br>\\n        <span class=\\\"subheader total_vms\\\"></span>\\n        <small><i class=\\\"fa fa-fw fa-th\\\"></i></small>\\n      </h2>\\n    </div>\\n    <div class=\\\"small-4 large-4 columns text-center\\\">\\n      <h5 class=\\\"subheader\\\">\\n        <span class=\\\"subheader active_vms success-color\\\"></span>\\n        <br>\\n        <small class=\\\"success-color\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ACTIVE\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h5>\\n    </div>\\n    <div class=\\\"small-4 large-4 columns text-center\\\">\\n      <h5 class=\\\"subheader\\\">\\n        <span class=\\\"subheader pending_vms\\\"></span>\\n        <br>\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PENDING\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h5>\\n    </div>\\n    <div class=\\\"small-4 large-4 columns text-center\\\">\\n      <h5 class=\\\"subheader\\\">\\n        <span class=\\\"subheader failed_vms alert-color\\\"></span>\\n        <br>\\n        <small class=\\\"alert-color\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"FAILED\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h5>\\n    </div>\\n    <div class=\\\"small-12 large-12 columns text-center\\\" style=\\\"margin-top: 20px\\\">\\n      <a class=\\\"button secondary radius tiny show_vms_tab\\\"> <i class=\\\"fa fa-lg fa-list fa-fw\\\"></i>\\n      </a>\\n      <a class=\\\"button secondary radius tiny show_create_vm\\\">\\n        <i class=\\\"fa fa-lg fa-plus fa-fw\\\"></i><i class=\\\"fa fa-fw fa-lg fa-th\\\"></i></a>\\n      <br>\\n    </div>\\n  </div>\\n  <div class=\\\"large-9 medium-6 small-12 columns text-center\\\" id=\\\"dashboard_vm_accounting\\\">\\n    <input style=\\\"display:none;\\\" value=\\\"vm\\\" id=\\\"acct_group_by\\\"/>\\n    <div class=\\\"small-12 large-6 columns\\\">\\n      <h4 class=\\\"subheader\\\">\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h4>\\n      <div class=\\\"large-12 columns centered graph text-center\\\" id=\\\"acct_cpu_graph\\\" style=\\\"height: 180px;\\\">\";\n  stack1 = this.invokePartial(partials['./empty-graph'], '', './empty-graph', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</div>\\n    </div>\\n    <div class=\\\"small-12 large-6 columns\\\">\\n      <h4 class=\\\"subheader\\\">\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory GB hours\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h4>\\n      <div class=\\\"large-12 columns centered graph text-center\\\" id=\\\"acct_mem_graph\\\" style=\\\"height: 180px;\\\">\";\n  stack1 = this.invokePartial(partials['./empty-graph'], '', './empty-graph', depth0, undefined, helpers, partials, data);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n    </div>\\n  </div>\\n</div>\\n<div class=\\\"row dashboard-widget-footer\\\">\\n  <div class=\\\"small-3 large-3 columns text-center\\\"></div>\\n</div>\";\n},\"usePartial\":true,\"useData\":true});\nHandlebars.registerPartial('tabs/dashboard-tab/vms', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/dashboard-tab/user-quotas',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<h5 class=\\\"subheader\\\"> <i class=\\\"fa fa-fw fa-lg fa-align-left\\\"></i>\\n  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User Quotas\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n</h5>\\n<div class=\\\"row totals-info dashboard-widget-footer\\\" id=\\\"quotas_tab_user\\\">\\n  <div class=\\\"large-12 small-12 columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-8 large-centered columns\\\">\\n        <div class=\\\"text-center\\\">\\n          <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n            <i class=\\\"fa fa-align-left fa-stack-1x fa-inverse\\\"></i>\\n          </span>\\n          <br>\\n          <p style=\\\"font-size: 18px; color: #999\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"There are no quotas defined\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</p>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/dashboard-tab/user-quotas', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/dashboard-tab/group-quotas',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<h5 class=\\\"subheader\\\"> <i class=\\\"fa fa-fw fa-lg fa-align-left\\\"></i>\\n  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Quotas\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n</h5>\\n<div id=\\\"quotas_tab_group_TabBody\\\" class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-8 large-centered columns\\\">\\n        <div class=\\\"text-center\\\">\\n          <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n            <i class=\\\"fa fa-align-left fa-stack-1x fa-inverse\\\"></i>\\n          </span>\\n          <br>\\n          <p style=\\\"font-size: 18px; color: #999\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"There are no quotas defined\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</p>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n<div class=\\\"row dashboard-widget-footer\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <label>\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n      <div id=\\\"quotas_tab_group_sel\\\"></div>\\n    </label>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/dashboard-tab/group-quotas', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/dashboard-tab/accounting',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<h5 class=\\\"subheader\\\"> <i class=\\\"fa fa-fw fa-lg fa-bar-chart-o\\\"></i>\\n  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Accounting\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n</h5>\\n<div class=\\\"row dashboard-widget-footer\\\">\\n  <div id=\\\"user_dashboard_info_acct_div\\\" class=\\\"large-12 columns columns\\\"></div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/dashboard-tab/accounting', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/dashboard-tab',['require','utils/locale','sunstone-config','sunstone','utils/notifier','opennebula/vm','utils/accounting','hbs!./dashboard-tab/html','tabs/vms-tab/tabId','tabs/hosts-tab/tabId','tabs/users-tab/tabId','tabs/images-tab/tabId','tabs/vnets-tab/tabId','tabs/vms-tab/form-panels/create/formPanelId','tabs/hosts-tab/form-panels/create/formPanelId','tabs/users-tab/form-panels/create/formPanelId','tabs/images-tab/form-panels/create/formPanelId','tabs/vnets-tab/form-panels/create/formPanelId','hbs!./dashboard-tab/storage','hbs!./dashboard-tab/users','hbs!./dashboard-tab/network','hbs!./dashboard-tab/hosts','hbs!./dashboard-tab/vms','hbs!./dashboard-tab/user-quotas','hbs!./dashboard-tab/group-quotas','hbs!./dashboard-tab/accounting','./dashboard-tab/tabId'],function(require) {\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var OpenNebulaVM = require('opennebula/vm');\n  var Accounting = require('utils/accounting');\n\n  var TemplateDashboard = require('hbs!./dashboard-tab/html');\n\n  var VMS_TAB_ID = require('tabs/vms-tab/tabId');\n  var HOSTS_TAB_ID = require('tabs/hosts-tab/tabId');\n  var USERS_TAB_ID = require('tabs/users-tab/tabId');\n  var IMAGES_TAB_ID = require('tabs/images-tab/tabId');\n  var VNETS_TAB_ID = require('tabs/vnets-tab/tabId');\n\n  var VMS_CREATE_FORM_PANEL_ID = require('tabs/vms-tab/form-panels/create/formPanelId');\n  var HOSTS_CREATE_FORM_PANEL_ID = require('tabs/hosts-tab/form-panels/create/formPanelId');\n  var USERS_CREATE_FORM_PANEL_ID = require('tabs/users-tab/form-panels/create/formPanelId');\n  var IMAGES_CREATE_FORM_PANEL_ID = require('tabs/images-tab/form-panels/create/formPanelId');\n  var VNETS_CREATE_FORM_PANEL_ID = require('tabs/vnets-tab/form-panels/create/formPanelId');\n\n  var _initialized = false;\n  var _activeWidgets = [];\n  var _widgets = {\n    'storage': {\n      'html': require('hbs!./dashboard-tab/storage'),\n      'onShow': function() {\n        Sunstone.runAction(\"Image.list\");\n      }\n    },\n    'users': {\n      'html': require('hbs!./dashboard-tab/users'),\n      'onShow': function() {\n        Sunstone.runAction(\"User.list\");\n        Sunstone.runAction(\"Group.list\");\n\n        var end_time = -1; // today\n        var start_time =  Math.floor(new Date().getTime() / 1000);\n        start_time = start_time - 604800; // 604800 = 7 days = 7*24*60*60\n\n        var options = {\n          \"start_time\": start_time,\n          \"end_time\": end_time\n        }\n\n        var no_table = true;\n        $(\"#acct_cpu_graph, #acct_mem_graph\", \"#dashboard_vdc_user_accounting\").html('<span  id=\"provision_dashboard_total\" style=\"font-size:80px\">'+\n          '<i class=\"fa fa-spinner fa-spin\"></i>'+\n        '</span>')\n        OpenNebulaVM.accounting({\n          success: function(req, response) {\n            Accounting.fillAccounting($(\"#dashboard_vdc_user_accounting\"), req, response, no_table);\n          },\n          error: Notifier.onError,\n          data: options\n        });\n      }\n    },\n    'network': {\n      'html': require('hbs!./dashboard-tab/network'),\n      'onShow': function() {\n        Sunstone.runAction(\"Network.list\");\n      }\n    },\n    'hosts': {\n      'html': require('hbs!./dashboard-tab/hosts'),\n      'onShow': function() {\n        Sunstone.runAction(\"Host.list\");\n      }\n    },\n    'vms': {\n      'html': require('hbs!./dashboard-tab/vms'),\n      'onShow': function() {\n        Sunstone.runAction(\"VM.list\");\n\n        var end_time = -1; // today\n        var start_time =  Math.floor(new Date().getTime() / 1000);\n        start_time = start_time - 604800; // 604800 = 7 days = 7*24*60*60\n\n        var options = {\n          \"start_time\": start_time,\n          \"end_time\": end_time\n        }\n\n        var no_table = true;\n\n        $(\"#acct_cpu_graph, #acct_mem_graph\", \"#dashboard_vm_accounting\").html('<span  id=\"provision_dashboard_total\" style=\"font-size:80px\">'+\n          '<i class=\"fa fa-spinner fa-spin\"></i>'+\n        '</span>')\n        OpenNebulaVM.accounting({\n          success: function(req, response) {\n            Accounting.fillAccounting($(\"#dashboard_vm_accounting\"), req, response, no_table);\n          },\n          error: Notifier.onError,\n          data: options\n        });\n      }\n    },\n    'user_quotas': {\n      'html': require('hbs!./dashboard-tab/user-quotas'),\n    },\n    'group_quotas': {\n      'html': require('hbs!./dashboard-tab/group-quotas'),\n    },\n    'accounting': {\n      'html': require('hbs!./dashboard-tab/accounting'),\n    }\n  }\n\n  var _buttons = {\n    \"Dashboard.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    }\n  };\n\n  var _actions = {\n    \"Dashboard.refresh\" : {\n      type: \"custom\",\n      call: _onShow\n    },\n  }\n\n  var TAB_ID = require('./dashboard-tab/tabId');\n\n  var Tab = {\n    tabId: TAB_ID,\n    resource: 'Dashboard',\n    title: '<i class=\"fa fa-lg fa-fw fa-tachometer\"></i>&emsp;' + Locale.tr(\"Dashboard\"),\n    listHeader: '<i class=\"fa fa-lg fa-fw fa-tachometer\"></i>&emsp;' + Locale.tr(\"Dashboard\"),\n    buttons: _buttons,\n    actions: _actions,\n    content: _html()\n  };\n\n  return Tab;\n\n  function _html() {\n    var widgetsTemplates = {\n      'threePerRow': [],\n      'twoPerRow': [],\n      'onePerRow': [],\n      'oneFooter': []\n    }\n\n    $.each(Config.dashboardWidgets('widgets_three_per_row'), function(id, widget) {\n      _activeWidgets.push(widget);\n      widgetsTemplates['threePerRow'].push(_widgets[widget].html());\n    })\n\n    $.each(Config.dashboardWidgets('widgets_two_per_row'), function(id, widget) {\n      _activeWidgets.push(widget);\n      widgetsTemplates['twoPerRow'].push(_widgets[widget].html());\n    })\n\n    $.each(Config.dashboardWidgets('widgets_one_per_row'), function(id, widget) {\n      _activeWidgets.push(widget);\n      widgetsTemplates['onePerRow'].push(_widgets[widget].html());\n    })\n\n    $.each(Config.dashboardWidgets('widgets_one_footer'), function(id, widget) {\n      _activeWidgets.push(widget);\n      widgetsTemplates['oneFooter'].push(_widgets[widget].html());\n    });\n\n    return TemplateDashboard(widgetsTemplates);\n  }\n\n  function _onShow() {\n    if (!_initialized) {\n      _setup();\n    }\n\n    $.each(_activeWidgets, function(id, widgetId) {\n      if (_widgets[widgetId].onShow) {\n        _widgets[widgetId].onShow();\n      }\n    });\n  }\n\n  function _setup() {\n    _initialized = true;\n\n\n    $(document).on(\"click\", \".show_vms_tab\", function(){\n      Sunstone.showTab(VMS_TAB_ID);\n      return false;\n    })\n\n    $(document).on(\"click\", \".show_hosts_tab\", function(){\n      Sunstone.showTab(HOSTS_TAB_ID);\n      return false;\n    })\n\n    $(document).on(\"click\", \".show_users_tab\", function(){\n      Sunstone.showTab(USERS_TAB_ID);\n      return false;\n    })\n\n    $(document).on(\"click\", \".show_images_tab\", function(){\n      Sunstone.showTab(IMAGES_TAB_ID);\n      return false;\n    })\n\n    $(document).on(\"click\", \".show_vnets_tab\", function(){\n      Sunstone.showTab(VNETS_TAB_ID);\n      return false;\n    })\n\n    $(document).on(\"click\", \".show_create_vm\", function(){\n      Sunstone.showTab(VMS_TAB_ID);\n      Sunstone.showFormPanel(VMS_TAB_ID, VMS_CREATE_FORM_PANEL_ID, \"create\");\n      return false;\n    })\n\n    $(document).on(\"click\", \".show_create_host\", function(){\n      Sunstone.showTab(HOSTS_TAB_ID);\n      Sunstone.showFormPanel(HOSTS_TAB_ID, HOSTS_CREATE_FORM_PANEL_ID, \"create\");\n      return false;\n    })\n\n    $(document).on(\"click\", \".show_create_user\", function(){\n      Sunstone.showTab(USERS_TAB_ID);\n      Sunstone.showFormPanel(USERS_TAB_ID, USERS_CREATE_FORM_PANEL_ID, \"create\");\n      return false;\n    })\n\n    $(document).on(\"click\", \".show_create_image\", function(){\n      Sunstone.showTab(IMAGES_TAB_ID);\n      Sunstone.showFormPanel(IMAGES_TAB_ID, IMAGES_CREATE_FORM_PANEL_ID, \"create\");\n      return false;\n    })\n\n    $(document).on(\"click\", \".show_create_vnet\", function(){\n      Sunstone.showTab(VNETS_TAB_ID);\n      Sunstone.showFormPanel(VNETS_TAB_ID, VNETS_CREATE_FORM_PANEL_ID, \"create\");\n      return false;\n    })\n  }\n});\n\n","define('tabs/system-tab',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n  var TAB_ID = 'system-tab';\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: '<i class=\"fa fa-lg fa-fw fa-cogs\"></i>&emsp;'+Locale.tr(\"System\"),\n    no_content: true\n  }\n\n  return Tab;\n});\n\n","define('tabs/groups-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Group.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Group.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"Group.update_dialog\" : {\n      type : \"action\",\n      layout: \"main\",\n      text : Locale.tr(\"Update\")\n    },\n    \"Group.quotas_dialog\" : {\n      type : \"action\",\n      text : Locale.tr(\"Quotas\"),\n      layout: \"main\"\n    },\n    \"Group.delete\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Delete\"),\n      layout: \"del\"\n    }\n  };\n\n  return Buttons;\n});\n\n","define('tabs/groups-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','utils/quotas/quota-defaults','utils/quotas/quota-widgets','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n  var QuotaWidgets = require('utils/quotas/quota-widgets');\n\n  /*\n    CONSTANTS\n   */\n\n  var RESOURCE = \"Group\";\n  var XML_ROOT = \"GROUP\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\",4,5,6] },\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"sWidth\": \"150px\", \"aTargets\": [4,5,6] },\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Users\"),\n      Locale.tr(\"VMs\"),\n      Locale.tr(\"Memory\"),\n      Locale.tr(\"CPU\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 2,\n      \"select_resource\": Locale.tr(\"Please select a Group from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following Group:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more groups from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following groups:\")\n    };\n\n    this.totalGroups = 0;\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n  Table.prototype.preUpdateView = _preUpdateView;\n  Table.prototype.postUpdateView = _postUpdateView;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n\n    var users_str = \"0\";\n\n    if (element.USERS.ID){\n      if ($.isArray(element.USERS.ID)){\n        users_str = element.USERS.ID.length;\n      } else {\n        users_str = \"1\";\n      }\n    }\n\n    var vms    = '<span class=\"progress-text right\" style=\"font-size: 12px\">-</span>';\n    var memory = '<span class=\"progress-text right\" style=\"font-size: 12px\">-</span>';\n    var cpu    = '<span class=\"progress-text right\" style=\"font-size: 12px\">-</span>';\n\n    var default_group_quotas = QuotaDefaults.getDefaultGroupQuotas();\n\n    QuotaWidgets.initEmptyQuotas(element);\n\n    if (!$.isEmptyObject(element.VM_QUOTA)){\n      vms = QuotaWidgets.quotaBar(\n        element.VM_QUOTA.VM.VMS_USED,\n        element.VM_QUOTA.VM.VMS,\n        default_group_quotas.VM_QUOTA.VM.VMS);\n\n      memory = QuotaWidgets.quotaBarMB(\n        element.VM_QUOTA.VM.MEMORY_USED,\n        element.VM_QUOTA.VM.MEMORY,\n        default_group_quotas.VM_QUOTA.VM.MEMORY);\n\n      cpu = QuotaWidgets.quotaBarFloat(\n        element.VM_QUOTA.VM.CPU_USED,\n        element.VM_QUOTA.VM.CPU,\n        default_group_quotas.VM_QUOTA.VM.CPU);\n    }\n  \n    return [\n      '<input class=\"check_item\" type=\"checkbox\" id=\"'+RESOURCE.toLowerCase()+'_' +\n                           element.ID + '\" name=\"selected_items\" value=\"' +\n                           element.ID + '\"/>',\n      element.ID,\n      element.NAME,\n      users_str,\n      vms,\n      memory,\n      cpu\n    ];\n  }\n\n  function _preUpdateView() {\n    this.totalGroups = 0;\n  }\n\n  function _postUpdateView() {\n    $(\".total_groups\").text(this.totalGroups);\n  }\n});\n\n","define('tabs/groups-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createGroupForm';\n});\n","define('tabs/groups-tab/dialogs/quotas/dialogId',['require'],function(require){\n  return 'groupQuotasDialog';\n});\n","define('tabs/groups-tab/actions',['require','sunstone','utils/notifier','utils/locale','./datatable','opennebula/group','./tabId','./form-panels/create/formPanelId','./dialogs/quotas/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var DataTable = require('./datatable');\n  var OpenNebulaResource = require('opennebula/group');\n\n  var RESOURCE = \"Group\";\n  var XML_ROOT = \"GROUP\";\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n  var QUOTAS_DIALOG_ID = require('./dialogs/quotas/dialogId');\n\n  var _actions = {\n    \"Group.create\" : {\n      type: \"create\",\n      call: OpenNebulaResource.create,\n      callback : function(request, response) {\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      },\n      notify: true\n    },\n\n    \"Group.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    \"Group.list\" : {\n      type: \"list\",\n      call: OpenNebulaResource.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"Group.show\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Group.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(RESOURCE+\".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(RESOURCE+\".list\", {force: true});\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Group.update\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request, response){\n        Sunstone.hideFormPanel(TAB_ID);\n      },\n      error: function(request, response){\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      }\n    },\n\n    \"Group.update_template\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Group.update_dialog\" : {\n      type: \"single\",\n      call: function() {\n        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n        if (selected_nodes.length != 1) {\n          Notifier.notifyMessage(\"Please select one (and just one) group to update.\");\n          return false;\n        }\n\n        var resource_id = \"\" + selected_nodes[0];\n        Sunstone.runAction(RESOURCE+\".show_to_update\", resource_id);\n      }\n    },\n\n    \"Group.show_to_update\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"update\",\n          function(formPanelInstance, context) {\n            formPanelInstance.fill(context, response[XML_ROOT]);\n          });\n      },\n      error: Notifier.onError\n    },\n\n    \"Group.delete\" : {\n      type: \"multiple\",\n      call : OpenNebulaResource.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n    },\n\n    \"Group.fetch_quotas\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function (request,response) {\n        Sunstone.getDialog(QUOTAS_DIALOG_ID).setParams({element: response[XML_ROOT]});\n        Sunstone.getDialog(QUOTAS_DIALOG_ID).reset();\n        Sunstone.getDialog(QUOTAS_DIALOG_ID).show();\n      },\n      error: Notifier.onError\n    },\n\n    \"Group.quotas_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          $('a[href=\"#group_quotas_tab\"]', tab).click();\n          $('#edit_quotas_button', tab).click();\n        } else {\n          var sel_elems = Sunstone.getDataTable(TAB_ID).elements();\n          //If only one group is selected we fecth the group's quotas\n          if (sel_elems.length == 1){\n            Sunstone.runAction(RESOURCE+'.fetch_quotas',sel_elems[0]);\n          } else {\n            // More than one, shows '0' usage\n            Sunstone.getDialog(QUOTAS_DIALOG_ID).setParams({element: {}});\n            Sunstone.getDialog(QUOTAS_DIALOG_ID).reset();\n            Sunstone.getDialog(QUOTAS_DIALOG_ID).show();\n          }\n        }\n      }\n    },\n\n    \"Group.set_quota\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.set_quota,\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      callback: function(request) {\n        Sunstone.getDialog(QUOTAS_DIALOG_ID).hide();\n\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Group.add_admin\" : {\n      type: \"single\",\n      call : OpenNebulaResource.add_admin,\n      callback : function (req) {\n        Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Group.del_admin\" : {\n      type: \"single\",\n      call : OpenNebulaResource.del_admin,\n      callback : function (req) {\n        Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error: Notifier.onError\n    }\n  };\n\n  return _actions;\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/groups-tab/dialogs/quotas/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large max-height\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update Quota\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n  <form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        \";\n  stack1 = ((helper = (helper = helpers.quotasHTML || (depth0 != null ? depth0.quotasHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"quotasHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      </div>\\n    </div>\\n    <div class=\\\"form_buttons row\\\">\\n      <button type=\\\"submit\\\" class=\\\"button radius right\\\" value=\\\"Group.set_quota\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Apply changes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/groups-tab/dialogs/quotas/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/groups-tab/dialogs/quotas',['require','utils/dialogs/dialog','hbs!./quotas/html','utils/locale','utils/quotas/quota-defaults','utils/quotas/quota-widgets','./quotas/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./quotas/html');\n  var Locale = require('utils/locale');\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n  var QuotaWidgets = require('utils/quotas/quota-widgets');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./quotas/dialogId');\n  var TAB_ID = require('../tabId');\n  var RESOURCE = \"Group\";\n  var XML_ROOT = \"GROUP\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.element = undefined;\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setParams = _setParams;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId,\n      'quotasHTML': QuotaWidgets.dialogHTML()\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    QuotaWidgets.setupQuotasDialog(context);\n\n    return false;\n  }\n\n  /**\n   * @param {object} params\n   *        - params.element : group object, or empty object {}\n   */\n  function _setParams(params) {\n    this.element = params.element;\n  }\n\n  function _onShow(context) {\n    QuotaWidgets.populateQuotasDialog(\n      this.element,\n      QuotaDefaults.getDefaultQuotas(RESOURCE),\n      context);\n\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/groups-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"        <thead>\\n          <tr>\\n            <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Admins Views\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          </tr>\\n        </thead>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.adminViews : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(2, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"2\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"          <tr>\\n            <td class=\\\"key_td\\\">\\n              \"\n    + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.description : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"            </td>\\n          </tr>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"                <span class=\\\"tip\\\">\"\n    + escapeExpression(((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"description\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\";\n},\"5\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"        <thead>\\n          <tr>\\n            <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Users Views\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          </tr>\\n        </thead>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.userViews : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(2, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.NAME : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.adminViews : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.userViews : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(5, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"    </table>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/groups-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/groups-tab/utils/views',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var _view_types = {\n    advanced : {\n      name: 'Advanced Layout',\n      description : Locale.tr(\"This layout exposes a complete view of the cloud, allowing administrators and advanced users to have full control of any physical or virtual resource of the cloud.\"),\n      preview: \"advanced_layout.png\"\n    },\n    cloud : {\n      name: 'Cloud Layout',\n      description : Locale.tr(\"This layout exposes a simplified version of the cloud where group administrators and cloud end-users will be able to manage any virtual resource of the cloud, without taking care of the physical resources management.\"),\n      preview: \"cloud_layout.png\"\n    },\n    vcenter : {\n      name: 'vCenter Layout',\n      description : Locale.tr(\"Set of views to present the valid operation against a vCenter infrastructure\"),\n      preview: \"vcenter_layout.png\"\n    },\n    other : {\n      name: 'Other Layouts',\n      description : '',\n      preview: null\n    }\n  };\n\n  var _views_info = {\n    admin : {\n      id: 'admin',\n      name: \"Admin\",\n      description: Locale.tr(\"This view provides full control of the cloud\"),\n      type: \"advanced\"\n    },\n    user : {\n      id: 'user',\n      name: \"User\",\n      description: Locale.tr(\"In this view users will not be able to manage nor retrieve the hosts and clusters of the cloud. They will be able to see Datastores and Virtual Networks in order to use them when creating a new Image or Virtual Machine, but they will not be able to create new ones.\"),\n      type: \"advanced\"\n    },\n    groupadmin : {\n      id: 'groupadmin',\n      name: \"Group Admin\",\n      description: Locale.tr(\"This view provides control of all the resources belonging to a group, but with no access to resources outside that group, that is, restricted to the physical and virtual resources of the group. This view features the ability to create new users within the group as well as set and keep track of user quotas.\"),\n      type: \"cloud\"\n    },\n    cloud : {\n      id: 'cloud',\n      name: \"Cloud\",\n      description: Locale.tr(\"This is a simplified view mainly intended for user that just require a portal where they can provision new virtual machines easily from pre-defined Templates.\"),\n      type: \"cloud\"\n    },\n    admin_vcenter : {\n      id: 'admin_vcenter',\n      name: \"Admin vCenter\",\n      description: Locale.tr(\"View designed to present the valid operations against a vCenter infrastructure to a cloud administrator\"),\n      type: \"vcenter\"\n    },\n    groupadmin_vcenter : {\n      id: 'groupadmin_vcenter',\n      name: \"Group Admin vCenter\",\n      description: Locale.tr(\"View designed to present the valid operations agaist a vCenter infrastructure to a group administrator\"),\n      type: \"vcenter\"\n    },\n    cloud_vcenter : {\n      id: 'cloud_vcenter',\n      name: \"Cloud vCenter\",\n      description: Locale.tr(\"View designed to present the valid operations against a vCenter infrastructure to a cloud consumer\"),\n      type: \"vcenter\"\n    }\n  };\n\n  return {\n    'info': _views_info,\n    'types': _view_types\n  };\n\n});\n","define('tabs/groups-tab/panels/info',['require','hbs!./info/html','utils/locale','../utils/views','utils/tips','utils/panel/template-table','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n  var Locale = require('utils/locale');\n  var Views = require('../utils/views');\n  var Tips = require('utils/tips');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateTable = require('utils/panel/template-table');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Group\";\n  var XML_ROOT = \"GROUP\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var adminViews = _processViews(\n      this.element.TEMPLATE.GROUP_ADMIN_VIEWS,\n      this.element.TEMPLATE.GROUP_ADMIN_DEFAULT_VIEW);\n\n    var userViews = _processViews(\n      this.element.TEMPLATE.SUNSTONE_VIEWS,\n      this.element.TEMPLATE.DEFAULT_VIEW);\n\n    // TODO: simplify interface?\n    var strippedTemplate = $.extend({}, this.element.TEMPLATE);\n    delete strippedTemplate[\"GROUP_ADMIN_VIEWS\"];\n    delete strippedTemplate[\"SUNSTONE_VIEWS\"];\n    delete strippedTemplate[\"GROUP_ADMIN_DEFAULT_VIEW\"];\n    delete strippedTemplate[\"DEFAULT_VIEW\"];\n\n    var templateTableHTML = TemplateTable.html(strippedTemplate, RESOURCE,\n                                              Locale.tr(\"Attributes\"));\n    //====\n\n    return TemplateInfo({\n      'element': this.element,\n      'adminViews': adminViews,\n      'userViews': userViews,\n      'templateTableHTML': templateTableHTML\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n    Tips.setup(context);\n\n    // Template update\n    // TODO: simplify interface?\n    var hiddenKeys = [\n      \"GROUP_ADMIN_VIEWS\",\n      \"SUNSTONE_VIEWS\",\n      \"GROUP_ADMIN_DEFAULT_VIEW\",\n      \"DEFAULT_VIEW\"];\n\n    var strippedTemplate = $.extend({}, this.element.TEMPLATE);\n\n    $.each(hiddenKeys, function(i, key){\n      delete strippedTemplate[key];\n    });\n\n    var hiddenValues = {};\n\n    $.each(hiddenKeys, function(i, key){\n      if (that.element.TEMPLATE[key] != undefined){\n          hiddenValues[key] = that.element.TEMPLATE[key];\n      }\n    });\n\n    TemplateTable.setup(strippedTemplate, RESOURCE, this.element.ID, context, hiddenValues);\n    //===\n\n    return false;\n  }\n\n  function _processViews(viewsStr, defaultView){\n    var viewsArray = [];\n\n    if (viewsStr){\n      $.each(viewsStr.split(','), function(index, view){\n        var viewElem;\n\n        var knownView = Views.info[view];\n        if (knownView){\n          viewElem = {\n            'name': knownView.name,\n            'description': knownView.description\n          };\n        } else {\n          viewElem = {\n            'name': view,\n            'description': ''\n          };\n        }\n\n        if (view == defaultView){\n          viewElem.name += ' (' + Locale.tr(\"default\") + ')';\n        }\n\n        viewsArray.push(viewElem);\n      });\n    }\n\n    return viewsArray;\n  }\n});\n\n","define('tabs/groups-tab/panels/info/panelId',['require'],function(require){\n  return 'group_info_tab';\n});\n","define('templates/helpers/isTabActionEnabled',['require','hbs/handlebars','sunstone-config'],function(require) {\n  var Handlebars = require('hbs/handlebars');\n  var Config = require('sunstone-config');\n  \n  var isTabActionEnabled = function(tabName, action, options) {\n    if (Config.isTabActionEnabled(tabName, action)) {\n      return options.fn(this);\n    } else {\n      return options.inverse(this);\n    }\n  };\n\n  Handlebars.registerHelper('isTabActionEnabled', isTabActionEnabled);\n\n  return isTabActionEnabled;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/groups-tab/panels/users/html',['hbs','hbs/handlebars','templates/helpers/isTabActionEnabled','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"  <div class=\\\"row\\\">\\n    <div class=\\\"large-4 columns right\\\">\\n      <span>\\n        <button class=\\\"button secondary small radius\\\" id=\\\"edit_admins_button\\\" style=\\\"width: 100%;\\\">\\n          <span class=\\\"fa fa-pencil-square-o\\\"></span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Edit administrators\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </button>\\n        <button class=\\\"button alert small radius\\\" id=\\\"cancel_admins_button\\\" style=\\\"display: none\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cancel\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </button>\\n        <button class=\\\"button success small radius\\\" id=\\\"submit_admins_button\\\" style=\\\"display: none\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Apply\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </button>\\n      </span>\\n    </div>\\n  </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, functionType=\"function\", buffer = \"\";\n  stack1 = ((helpers.isTabActionEnabled || (depth0 && depth0.isTabActionEnabled) || helperMissing).call(depth0, \"groups-tab\", \"Group.edit_admins\", {\"name\":\"isTabActionEnabled\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"<div class=\\\"group_users_info_table\\\">\\n  \";\n  stack1 = ((helper = (helper = helpers.usersTableHTML || (depth0 != null ? depth0.usersTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"usersTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n</div>\\n\\n\\n\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/groups-tab/panels/users/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/groups-tab/panels/users',['require','utils/locale','sunstone-config','hbs!./users/html','tabs/users-tab/datatable','sunstone','../tabId','./users/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var TemplateHTML = require('hbs!./users/html');\n  var UsersTable = require('tabs/users-tab/datatable');\n  var Sunstone = require('sunstone');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./users/panelId');\n  var RESOURCE = \"Group\";\n  var XML_ROOT = \"GROUP\";\n\n  var USERS_TABLE_ID = PANEL_ID + \"UsersTable\";\n  var USERS_EDIT_TABLE_ID = PANEL_ID + \"UsersTableEdit\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Users\");\n    this.icon = \"fa-users\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n\n    this.users = [];\n\n    if (this.element.USERS.ID != undefined){\n      this.users = this.element.USERS.ID;\n\n      if (!$.isArray(this.users)){\n        this.users = [this.users];\n      }\n    }\n\n    this.admins = [];\n\n    if (this.element.ADMINS.ID != undefined){\n      this.admins = this.element.ADMINS.ID;\n\n      if (!$.isArray(this.admins)){\n        this.admins = [this.admins];\n      }\n    }\n\n    var opts = {\n      info: true,\n      select: true,\n      selectOptions: {\n        read_only: true,\n        fixed_ids: this.users,\n        starred_ids: this.admins\n      }\n    };\n\n    this.usersTable = new UsersTable(USERS_TABLE_ID, opts);\n\n    return TemplateHTML({\n      'usersTableHTML': this.usersTable.dataTableHTML\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    this.usersTable.initialize();\n    this.usersTable.refreshResourceTableSelect();\n\n    if (Config.isTabActionEnabled(\"groups-tab\", \"Group.edit_admins\")) {\n      context.off(\"click\", \"#edit_admins_button\");\n      context.on(\"click\",  \"#edit_admins_button\", function() {\n        $(\"#edit_admins_button\", context).hide();\n        $(\"#cancel_admins_button\", context).show();\n        $(\"#submit_admins_button\", context).show();\n\n        var opts = {\n          info: false,\n          select: true,\n          selectOptions: {\n            multiple_choice: true,\n            fixed_ids: that.users,\n            starred_ids: that.admins\n          }\n        };\n\n        that.usersTableEdit = new UsersTable(USERS_EDIT_TABLE_ID, opts);\n\n        $(\"div.group_users_info_table\", context).html(\n          that.usersTableEdit.dataTableHTML );\n\n        that.usersTableEdit.initialize();\n        that.usersTableEdit.selectResourceTableSelect({ ids : that.admins });\n\n        return false;\n      });\n\n      context.off(\"click\", \"#cancel_admins_button\");\n      context.on(\"click\",  \"#cancel_admins_button\", function() {\n        Sunstone.runAction(\"Group.show\", that.element.ID);\n        return false;\n      });\n\n      context.off(\"click\", \"#submit_admins_button\");\n      context.on(\"click\",  \"#submit_admins_button\", function() {\n        // Add/delete admins\n\n        var selected_admins_list =\n            that.usersTableEdit.retrieveResourceTableSelect(context,\n                                                      \"group_users_edit_list\");\n\n        $.each(selected_admins_list, function(i,admin_id){\n          if (that.admins.indexOf(admin_id) == -1){\n            Sunstone.runAction(\"Group.add_admin\",\n                  that.element.ID, {admin_id : admin_id});\n          }\n        });\n\n        $.each(that.admins, function(i,admin_id){\n          if (selected_admins_list.indexOf(admin_id) == -1){\n            Sunstone.runAction(\"Group.del_admin\",\n                  that.element.ID, {admin_id : admin_id});\n          }\n        });\n\n        return false;\n      });\n    }\n  }\n});\n\n","define('tabs/groups-tab/panels/quotas',['require','utils/locale','sunstone-config','utils/quotas/quota-defaults','utils/quotas/quota-widgets','../tabId','./quotas/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var QuotaDefaults = require('utils/quotas/quota-defaults');\n  var QuotaWidgets = require('utils/quotas/quota-widgets');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./quotas/panelId');\n  var RESOURCE = \"Group\";\n  var XML_ROOT = \"GROUP\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Quotas\");\n    this.icon = \"fa-align-left\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return QuotaWidgets.initQuotasPanel(\n      this.element,\n      QuotaDefaults.getDefaultQuotas(RESOURCE),\n      Config.isTabActionEnabled(TAB_ID, RESOURCE+\".quotas_dialog\"));\n  }\n\n  function _setup(context) {\n    QuotaWidgets.setupQuotasPanel(\n      this.element,\n      context,\n      Config.isTabActionEnabled(TAB_ID, RESOURCE+\".quotas_dialog\"),\n      RESOURCE);\n\n    return false;\n  }\n});\n\n","define('tabs/groups-tab/panels/quotas/panelId',['require'],function(require){\n  return 'group_quotas_tab';\n});\n","define('tabs/groups-tab/panels/accounting',['require','utils/locale','utils/accounting','../tabId','./accounting/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Accounting = require('utils/accounting');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./accounting/panelId');\n  var RESOURCE = \"Group\";\n  var XML_ROOT = \"GROUP\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Accounting\");\n    this.icon = \"fa-bar-chart-o\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return Accounting.html();\n  }\n\n  function _setup(context) {\n    Accounting.setup(\n      context,\n      { fixed_group: this.element.ID,\n        init_group_by: \"user\"\n      });\n  }\n});\n\n","define('tabs/groups-tab/panels/accounting/panelId',['require'],function(require){\n  return 'group_accounting_tab';\n});\n","define('tabs/groups-tab/panels/showback',['require','utils/locale','sunstone-config','utils/showback','../tabId','./showback/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Showback = require('utils/showback');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./showback/panelId');\n  var RESOURCE = \"Group\";\n  var XML_ROOT = \"GROUP\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Showback\");\n    this.icon = \"fa-money\";\n\n    this.element = info[XML_ROOT];\n\n    if (!Config.isFeatureEnabled(\"showback\")) {\n      throw \"Showback is disabled in the configuration\";\n    }\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return Showback.html();\n  }\n\n  function _setup(context) {\n    Showback.setup(\n      context,\n      { fixed_user: \"\",\n        fixed_group: this.element.ID\n      }\n    );\n  }\n});\n\n","define('tabs/groups-tab/panels/showback/panelId',['require'],function(require){\n  return 'group_showback_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/groups-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"        <div class=\\\"row\\\">\\n          <div class=\\\"large-7 columns\\\">\\n            <h4>\"\n    + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.description : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(2, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"            </h4>\\n            <table class=\\\"dataTable extended_table\\\">\\n              <tr>\\n                <th style='width: 60%;'></th>\\n                <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Users\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group Admins\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              </tr>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.views : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(4, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"            </table>\\n          </div>\\n          <div class=\\\"large-5 columns\\\" style=\\\"text-align: center\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.preview : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(7, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"          </div>\\n        </div>\\n        <br>\\n\";\n},\"2\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"description\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\";\n},\"4\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"              <tr>\\n                <td>\\n                  \"\n    + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"View\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.description : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(5, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"                </td>\\n                <td>\\n                  <input class=\\\"user_view_input\\\" type=\\\"checkbox\\\"\\n                  id=\\\"group_view_\"\n    + escapeExpression(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"\\n                  value=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n                </td>\\n                <td>\\n                  <input class=\\\"admin_view_input\\\" type=\\\"checkbox\\\"\\n                  id=\\\"group_admin_view_\"\n    + escapeExpression(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"\\n                  value=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n                </td>\\n              </tr>\\n\";\n},\"5\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"                  <span class=\\\"tip\\\">\"\n    + escapeExpression(((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"description\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\";\n},\"7\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            <img src=\\\"images/\"\n    + escapeExpression(((helper = (helper = helpers.preview || (depth0 != null ? depth0.preview : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"preview\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" style=\\\"height: 200px;\\\">\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"columns medium-5\\\">\\n      <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n        <input required type=\\\"text\\\" name=\\\"name\\\" id=\\\"name\\\" />\\n      </label>\\n    </div>\\n    <div class=\\\"columns medium-7\\\">\\n      <dl class=\\\"tabs right-info-tabs text-center right\\\" data-tab>\\n       <dd class=\\\"active\\\"><a href=\\\"#resource_views\\\"><i class=\\\"fa fa-eye\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Views\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a></dd>\\n       <dd><a href=\\\"#administrators\\\"><i class=\\\"fa fa-upload\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Admin\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a></dd>\\n       <dd><a href=\\\"#resource_creation\\\"><i class=\\\"fa fa-folder-open\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Permissions\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a></dd>\\n     </dl>\\n   </div>\\n </div>\\n <div class=\\\"tabs-content\\\">\\n  <div id=\\\"resource_views\\\" class=\\\"content active\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <p class=\\\"subheader\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Allow users in this group to use the following Sunstone views\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          &emsp;<span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Views available to the group users. If the default is unset, the one set in sunstone-views.yaml will be used\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </p>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"user_view_default\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default Users View\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </label>\\n            <select id=\\\"user_view_default\\\">\\n            </select>\\n          </div>\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"admin_view_default\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default Admin View\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </label>\\n            <select id=\\\"admin_view_default\\\">\\n            </select>\\n          </div>\\n        </div>\\n        <br>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.viewTypes : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"      </div>\\n    </div>\\n  </div>\\n  <div id=\\\"administrators\\\" class=\\\" content\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"medium-6 columns\\\" id=\\\"admin_user_wrapper\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label>\\n              <input type=\\\"checkbox\\\" id=\\\"admin_user\\\" name=\\\"admin_user\\\" value=\\\"YES\\\" />\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create an administrator user\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"You can create now an administrator user. More administrators can be added later.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n          </div>\\n        </div>\\n        \";\n  stack1 = ((helper = (helper = helpers.userCreationHTML || (depth0 != null ? depth0.userCreationHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"userCreationHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      </div>\\n    </div>\\n  </div>\\n  <div id=\\\"resource_creation\\\" class=\\\"content\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label>\\n          <input type=\\\"checkbox\\\" id=\\\"shared_resources\\\" name=\\\"shared_resources\\\" value=\\\"YES\\\" />\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Allow users to view the VMs and Services of other users in the same group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"An ACL Rule will be created to give users in this group access to all the resources in the same group.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <p class=\\\"subheader\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Allow users in this group to create the following resources\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          &emsp;<span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"This will create new ACL Rules to define which virtual resources this group's users will be able to create.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </p>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <table class=\\\"dataTable\\\" style=\\\"table-layout:fixed\\\">\\n          <thead><tr>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VNets\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Security Groups\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Images\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Templates\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Documents\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Documents are a special tool used for general purposes, mainly by OneFlow. If you want to enable users of this group to use service composition via OneFlow, let it checked.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span></th>\\n          </tr></thead>\\n          <tbody>\\n            <tr>\\n              <td><input type=\\\"checkbox\\\" id=\\\"group_res_vm\\\" name=\\\"group_res_vm\\\" class=\\\"resource_cb\\\" value=\\\"VM\\\"></input></td>\\n              <td><input type=\\\"checkbox\\\" id=\\\"group_res_net\\\" name=\\\"group_res_net\\\" class=\\\"resource_cb\\\" value=\\\"NET\\\"></input></td>\\n              <td><input type=\\\"checkbox\\\" id=\\\"group_res_sg\\\" name=\\\"group_res_sg\\\" class=\\\"resource_cb\\\" value=\\\"SECGROUP\\\"></input></td>\\n              <td><input type=\\\"checkbox\\\" id=\\\"group_res_image\\\" name=\\\"group_res_image\\\" class=\\\"resource_cb\\\" value=\\\"IMAGE\\\"></input></td>\\n              <td><input type=\\\"checkbox\\\" id=\\\"group_res_template\\\" name=\\\"group_res_template\\\" class=\\\"resource_cb\\\" value=\\\"TEMPLATE\\\"></input></td>\\n              <td><input type=\\\"checkbox\\\" id=\\\"group_res_document\\\" name=\\\"group_res_document\\\" class=\\\"resource_cb\\\" value=\\\"DOCUMENT\\\"></input></td>\\n              <td/>\\n            </tr>\\n          </tbody>\\n        </table>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n<div class=\\\"reveal-footer\\\">\\n  <div class=\\\"row collapse\\\" id=\\\"default_vdc_warning\\\">\\n    <div class=\\\"large-12 columns text-right\\\">\\n      <span class=\\\"radius secondary label\\\"><i class=\\\"fa fa-warning\\\"/> \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"New Groups are automatically added to the default VDC\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </div>\\n  </div>\\n</div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/groups-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/groups-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','tabs/users-tab/utils/user-creation','utils/tips','tabs/groups-tab/utils/views','utils/template-utils','hbs!./create/wizard','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var UserCreation = require('tabs/users-tab/utils/user-creation');\n  var Tips = require('utils/tips');\n  var Views = require('tabs/groups-tab/utils/views');\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n\n  /*\n    CONSTANTS\n   */\n\n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create Group\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      },\n      'update': {\n        'title': Locale.tr(\"Update Group\"),\n        'buttonText': Locale.tr(\"Update\"),\n        'resetButton': false\n      }\n    };\n\n    this.userCreation = new UserCreation(FORM_PANEL_ID);\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.fill = _fill;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    var filtered_views = {\n      cloud : [],\n      advanced : [],\n      vcenter : [],\n      other : []\n    };\n\n    var view_info;\n    $.each(config['all_views'], function(index, view_id) {\n      view_info = Views.info[view_id];\n      if (view_info) {\n        switch (view_info.type) {\n          case 'advanced':\n            filtered_views.advanced.push(view_info);\n            break;\n          case 'cloud':\n            filtered_views.cloud.push(view_info);\n            break;\n          case 'vcenter':\n            filtered_views.vcenter.push(view_info);\n            break;\n          default:\n            filtered_views.other.push({\n              id: view_id,\n              name: view_id,\n              description: null,\n              type: \"other\"\n            });\n            break;\n        }\n      } else {\n        filtered_views.other.push({\n          id: view_id,\n          name: view_id,\n          description: null,\n          type: \"other\"\n        });\n      }\n    });\n\n    var viewTypes = [];\n\n    $.each(filtered_views, function(view_type, views){\n      if (views.length > 0) {\n        viewTypes.push(\n          {\n            'name': Views.types[view_type].name,\n            'description': Views.types[view_type].description,\n            'preview': Views.types[view_type].preview,\n            'views': views\n          });\n      }\n    });\n\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId,\n      'userCreationHTML': this.userCreation.html(),\n      'viewTypes': viewTypes\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    this.userCreation.setup( $(\"#admin_user_wrapper\",context) );\n    Tips.setup(context);\n\n    $('input#name', context).change(function(){\n      var val = $(this).val();\n\n      that.userCreation.setName(context, val + \"-admin\");\n    });\n\n    $('input#admin_user', context).change(function(){\n      if ($(this).prop('checked')) {\n        that.userCreation.enable( $(\"#admin_user_wrapper\",context) );\n      } else {\n        that.userCreation.disable( $(\"#admin_user_wrapper\",context) );\n      }\n    });\n\n    this.userCreation.disable( $(\"#admin_user_wrapper\",context) );\n\n    $.each($('[id^=\"group_res\"]', context), function(){\n      $(this).prop(\"checked\", true);\n    });\n\n    $(\"#group_res_net\", context).prop(\"checked\", false);\n\n    $(context).off(\"change\", \".admin_view_input\");\n    $(context).on(\"change\", \".admin_view_input\", function(){\n      _generateViewsSelect(context, \"admin\");\n    });\n    \n    $(context).off(\"change\", \".user_view_input\");\n    $(context).on(\"change\", \".user_view_input\", function(){\n      _generateViewsSelect(context, \"user\");\n    });\n\n    if (this.action == \"create\") {\n      $(\"input#group_view_cloud\").attr('checked','checked').change();\n      $(\"input#group_admin_view_groupadmin\").attr('checked','checked').change();\n\n      _generateViewsSelect(context, \"admin\", \"groupadmin\");\n      _generateViewsSelect(context, \"user\", \"cloud\");\n    }\n  }\n\n  function _submitWizard(context) {\n    var views = [];\n    $.each($('[id^=\"group_view\"]:checked', context), function(){\n      views.push($(this).val());\n    });\n\n    var admin_views = [];\n    $.each($('[id^=\"group_admin_view\"]:checked', context), function(){\n      admin_views.push($(this).val());\n    });\n\n    var default_view = $('#user_view_default', context).val();\n    var default_admin_view = $('#admin_view_default', context).val();\n\n    if (this.action == \"create\") {\n      var name = $('#name',context).val();\n\n      var user_json = null;\n\n      if ( $('#admin_user', context).prop('checked') ){\n        user_json = this.userCreation.retrieve($(\"#admin_user_wrapper\",context));\n      }\n\n      var group_json = {\n        \"group\" : {\n          \"name\" : name\n        }\n      };\n\n      if (user_json){\n        group_json[\"group\"][\"group_admin\"] = user_json;\n      }\n\n      var resources = \"\";\n      var separator = \"\";\n\n      $.each($('[id^=\"group_res\"]:checked', context), function(){\n        resources += (separator + $(this).val());\n        separator = \"+\";\n      });\n\n      group_json['group']['resources'] = resources;\n\n      if ( $('#shared_resources', context).prop('checked') ){\n        group_json['group']['shared_resources'] = \"VM+DOCUMENT\";\n      }\n\n      group_json['group']['views'] = views;\n\n      if (default_view != undefined){\n        group_json['group']['default_view'] = default_view;\n      }\n\n      group_json['group']['admin_views'] = admin_views;\n\n      if (default_admin_view != undefined){\n        group_json['group']['default_admin_view'] = default_admin_view;\n      }\n\n      Sunstone.runAction(\"Group.create\",group_json);\n      return false;\n    } else if (this.action == \"update\") {\n      var template_json = this.element.TEMPLATE;\n\n      delete template_json[\"SUNSTONE_VIEWS\"];\n      delete template_json[\"DEFAULT_VIEW\"];\n      delete template_json[\"GROUP_ADMIN_VIEWS\"];\n      delete template_json[\"GROUP_ADMIN_DEFAULT_VIEW\"];\n\n      if (views.length != 0){\n        template_json[\"SUNSTONE_VIEWS\"] = views.join(\",\");\n      }\n\n      if (default_view != undefined){\n        template_json[\"DEFAULT_VIEW\"] = default_view;\n      }\n\n      if (admin_views.length != 0){\n        template_json[\"GROUP_ADMIN_VIEWS\"] = admin_views.join(\",\");\n      }\n\n      if (default_admin_view != undefined){\n        template_json[\"GROUP_ADMIN_DEFAULT_VIEW\"] = default_admin_view;\n      }\n\n      var template_str = TemplateUtils.templateToString(template_json);\n\n      Sunstone.runAction(\"Group.update\",this.resourceId, template_str);\n      return false;\n    }\n  }\n\n  function _onShow(context) {\n\n  }\n\n  function _fill(context, element) {\n    var that = this;\n\n    if (this.action != \"update\") {return;}\n    this.resourceId = element.ID;\n    this.element = element;\n\n    // Disable parts of the wizard\n    $(\"input#name\", context).attr(\"disabled\", \"disabled\");\n\n    $(\"a[href='#administrators']\", context).parents(\"dd\").hide();\n    $(\"a[href='#resource_creation']\", context).parents(\"dd\").hide();\n\n    $(\"input#name\", context).val(element.NAME);\n\n    var views_str = \"\";\n\n    $('input[id^=\"group_view\"]', context).removeAttr('checked');\n\n    if (element.TEMPLATE.SUNSTONE_VIEWS){\n      views_str = element.TEMPLATE.SUNSTONE_VIEWS;\n\n      var views = views_str.split(\",\");\n      $.each(views, function(){\n        $('input[id^=\"group_view\"][value=\"'+this.trim()+'\"]',\n          context).attr('checked','checked').change();\n      });\n    }\n\n    $('input[id^=\"group_default_view\"]', context).removeAttr('checked');\n\n    if (element.TEMPLATE.DEFAULT_VIEW){\n      $('#user_view_default', context).val(element.TEMPLATE.DEFAULT_VIEW.trim()).change();\n    } else {\n      $('#user_view_default', context).val(\"\").change();\n    }\n\n    $('input[id^=\"group_admin_view\"]', context).removeAttr('checked');\n\n    if (element.TEMPLATE.GROUP_ADMIN_VIEWS){\n      views_str = element.TEMPLATE.GROUP_ADMIN_VIEWS;\n\n      var views = views_str.split(\",\");\n      $.each(views, function(){\n        $('input[id^=\"group_admin_view\"][value=\"'+this.trim()+'\"]',\n          context).attr('checked','checked').change();\n      });\n    }\n\n    $('input[id^=\"group_default_admin_view\"]', context).removeAttr('checked');\n\n    if (element.TEMPLATE.GROUP_ADMIN_DEFAULT_VIEW){\n      $('#admin_view_default', context).val(element.TEMPLATE.GROUP_ADMIN_DEFAULT_VIEW.trim()).change();\n    } else {\n      $('#admin_view_default', context).val(\"\").change();\n    }\n  }\n\n  function _generateViewsSelect(context, idPrefix, value) {\n    var views = [];\n    var old_value = value || $(\"#\"+idPrefix+\"_view_default\", context).val();\n\n    var html = '<option id=\"\" name=\"\" value=\"\"></option>';\n\n    $(\".\"+idPrefix+\"_view_input:checked\", context).each(function(){\n      var name = (Views.info[this.value] ? Views.info[this.value].name : this.value);\n\n      html += '<option value=\"'+this.value+'\">'+name+'</option>';\n    });\n\n    $(\"select#\"+idPrefix+\"_view_default\", context).html(html);\n\n    if (old_value) {\n      $(\"#\"+idPrefix+\"_view_default\", context).val(old_value).change();\n    }\n  }\n\n});\n\n","define('tabs/groups-tab',['require','utils/locale','./groups-tab/buttons','./groups-tab/actions','./groups-tab/datatable','./groups-tab/tabId','./groups-tab/dialogs/quotas','./groups-tab/panels/info','./groups-tab/panels/users','./groups-tab/panels/quotas','./groups-tab/panels/accounting','./groups-tab/panels/showback','./groups-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./groups-tab/buttons');\n  var Actions = require('./groups-tab/actions');\n  var Table = require('./groups-tab/datatable');\n\n  var TAB_ID = require('./groups-tab/tabId');\n  var DATATABLE_ID = \"dataTableGroups\";\n\n  var _dialogs = [\n    require('./groups-tab/dialogs/quotas')\n  ];\n\n  var _panels = [\n    require('./groups-tab/panels/info'),\n    require('./groups-tab/panels/users'),\n    require('./groups-tab/panels/quotas'),\n    require('./groups-tab/panels/accounting'),\n    require('./groups-tab/panels/showback')\n  ];\n\n  var _formPanels = [\n    require('./groups-tab/form-panels/create')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Groups\"),\n    tabClass: \"subTab\",\n    parentTab: \"system-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-users\"></i>&emsp;'+Locale.tr(\"Groups\"),\n    infoHeader: '<i class=\"fa fa-fw fa-users\"></i>&emsp;'+Locale.tr(\"Group\"),\n    subheader: '<span>\\\n        <span class=\"total_groups\"/> <small>'+Locale.tr(\"TOTAL\")+'</small>\\\n      </span>',\n    resource: 'Group',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/vdcs-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Vdc.refresh\" : {\n        type: \"action\",\n        layout: \"refresh\",\n        alwaysActive: true\n    },\n    \"Vdc.create_dialog\" : {\n        type: \"create_dialog\",\n        layout: \"create\"\n    },\n    \"Vdc.update_dialog\" : {\n        type: \"action\",\n        layout: \"main\",\n        text: Locale.tr(\"Update\")\n    },\n    \"Vdc.delete\" : {\n        type: \"confirm\",\n        layout: \"del\",\n        text: Locale.tr(\"Delete\")\n    }\n  };\n\n  return Buttons;\n});\n\n","define('tabs/vdcs-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TabDataTable = require('utils/tab-datatable');\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n\n  /*\n    CONSTANTS\n   */\n\n  var RESOURCE = \"Vdc\";\n  var XML_ROOT = \"VDC\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          { \"bSortable\": false, \"aTargets\": [\"check\"] },\n          { \"sWidth\": \"35px\", \"aTargets\": [0] },\n          { \"bVisible\": true, \"aTargets\": Config.tabTableColumns(TAB_NAME)},\n          { \"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Groups\"),\n      Locale.tr(\"Clusters\"),\n      Locale.tr(\"Hosts\"),\n      Locale.tr(\"VNets\"),\n      Locale.tr(\"Datastores\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 2,\n      \"select_resource\": Locale.tr(\"Please select a VDC from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following VDC:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more VDCs from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following VDCs:\")\n    };\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n\n    return [\n      '<input class=\"check_item\" type=\"checkbox\" id=\"'+RESOURCE.toLowerCase()+'_' +\n                           element.ID + '\" name=\"selected_items\" value=\"' +\n                           element.ID + '\"/>',\n      element.ID,\n      element.NAME,\n      _lengthOf(element.GROUPS.ID),\n      _lengthOf(element.CLUSTERS.CLUSTER),\n      _lengthOf(element.HOSTS.HOST),\n      _lengthOf(element.VNETS.VNET),\n      _lengthOf(element.DATASTORES.DATASTORE)\n    ];\n  }\n\n  function _lengthOf(ids){\n    var l = 0;\n    if ($.isArray(ids))\n      l = ids.length;\n    else if (!$.isEmptyObject(ids))\n      l = 1;\n\n    return l;\n  }\n});\n\n","define('tabs/vdcs-tab/tabId',['require'],function(require){\n  return 'vdcs-tab';\n});\n","define('tabs/vdcs-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createVDCForm';\n});\n","define('tabs/vdcs-tab/actions',['require','sunstone','utils/notifier','utils/locale','./datatable','opennebula/vdc','./tabId','./form-panels/create/formPanelId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var DataTable = require('./datatable');\n  var OpenNebulaResource = require('opennebula/vdc');\n\n  var RESOURCE = \"Vdc\";\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n\n  var _actions = {\n\n    \"Vdc.create\" : {\n      type: \"create\",\n      call: OpenNebulaResource.create,\n      callback: function(request, response) {\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n\n        var group_ids = request.request.data[0].group_ids;\n        if(group_ids !=undefined){\n          $.each(group_ids,function(){\n            Sunstone.runAction(RESOURCE+\".add_group\",\n              response.VDC.ID,\n              { group_id : parseInt(this)});\n          });\n        }\n\n        var clusters = request.request.data[0].clusters;\n        if(clusters !=undefined){\n          $.each(clusters,function(){\n            Sunstone.runAction(RESOURCE+\".add_cluster\",\n              response.VDC.ID,\n              this);\n          });\n        }\n\n        var hosts = request.request.data[0].hosts;\n        if(hosts !=undefined){\n          $.each(hosts,function(){\n            Sunstone.runAction(RESOURCE+\".add_host\",\n              response.VDC.ID,\n              this);\n          });\n        }\n\n        var vnets = request.request.data[0].vnets;\n        if(vnets !=undefined){\n          $.each(vnets,function(){\n            Sunstone.runAction(RESOURCE+\".add_vnet\",\n              response.VDC.ID,\n              this);\n          });\n        }\n\n        var datastores = request.request.data[0].datastores;\n        if(datastores !=undefined){\n          $.each(datastores,function(){\n            Sunstone.runAction(RESOURCE+\".add_datastore\",\n              response.VDC.ID,\n              this);\n          });\n        }\n\n        // TODO: this vdc.show may get the information before the add/del\n        // actions end, showing \"outdated\" information\n\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);\n\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n        Notifier.notifyCustom(Locale.tr(\"VDC created\"), \" ID: \" + response.VDC.ID, false);\n      },\n      error: Notifier.onError\n    },\n\n    \"Vdc.create_dialog\" : {\n      type: \"custom\",\n      call: function(){\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    \"Vdc.list\" : {\n      type: \"list\",\n      call: OpenNebulaResource.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"Vdc.show\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Vdc.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(RESOURCE+\".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(RESOURCE+\".list\", {force: true});\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Vdc.delete\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError\n    },\n\n    \"Vdc.rename\" : {\n      type: \"single\",\n      call: OpenNebulaResource.rename,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Vdc.update_dialog\" : {\n      type: \"custom\",\n      call: function(){\n        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n        if ( selected_nodes.length != 1 ) {\n          Notifier.notifyMessage(\"Please select one (and just one) VDC to update.\");\n          return false;\n        }\n\n        var resource_id = \"\"+selected_nodes[0];\n        Sunstone.runAction(RESOURCE+\".show_to_update\", resource_id);\n      }\n    },\n\n    \"Vdc.show_to_update\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"update\",\n          function(formPanelInstance, context) {\n            formPanelInstance.fill(context, response.VDC);\n          });\n      },\n      error: Notifier.onError\n    },\n\n    \"Vdc.update\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request, response){\n        Sunstone.hideFormPanel(TAB_ID);\n        Notifier.notifyMessage(Locale.tr(\"VDC updated correctly\"));\n      },\n      error: function(request, response){\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      }\n    },\n\n    \"Vdc.update_template\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Vdc.add_group\" : {\n      type: \"single\",\n      call : OpenNebulaResource.add_group,\n      callback : function (req) {\n        //Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Vdc.del_group\" : {\n      type: \"single\",\n      call : OpenNebulaResource.del_group,\n      callback : function (req) {\n        //Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Vdc.add_cluster\" : {\n      type: \"single\",\n      call : OpenNebulaResource.add_cluster,\n      callback : function (req) {\n        //Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Vdc.del_cluster\" : {\n      type: \"single\",\n      call : OpenNebulaResource.del_cluster,\n      callback : function (req) {\n        //Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Vdc.add_host\" : {\n      type: \"single\",\n      call : OpenNebulaResource.add_host,\n      callback : function (req) {\n        //Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Vdc.del_host\" : {\n      type: \"single\",\n      call : OpenNebulaResource.del_host,\n      callback : function (req) {\n        //Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Vdc.add_vnet\" : {\n      type: \"single\",\n      call : OpenNebulaResource.add_vnet,\n      callback : function (req) {\n        //Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Vdc.del_vnet\" : {\n      type: \"single\",\n      call : OpenNebulaResource.del_vnet,\n      callback : function (req) {\n        //Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Vdc.add_datastore\" : {\n      type: \"single\",\n      call : OpenNebulaResource.add_datastore,\n      callback : function (req) {\n        //Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Vdc.del_datastore\" : {\n      type: \"single\",\n      call : OpenNebulaResource.del_datastore,\n      callback : function (req) {\n        //Sunstone.runAction(RESOURCE+'.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    }\n  };\n\n  return _actions;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vdcs-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n       <tr>\\n        <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n        <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        <td></td>\\n      </tr>\\n      \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n    </tbody>\\n  </table>\\n</div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vdcs-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/panel/rename-tr/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<tr class=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.resourceType || (depth0 != null ? depth0.resourceType : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"resourceType\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_rename\\\">\\n  <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n  <td class=\\\"value_td_rename\\\">\"\n    + escapeExpression(((helper = (helper = helpers.resourceName || (depth0 != null ? depth0.resourceName : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"resourceName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n  <td>\\n    <div id=\\\"div_edit_rename\\\">\\n      <a id=\\\"div_edit_rename_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n    </div>\\n  </td>\\n</tr>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/panel/rename-tr/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('utils/panel/rename-tr',['require','hbs!./rename-tr/html','sunstone'],function(require) {\n  /*\n    This module insert a row with the name of the resource.\n    The row can be edited and a rename action will be sent\n   */\n  \n  var TemplateRenameTr = require('hbs!./rename-tr/html');\n  var Sunstone = require('sunstone');\n\n  /*\n    Generate the tr HTML with the name of the resource and an edit icon\n    @param {String} resourceType Resource type (i.e: Zone, Host, Image...)\n    @param {String} resourceName Name of the resource\n    @returns {String} HTML row\n   */\n  var _html = function(resourceType, resourceName) {\n    var renameTrHTML = TemplateRenameTr({\n      'resourceType': resourceType.toLowerCase(),\n      'resourceName': resourceName\n    })\n\n    return renameTrHTML;\n  };\n\n  /*\n    Initialize the row, clicking the edit icon will add an input to edit the name\n    @param {String} resourceType Resource type (i.e: Zone, Host, Image...)\n    @param {String} resourceId ID of the resource\n    @param {jQuery Object} context Selector including the tr\n   */\n  var _setup = function(resourceType, resourceId, context) {\n    context.off(\"click\", \"#div_edit_rename_link\");\n    context.on(\"click\", \"#div_edit_rename_link\", function() {\n      var valueStr = $(\".value_td_rename\", context).text();\n      $(\".value_td_rename\", context).html('<input class=\"input_edit_value_rename\" id=\"input_edit_rename\" type=\"text\" value=\"' + valueStr + '\"/>');\n    });\n\n    context.off(\"change\", \".input_edit_value_rename\");\n    context.on(\"change\", \".input_edit_value_rename\", function() {\n      var valueStr = $(\".input_edit_value_rename\", context).val();\n      if (valueStr != \"\") {\n        var nameTemplate = {\"name\": valueStr};\n        Sunstone.runAction(resourceType + \".rename\", resourceId, nameTemplate);\n      }\n    });\n\n    return false;\n  }\n\n  return {\n    'html': _html,\n    'setup': _setup\n  }\n});\n\n","define('tabs/vdcs-tab/panels/info',['require','hbs!./info/html','utils/locale','utils/panel/rename-tr','utils/panel/template-table','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TemplateHTML = require('hbs!./info/html');\n  var Locale = require('utils/locale');\n  var RenameTr = require('utils/panel/rename-tr');\n  var TemplateTable = require('utils/panel/template-table');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Vdc\";\n  var XML_ROOT = \"VDC\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var templateTableHTML = TemplateTable.html(this.element.TEMPLATE, RESOURCE,\n                                              Locale.tr(\"Attributes\"));\n\n    return TemplateHTML({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'templateTableHTML': templateTableHTML\n    });\n  }\n\n  function _setup(context) {\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n\n    TemplateTable.setup(this.element.TEMPLATE, RESOURCE, this.element.ID, context);\n  }\n});\n\n","define('tabs/vdcs-tab/panels/info/panelId',['require'],function(require){\n  return 'vdc_info_tab';\n});\n","define('tabs/vdcs-tab/panels/groups',['require','utils/locale','tabs/groups-tab/datatable','./groups/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var GroupsTable = require('tabs/groups-tab/datatable');\n\n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./groups/panelId');\n  var GROUPS_TABLE_ID = PANEL_ID + \"GroupsTable\";\n  var RESOURCE = \"Vdc\";\n  var XML_ROOT = \"VDC\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Groups\");\n    this.icon = \"fa-users\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var groups = [];\n\n    if (this.element.GROUPS.ID != undefined){\n      groups = this.element.GROUPS.ID;\n\n      if (!$.isArray(groups)){\n        groups = [groups];\n      }\n    }\n\n    var opts = {\n      info: true,\n      select: true,\n      selectOptions: {\n        read_only: true,\n        fixed_ids: groups\n      }\n    };\n\n    this.groupsTable = new GroupsTable(GROUPS_TABLE_ID, opts);\n\n    return this.groupsTable.dataTableHTML;\n  }\n\n  function _setup(context) {\n    this.groupsTable.initialize();\n    this.groupsTable.refreshResourceTableSelect();\n\n    return false;\n  }\n});\n\n","define('tabs/vdcs-tab/panels/groups/panelId',['require'],function(require){\n  return 'vdc_groups_tab';\n});\n","define('tabs/vdcs-tab/utils/common',['require'],function(require) {\n  /*\n    Common functions for VDCs\n   */\n\n  var VDC_ALL_RESOURCES = \"-10\";\n\n  /**\n    Return an object with the VDC resources indexed by zone_id.\n\n       {   zone_id :\n           {   clusters   : [],\n               hosts      : [],\n               vnets      : [],\n               datastores : []\n           }\n       }\n  */\n  function _indexedVdcResources(vdc){\n    var resources = {};\n\n    var clusters_array = [];\n    var hosts_array = [];\n    var vnets_array = [];\n    var datastores_array = [];\n\n    if (vdc.CLUSTERS.CLUSTER){\n      clusters_array = vdc.CLUSTERS.CLUSTER;\n\n      if (!$.isArray(clusters_array)){\n        clusters_array = [clusters_array];\n      }\n    }\n\n    if (vdc.HOSTS.HOST){\n      hosts_array = vdc.HOSTS.HOST;\n\n      if (!$.isArray(hosts_array)){\n        hosts_array = [hosts_array];\n      }\n    }\n\n    if (vdc.VNETS.VNET){\n      vnets_array = vdc.VNETS.VNET;\n\n      if (!$.isArray(vnets_array)){\n        vnets_array = [vnets_array];\n      }\n    }\n\n    if (vdc.DATASTORES.DATASTORE){\n      datastores_array = vdc.DATASTORES.DATASTORE;\n\n      if (!$.isArray(datastores_array)){\n        datastores_array = [datastores_array];\n      }\n    }\n\n    function init_resources_zone(zone_id){\n      if (resources[zone_id] == undefined){\n        resources[zone_id] = {\n          clusters   : [],\n          hosts      : [],\n          vnets      : [],\n          datastores : []\n        }\n      }\n    }\n\n    $.each(clusters_array, function(i,e){\n      init_resources_zone(e.ZONE_ID);\n      resources[e.ZONE_ID].clusters.push(e.CLUSTER_ID);\n    });\n\n    $.each(hosts_array, function(i,e){\n      init_resources_zone(e.ZONE_ID);\n      resources[e.ZONE_ID].hosts.push(e.HOST_ID);\n    });\n\n    $.each(vnets_array, function(i,e){\n      init_resources_zone(e.ZONE_ID);\n      resources[e.ZONE_ID].vnets.push(e.VNET_ID);\n    });\n\n    $.each(datastores_array, function(i,e){\n      init_resources_zone(e.ZONE_ID);\n      resources[e.ZONE_ID].datastores.push(e.DATASTORE_ID);\n    });\n\n    return resources;\n  }\n\n  return {\n    'indexedVdcResources': _indexedVdcResources,\n    'VDC_ALL_RESOURCES': VDC_ALL_RESOURCES\n  };\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vdcs-tab/utils/resources-tab/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row\\\">\\n  <div class=\\\"large-8 medium-6 columns\\\">\\n    <label class=\\\"inline right\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Zone\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n  </div>\\n  <div class=\\\"large-4 medium-6 columns end\\\">\\n    <select class=\\\"vdc_zones_select\\\">\\n    </select>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <div class=\\\"tabs-content vdc_zones_tabs_content\\\"></div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vdcs-tab/utils/resources-tab/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vdcs-tab/utils/resources-zone/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <dl class=\\\"tabs right-info-tabs text-center\\\" data-tab>\\n      <dd class=\\\"active\\\"><a href=\\\"#vdcClustersTab_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"><i class=\\\"fa fa-th\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Clusters\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a></dd>\\n      <dd><a href=\\\"#vdcHostsTab_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"><i class=\\\"fa fa-hdd-o\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hosts\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a></dd>\\n      <dd><a href=\\\"#vdcVnetsTab_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"><i class=\\\"fa fa-globe\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VNets\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a></dd>\\n      <dd><a href=\\\"#vdcDatastoresTab_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"><i class=\\\"fa fa-folder-open\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastores\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a></dd>\\n    </dl>\\n    <div class=\\\"tabs-content\\\">\\n      <div class=\\\"content active\\\" id=\\\"vdcClustersTab_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label for=\\\"all_clusters_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n              <input type=\\\"checkbox\\\" name=\\\"all_clusters_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"all_clusters_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"All\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Selects all current and future clusters\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n          </div>\\n        </div>\\n        <div class=\\\"vdc_clusters_select\\\">\\n          \";\n  stack1 = ((helper = (helper = helpers.clustersTableHTML || (depth0 != null ? depth0.clustersTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"clustersTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        </div>\\n      </div>\\n      <div id=\\\"vdcHostsTab_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label for=\\\"all_hosts_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n              <input type=\\\"checkbox\\\" name=\\\"all_hosts_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"all_hosts_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"All\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Selects all current and future hosts\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n          </div>\\n        </div>\\n        <div class=\\\"vdc_hosts_select\\\">\\n          \";\n  stack1 = ((helper = (helper = helpers.hostsTableHTML || (depth0 != null ? depth0.hostsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"hostsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        </div>\\n      </div>\\n      <div id=\\\"vdcVnetsTab_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label for=\\\"all_vnets_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n              <input type=\\\"checkbox\\\" name=\\\"all_vnets_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"all_vnets_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"All\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Selects all current and future vnets\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n          </div>\\n        </div>\\n        <div class=\\\"vdc_vnets_select\\\">\\n          \";\n  stack1 = ((helper = (helper = helpers.vnetsTableHTML || (depth0 != null ? depth0.vnetsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"vnetsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        </div>\\n      </div>\\n      <div id=\\\"vdcDatastoresTab_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"content\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label for=\\\"all_datastores_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n              <input type=\\\"checkbox\\\" name=\\\"all_datastores_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"all_datastores_\"\n    + escapeExpression(((helper = (helper = helpers.unique_id || (depth0 != null ? depth0.unique_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"unique_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"All\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Selects all current and future datastores\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n          </div>\\n        </div>\\n        <div class=\\\"vdc_datastores_select\\\">\\n          \";\n  stack1 = ((helper = (helper = helpers.datastoresTableHTML || (depth0 != null ? depth0.datastoresTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"datastoresTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vdcs-tab/utils/resources-zone/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/clusters-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n\n  /*\n    CONSTANTS\n   */\n\n  var RESOURCE = \"Cluster\";\n  var XML_ROOT = \"CLUSTER\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"] },\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Hosts\"),\n      Locale.tr(\"VNets\"),\n      Locale.tr(\"Datastores\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 2,\n      \"select_resource\": Locale.tr(\"Please select a Cluster from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following Cluster:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more clusters from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following clusters:\")\n    };\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n\n    return [\n      '<input class=\"check_item\" type=\"checkbox\" id=\"'+RESOURCE.toLowerCase()+'_' +\n                           element.ID + '\" name=\"selected_items\" value=\"' +\n                           element.ID + '\"/>',\n      element.ID,\n      element.NAME,\n      _lengthOf(element.HOSTS.ID),\n      _lengthOf(element.VNETS.ID),\n      _lengthOf(element.DATASTORES.ID)\n    ];\n  }\n\n  function _lengthOf(ids){\n    var l = 0;\n    if ($.isArray(ids))\n      l = ids.length;\n    else if (!$.isEmptyObject(ids))\n      l = 1;\n\n    return l;\n  }\n});\n\n","define('tabs/clusters-tab/tabId',['require'],function(require){\n  return 'clusters-tab';\n});\n","define('tabs/hosts-tab/utils/cpu-bars',['require','utils/progress-bar','utils/humanize'],function(require) {\n  /*\n    Generate an Object containing the html for the real and allocated CPU\n   */\n  \n  var ProgressBar = require('utils/progress-bar');\n  var Humanize = require('utils/humanize')\n\n  /*\n    @param {Object} info Object representing the Host as returned by OpenNebula\n    @param {Boolean} hostShareFlag if true the info param is the HOST_SHARE element instead of HOSt\n   */\n  var _html = function(host, hostShareFlag) {\n    var hostShare = hostShareFlag ? host : host.HOST_SHARE;\n    var maxCPU = parseInt(hostShare.MAX_CPU);\n    var infoStr;\n\n    var allocatedCPUBar\n    if (hostShare.CPU_USAGE) {\n      var allocatedCPU = parseInt(hostShare.CPU_USAGE);\n\n      if (maxCPU > 0) {\n          var ratioAllocatedCPU = Math.round((allocatedCPU / maxCPU) * 100);\n          infoStr = allocatedCPU + ' / ' + maxCPU + ' (' + ratioAllocatedCPU + '%)';\n      } else {\n          infoStr = \"\";\n      }\n\n      allocatedCPUBar = ProgressBar.html(allocatedCPU, maxCPU, infoStr);\n    }\n\n    var realCPUBar\n    if (hostShare.USED_CPU) {\n      var realCPU = parseInt(hostShare.USED_CPU);\n\n      if (maxCPU > 0) {\n          var ratioRealCPU = Math.round((realCPU / maxCPU) * 100);\n          infoStr = realCPU + ' / ' + maxCPU + ' (' + ratioRealCPU + '%)';\n      } else {\n          infoStr = \"\";\n      }\n\n      realCPUBar = ProgressBar.html(realCPU, maxCPU, infoStr);\n    }\n\n    return {\n      real: realCPUBar,\n      allocated: allocatedCPUBar\n    }\n  }\n\n  return {\n    'html': _html\n  }\n});\n","define('tabs/hosts-tab/utils/memory-bars',['require','utils/progress-bar','utils/humanize'],function(require) {\n  /*\n    Generate an Object containing the html for the real and allocated MEMORY\n   */\n  \n  var ProgressBar = require('utils/progress-bar');\n  var Humanize = require('utils/humanize')\n\n  /*\n    @param {Object} info Object representing the Host as returned by OpenNebula\n    @param {Boolean} hostShareFlag if true the info param is the HOST_SHARE element instead of HOSt\n   */\n  var _html = function(host, hostShareFlag) {\n    var hostShare = hostShareFlag ? host : host.HOST_SHARE;\n    var maxMem = parseInt(hostShare.MAX_MEM);\n    var infoStr = \"\";\n\n    var allocatedMemBar;\n    if (hostShare.MEM_USAGE) {\n      var allocatedMem = parseInt(hostShare.MEM_USAGE);\n\n      if (maxMem > 0) {\n          var ratioAllocatedMem = Math.round((allocatedMem / maxMem) * 100);\n          infoStr = Humanize.size(allocatedMem) + ' / ' + Humanize.size(maxMem) + ' (' + ratioAllocatedMem + '%)';\n      } else {\n          infoStr = Humanize.size(allocatedMem) + ' / -';\n      }\n\n      allocatedMemBar = ProgressBar.html(allocatedMem, maxMem, infoStr);\n    }\n\n    var realMemBar;\n    if (hostShare.USED_MEM) {\n      var realMem = parseInt(hostShare.USED_MEM);\n\n      if (maxMem > 0) {\n          var ratioRealMem = Math.round((realMem / maxMem) * 100);\n          infoStr = Humanize.size(realMem) + ' / ' + Humanize.size(maxMem) + ' (' + ratioRealMem + '%)';\n      } else {\n          infoStr = Humanize.size(realMem) + ' / -';\n      }\n\n      realMemBar = ProgressBar.html(realMem, maxMem, infoStr);\n    }\n\n    return {\n      real: realMemBar,\n      allocated: allocatedMemBar\n    }\n  }\n\n  return {\n    'html': _html\n  }\n});\n","define('tabs/hosts-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','utils/humanize','./utils/cpu-bars','./utils/memory-bars','opennebula/host','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var CPUBars = require('./utils/cpu-bars');\n  var MemoryBars = require('./utils/memory-bars');\n  var OpenNebulaHost = require('opennebula/host')\n  \n  /*\n    CONSTANTS\n   */\n  \n  var RESOURCE = \"Host\";\n  var XML_ROOT = \"HOST\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\", 5, 6, 7, 8]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    }\n\n    this.columns = [\n      Locale.tr(\"ID\") ,\n      Locale.tr(\"Name\") ,\n      Locale.tr(\"Cluster\"),\n      Locale.tr(\"RVMs\"),\n      Locale.tr(\"Real CPU\"),\n      Locale.tr(\"Allocated CPU\"),\n      Locale.tr(\"Real MEM\"),\n      Locale.tr(\"Allocated MEM\"),\n      Locale.tr(\"Status\"),\n      Locale.tr(\"IM MAD\"),\n      Locale.tr(\"VM MAD\"),\n      Locale.tr(\"Last monitored on\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 2,\n      \"select_resource\": Locale.tr(\"Please select a Host from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following Host:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more hosts from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following hosts:\")\n    };\n\n    this.totalHosts = 0;\n    this.onHosts = 0;\n    this.offHosts = 0;\n    this.errorHosts = 0;\n    this.maxCPU = 0;\n    this.allocatedCPU = 0;\n    this.realCPU = 0;\n    this.maxMemory = 0;\n    this.allocatedMemory = 0;\n    this.realMemory = 0;\n\n    TabDataTable.call(this);\n  };\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n  Table.prototype.preUpdateView = _preUpdateView;\n  Table.prototype.postUpdateView = _postUpdateView;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json.HOST;\n\n    var cpuBars = CPUBars.html(element);\n    var memoryBars = MemoryBars.html(element);\n\n    this.totalHosts++;\n    var stateSimpleStr = OpenNebulaHost.simpleStateStr(element.STATE);\n    switch (stateSimpleStr) {\n      case \"INIT\":\n      case \"UPDATE\":\n      case \"ON\":\n        this.onHosts++;\n        break;\n      case \"ERROR\":\n      case \"RETRY\":\n        this.errorHosts++;\n        break;\n      case \"OFF\":\n        this.offHosts++;\n        break;\n      default:\n        break;\n    }\n\n    this.maxCPU += parseInt(element.HOST_SHARE.MAX_CPU);\n    this.allocatedCPU += parseInt(element.HOST_SHARE.CPU_USAGE);\n    this.realCPU += parseInt(element.HOST_SHARE.USED_CPU);\n    this.maxMemory += parseInt(element.HOST_SHARE.MAX_MEM);\n    this.allocatedMemory += parseInt(element.HOST_SHARE.MEM_USAGE);\n    this.realMemory += parseInt(element.HOST_SHARE.USED_MEM);\n\n    return [\n        '<input class=\"check_item\" type=\"checkbox\" id=\"' + RESOURCE.toLowerCase() + '_' +\n                             element.ID + '\" name=\"selected_items\" value=\"' +\n                             element.ID + '\"/>',\n        element.ID,\n        element.NAME,\n        element.CLUSTER.length ? element.CLUSTER : \"-\",\n        element.HOST_SHARE.RUNNING_VMS, //rvm\n        cpuBars.real,\n        cpuBars.allocated,\n        memoryBars.real,\n        memoryBars.allocated,\n        stateSimpleStr,\n        element.IM_MAD,\n        element.VM_MAD,\n        Humanize.prettyTime(element.LAST_MON_TIME)\n    ];\n  }\n\n  function _preUpdateView() {\n    this.totalHosts = 0;\n    this.onHosts = 0;\n    this.offHosts = 0;\n    this.errorHosts = 0;\n    this.maxCPU = 0;\n    this.allocatedCPU = 0;\n    this.realCPU = 0;\n    this.maxMemory = 0;\n    this.allocatedMemory = 0;\n    this.realMemory = 0;\n  }\n\n  function _postUpdateView() {\n    $(\".total_hosts\").text(this.totalHosts);\n    $(\".on_hosts\").text(this.onHosts);\n    $(\".off_hosts\").text(this.offHosts);\n    $(\".error_hosts\").text(this.errorHosts);\n    \n    var ratio_allocated_cpu = 0;\n    if (this.maxCPU > 0) {\n      ratio_allocated_cpu = Math.round((this.allocatedCPU / this.maxCPU) * 100);\n      info_str = this.allocatedCPU + ' / ' + this.maxCPU ;\n    } else {\n      info_str = \"- / -\";\n    }\n\n    //$(\"#dash_host_allocated_cpu\").html(usageBarHtml(allocated_cpu, max_cpu, info_str, true));\n\n    $(\"#dashboard_host_allocated_cpu\").html(quotaDashboard(\n      \"dashboard_host_allocated_cpu\",\n      Locale.tr(\"Allocated CPU\"),\n      \"30px\",\n      \"14px\",\n      {\"percentage\": ratio_allocated_cpu, \"str\": info_str})\n    );\n\n    var ratio_real_cpu = 0;\n    if (this.maxCPU > 0) {\n      ratio_real_cpu = Math.round((this.realCPU / this.maxCPU) * 100);\n      info_str = this.realCPU + ' / ' + this.maxCPU;\n    } else {\n      info_str = \"- / -\";\n    }\n\n    $(\"#dashboard_host_real_cpu\").html(quotaDashboard(\n      \"dashboard_host_real_cpu\",\n      Locale.tr(\"Real CPU\"),\n      \"30px\",\n      \"14px\",\n      {\"percentage\": ratio_real_cpu, \"str\": info_str})\n    );\n\n    var ratio_allocated_mem = 0;\n    if (this.maxMemory > 0) {\n      ratio_allocated_mem = Math.round((this.allocatedMemory / this.maxMemory) * 100);\n      info_str = Humanize.size(this.allocatedMemory) + ' / ' + Humanize.size(this.maxMemory);\n    } else {\n      info_str = Humanize.size(this.allocatedMemory) + ' / -';\n    }\n\n    $(\"#dashboard_host_allocated_mem\").html(quotaDashboard(\n      \"dashboard_host_allocated_mem\",\n      Locale.tr(\"Allocated Memory\"),\n      \"30px\",\n      \"14px\",\n      {\"percentage\": ratio_allocated_mem, \"str\": info_str})\n    );\n\n    var ratio_real_mem = 0;\n    if (this.maxMemory > 0) {\n      ratio_real_mem = Math.round((this.realMemory / this.maxMemory) * 100);\n      info_str = Humanize.size(this.realMemory) + ' / ' + Humanize.size(this.maxMemory);\n    } else {\n      info_str = Humanize.size(this.realMemory) + ' / -';\n    }\n\n    $(\"#dashboard_host_real_mem\").html(quotaDashboard(\n      \"dashboard_host_real_mem\",\n      Locale.tr(\"Real Memory\"),\n      \"30px\",\n      \"14px\",\n      {\"percentage\": ratio_real_mem, \"str\": info_str})\n    );\n\n  }\n\n  function quotaDashboard(html_tag, legend, font_large_size, font_small_size, quota) {\n    var percentage = quota.percentage > 100 ? 100 : quota.percentage;\n\n    return '<div class=\"row\">' +\n          '<div class=\"large-12 columns text-center\" style=\"margin-bottom: 5px\">' +\n            '<h4 class=\"subheader\">'+\n              '<small>'+ legend +'</small>'+\n            '</h4>'+\n          '</div>' +\n        '</div>' +\n        '<div class=\"row\">' +\n          '<div class=\"large-12 columns text-center\">' +\n            '<div class=\"progress large radius\">' +\n            '  <span id=\"' + html_tag + '_meter\" class=\"meter\" style=\"width: ' + percentage + '%\"></span>' +\n            '</div>' +\n          '</div>' +\n        '</div>' +\n        '<div class=\"row\">' +\n          '<div class=\"large-12 columns text-center\">' +\n            '<span id=\"' + html_tag + '_percentage\" class=\"left\" style=\"font-size:' + font_small_size + ';\">' + quota.percentage + ' %</span>' +\n            '<span id=\"' + html_tag + '_str\" class=\"right\" style=\"color: #999; font-size: ' + font_small_size + ';\">' + quota.str + '</span>' +\n          '</div>' +\n        '</div>';\n  }\n});\n\n","define('tabs/vnets-tab/utils/common',['require'],function(require) {\n  /*\n    Common functions for VNets\n   */\n\n\n  /*\n    @param {Object} info Object representing the VNet as returned by OpenNebula\n   */\n   function _getARList(info){\n    var ar_list = info.AR_POOL.AR;\n\n    if (!ar_list){ //empty\n      ar_list = [];\n    } else if (ar_list.constructor != Array) { //>1 lease\n      ar_list = [ar_list];\n    }\n\n    return ar_list;\n  }\n\n  return {\n    'getARList': _getARList\n  }\n})\n;\n","define('tabs/vnets-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','utils/progress-bar','./utils/common','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var ProgressBar = require('utils/progress-bar');\n  var Utils = require('./utils/common');\n\n  /*\n    CONSTANTS\n   */\n\n  var RESOURCE = \"Network\";\n  var XML_ROOT = \"VNET\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    }\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Owner\"),\n      Locale.tr(\"Group\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Reservation\"),\n      Locale.tr(\"Cluster\"),\n      Locale.tr(\"Bridge\"),\n      Locale.tr(\"Leases\"),\n      Locale.tr(\"VLAN ID\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 4,\n      \"uname_index\": 2,\n      \"select_resource\": Locale.tr(\"Please select a network from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following network:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more networks from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following networks:\")\n    };\n\n    this.usedLeases = 0;\n    this.totalVNets = 0;\n\n    TabDataTable.call(this);\n  };\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n  Table.prototype.preUpdateView = _preUpdateView;\n  Table.prototype.postUpdateView = _postUpdateView;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n\n    this.usedLeases = this.usedLeases + parseInt(element.USED_LEASES);\n    this.totalVNets++;\n\n    var total_size = 0;\n\n    var arList = Utils.getARList(element);\n\n    $.each(arList, function(){\n      total_size += parseInt(this.SIZE);\n    });\n\n    return [\n      '<input class=\"check_item\" type=\"checkbox\" id=\"' + RESOURCE.toLowerCase() + '_' +\n                           element.ID + '\" name=\"selected_items\" value=\"' +\n                           element.ID + '\"/>',\n      element.ID,\n      element.UNAME,\n      element.GNAME,\n      element.NAME,\n      element.PARENT_NETWORK_ID.length ? Locale.tr(\"Yes\") : Locale.tr(\"No\"),\n      element.CLUSTER.length ? element.CLUSTER : \"-\",\n      element.BRIDGE,\n      ProgressBar.html(element.USED_LEASES, total_size),\n      element.VLAN_ID.length ? element.VLAN_ID : \"-\"\n    ];\n  }\n\n  function _preUpdateView() {\n    this.totalVNets = 0;\n    this.usedLeases = 0;\n  }\n\n  function _postUpdateView() {\n    $(\".total_vnets\").text(this.totalVNets);\n    $(\".addresses_vnets\").text(this.usedLeases);\n  }\n});\n\n","define('tabs/datastores-tab/utils/datastore-capacity-bar',['require','utils/progress-bar','utils/humanize'],function(require) {\n  /*\n    Generate the HTML representing the capacity of the Datastore\n   */\n  \n  var ProgressBar = require('utils/progress-bar');\n  var Humanize = require('utils/humanize')\n\n  /*\n    @param {Object} info Object representing the Datastore as returned by OpenNebula\n   */\n  var _html = function(info) {\n    var total = parseInt(info.TOTAL_MB);\n    var used = total - parseInt(info.FREE_MB);\n\n    if (total > 0) {\n      var ratio = Math.round((used / total) * 100);\n      info_str = Humanize.sizeFromMB(used) + ' / ' + Humanize.sizeFromMB(total) + ' (' + ratio + '%)';\n    } else {\n      if (info.TYPE == 1) {\n        info_str = '- / -';\n      } else {\n        info_str = Humanize.size(used) + ' / -';\n      }\n    }\n\n    return ProgressBar.html(used, total, info_str);\n  }\n\n  return {\n    'html': _html\n  }\n})\n;\n","define('tabs/datastores-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','opennebula/datastore','./utils/datastore-capacity-bar','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var OpenNebulaDatastore = require('opennebula/datastore');\n  var DatastoreCapacityBar = require('./utils/datastore-capacity-bar');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var RESOURCE = \"Datastore\";\n  var XML_ROOT = \"DATASTORE\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  /*\n    @dataTableId\n    @param {String} dataTableId unique identifier\n    @param {Object} conf\n      conf = {\n        'info': true,     enable on click row will show the element\n        'action': true,   enable actions on row elements\n        'select': true,   enable selecting elements from the table\n        'selectOptions': {\n          'filter_fn': function(ds) { return ds.TYPE == 0; }\n        }\n      }\n    @returns {Table} A new table object\n   */\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"sWidth\": \"250px\", \"aTargets\": [5]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    }\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Owner\"),\n      Locale.tr(\"Group\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Capacity\"),\n      Locale.tr(\"Cluster\"),\n      Locale.tr(\"Basepath\"),\n      Locale.tr(\"TM MAD\"),\n      Locale.tr(\"DS MAD\"),\n      Locale.tr(\"Type\"),\n      Locale.tr(\"Status\"),\n    ]\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 4,\n      \"uname_index\": 2,\n      \"select_resource\": Locale.tr(\"Please select a datastore from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following datastore:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more datastores from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following datastores:\")\n    }\n\n    TabDataTable.call(this);\n  };\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json.DATASTORE;\n\n    return [\n        '<input class=\"check_item\" type=\"checkbox\" id=\"'+RESOURCE.toLowerCase()+'_' +\n                             element.ID + '\" name=\"selected_items\" value=\"' +\n                             element.ID + '\"/>',\n        element.ID,\n        element.UNAME,\n        element.GNAME,\n        element.NAME,\n        DatastoreCapacityBar.html(element),\n        element.CLUSTER.length ? element.CLUSTER : \"-\",\n        element.BASE_PATH,\n        element.TM_MAD,\n        element.DS_MAD,\n        element.TEMPLATE.TYPE.toLowerCase().split('_')[0],\n        Locale.tr(OpenNebulaDatastore.stateStr(element.STATE))\n    ];\n  }\n});\n\n","define('tabs/vdcs-tab/utils/resources-zone',['require','hbs!./resources-zone/html','tabs/clusters-tab/datatable','tabs/hosts-tab/datatable','tabs/vnets-tab/datatable','tabs/datastores-tab/datatable','utils/tips','./common'],function(require) {\n\n  var TemplateHTML = require('hbs!./resources-zone/html');\n\n  var ClustersTable = require('tabs/clusters-tab/datatable');\n  var HostsTable = require('tabs/hosts-tab/datatable');\n  var VNetsTable = require('tabs/vnets-tab/datatable');\n  var DatastoresTable = require('tabs/datastores-tab/datatable');\n  var Tips = require('utils/tips');\n  var Utils = require('./common');\n\n  var VDC_ALL_RESOURCES = Utils.VDC_ALL_RESOURCES;\n\n  function ResourcesZone(unique_id, zone_id, zone_name, context, indexed_resources) {\n    this.unique_id = unique_id;\n    this.zone_id = zone_id;\n\n    this.resources = undefined;\n    if(indexed_resources != undefined && indexed_resources[zone_id] != undefined){\n      this.resources = indexed_resources[zone_id];\n    }\n  }\n\n  ResourcesZone.prototype.constructor = ResourcesZone;\n  ResourcesZone.prototype.html = _html;\n  ResourcesZone.prototype.setup = _setup;\n  ResourcesZone.prototype.onShow = _onShow;\n  ResourcesZone.prototype.retrieve = _retrieve;\n  ResourcesZone.prototype.fill = _fill;\n  ResourcesZone.prototype.getZoneId = _getZoneId;\n\n  return ResourcesZone;\n\n  function _getZoneId() {\n    return this.zone_id;\n  }\n\n  function _html() {\n    var that = this;\n\n    var opts = {};\n\n    $.each([\"clusters\", \"hosts\", \"vnets\", \"datastores\"], function(i,res_name){\n      if(that.resources != undefined){\n        opts[res_name] = {\n          info: true,\n          select: true,\n          selectOptions: {\n            read_only: true,\n            zone_id: that.zone_id\n          }\n        };\n\n        if (!(that.resources[res_name].length == 1 &&\n              that.resources[res_name][0] == VDC_ALL_RESOURCES) ){\n\n          opts[res_name].selectOptions.fixed_ids = that.resources[res_name];\n        }\n      } else {\n        opts[res_name] = {\n          info: false,\n          select: true,\n          selectOptions: {\n            multiple_choice: true,\n            zone_id: that.zone_id\n          }\n        };\n      }\n    });\n\n    that.clustersTable = new ClustersTable(\"vdc_clusters_\"+that.unique_id, opts[\"clusters\"]);\n    that.hostsTable = new HostsTable(\"vdc_hosts_\"+that.unique_id, opts[\"hosts\"]);\n    that.vnetsTable = new VNetsTable(\"vdc_vnets_\"+that.unique_id, opts[\"vnets\"]);\n    that.datastoresTable = new DatastoresTable(\"vdc_datastores_\"+that.unique_id, opts[\"datastores\"]);\n\n    return TemplateHTML({\n      'unique_id': that.unique_id,\n      'clustersTableHTML': that.clustersTable.dataTableHTML,\n      'hostsTableHTML': that.hostsTable.dataTableHTML,\n      'vnetsTableHTML': that.vnetsTable.dataTableHTML,\n      'datastoresTableHTML': that.datastoresTable.dataTableHTML\n    });\n  }\n\n  function _onShow(context) {\n    var that = this;\n\n    $.each([that.clustersTable, that.hostsTable,\n            that.vnetsTable, that.datastoresTable], function(){\n\n      this.refreshResourceTableSelect();\n    });\n  }\n\n  function _setup(context){\n    var that = this;\n\n    context.foundation();\n\n    $.each([\"clusters\", \"hosts\", \"vnets\", \"datastores\"], function(i,res_name){\n      if(that.resources != undefined){\n        if (that.resources[res_name].length == 1 &&\n            that.resources[res_name][0] == VDC_ALL_RESOURCES){\n\n          $(\"#all_\"+res_name+\"_\"+that.unique_id, context).prop(\"checked\", \"checked\");\n        }\n\n        $(\"#all_\"+res_name+\"_\"+that.unique_id, context).prop(\"disabled\", true);\n      }\n\n      $(\"input[name='all_\"+res_name+\"_\"+that.unique_id+\"']\", context).change(function(){\n        if ($(this).prop(\"checked\")){\n          $(\"div.vdc_\"+res_name+\"_select\", context).hide();\n        } else {\n          $(\"div.vdc_\"+res_name+\"_select\", context).show();\n        }\n      });\n    });\n\n    $.each([that.clustersTable, that.hostsTable,\n            that.vnetsTable, that.datastoresTable], function(){\n\n      this.initialize();\n    });\n\n    Tips.setup(context);\n  }\n\n  /*\n  Return an object with the selected VDC resources in the zone tab\n      {   clusters   : [],\n          hosts      : [],\n          vnets      : [],\n          datastores : []\n      }\n  */\n  function _retrieve(context) {\n    var clusters;\n    var hosts;\n    var vnets;\n    var datastores;\n\n    if ( $(\"input[name='all_clusters_\"+this.unique_id+\"']\", context).prop(\"checked\") ){\n      clusters = [VDC_ALL_RESOURCES];\n    } else {\n      clusters = this.clustersTable.retrieveResourceTableSelect();\n    }\n\n    if ( $(\"input[name='all_hosts_\"+this.unique_id+\"']\", context).prop(\"checked\") ){\n      hosts = [VDC_ALL_RESOURCES];\n    } else {\n      hosts = this.hostsTable.retrieveResourceTableSelect();\n    }\n\n    if ( $(\"input[name='all_vnets_\"+this.unique_id+\"']\", context).prop(\"checked\") ){\n      vnets = [VDC_ALL_RESOURCES];\n    } else {\n      vnets = this.vnetsTable.retrieveResourceTableSelect();\n    }\n\n    if ( $(\"input[name='all_datastores_\"+this.unique_id+\"']\", context).prop(\"checked\") ){\n      datastores = [VDC_ALL_RESOURCES];\n    } else {\n      datastores = this.datastoresTable.retrieveResourceTableSelect();\n    }\n\n    var resources = {\n      clusters   : clusters,\n      hosts      : hosts,\n      vnets      : vnets,\n      datastores : datastores\n    };\n\n    return resources;\n  }\n\n  function _fill(context, selectedResources){\n\n    if (selectedResources[this.zone_id] == undefined){\n      selectedResources[this.zone_id] = {\n        clusters   : [],\n        hosts      : [],\n        vnets      : [],\n        datastores : []\n      };\n    }\n\n    var resourcesZone = selectedResources[this.zone_id];\n\n    if(resourcesZone.clusters.length == 1 &&\n       resourcesZone.clusters[0] == VDC_ALL_RESOURCES){\n\n      $(\"#all_clusters_\"+this.unique_id, context).click();\n    }else{\n      this.clustersTable.selectResourceTableSelect(\n            { ids : resourcesZone.clusters });\n    }\n\n    if(resourcesZone.hosts.length == 1 &&\n       resourcesZone.hosts[0] == VDC_ALL_RESOURCES){\n\n      $(\"#all_hosts_\"+this.unique_id, context).click();\n    }else{\n      this.hostsTable.selectResourceTableSelect(\n            { ids : resourcesZone.hosts });\n    }\n\n    if(resourcesZone.vnets.length == 1 &&\n       resourcesZone.vnets[0] == VDC_ALL_RESOURCES){\n\n      $(\"#all_vnets_\"+this.unique_id, context).click();\n    }else{\n      this.vnetsTable.selectResourceTableSelect(\n            { ids : resourcesZone.vnets });\n    }\n\n    if(resourcesZone.datastores.length == 1 &&\n       resourcesZone.datastores[0] == VDC_ALL_RESOURCES){\n\n      $(\"#all_datastores_\"+this.unique_id, context).click();\n    }else{\n      this.datastoresTable.selectResourceTableSelect(\n            { ids : resourcesZone.datastores });\n    }\n  }\n});\n\n","define('tabs/vdcs-tab/utils/resources-tab',['require','hbs!./resources-tab/html','./resources-zone','./common'],function(require) {\n\n  var TemplateHTML = require('hbs!./resources-tab/html');\n  var ResourcesZone = require('./resources-zone');\n  var Utils = require('./common');\n\n  function ResourcesTab(unique_id_prefix) {\n    this.unique_id_prefix = unique_id_prefix;\n    this.zones = [];\n  }\n\n  ResourcesTab.prototype.constructor = ResourcesTab;\n  ResourcesTab.prototype.html = _html;\n  ResourcesTab.prototype.setup = _setup;\n  ResourcesTab.prototype.onShow = _onShow;\n  ResourcesTab.prototype.retrieve = _retrieve;\n  ResourcesTab.prototype.retrieveIndexed = _retrieveIndexed;\n  ResourcesTab.prototype.fill = _fill;\n  ResourcesTab.prototype.addResourcesZone = _addResourcesZone;\n\n  return ResourcesTab;\n\n  function _html() {\n    return TemplateHTML({});\n  }\n\n  function _onShow(context) {\n    $.each(this.zones,function(i,resourcesZone){\n      resourcesZone.onShow(context);\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    $(\"select.vdc_zones_select\", context).change(function(){\n      context.find(\".vdc_zone_content\").hide();\n      $('div#'+that.unique_id_prefix+'_'+$(this).val()+'Tab', context).show();\n    });\n\n    $(\"select.vdc_zones_select\", context)[0].selectedIndex = 0;\n    $(\"select.vdc_zones_select\", context).change();\n  }\n\n  /**\n   * Returns the selected resources as needed by the Vdc.create call\n   * @param  {objec} context jquery selector\n   * @return {object}        Resources as:\n   *                   {\n   *                   \"clusters\" : {zone_id: zone_id, cluster_id: cluster_id},\n   *                   \"hosts\" : {zone_id: zone_id, host_id: host_id}\n   *                   \"vnets\" : {zone_id: zone_id, vnet_id: vnet_id}\n   *                   \"datastores\" : {zone_id: zone_id, ds_id: ds_id}\n   *                   }\n   */\n  function _retrieve(context) {\n    var clusters    = [];\n    var hosts       = [];\n    var vnets       = [];\n    var datastores  = [];\n\n    $.each(this.zones,function(i,resourcesZone){\n      var resources = resourcesZone.retrieve(context);\n      var zone_id = resourcesZone.getZoneId();\n\n      $.each(resources.clusters,function(j,cluster_id){\n        clusters.push({zone_id: zone_id, cluster_id: cluster_id});\n      });\n\n      $.each(resources.hosts,function(j,host_id){\n        hosts.push({zone_id: zone_id, host_id: host_id});\n      });\n      $.each(resources.vnets,function(j,vnet_id){\n        vnets.push({zone_id: zone_id, vnet_id: vnet_id});\n      });\n      $.each(resources.datastores,function(j,ds_id){\n        datastores.push({zone_id: zone_id, ds_id: ds_id});\n      });\n    });\n\n    return {\n      \"clusters\" : clusters,\n      \"hosts\" : hosts,\n      \"vnets\" : vnets,\n      \"datastores\" : datastores\n    };\n  }\n\n  function _retrieveIndexed(context) {\n    var resources = {};\n\n    $.each(this.zones,function(i,resourcesZone){\n      resources[resourcesZone.getZoneId()] = resourcesZone.retrieve(context);\n    });\n\n    return resources;\n  }\n\n  function _fill(context, selectedResources){\n    $.each(this.zones,function(i,resourcesZone){\n      resourcesZone.fill(context, selectedResources);\n    });\n  }\n\n  function _addResourcesZone(zone_id, zone_name, context, indexed_resources) {\n    var unique_id = this.unique_id_prefix+'_'+zone_id;\n\n    var resourcesZone = new ResourcesZone(unique_id, zone_id, zone_name, context, indexed_resources);\n\n    // Append the new div containing the tab and add the tab to the list\n    var html_tab_content =\n      '<div id=\"'+unique_id+'Tab\" class=\"vdc_zone_content\">'+\n        resourcesZone.html()+\n      '</div>';\n\n    $(html_tab_content).appendTo($(\".vdc_zones_tabs_content\", context));\n\n    $(\"select.vdc_zones_select\", context).append(\n                        '<option value=\"'+zone_id+'\">'+zone_name+'</option>');\n\n    var zoneSection = $('#' +unique_id+'Tab', context);\n\n    resourcesZone.setup(zoneSection);\n    resourcesZone.onShow(zoneSection);\n\n    this.zones.push(resourcesZone);\n  }\n\n});\n","define('tabs/vdcs-tab/panels/resources',['require','utils/locale','../utils/common','../utils/resources-tab','opennebula/zone','../tabId','./resources/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Utils = require('../utils/common');\n  var ResourcesTab = require('../utils/resources-tab');\n  var OpenNebulaZone = require('opennebula/zone');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./resources/panelId');\n  var RESOURCE = \"Vdc\";\n  var XML_ROOT = \"VDC\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Resources\");\n    this.icon = \"fa-th\";\n\n    this.element = info[XML_ROOT];\n\n    this.resourcesTab = new ResourcesTab(\"vdc_info_panel\");\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return this.resourcesTab.html();\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    var indexed_resources = Utils.indexedVdcResources(this.element);\n\n    $.each(indexed_resources, function(zone_id,objects){\n      that.resourcesTab.addResourcesZone(\n        zone_id,\n        OpenNebulaZone.getName(zone_id),\n        context,\n        indexed_resources);\n    });\n\n    that.resourcesTab.setup(context);\n    that.resourcesTab.onShow(context);\n  }\n});\n\n","define('tabs/vdcs-tab/panels/resources/panelId',['require'],function(require){\n  return 'vdc_resources_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/custom-tags-table/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row\\\">\\n  <div class=\\\"large-4 columns\\\">\\n    <input type=\\\"text\\\" id=\\\"KEY\\\" name=\\\"key\\\" />\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <input type=\\\"text\\\" id=\\\"VALUE\\\" name=\\\"value\\\" />\\n  </div>\\n  <div class=\\\"large-2 columns\\\">\\n    <button type=\\\"button\\\" class=\\\"button secondary small radius\\\" id=\\\"add_custom\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n    </button>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <table id=\\\"custom_tags\\\" class=\\\"dataTable policies_table\\\">\\n      <thead>\\n        <tr>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KEY\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VALUE\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th></th>\\n        </tr>\\n      </thead>\\n      <tbody id=\\\"tbodyinput\\\">\\n        <tr>\\n        </tr>\\n        <tr>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/custom-tags-table/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('utils/custom-tags-table',['require','utils/locale','hbs!./custom-tags-table/html','utils/template-utils'],function(require) {\n\n  var Locale = require('utils/locale');\n  var TemplateHTML = require('hbs!./custom-tags-table/html');\n  var TemplateUtils = require('utils/template-utils');\n\n  function _html(){\n    return TemplateHTML();\n  }\n\n  function _setup(context){\n    $('#add_custom', context).click(function() {\n      var table = $('#custom_tags', context)[0];\n      var rowCount = table.rows.length;\n      var row = table.insertRow(rowCount);\n\n      var cell1 = row.insertCell(0);\n      var element1 = document.createElement(\"input\");\n      element1.id = \"KEY\";\n      element1.type = \"text\";\n      element1.value = $('input#KEY', context).val();\n      cell1.appendChild(element1);\n\n      var cell2 = row.insertCell(1);\n      var element2 = document.createElement(\"input\");\n      element2.id = \"VALUE\";\n      element2.type = \"text\";\n      element2.value = $('input#VALUE', context).val();\n      cell2.appendChild(element2);\n\n      var cell3 = row.insertCell(2);\n      cell3.innerHTML = \"<i class='fa fa-times-circle fa fa-lg remove-tab'></i>\";\n    });\n\n    context.on(\"click\", \"i.remove-tab\", function() {\n      $(this).closest(\"tr\").remove();\n    });\n  }\n\n  // context is the container div of customTagsHtml()\n  function _retrieveCustomTags(context){\n    var template_json = {};\n\n    $('#custom_tags tr', context).each(function(){\n      if ($('#KEY', $(this)).val()) {\n        template_json[$('#KEY', $(this)).val()] = $('#VALUE', $(this)).val();\n      }\n    });\n\n    return template_json;\n  }\n\n  // context is the container div of customTagsHtml()\n  // template_json are the key:values that will be put into the table\n  function _fillCustomTags(context, template_json){\n    $.each(template_json, function(key, value){\n      var table = $('#custom_tags', context)[0];\n      var rowCount = table.rows.length;\n      var row = table.insertRow(rowCount);\n\n      var cell1 = row.insertCell(0);\n      var element1 = document.createElement(\"input\");\n      element1.id = \"KEY\";\n      element1.type = \"text\";\n      element1.value = TemplateUtils.htmlDecode(key);\n      cell1.appendChild(element1);\n\n      var cell2 = row.insertCell(1);\n      var element2 = document.createElement(\"input\");\n      element2.id = \"VALUE\";\n      element2.type = \"text\";\n      element2.value = TemplateUtils.htmlDecode(value);\n      cell2.appendChild(element2);\n\n      var cell3 = row.insertCell(2);\n      cell3.innerHTML = \"<i class='fa fa-times-circle fa fa-lg remove-tab'></i>\";\n    });\n  }\n\n  return {\n    'html': _html,\n    'setup': _setup,\n    'retrieve': _retrieveCustomTags,\n    'fill': _fillCustomTags\n  };\n});\n","define('utils/wizard-fields',['require','utils/template-utils'],function(require) {\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    Inputs must define wizard_field=\"KEY\"\n    Inputs with the wizard_field attr will not be considered\n   */\n  \n  return {\n    'retrieve': _retrieveWizardFields,\n    'fill': _fillWizardFields\n  }\n\n  // TODO: other types: radio, checkbox\n  function _retrieveWizardFields(context) {\n    var templateJSON = {};\n    var fields = $('[wizard_field]', context);\n\n    fields.each(function() {\n      var field = $(this);\n\n      if (field.prop('wizard_field_disabled') != true &&\n            field.val() != null && field.val().length &&\n            (field.attr(\"type\") != \"checkbox\" || field.prop(\"checked\")) &&\n            (field.attr(\"type\") != \"radio\" || field.prop(\"checked\"))) {\n        var field_name = field.attr('wizard_field');\n        templateJSON[field_name] = field.val();\n      }\n    });\n    \n    return templateJSON;\n  }\n\n  function _fillWizardFields(context, templateJSON) {\n    var fields = $('[wizard_field]', context);\n\n    fields.each(function() {\n      var field = $(this);\n      var field_name = field.attr('wizard_field');\n      if (templateJSON[field_name]) {\n        switch (field.attr(\"type\")){\n        case \"radio\":\n          var checked = (field.val() == templateJSON[field_name]);\n\n          field.prop(\"checked\", checked);\n\n          if (checked) {\n            field.change();\n          }\n          break;\n        case \"checkbox\":\n          var checked = (field.val().toUpperCase() ==\n                          templateJSON[field_name].toUpperCase());\n\n          field.prop(\"checked\", checked);\n\n          if (checked) {\n            field.change();\n          }\n          break;\n        default:\n          field.val(\n            TemplateUtils.escapeDoubleQuotes(\n              TemplateUtils.htmlDecode(templateJSON[field_name])));\n          field.change();\n        }\n\n        delete templateJSON[field_name];\n      }\n    });\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vdcs-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div>\\n    <dl id=\\\"vdc_create_tabs\\\" class=\\\"tabs right-info-tabs text-center\\\" data-tab>\\n      <dd class=\\\"active\\\"><a href=\\\"#vdcCreateGeneralTab\\\"><i class=\\\"fa fa-th\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"General\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a></dd>\\n      <dd><a href=\\\"#vdcCreateGroupsTab\\\"><i class=\\\"fa fa-users\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Groups\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a></dd>\\n      <dd><a href=\\\"#vdcCreateResourcesTab\\\"><i class=\\\"fa fa-hdd-o\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Resources\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a></dd>\\n    </dl>\\n    <div id=\\\"vdc_create_tabs_content\\\" class=\\\"tabs-content\\\">\\n      <div class=\\\"content active\\\" id=\\\"vdcCreateGeneralTab\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"name\\\" >\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name that the VDC will get for description purposes.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n            <input type=\\\"text\\\" wizard_field=\\\"NAME\\\" required name=\\\"name\\\" id=\\\"name\\\"/>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"DESCRIPTION\\\" >\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description of the VDC\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n            <textarea type=\\\"text\\\" wizard_field=\\\"DESCRIPTION\\\" id=\\\"DESCRIPTION\\\" name=\\\"DESCRIPTION\\\"/>\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom attributes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            <br>\\n            <br>\\n          </div>\\n        </div>\\n        \";\n  stack1 = ((helper = (helper = helpers.customTagsHTML || (depth0 != null ? depth0.customTagsHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customTagsHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n      </div>\\n      <div id=\\\"vdcCreateGroupsTab\\\" class=\\\"content\\\">\\n        \";\n  stack1 = ((helper = (helper = helpers.groupsTableHTML || (depth0 != null ? depth0.groupsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"groupsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n      </div>\\n      <div id=\\\"vdcCreateResourcesTab\\\" class=\\\"content\\\">\\n        \";\n  stack1 = ((helper = (helper = helpers.resourcesTabHTML || (depth0 != null ? depth0.resourcesTabHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"resourcesTabHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      </div>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vdcs-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vdcs-tab/form-panels/create/advanced',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Advanced\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <p>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write the VDC template here\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</p>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <textarea id=\\\"template\\\" rows=\\\"15\\\" required></textarea>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vdcs-tab/form-panels/create/advanced', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vdcs-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','utils/tips','utils/custom-tags-table','utils/wizard-fields','tabs/groups-tab/datatable','opennebula/zone','../utils/common','utils/notifier','../utils/resources-tab','utils/template-utils','hbs!./create/wizard','hbs!./create/advanced','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var CustomTagsTable = require('utils/custom-tags-table');\n  var WizardFields = require('utils/wizard-fields');\n  var GroupsTable = require('tabs/groups-tab/datatable');\n  var OpenNebulaZone = require('opennebula/zone');\n  var Utils = require('../utils/common');\n  var Notifier = require('utils/notifier');\n  var ResourcesTab = require('../utils/resources-tab');\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n  var TemplateAdvancedHTML = require('hbs!./create/advanced');\n\n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create Virtual Data Center\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      },\n      'update': {\n        'title': Locale.tr(\"Update Virtual Data Center\"),\n        'buttonText': Locale.tr(\"Update\"),\n        'resetButton': false\n      }\n    };\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.htmlAdvanced = _htmlAdvanced;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.submitAdvanced = _submitAdvanced;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.fill = _fill;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    var opts = {\n      info: false,\n      select: true,\n      selectOptions: {\"multiple_choice\": true}\n    };\n\n    this.groupsTable = new GroupsTable(\"vdc_wizard_groups\", opts);\n\n    if (this.action == \"create\") {\n      this.resourcesTab = new ResourcesTab(\"vdc_create_wizard\");\n    } else {\n      this.resourcesTab = new ResourcesTab(\"vdc_update_wizard\");\n    }\n\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId,\n      'customTagsHTML': CustomTagsTable.html(),\n      'groupsTableHTML': this.groupsTable.dataTableHTML,\n      'resourcesTabHTML': this.resourcesTab.html()\n    });\n  }\n\n  function _htmlAdvanced() {\n    return TemplateAdvancedHTML({formPanelId: this.formPanelId});\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    CustomTagsTable.setup($(\"#vdcCreateGeneralTab\", context));\n    this.groupsTable.initialize();\n\n    // If this is an update, the _fill method may be called before the zone.list\n    // finishes. And resourcesTab.fill only works if all the \n    // resourcesTab.addResourcesZone have finished.\n    // It's better to duplicate this code in _fill and make sure the\n    // resourcesTab.fill is executed in the callback\n    if (this.action == \"create\") {\n      var zone_ids = [];\n\n      OpenNebulaZone.list({\n        timeout: true,\n        success: function (request, obj_list){\n          var zoneSection = $(\"#vdcCreateResourcesTab\",context);\n\n          $.each(obj_list,function(){\n            zone_ids.push(this.ZONE.ID);\n\n            that.resourcesTab.addResourcesZone(\n              this.ZONE.ID,\n              this.ZONE.NAME,\n              zoneSection);\n          });\n\n          that.resourcesTab.setup(zoneSection);\n\n          that.zone_ids = zone_ids;\n        },\n        error: Notifier.onError\n      });\n    }\n\n    context.foundation();\n    Tips.setup();\n  }\n\n  function _submitWizard(context) {\n    var that = this;\n\n    //Fetch values\n    var vdc_json = {};\n\n    $.extend(vdc_json, WizardFields.retrieve($(\"#vdcCreateGeneralTab\", context)));\n\n    $.extend(vdc_json, CustomTagsTable.retrieve($(\"#vdcCreateGeneralTab\", context)));\n\n    var group_ids = this.groupsTable.retrieveResourceTableSelect();\n\n    if (this.action == \"create\") {\n      var resources = this.resourcesTab.retrieve(context);\n\n      vdc_json = {\n        \"vdc\" : vdc_json,\n        \"group_ids\" : group_ids,\n        \"clusters\" : resources.clusters,\n        \"hosts\" : resources.hosts,\n        \"vnets\" : resources.vnets,\n        \"datastores\" : resources.datastores\n      };\n\n      Sunstone.runAction(\"Vdc.create\",vdc_json);\n      return false;\n    } else if (this.action == \"update\") {\n      // Add/delete groups\n\n      var selected_groups_list = this.groupsTable.retrieveResourceTableSelect();\n\n      $.each(selected_groups_list, function(i,group_id){\n        if (that.original_groups_list.indexOf(group_id) == -1){\n          Sunstone.runAction(\"Vdc.add_group\",\n            that.resourceId, {group_id : group_id});\n        }\n      });\n\n      $.each(that.original_groups_list, function(i,group_id){\n        if (selected_groups_list.indexOf(group_id) == -1){\n          Sunstone.runAction(\"Vdc.del_group\",\n            that.resourceId, {group_id : group_id});\n        }\n      });\n\n      // Add/delete resources\n\n      var selectedResources = that.resourcesTab.retrieveIndexed(context);\n\n      for (var zoneId in selectedResources){\n        var originalSelectedZone = that.originalSelectedResources[zoneId];\n\n        $.each(selectedResources[zoneId].clusters, function(i,id){\n          if (originalSelectedZone.clusters.indexOf(id) == -1){\n            Sunstone.runAction(\n              \"Vdc.add_cluster\",\n              that.resourceId,\n              {zone_id: zoneId, cluster_id: id});\n          }\n        });\n\n        $.each(selectedResources[zoneId].hosts, function(i,id){\n          if (originalSelectedZone.hosts.indexOf(id) == -1){\n            Sunstone.runAction(\n              \"Vdc.add_host\",\n              that.resourceId,\n              {zone_id: zoneId, host_id: id});\n          }\n        });\n\n        $.each(selectedResources[zoneId].vnets, function(i,id){\n          if (originalSelectedZone.vnets.indexOf(id) == -1){\n            Sunstone.runAction(\n              \"Vdc.add_vnet\",\n              that.resourceId,\n              {zone_id: zoneId, vnet_id: id});\n          }\n        });\n\n        $.each(selectedResources[zoneId].datastores, function(i,id){\n          if (originalSelectedZone.datastores.indexOf(id) == -1){\n            Sunstone.runAction(\n              \"Vdc.add_datastore\",\n              that.resourceId,\n              {zone_id: zoneId, ds_id: id});\n          }\n        });\n      }\n\n      for (var zoneId in that.originalSelectedResources){\n        var selectedZone = selectedResources[zoneId];\n\n        $.each(that.originalSelectedResources[zoneId].clusters, function(i,id){\n          if (selectedZone.clusters.indexOf(id) == -1){\n            Sunstone.runAction(\n              \"Vdc.del_cluster\",\n              that.resourceId,\n              {zone_id: zoneId, cluster_id: id});\n          }\n        });\n\n        $.each(that.originalSelectedResources[zoneId].hosts, function(i,id){\n          if (selectedZone.hosts.indexOf(id) == -1){\n            Sunstone.runAction(\n              \"Vdc.del_host\",\n              that.resourceId,\n              {zone_id: zoneId, host_id: id});\n          }\n        });\n\n        $.each(that.originalSelectedResources[zoneId].vnets, function(i,id){\n          if (selectedZone.vnets.indexOf(id) == -1){\n            Sunstone.runAction(\n              \"Vdc.del_vnet\",\n              that.resourceId,\n              {zone_id: zoneId, vnet_id: id});\n          }\n        });\n\n        $.each(that.originalSelectedResources[zoneId].datastores, function(i,id){\n          if (selectedZone.datastores.indexOf(id) == -1){\n            Sunstone.runAction(\n              \"Vdc.del_datastore\",\n              that.resourceId,\n              {zone_id: zoneId, ds_id: id});\n          }\n        });\n      }\n\n      // TODO: this method ends now, but the add/del actions may still\n      // be pending. A vdc.show now will get outdated information\n\n      Sunstone.runAction(\"Vdc.update\", that.resourceId, TemplateUtils.templateToString(vdc_json));\n      return false;\n    }\n\n  }\n\n  function _submitAdvanced(context) {\n    if (this.action == \"create\") {\n      var template = $('textarea#template',context).val();\n      var vdc_json = {vdc: {vdc_raw: template}};\n      Sunstone.runAction(\"Vdc.create\",vdc_json);\n      return false;\n    } else if (this.action == \"update\") {\n      var template_raw = $('textarea#template', context).val();\n      Sunstone.runAction(\"Vdc.update\", this.resourceId, template_raw);\n      return false;\n    }\n  }\n\n  function _onShow(context) {\n    // TODO bug, does not work until the input is visible\n    //$(\"input#name\", context).focus();\n\n    this.groupsTable.refreshResourceTableSelect();\n    this.resourcesTab.onShow(context);\n  }\n\n  function _fill(context, element) {\n    var that = this;\n\n    this.resourceId = element.ID;\n\n    // Populates the Avanced mode Tab\n    $('#template', context).val(TemplateUtils.templateToString(element.TEMPLATE).replace(/^[\\r\\n]+$/g, \"\"));\n\n\n    $('[wizard_field=\"NAME\"]',context).val(\n        TemplateUtils.escapeDoubleQuotes( TemplateUtils.htmlDecode(element.NAME) )).\n        prop(\"disabled\", true).\n        prop('wizard_field_disabled', true);\n\n    WizardFields.fill($(\"#vdcCreateGeneralTab\", context), element.TEMPLATE);\n\n    // Delete so these attributes don't end in the custom tags table also\n    var fields = $('[wizard_field]', context);\n\n    fields.each(function(){\n      var field = $(this);\n      var field_name = field.attr('wizard_field');\n\n      delete element.TEMPLATE[field_name];\n    });\n\n    CustomTagsTable.fill($(\"#vdcCreateGeneralTab\", context), element.TEMPLATE);\n\n    // Fill groups table\n\n    var group_ids = element.GROUPS.ID;\n\n    if (typeof group_ids == 'string') {\n      group_ids = [group_ids];\n    }\n\n    this.original_groups_list = [];\n\n    if (group_ids) {\n      this.original_groups_list = group_ids;\n      this.groupsTable.selectResourceTableSelect({ ids : group_ids });\n    }\n\n    // Fill resource tables\n\n    this.originalSelectedResources = Utils.indexedVdcResources(element);\n\n    var zone_ids = [];\n\n    OpenNebulaZone.list({\n      timeout: true,\n      success: function (request, obj_list){\n        var zoneSection = $(\"#vdcCreateResourcesTab\",context);\n\n        $.each(obj_list,function(){\n          zone_ids.push(this.ZONE.ID);\n\n          that.resourcesTab.addResourcesZone(\n            this.ZONE.ID,\n            this.ZONE.NAME,\n            zoneSection);\n        });\n\n        that.resourcesTab.setup(zoneSection);\n        that.resourcesTab.fill(zoneSection, that.originalSelectedResources);\n\n        that.zone_ids = zone_ids;\n      },\n      error: Notifier.onError\n    });\n  }\n});\n\n","define('tabs/vdcs-tab',['require','utils/locale','./vdcs-tab/buttons','./vdcs-tab/actions','./vdcs-tab/datatable','./vdcs-tab/tabId','./vdcs-tab/panels/info','./vdcs-tab/panels/groups','./vdcs-tab/panels/resources','./vdcs-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./vdcs-tab/buttons');\n  var Actions = require('./vdcs-tab/actions');\n  var Table = require('./vdcs-tab/datatable');\n\n  var TAB_ID = require('./vdcs-tab/tabId');\n  var DATATABLE_ID = \"dataTableVDCs\";\n\n  var _dialogs = [\n  ];\n\n  var _panels = [\n    require('./vdcs-tab/panels/info'),\n    require('./vdcs-tab/panels/groups'),\n    require('./vdcs-tab/panels/resources')\n  ];\n\n  var _formPanels = [\n    require('./vdcs-tab/form-panels/create')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"VDCs\"),\n    tabClass: \"subTab\",\n    parentTab: \"system-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-th\"></i>&emsp;'+Locale.tr(\"Virtual Data Centers\"),\n    infoHeader: '<i class=\"fa fa-fw fa-th\"></i>&emsp;'+Locale.tr(\"Virtual Data Center\"),\n    subheader: '<span>\\\n        <span class=\"total_vdcs\"/> <small>'+Locale.tr(\"TOTAL\")+'</small>\\\n      </span>',\n    resource: 'Vdc',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/acls-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Acl.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Acl.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"Acl.delete\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Delete\"),\n      layout: \"del\"\n    },\n  };\n\n  return Buttons;\n});\n\n","define('tabs/acls-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','opennebula/user','opennebula/group','opennebula/zone','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n\n  var OpenNebulaUser = require('opennebula/user');\n  var OpenNebulaGroup = require('opennebula/group');\n  var OpenNebulaZone = require('opennebula/zone');\n\n  /*\n    CONSTANTS\n   */\n\n  var RESOURCE = \"Acl\";\n  var XML_ROOT = \"ACL\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          { \"bSortable\": false, \"aTargets\": [\"check\",2,3,4,5,6,7] },\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Applies to\"),\n      Locale.tr(\"Affected resources\"),\n      Locale.tr(\"Resource ID / Owned by\"),\n      Locale.tr(\"Allowed operations\"),\n      Locale.tr(\"Zone\"),\n      Locale.tr(\"ACL String\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 1,\n      \"select_resource\": Locale.tr(\"Please select an ACL rule from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following ACL rule:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more ACL rules from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following ACL rules:\")\n    };\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n\n    var acl_string = element.STRING;\n\n    var acl_array = _parseAclString(acl_string);\n\n    return [\n      '<input class=\"check_item\" type=\"checkbox\" id=\"'+RESOURCE.toLowerCase()+'_' +\n                           element.ID + '\" name=\"selected_items\" value=\"' +\n                           element.ID + '\"/>',\n      element.ID,\n      acl_array[0],\n      acl_array[1],\n      acl_array[2],\n      acl_array[3],\n      Locale.tr(acl_array[4].charAt(0).toUpperCase()+acl_array[4].substring(1)), //capitalize 1st letter for translation\n      element.STRING\n    ];\n  }\n\n\n  //Parses a full ACL string, and translates it into\n  //a legible array\n  //to be put in the datatable fields.\n  function _parseAclString(string) {\n    var space_split = string.split(' ');\n    var user = space_split[0];\n    var resources = space_split[1];\n    var rights = space_split[2];\n    var zone = space_split[3];\n\n    //User\n    var user_str = _parseUserAcl(user);\n\n\n    //Resources\n    var resources_str=\"\";\n    var resources_array = resources.split('/');\n    var belonging_to = _parseResourceAcl(resources_array[1]);\n    resources_array = resources_array[0].split('+');\n    for (var i=0; i<resources_array.length;i++){\n      switch (resources_array[i]){\n      case \"HOST\":\n          resources_str+=Locale.tr(\"Hosts\")+\", \";\n          break;\n      case \"VM\":\n          resources_str+=Locale.tr(\"Virtual Machines\")+\", \";\n          break;\n      case \"NET\":\n          resources_str+=Locale.tr(\"Virtual Networks\")+\", \";\n          break;\n      case \"IMAGE\":\n          resources_str+=(Locale.tr(\"Images\")+\", \");\n          break;\n      case \"TEMPLATE\":\n          resources_str+=Locale.tr(\"VM Templates\")+\", \";\n          break;\n      case \"USER\":\n          resources_str+=Locale.tr(\"Users\")+\", \";\n          break;\n      case \"GROUP\":\n          resources_str+=Locale.tr(\"Groups\")+\", \";\n          break;\n      case \"CLUSTER\":\n          resources_str+=Locale.tr(\"Clusters\")+\", \";\n          break;\n      case \"DATASTORE\":\n          resources_str+=Locale.tr(\"Datastores\")+\", \";\n          break;\n      case \"DOCUMENT\":\n          resources_str+=Locale.tr(\"Documents\")+\", \";\n          break;\n      case \"ZONE\":\n          resources_str+=Locale.tr(\"Zones\")+\", \";\n          break;\n      case \"SECGROUP\":\n          resources_str+=Locale.tr(\"Security Groups\")+\", \";\n          break;\n      case \"VDC\":\n          resources_str+=Locale.tr(\"VDCs\")+\", \";\n          break;\n      }\n    }\n    //remove \", \" from end\n    resources_str = resources_str.substring(0,resources_str.length-2);\n\n    //Ops\n    var ops_str=\"\";\n    var ops_array = rights.split('+');\n    for (var i=0; i<ops_array.length;i++){\n        ops_str += ops_array[i].toLowerCase()+\", \";\n    }\n    ops_str= ops_str.substring(0,ops_str.length-2);\n\n    //Zone\n    var zone_str = _parseZoneAcl(zone);\n\n    return [user_str, resources_str, belonging_to, ops_str, zone_str];\n  }\n\n  //Receives a segment of an ACL and translates:\n  // * -> All\n  // @1 -> Group 1 (tries to translate \"1\" into group name)\n  // #1 -> User 1 (tries to translate \"1\" into username)\n  //Translation of usernames and groupnames depends on\n  //group and user plugins tables.\n  function _parseUserAcl(user){\n    var user_str=\"\";\n    if (user[0] == '*'){\n      user_str = Locale.tr(\"All\");\n    } else {\n      if (user[0] == '#'){\n        user_str=Locale.tr(\"User\")+\" \";\n        user_str+= OpenNebulaUser.getName(user.substring(1));\n      }\n      else if (user[0] == '@'){\n        user_str=Locale.tr(\"Group \");\n        user_str+= OpenNebulaGroup.getName(user.substring(1));\n      }\n    }\n    return user_str;\n  }\n\n  //Similar to above, but #1 means resource with \"ID 1\"\n  function _parseResourceAcl(user){\n    var user_str=\"\";\n    if (user[0] == '*'){\n      user_str = Locale.tr(\"All\");\n    } else {\n      if (user[0] == '#'){\n        user_str=Locale.tr(\"ID\")+\" \";\n        user_str+= user.substring(1);\n      }\n      else if (user[0] == '@'){\n        user_str=Locale.tr(\"Group\")+\" \";\n        user_str+= OpenNebulaGroup.getName(user.substring(1));\n      }\n      else if (user[0] == '%'){\n        user_str=Locale.tr(\"Cluster ID\")+\" \";\n        user_str+= user.substring(1);\n      }\n    }\n    return user_str;\n  }\n\n  //Receives a segment of an ACL and translates:\n  // * -> All\n  // #1 -> Zone 1 (tries to translate \"1\" into zone name)\n  //Translation of zone names depends on\n  //zone plugins tables.\n  function _parseZoneAcl(zone){\n    var zone_str = \"\";\n\n    if (zone[0] == '*'){\n      zone_str = Locale.tr(\"All\");\n    } else if (zone[0] == '#'){\n      zone_str = OpenNebulaZone.getName(zone.substring(1));\n    }\n\n    return zone_str;\n  }\n\n});\n\n","define('tabs/acls-tab/actions',['require','sunstone','utils/notifier','utils/locale','./datatable','opennebula/acl','./tabId','./form-panels/create/formPanelId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var DataTable = require('./datatable');\n  var OpenNebulaResource = require('opennebula/acl');\n\n  var RESOURCE = \"Acl\";\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n\n  var _actions = {\n    \"Acl.create\" : {\n      type: \"create\",\n      call: OpenNebulaResource.create,\n      callback : function(request, response) {\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      },\n      notify: true\n    },\n\n    \"Acl.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    \"Acl.list\" : {\n      type: \"list\",\n      call: OpenNebulaResource.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"Acl.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(RESOURCE+\".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(RESOURCE+\".list\", {force: true});\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Acl.delete\" : {\n      type: \"multiple\",\n      call : OpenNebulaResource.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n    },\n  };\n\n  return _actions;\n});\n\n","define('tabs/acls-tab',['require','utils/locale','./acls-tab/buttons','./acls-tab/actions','./acls-tab/datatable','./acls-tab/tabId','./acls-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./acls-tab/buttons');\n  var Actions = require('./acls-tab/actions');\n  var Table = require('./acls-tab/datatable');\n\n  var TAB_ID = require('./acls-tab/tabId');\n  var DATATABLE_ID = \"dataTableAcls\";\n\n  var _dialogs = [\n  ];\n\n  var _panels = [\n  ];\n\n  var _formPanels = [\n    require('./acls-tab/form-panels/create')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"ACLs\"),\n    tabClass: \"subTab\",\n    parentTab: \"system-tab\",\n    listHeader: '<i class=\"fa fa-key\"></i>&emsp;'+Locale.tr(\"Access Control Lists\"),\n    subheader: '<span/><small></small>&emsp;',\n    resource: 'Acl',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: false}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/vresources-tab',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n  var TAB_ID = 'vresources-tab';\n\n  var VResourcesTab = {\n    tabId: TAB_ID,\n    title: '<i class=\"fa fa-lg fa-fw fa-cloud\"></i>&emsp;' + Locale.tr(\"Virtual Resources\"),\n    no_content: true\n  }\n\n  return VResourcesTab;\n});\n\n","define('tabs/vms-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"VM.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"VM.create_dialog\" : {\n      type: \"action\",\n      layout: \"create\",\n      alwaysActive: true\n    },\n    \"VM.chown\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change owner\"),\n      select: \"User\",\n      layout: \"user_select\",\n      tip: Locale.tr(\"Select the new owner\") + \":\"\n    },\n    \"VM.chgrp\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change group\"),\n      select: \"Group\",\n      layout: \"user_select\",\n      tip: Locale.tr(\"Select the new group\") + \":\"\n    },\n    \"VM.deploy\" : {\n      type: \"action\",\n      text: Locale.tr(\"Deploy\"),\n      tip: Locale.tr(\"This will deploy the selected VMs on the chosen host\"),\n      layout: \"vmsplanification_buttons\",\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.migrate\" : {\n      type: \"action\",\n      text: Locale.tr(\"Migrate\"),\n      tip: Locale.tr(\"This will migrate the selected VMs to the chosen host\"),\n      layout: \"vmsplanification_buttons\",\n      custom_classes : \"state-dependent\"\n\n    },\n    \"VM.migrate_live\" : {\n      type: \"action\",\n      text: Locale.tr(\"Migrate\") + ' <span class=\"label secondary radius\">live</span>',\n      tip: Locale.tr(\"This will live-migrate the selected VMs to the chosen host\"),\n      layout: \"vmsplanification_buttons\",\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.hold\" : {\n      type: \"action\",\n      text: Locale.tr(\"Hold\"),\n      tip: Locale.tr(\"This will hold selected pending VMs from being deployed\"),\n      layout: \"vmsplanification_buttons\",\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.release\" : {\n      type: \"action\",\n      text: Locale.tr(\"Release\"),\n      layout: \"vmsplanification_buttons\",\n      tip: Locale.tr(\"This will release held machines\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.suspend\" : {\n      type: \"action\",\n      text: Locale.tr(\"Suspend\"),\n      layout: \"vmspause_buttons\",\n      tip: Locale.tr(\"This will suspend selected machines\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.resume\" : {\n      type: \"action\",\n      text: '<i class=\"fa fa-play\"/>',\n      layout: \"vmsplay_buttons\",\n      tip: Locale.tr(\"This will resume selected VMs\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.stop\" : {\n      type: \"action\",\n      text: Locale.tr(\"Stop\"),\n      layout: \"vmsstop_buttons\",\n      tip: Locale.tr(\"This will stop selected VMs\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.reboot\" : {\n      type: \"action\",\n      text: Locale.tr(\"Reboot\"),\n      layout: \"vmsrepeat_buttons\",\n      tip: Locale.tr(\"This will send a reboot action to running VMs\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.reboot_hard\" : {\n      type: \"action\",\n      text: Locale.tr(\"Reboot\") + ' <span class=\"label secondary radius\">hard</span>',\n      layout: \"vmsrepeat_buttons\",\n      tip: Locale.tr(\"This will perform a hard reboot on selected VMs\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.poweroff\" : {\n      type: \"action\",\n      text: Locale.tr(\"Power Off\"),\n      layout: \"vmspause_buttons\",\n      tip: Locale.tr(\"This will send a power off signal to running VMs. They can be resumed later.\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.poweroff_hard\" : {\n      type: \"action\",\n      text: Locale.tr(\"Power Off\") + ' <span class=\"label secondary radius\">hard</span>',\n      layout: \"vmspause_buttons\",\n      tip: Locale.tr(\"This will send a forced power off signal to running VMs. They can be resumed later.\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.undeploy\" : {\n      type: \"action\",\n      text: Locale.tr(\"Undeploy\"),\n      layout: \"vmsstop_buttons\",\n      tip: Locale.tr(\"Shuts down the given VM. The VM is saved in the system Datastore.\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.undeploy_hard\" : {\n      type: \"action\",\n      text: Locale.tr(\"Undeploy\") + ' <span class=\"label secondary radius\">hard</span>',\n      layout: \"vmsstop_buttons\",\n      tip: Locale.tr(\"Shuts down the given VM. The VM is saved in the system Datastore.\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.shutdown\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Shutdown\"),\n      layout: \"vmsdelete_buttons\",\n      tip: Locale.tr(\"This will initiate the shutdown process in the selected VMs\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.shutdown_hard\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Shutdown\") + ' <span class=\"label secondary radius\">hard</span>',\n      layout: \"vmsdelete_buttons\",\n      tip: Locale.tr(\"This will initiate the shutdown-hard (forced) process in the selected VMs\"),\n      custom_classes : \"state-dependent\"\n    },\n\n    \"VM.delete\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Delete\"),\n      layout: \"vmsdelete_buttons\",\n      tip: Locale.tr(\"This will delete the selected VMs from the database\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.delete_recreate\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Delete\") + ' <span class=\"label secondary radius\">recreate</span>',\n      layout: \"vmsrepeat_buttons\",\n      tip: Locale.tr(\"This will delete and recreate VMs to PENDING state\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.resched\" : {\n      type: \"action\",\n      text: Locale.tr(\"Reschedule\"),\n      layout: \"vmsplanification_buttons\",\n      tip: Locale.tr(\"This will reschedule selected VMs\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.unresched\" : {\n      type: \"action\",\n      text: Locale.tr(\"Un-Reschedule\"),\n      layout: \"vmsplanification_buttons\",\n      tip: Locale.tr(\"This will cancel the rescheduling for the selected VMs\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.recover\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Recover\"),\n      layout: \"vmsplanification_buttons\",\n      custom_select: '<select class=\"resource_list_select\">\\\n                    <option value=\"2\">'              + Locale.tr(\"retry\") + '</option>\\\n                    <option value=\"1\">'              + Locale.tr(\"success\") + '</option>\\\n                    <option value=\"0\">'              + Locale.tr(\"failure\") + '</option>\\\n                    </select>'              ,\n      tip: Locale.tr(\"Recovers a stuck VM that is waiting for a driver operation. \\\n                    The recovery may be done by failing, succeeding or retrying the current operation. \\\n                    YOU NEED TO MANUALLY CHECK THE VM STATUS ON THE HOST, to decide if the operation \\\n                    was successful or not, or if it can be retried.\"),\n      custom_classes : \"state-dependent\"\n    },\n    \"VM.startvnc\" : {\n      type: \"action\",\n      text: '<i class=\"fa fa-desktop\" style=\"color: rgb(111, 111, 111)\"/> ' + Locale.tr(\"VNC\"),\n      custom_classes: \"only-right-info vnc-right-info\",\n      tip: Locale.tr(\"VNC\")\n    },\n    \"VM.startspice\" : {\n      type: \"action\",\n      text: '<i class=\"fa fa-desktop\" style=\"color: rgb(111, 111, 111)\"/> ' + Locale.tr(\"SPICE\"),\n      custom_classes: \"only-right-info spice-right-info\",\n      tip: Locale.tr(\"SPICE\")\n    }\n  }\n\n  return Buttons;\n})\n;\n","define('utils/common-actions',['require','sunstone','utils/notifier','utils/locale'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function CommonActions(openNebulaResource, resourceStr, tabId) {\n    this.openNebulaResource = openNebulaResource;\n    this.tabId = tabId;\n    this.resourceStr = resourceStr;\n  }\n\n  CommonActions.prototype.list = _list;\n  CommonActions.prototype.show = _show;\n  CommonActions.prototype.refresh = _refresh;\n  CommonActions.prototype.delete = _delete;\n  CommonActions.prototype.multipleAction = _multipleAction;\n  CommonActions.prototype.singleAction = _singleAction;\n\n  return CommonActions;\n\n  function _list() {\n    var that = this;\n    return {\n      type: \"list\",\n      call: that.openNebulaResource.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(that.tabId).updateView(request, response);\n      },\n      error: Notifier.onError\n    }\n  }\n\n  function _show() {\n    var that = this;\n    return {\n      type: \"single\",\n      call: that.openNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(that.tabId).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#' + that.tabId))) {\n          Sunstone.insertPanels(that.tabId, response);\n        }\n      },\n      error: Notifier.onError\n    }\n  }\n\n  function _refresh() {\n    var that = this;\n    return {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + that.tabId);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(that.resourceStr + \".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(that.tabId).waitingNodes();\n          Sunstone.runAction(that.resourceStr + \".list\", {force: true});\n        }\n      },\n      error: Notifier.onError\n    }\n  }\n\n  function _delete() {\n    var that = this;\n    return {\n      type: \"multiple\",\n      call : that.openNebulaResource.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(that.tabId).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(that.tabId).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    }\n  }\n\n  function _multipleAction(actionStr) {\n    var that = this;\n    return {\n      type: \"multiple\",\n      call: that.openNebulaResource[actionStr],\n      callback: function (req) {\n        Sunstone.runAction(that.resourceStr + \".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(that.tabId).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    }\n  }\n\n  function _singleAction(actionStr) {\n    var that = this;\n    return {\n      type: \"single\",\n      call: that.openNebulaResource[actionStr],\n      callback: function (req) {\n        Sunstone.runAction(that.resourceStr + \".show\", req.request.data[0][0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(that.tabId).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    }\n  }\n});\n\n","/*\n * noVNC: HTML5 VNC client\n * Copyright (C) 2012 Joel Martin\n * Licensed under MPL 2.0 (see LICENSE.txt)\n *\n * See README.md for usage and integration instructions.\n */\n\n/* jshint white: false, nonstandard: true */\n/*global window, console, document, navigator, ActiveXObject, INCLUDE_URI */\n\n// Globals defined here\nvar Util = {};\n\n\n/*\n * Make arrays quack\n */\n\nvar addFunc = function (cl, name, func) {\n    if (!cl.prototype[name]) {\n        Object.defineProperty(cl.prototype, name, { enumerable: false, value: func });\n    }\n};\n\naddFunc(Array, 'push8', function (num) {\n    \"use strict\";\n    this.push(num & 0xFF);\n});\n\naddFunc(Array, 'push16', function (num) {\n    \"use strict\";\n    this.push((num >> 8) & 0xFF,\n              num & 0xFF);\n});\n\naddFunc(Array, 'push32', function (num) {\n    \"use strict\";\n    this.push((num >> 24) & 0xFF,\n              (num >> 16) & 0xFF,\n              (num >>  8) & 0xFF,\n              num & 0xFF);\n});\n\n// IE does not support map (even in IE9)\n//This prototype is provided by the Mozilla foundation and\n//is distributed under the MIT license.\n//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license\naddFunc(Array, 'map', function (fun /*, thisp*/) {\n    \"use strict\";\n    var len = this.length;\n    if (typeof fun != \"function\") {\n        throw new TypeError();\n    }\n\n    var res = new Array(len);\n    var thisp = arguments[1];\n    for (var i = 0; i < len; i++) {\n        if (i in this) {\n            res[i] = fun.call(thisp, this[i], i, this);\n        }\n    }\n\n    return res;\n});\n\n// IE <9 does not support indexOf\n//This prototype is provided by the Mozilla foundation and\n//is distributed under the MIT license.\n//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license\naddFunc(Array, 'indexOf', function (elt /*, from*/) {\n    \"use strict\";\n    var len = this.length >>> 0;\n\n    var from = Number(arguments[1]) || 0;\n    from = (from < 0) ? Math.ceil(from) : Math.floor(from);\n    if (from < 0) {\n        from += len;\n    }\n\n    for (; from < len; from++) {\n        if (from in this &&\n                this[from] === elt) {\n            return from;\n        }\n    }\n    return -1;\n});\n\n// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\nif (!Object.keys) {\n    Object.keys = (function () {\n        'use strict';\n        var hasOwnProperty = Object.prototype.hasOwnProperty,\n            hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),\n            dontEnums = [\n                'toString',\n                'toLocaleString',\n                'valueOf',\n                'hasOwnProperty',\n                'isPrototypeOf',\n                'propertyIsEnumerable',\n                'constructor'\n            ],\n            dontEnumsLength = dontEnums.length;\n\n        return function (obj) {\n            if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\n                throw new TypeError('Object.keys called on non-object');\n            }\n\n            var result = [], prop, i;\n\n            for (prop in obj) {\n                if (hasOwnProperty.call(obj, prop)) {\n                    result.push(prop);\n                }\n            }\n\n            if (hasDontEnumBug) {\n                for (i = 0; i < dontEnumsLength; i++) {\n                    if (hasOwnProperty.call(obj, dontEnums[i])) {\n                        result.push(dontEnums[i]);\n                    }\n                }\n            }\n            return result;\n        };\n    })();\n}\n\n// PhantomJS 1.x doesn't support bind,\n// so leave this in until PhantomJS 2.0 is released\n//This prototype is provided by the Mozilla foundation and\n//is distributed under the MIT license.\n//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license\naddFunc(Function, 'bind', function (oThis) {\n    if (typeof this !== \"function\") {\n        // closest thing possible to the ECMAScript 5\n        // internal IsCallable function\n        throw new TypeError(\"Function.prototype.bind - \" +\n                            \"what is trying to be bound is not callable\");\n    }\n\n    var aArgs = Array.prototype.slice.call(arguments, 1),\n            fToBind = this,\n            fNOP = function () {},\n            fBound = function () {\n                return fToBind.apply(this instanceof fNOP && oThis ? this\n                                                                   : oThis,\n                                     aArgs.concat(Array.prototype.slice.call(arguments)));\n            };\n\n    fNOP.prototype = this.prototype;\n    fBound.prototype = new fNOP();\n\n    return fBound;\n});\n\n//\n// requestAnimationFrame shim with setTimeout fallback\n//\n\nwindow.requestAnimFrame = (function () {\n    \"use strict\";\n    return  window.requestAnimationFrame       ||\n            window.webkitRequestAnimationFrame ||\n            window.mozRequestAnimationFrame    ||\n            window.oRequestAnimationFrame      ||\n            window.msRequestAnimationFrame     ||\n            function (callback) {\n                window.setTimeout(callback, 1000 / 60);\n            };\n})();\n\n/*\n * ------------------------------------------------------\n * Namespaced in Util\n * ------------------------------------------------------\n */\n\n/*\n * Logging/debug routines\n */\n\nUtil._log_level = 'warn';\nUtil.init_logging = function (level) {\n    \"use strict\";\n    if (typeof level === 'undefined') {\n        level = Util._log_level;\n    } else {\n        Util._log_level = level;\n    }\n    if (typeof window.console === \"undefined\") {\n        if (typeof window.opera !== \"undefined\") {\n            window.console = {\n                'log'  : window.opera.postError,\n                'warn' : window.opera.postError,\n                'error': window.opera.postError\n            };\n        } else {\n            window.console = {\n                'log'  : function (m) {},\n                'warn' : function (m) {},\n                'error': function (m) {}\n            };\n        }\n    }\n\n    Util.Debug = Util.Info = Util.Warn = Util.Error = function (msg) {};\n    /* jshint -W086 */\n    switch (level) {\n        case 'debug':\n            Util.Debug = function (msg) { console.log(msg); };\n        case 'info':\n            Util.Info  = function (msg) { console.log(msg); };\n        case 'warn':\n            Util.Warn  = function (msg) { console.warn(msg); };\n        case 'error':\n            Util.Error = function (msg) { console.error(msg); };\n        case 'none':\n            break;\n        default:\n            throw new Error(\"invalid logging type '\" + level + \"'\");\n    }\n    /* jshint +W086 */\n};\nUtil.get_logging = function () {\n    return Util._log_level;\n};\n// Initialize logging level\nUtil.init_logging();\n\nUtil.make_property = function (proto, name, mode, type) {\n    \"use strict\";\n\n    var getter;\n    if (type === 'arr') {\n        getter = function (idx) {\n            if (typeof idx !== 'undefined') {\n                return this['_' + name][idx];\n            } else {\n                return this['_' + name];\n            }\n        };\n    } else {\n        getter = function () {\n            return this['_' + name];\n        };\n    }\n\n    var make_setter = function (process_val) {\n        if (process_val) {\n            return function (val, idx) {\n                if (typeof idx !== 'undefined') {\n                    this['_' + name][idx] = process_val(val);\n                } else {\n                    this['_' + name] = process_val(val);\n                }\n            };\n        } else {\n            return function (val, idx) {\n                if (typeof idx !== 'undefined') {\n                    this['_' + name][idx] = val;\n                } else {\n                    this['_' + name] = val;\n                }\n            };\n        }\n    };\n\n    var setter;\n    if (type === 'bool') {\n        setter = make_setter(function (val) {\n            if (!val || (val in {'0': 1, 'no': 1, 'false': 1})) {\n                return false;\n            } else {\n                return true;\n            }\n        });\n    } else if (type === 'int') {\n        setter = make_setter(function (val) { return parseInt(val, 10); });\n    } else if (type === 'float') {\n        setter = make_setter(parseFloat);\n    } else if (type === 'str') {\n        setter = make_setter(String);\n    } else if (type === 'func') {\n        setter = make_setter(function (val) {\n            if (!val) {\n                return function () {};\n            } else {\n                return val;\n            }\n        });\n    } else if (type === 'arr' || type === 'dom' || type == 'raw') {\n        setter = make_setter();\n    } else {\n        throw new Error('Unknown property type ' + type);  // some sanity checking\n    }\n\n    // set the getter\n    if (typeof proto['get_' + name] === 'undefined') {\n        proto['get_' + name] = getter;\n    }\n\n    // set the setter if needed\n    if (typeof proto['set_' + name] === 'undefined') {\n        if (mode === 'rw') {\n            proto['set_' + name] = setter;\n        } else if (mode === 'wo') {\n            proto['set_' + name] = function (val, idx) {\n                if (typeof this['_' + name] !== 'undefined') {\n                    throw new Error(name + \" can only be set once\");\n                }\n                setter.call(this, val, idx);\n            };\n        }\n    }\n\n    // make a special setter that we can use in set defaults\n    proto['_raw_set_' + name] = function (val, idx) {\n        setter.call(this, val, idx);\n        //delete this['_init_set_' + name];  // remove it after use\n    };\n};\n\nUtil.make_properties = function (constructor, arr) {\n    \"use strict\";\n    for (var i = 0; i < arr.length; i++) {\n        Util.make_property(constructor.prototype, arr[i][0], arr[i][1], arr[i][2]);\n    }\n};\n\nUtil.set_defaults = function (obj, conf, defaults) {\n    var defaults_keys = Object.keys(defaults);\n    var conf_keys = Object.keys(conf);\n    var keys_obj = {};\n    var i;\n    for (i = 0; i < defaults_keys.length; i++) { keys_obj[defaults_keys[i]] = 1; }\n    for (i = 0; i < conf_keys.length; i++) { keys_obj[conf_keys[i]] = 1; }\n    var keys = Object.keys(keys_obj);\n\n    for (i = 0; i < keys.length; i++) {\n        var setter = obj['_raw_set_' + keys[i]];\n        if (!setter) {\n          Util.Warn('Invalid property ' + keys[i]);\n          continue;\n        }\n\n        if (keys[i] in conf) {\n            setter.call(obj, conf[keys[i]]);\n        } else {\n            setter.call(obj, defaults[keys[i]]);\n        }\n    }\n};\n\n/*\n * Decode from UTF-8\n */\nUtil.decodeUTF8 = function (utf8string) {\n    \"use strict\";\n    return decodeURIComponent(escape(utf8string));\n};\n\n\n\n/*\n * Cross-browser routines\n */\n\n\n// Dynamically load scripts without using document.write()\n// Reference: http://unixpapa.com/js/dyna.html\n//\n// Handles the case where load_scripts is invoked from a script that\n// itself is loaded via load_scripts. Once all scripts are loaded the\n// window.onscriptsloaded handler is called (if set).\nUtil.get_include_uri = function () {\n    return (typeof INCLUDE_URI !== \"undefined\") ? INCLUDE_URI : \"include/\";\n};\nUtil._loading_scripts = [];\nUtil._pending_scripts = [];\nUtil.load_scripts = function (files) {\n    \"use strict\";\n    var head = document.getElementsByTagName('head')[0], script,\n        ls = Util._loading_scripts, ps = Util._pending_scripts;\n\n    var loadFunc = function (e) {\n        while (ls.length > 0 && (ls[0].readyState === 'loaded' ||\n                                 ls[0].readyState === 'complete')) {\n            // For IE, append the script to trigger execution\n            var s = ls.shift();\n            //console.log(\"loaded script: \" + s.src);\n            head.appendChild(s);\n        }\n        if (!this.readyState ||\n            (Util.Engine.presto && this.readyState === 'loaded') ||\n            this.readyState === 'complete') {\n            if (ps.indexOf(this) >= 0) {\n                this.onload = this.onreadystatechange = null;\n                //console.log(\"completed script: \" + this.src);\n                ps.splice(ps.indexOf(this), 1);\n\n                // Call window.onscriptsload after last script loads\n                if (ps.length === 0 && window.onscriptsload) {\n                    window.onscriptsload();\n                }\n            }\n        }\n    };\n\n    for (var f = 0; f < files.length; f++) {\n        script = document.createElement('script');\n        script.type = 'text/javascript';\n        script.src = Util.get_include_uri() + files[f];\n        //console.log(\"loading script: \" + script.src);\n        script.onload = script.onreadystatechange = loadFunc;\n        // In-order script execution tricks\n        if (Util.Engine.trident) {\n            // For IE wait until readyState is 'loaded' before\n            // appending it which will trigger execution\n            // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order\n            ls.push(script);\n        } else {\n            // For webkit and firefox set async=false and append now\n            // https://developer.mozilla.org/en-US/docs/HTML/Element/script\n            script.async = false;\n            head.appendChild(script);\n        }\n        ps.push(script);\n    }\n};\n\n\n// Get DOM element position on page\n//  This solution is based based on http://www.greywyvern.com/?post=331\n//  Thanks to Brian Huisman AKA GreyWyvern!\nUtil.getPosition = (function () {\n    \"use strict\";\n    function getStyle(obj, styleProp) {\n        var y;\n        if (obj.currentStyle) {\n            y = obj.currentStyle[styleProp];\n        } else if (window.getComputedStyle)\n            y = window.getComputedStyle(obj, null)[styleProp];\n        return y;\n    }\n\n    function scrollDist() {\n        var myScrollTop = 0, myScrollLeft = 0;\n        var html = document.getElementsByTagName('html')[0];\n\n        // get the scrollTop part\n        if (html.scrollTop && document.documentElement.scrollTop) {\n            myScrollTop = html.scrollTop;\n        } else if (html.scrollTop || document.documentElement.scrollTop) {\n            myScrollTop = html.scrollTop + document.documentElement.scrollTop;\n        } else if (document.body.scrollTop) {\n            myScrollTop = document.body.scrollTop;\n        } else {\n            myScrollTop = 0;\n        }\n\n        // get the scrollLeft part\n        if (html.scrollLeft && document.documentElement.scrollLeft) {\n            myScrollLeft = html.scrollLeft;\n        } else if (html.scrollLeft || document.documentElement.scrollLeft) {\n            myScrollLeft = html.scrollLeft + document.documentElement.scrollLeft;\n        } else if (document.body.scrollLeft) {\n            myScrollLeft = document.body.scrollLeft;\n        } else {\n            myScrollLeft = 0;\n        }\n\n        return [myScrollLeft, myScrollTop];\n    }\n\n    return function (obj) {\n        var curleft = 0, curtop = 0, scr = obj, fixed = false;\n        while ((scr = scr.parentNode) && scr != document.body) {\n            curleft -= scr.scrollLeft || 0;\n            curtop -= scr.scrollTop || 0;\n            if (getStyle(scr, \"position\") == \"fixed\") {\n                fixed = true;\n            }\n        }\n        if (fixed && !window.opera) {\n            var scrDist = scrollDist();\n            curleft += scrDist[0];\n            curtop += scrDist[1];\n        }\n\n        do {\n            curleft += obj.offsetLeft;\n            curtop += obj.offsetTop;\n        } while ((obj = obj.offsetParent));\n\n        return {'x': curleft, 'y': curtop};\n    };\n})();\n\n\n// Get mouse event position in DOM element\nUtil.getEventPosition = function (e, obj, scale) {\n    \"use strict\";\n    var evt, docX, docY, pos;\n    //if (!e) evt = window.event;\n    evt = (e ? e : window.event);\n    evt = (evt.changedTouches ? evt.changedTouches[0] : evt.touches ? evt.touches[0] : evt);\n    if (evt.pageX || evt.pageY) {\n        docX = evt.pageX;\n        docY = evt.pageY;\n    } else if (evt.clientX || evt.clientY) {\n        docX = evt.clientX + document.body.scrollLeft +\n            document.documentElement.scrollLeft;\n        docY = evt.clientY + document.body.scrollTop +\n            document.documentElement.scrollTop;\n    }\n    pos = Util.getPosition(obj);\n    if (typeof scale === \"undefined\") {\n        scale = 1;\n    }\n    var realx = docX - pos.x;\n    var realy = docY - pos.y;\n    var x = Math.max(Math.min(realx, obj.width - 1), 0);\n    var y = Math.max(Math.min(realy, obj.height - 1), 0);\n    return {'x': x / scale, 'y': y / scale, 'realx': realx / scale, 'realy': realy / scale};\n};\n\n\n// Event registration. Based on: http://www.scottandrew.com/weblog/articles/cbs-events\nUtil.addEvent = function (obj, evType, fn) {\n    \"use strict\";\n    if (obj.attachEvent) {\n        var r = obj.attachEvent(\"on\" + evType, fn);\n        return r;\n    } else if (obj.addEventListener) {\n        obj.addEventListener(evType, fn, false);\n        return true;\n    } else {\n        throw new Error(\"Handler could not be attached\");\n    }\n};\n\nUtil.removeEvent = function (obj, evType, fn) {\n    \"use strict\";\n    if (obj.detachEvent) {\n        var r = obj.detachEvent(\"on\" + evType, fn);\n        return r;\n    } else if (obj.removeEventListener) {\n        obj.removeEventListener(evType, fn, false);\n        return true;\n    } else {\n        throw new Error(\"Handler could not be removed\");\n    }\n};\n\nUtil.stopEvent = function (e) {\n    \"use strict\";\n    if (e.stopPropagation) { e.stopPropagation(); }\n    else                   { e.cancelBubble = true; }\n\n    if (e.preventDefault)  { e.preventDefault(); }\n    else                   { e.returnValue = false; }\n};\n\n\n// Set browser engine versions. Based on mootools.\nUtil.Features = {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)};\n\n(function () {\n    \"use strict\";\n    // 'presto': (function () { return (!window.opera) ? false : true; }()),\n    var detectPresto = function () {\n        return !!window.opera;\n    };\n\n    // 'trident': (function () { return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);\n    var detectTrident = function () {\n        if (!window.ActiveXObject) {\n            return false;\n        } else {\n            if (window.XMLHttpRequest) {\n                return (document.querySelectorAll) ? 6 : 5;\n            } else {\n                return 4;\n            }\n        }\n    };\n\n    // 'webkit': (function () { try { return (navigator.taintEnabled) ? false : ((Util.Features.xpath) ? ((Util.Features.query) ? 525 : 420) : 419); } catch (e) { return false; } }()),\n    var detectInitialWebkit = function () {\n        try {\n            if (navigator.taintEnabled) {\n                return false;\n            } else {\n                if (Util.Features.xpath) {\n                    return (Util.Features.query) ? 525 : 420;\n                } else {\n                    return 419;\n                }\n            }\n        } catch (e) {\n            return false;\n        }\n    };\n\n    var detectActualWebkit = function (initial_ver) {\n        var re = /WebKit\\/([0-9\\.]*) /;\n        var str_ver = (navigator.userAgent.match(re) || ['', initial_ver])[1];\n        return parseFloat(str_ver, 10);\n    };\n\n    // 'gecko': (function () { return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19ssName) ? 19 : 18 : 18); }())\n    var detectGecko = function () {\n        /* jshint -W041 */\n        if (!document.getBoxObjectFor && window.mozInnerScreenX == null) {\n            return false;\n        } else {\n            return (document.getElementsByClassName) ? 19 : 18;\n        }\n        /* jshint +W041 */\n    };\n\n    Util.Engine = {\n        // Version detection break in Opera 11.60 (errors on arguments.callee.caller reference)\n        //'presto': (function() {\n        //         return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925)); }()),\n        'presto': detectPresto(),\n        'trident': detectTrident(),\n        'webkit': detectInitialWebkit(),\n        'gecko': detectGecko(),\n    };\n\n    if (Util.Engine.webkit) {\n        // Extract actual webkit version if available\n        Util.Engine.webkit = detectActualWebkit(Util.Engine.webkit);\n    }\n})();\n\nUtil.Flash = (function () {\n    \"use strict\";\n    var v, version;\n    try {\n        v = navigator.plugins['Shockwave Flash'].description;\n    } catch (err1) {\n        try {\n            v = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');\n        } catch (err2) {\n            v = '0 r0';\n        }\n    }\n    version = v.match(/\\d+/g);\n    return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};\n}());\n\ndefine(\"vnc-util\", (function (global) {\n    return function () {\n        var ret, fn;\n        return ret || global.Util;\n    };\n}(this)));\n\n","/*\n * noVNC: HTML5 VNC client\n * Copyright (C) 2012 Joel Martin\n * Copyright (C) 2013 NTT corp.\n * Licensed under MPL 2.0 (see LICENSE.txt)\n *\n * See README.md for usage and integration instructions.\n */\n\n/*jslint bitwise: false, white: false, browser: true, devel: true */\n/*global Util, window, document */\n\n// Globals defined here\nvar WebUtil = {}, $D;\n\n/*\n * Simple DOM selector by ID\n */\nif (!window.$D) {\n    window.$D = function (id) {\n        if (document.getElementById) {\n            return document.getElementById(id);\n        } else if (document.all) {\n            return document.all[id];\n        } else if (document.layers) {\n            return document.layers[id];\n        }\n        return undefined;\n    };\n}\n\n\n/*\n * ------------------------------------------------------\n * Namespaced in WebUtil\n * ------------------------------------------------------\n */\n\n// init log level reading the logging HTTP param\nWebUtil.init_logging = function (level) {\n    \"use strict\";\n    if (typeof level !== \"undefined\") {\n        Util._log_level = level;\n    } else {\n        var param = document.location.href.match(/logging=([A-Za-z0-9\\._\\-]*)/);\n        Util._log_level = (param || ['', Util._log_level])[1];\n    }\n    Util.init_logging();\n};\n\n\nWebUtil.dirObj = function (obj, depth, parent) {\n    \"use strict\";\n    if (! depth) { depth = 2; }\n    if (! parent) { parent = \"\"; }\n\n    // Print the properties of the passed-in object\n    var msg = \"\";\n    for (var i in obj) {\n        if ((depth > 1) && (typeof obj[i] === \"object\")) {\n            // Recurse attributes that are objects\n            msg += WebUtil.dirObj(obj[i], depth - 1, parent + \".\" + i);\n        } else {\n            //val = new String(obj[i]).replace(\"\\n\", \" \");\n            var val = \"\";\n            if (typeof(obj[i]) === \"undefined\") {\n                val = \"undefined\";\n            } else {\n                val = obj[i].toString().replace(\"\\n\", \" \");\n            }\n            if (val.length > 30) {\n                val = val.substr(0, 30) + \"...\";\n            }\n            msg += parent + \".\" + i + \": \" + val + \"\\n\";\n        }\n    }\n    return msg;\n};\n\n// Read a query string variable\nWebUtil.getQueryVar = function (name, defVal) {\n    \"use strict\";\n    var re = new RegExp('.*[?&]' + name + '=([^&#]*)'),\n        match = document.location.href.match(re);\n    if (typeof defVal === 'undefined') { defVal = null; }\n    if (match) {\n        return decodeURIComponent(match[1]);\n    } else {\n        return defVal;\n    }\n};\n\n\n/*\n * Cookie handling. Dervied from: http://www.quirksmode.org/js/cookies.html\n */\n\n// No days means only for this browser session\nWebUtil.createCookie = function (name, value, days) {\n    \"use strict\";\n    var date, expires;\n    if (days) {\n        date = new Date();\n        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n        expires = \"; expires=\" + date.toGMTString();\n    } else {\n        expires = \"\";\n    }\n\n    var secure;\n    if (document.location.protocol === \"https:\") {\n        secure = \"; secure\";\n    } else {\n        secure = \"\";\n    }\n    document.cookie = name + \"=\" + value + expires + \"; path=/\" + secure;\n};\n\nWebUtil.readCookie = function (name, defaultValue) {\n    \"use strict\";\n    var nameEQ = name + \"=\",\n        ca = document.cookie.split(';');\n\n    for (var i = 0; i < ca.length; i += 1) {\n        var c = ca[i];\n        while (c.charAt(0) === ' ') { c = c.substring(1, c.length); }\n        if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length, c.length); }\n    }\n    return (typeof defaultValue !== 'undefined') ? defaultValue : null;\n};\n\nWebUtil.eraseCookie = function (name) {\n    \"use strict\";\n    WebUtil.createCookie(name, \"\", -1);\n};\n\n/*\n * Setting handling.\n */\n\nWebUtil.initSettings = function (callback /*, ...callbackArgs */) {\n    \"use strict\";\n    var callbackArgs = Array.prototype.slice.call(arguments, 1);\n    if (window.chrome && window.chrome.storage) {\n        window.chrome.storage.sync.get(function (cfg) {\n            WebUtil.settings = cfg;\n            console.log(WebUtil.settings);\n            if (callback) {\n                callback.apply(this, callbackArgs);\n            }\n        });\n    } else {\n        // No-op\n        if (callback) {\n            callback.apply(this, callbackArgs);\n        }\n    }\n};\n\n// No days means only for this browser session\nWebUtil.writeSetting = function (name, value) {\n    \"use strict\";\n    if (window.chrome && window.chrome.storage) {\n        //console.log(\"writeSetting:\", name, value);\n        if (WebUtil.settings[name] !== value) {\n            WebUtil.settings[name] = value;\n            window.chrome.storage.sync.set(WebUtil.settings);\n        }\n    } else {\n        localStorage.setItem(name, value);\n    }\n};\n\nWebUtil.readSetting = function (name, defaultValue) {\n    \"use strict\";\n    var value;\n    if (window.chrome && window.chrome.storage) {\n        value = WebUtil.settings[name];\n    } else {\n        value = localStorage.getItem(name);\n    }\n    if (typeof value === \"undefined\") {\n        value = null;\n    }\n    if (value === null && typeof defaultValue !== undefined) {\n        return defaultValue;\n    } else {\n        return value;\n    }\n};\n\nWebUtil.eraseSetting = function (name) {\n    \"use strict\";\n    if (window.chrome && window.chrome.storage) {\n        window.chrome.storage.sync.remove(name);\n        delete WebUtil.settings[name];\n    } else {\n        localStorage.removeItem(name);\n    }\n};\n\n/*\n * Alternate stylesheet selection\n */\nWebUtil.getStylesheets = function () {\n    \"use strict\";\n    var links = document.getElementsByTagName(\"link\");\n    var sheets = [];\n\n    for (var i = 0; i < links.length; i += 1) {\n        if (links[i].title &&\n            links[i].rel.toUpperCase().indexOf(\"STYLESHEET\") > -1) {\n            sheets.push(links[i]);\n        }\n    }\n    return sheets;\n};\n\n// No sheet means try and use value from cookie, null sheet used to\n// clear all alternates.\nWebUtil.selectStylesheet = function (sheet) {\n    \"use strict\";\n    if (typeof sheet === 'undefined') {\n        sheet = 'default';\n    }\n\n    var sheets = WebUtil.getStylesheets();\n    for (var i = 0; i < sheets.length; i += 1) {\n        var link = sheets[i];\n        if (link.title === sheet) {\n            Util.Debug(\"Using stylesheet \" + sheet);\n            link.disabled = false;\n        } else {\n            //Util.Debug(\"Skipping stylesheet \" + link.title);\n            link.disabled = true;\n        }\n    }\n    return sheet;\n};\n\ndefine(\"vnc-webutil\", [\"vnc-util\"], function(){});\n\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\n// From: http://hg.mozilla.org/mozilla-central/raw-file/ec10630b1a54/js/src/devtools/jint/sunspider/string-base64.js\n\n/*jslint white: false */\n/*global console */\n\nvar Base64 = {\n    /* Convert data (an array of integers) to a Base64 string. */\n    toBase64Table : 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split(''),\n    base64Pad     : '=',\n\n    encode: function (data) {\n        \"use strict\";\n        var result = '';\n        var toBase64Table = Base64.toBase64Table;\n        var length = data.length;\n        var lengthpad = (length % 3);\n        // Convert every three bytes to 4 ascii characters.\n\n        for (var i = 0; i < (length - 2); i += 3) {\n            result += toBase64Table[data[i] >> 2];\n            result += toBase64Table[((data[i] & 0x03) << 4) + (data[i + 1] >> 4)];\n            result += toBase64Table[((data[i + 1] & 0x0f) << 2) + (data[i + 2] >> 6)];\n            result += toBase64Table[data[i + 2] & 0x3f];\n        }\n\n        // Convert the remaining 1 or 2 bytes, pad out to 4 characters.\n        var j = 0;\n        if (lengthpad === 2) {\n            j = length - lengthpad;\n            result += toBase64Table[data[j] >> 2];\n            result += toBase64Table[((data[j] & 0x03) << 4) + (data[j + 1] >> 4)];\n            result += toBase64Table[(data[j + 1] & 0x0f) << 2];\n            result += toBase64Table[64];\n        } else if (lengthpad === 1) {\n            j = length - lengthpad;\n            result += toBase64Table[data[j] >> 2];\n            result += toBase64Table[(data[j] & 0x03) << 4];\n            result += toBase64Table[64];\n            result += toBase64Table[64];\n        }\n\n        return result;\n    },\n\n    /* Convert Base64 data to a string */\n    /* jshint -W013 */\n    toBinaryTable : [\n        -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n        -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n        -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,\n        52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1,\n        -1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,\n        15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,\n        -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,\n        41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1\n    ],\n    /* jshint +W013 */\n\n    decode: function (data, offset) {\n        \"use strict\";\n        offset = typeof(offset) !== 'undefined' ? offset : 0;\n        var toBinaryTable = Base64.toBinaryTable;\n        var base64Pad = Base64.base64Pad;\n        var result, result_length;\n        var leftbits = 0; // number of bits decoded, but yet to be appended\n        var leftdata = 0; // bits decoded, but yet to be appended\n        var data_length = data.indexOf('=') - offset;\n\n        if (data_length < 0) { data_length = data.length - offset; }\n\n        /* Every four characters is 3 resulting numbers */\n        result_length = (data_length >> 2) * 3 + Math.floor((data_length % 4) / 1.5);\n        result = new Array(result_length);\n\n        // Convert one by one.\n        for (var idx = 0, i = offset; i < data.length; i++) {\n            var c = toBinaryTable[data.charCodeAt(i) & 0x7f];\n            var padding = (data.charAt(i) === base64Pad);\n            // Skip illegal characters and whitespace\n            if (c === -1) {\n                console.error(\"Illegal character code \" + data.charCodeAt(i) + \" at position \" + i);\n                continue;\n            }\n          \n            // Collect data into leftdata, update bitcount\n            leftdata = (leftdata << 6) | c;\n            leftbits += 6;\n\n            // If we have 8 or more bits, append 8 bits to the result\n            if (leftbits >= 8) {\n                leftbits -= 8;\n                // Append if not padding.\n                if (!padding) {\n                    result[idx++] = (leftdata >> leftbits) & 0xff;\n                }\n                leftdata &= (1 << leftbits) - 1;\n            }\n        }\n\n        // If there are any bits left, the base64 string was corrupted\n        if (leftbits) {\n            err = new Error('Corrupted base64 string');\n            err.name = 'Base64-Error';\n            throw err;\n        }\n\n        return result;\n    }\n}; /* End of Base64 namespace */\n;\ndefine(\"vnc-base64\", [\"vnc-util\"], function(){});\n\n","// This file describes mappings from Unicode codepoints to the keysym values\n// (and optionally, key names) expected by the RFB protocol\n// How this file was generated:\n// node /Users/jalf/dev/mi/novnc/utils/parse.js /opt/X11/include/X11/keysymdef.h\nvar keysyms = (function(){\n    \"use strict\";\n    var keynames = null;\n    var codepoints = {\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"37\":37,\"38\":38,\"39\":39,\"40\":40,\"41\":41,\"42\":42,\"43\":43,\"44\":44,\"45\":45,\"46\":46,\"47\":47,\"48\":48,\"49\":49,\"50\":50,\"51\":51,\"52\":52,\"53\":53,\"54\":54,\"55\":55,\"56\":56,\"57\":57,\"58\":58,\"59\":59,\"60\":60,\"61\":61,\"62\":62,\"63\":63,\"64\":64,\"65\":65,\"66\":66,\"67\":67,\"68\":68,\"69\":69,\"70\":70,\"71\":71,\"72\":72,\"73\":73,\"74\":74,\"75\":75,\"76\":76,\"77\":77,\"78\":78,\"79\":79,\"80\":80,\"81\":81,\"82\":82,\"83\":83,\"84\":84,\"85\":85,\"86\":86,\"87\":87,\"88\":88,\"89\":89,\"90\":90,\"91\":91,\"92\":92,\"93\":93,\"94\":94,\"95\":95,\"96\":96,\"97\":97,\"98\":98,\"99\":99,\"100\":100,\"101\":101,\"102\":102,\"103\":103,\"104\":104,\"105\":105,\"106\":106,\"107\":107,\"108\":108,\"109\":109,\"110\":110,\"111\":111,\"112\":112,\"113\":113,\"114\":114,\"115\":115,\"116\":116,\"117\":117,\"118\":118,\"119\":119,\"120\":120,\"121\":121,\"122\":122,\"123\":123,\"124\":124,\"125\":125,\"126\":126,\"160\":160,\"161\":161,\"162\":162,\"163\":163,\"164\":164,\"165\":165,\"166\":166,\"167\":167,\"168\":168,\"169\":169,\"170\":170,\"171\":171,\"172\":172,\"173\":173,\"174\":174,\"175\":175,\"176\":176,\"177\":177,\"178\":178,\"179\":179,\"180\":180,\"181\":181,\"182\":182,\"183\":183,\"184\":184,\"185\":185,\"186\":186,\"187\":187,\"188\":188,\"189\":189,\"190\":190,\"191\":191,\"192\":192,\"193\":193,\"194\":194,\"195\":195,\"196\":196,\"197\":197,\"198\":198,\"199\":199,\"200\":200,\"201\":201,\"202\":202,\"203\":203,\"204\":204,\"205\":205,\"206\":206,\"207\":207,\"208\":208,\"209\":209,\"210\":210,\"211\":211,\"212\":212,\"213\":213,\"214\":214,\"215\":215,\"216\":216,\"217\":217,\"218\":218,\"219\":219,\"220\":220,\"221\":221,\"222\":222,\"223\":223,\"224\":224,\"225\":225,\"226\":226,\"227\":227,\"228\":228,\"229\":229,\"230\":230,\"231\":231,\"232\":232,\"233\":233,\"234\":234,\"235\":235,\"236\":236,\"237\":237,\"238\":238,\"239\":239,\"240\":240,\"241\":241,\"242\":242,\"243\":243,\"244\":244,\"245\":245,\"246\":246,\"247\":247,\"248\":248,\"249\":249,\"250\":250,\"251\":251,\"252\":252,\"253\":253,\"254\":254,\"255\":255,\"256\":960,\"257\":992,\"258\":451,\"259\":483,\"260\":417,\"261\":433,\"262\":454,\"263\":486,\"264\":710,\"265\":742,\"266\":709,\"267\":741,\"268\":456,\"269\":488,\"270\":463,\"271\":495,\"272\":464,\"273\":496,\"274\":938,\"275\":954,\"278\":972,\"279\":1004,\"280\":458,\"281\":490,\"282\":460,\"283\":492,\"284\":728,\"285\":760,\"286\":683,\"287\":699,\"288\":725,\"289\":757,\"290\":939,\"291\":955,\"292\":678,\"293\":694,\"294\":673,\"295\":689,\"296\":933,\"297\":949,\"298\":975,\"299\":1007,\"300\":16777516,\"301\":16777517,\"302\":967,\"303\":999,\"304\":681,\"305\":697,\"308\":684,\"309\":700,\"310\":979,\"311\":1011,\"312\":930,\"313\":453,\"314\":485,\"315\":934,\"316\":950,\"317\":421,\"318\":437,\"321\":419,\"322\":435,\"323\":465,\"324\":497,\"325\":977,\"326\":1009,\"327\":466,\"328\":498,\"330\":957,\"331\":959,\"332\":978,\"333\":1010,\"336\":469,\"337\":501,\"338\":5052,\"339\":5053,\"340\":448,\"341\":480,\"342\":931,\"343\":947,\"344\":472,\"345\":504,\"346\":422,\"347\":438,\"348\":734,\"349\":766,\"350\":426,\"351\":442,\"352\":425,\"353\":441,\"354\":478,\"355\":510,\"356\":427,\"357\":443,\"358\":940,\"359\":956,\"360\":989,\"361\":1021,\"362\":990,\"363\":1022,\"364\":733,\"365\":765,\"366\":473,\"367\":505,\"368\":475,\"369\":507,\"370\":985,\"371\":1017,\"372\":16777588,\"373\":16777589,\"374\":16777590,\"375\":16777591,\"376\":5054,\"377\":428,\"378\":444,\"379\":431,\"380\":447,\"381\":430,\"382\":446,\"399\":16777615,\"402\":2294,\"415\":16777631,\"416\":16777632,\"417\":16777633,\"431\":16777647,\"432\":16777648,\"437\":16777653,\"438\":16777654,\"439\":16777655,\"466\":16777681,\"486\":16777702,\"487\":16777703,\"601\":16777817,\"629\":16777845,\"658\":16777874,\"711\":439,\"728\":418,\"729\":511,\"731\":434,\"733\":445,\"901\":1966,\"902\":1953,\"904\":1954,\"905\":1955,\"906\":1956,\"908\":1959,\"910\":1960,\"911\":1963,\"912\":1974,\"913\":1985,\"914\":1986,\"915\":1987,\"916\":1988,\"917\":1989,\"918\":1990,\"919\":1991,\"920\":1992,\"921\":1993,\"922\":1994,\"923\":1995,\"924\":1996,\"925\":1997,\"926\":1998,\"927\":1999,\"928\":2000,\"929\":2001,\"931\":2002,\"932\":2004,\"933\":2005,\"934\":2006,\"935\":2007,\"936\":2008,\"937\":2009,\"938\":1957,\"939\":1961,\"940\":1969,\"941\":1970,\"942\":1971,\"943\":1972,\"944\":1978,\"945\":2017,\"946\":2018,\"947\":2019,\"948\":2020,\"949\":2021,\"950\":2022,\"951\":2023,\"952\":2024,\"953\":2025,\"954\":2026,\"955\":2027,\"956\":2028,\"957\":2029,\"958\":2030,\"959\":2031,\"960\":2032,\"961\":2033,\"962\":2035,\"963\":2034,\"964\":2036,\"965\":2037,\"966\":2038,\"967\":2039,\"968\":2040,\"969\":2041,\"970\":1973,\"971\":1977,\"972\":1975,\"973\":1976,\"974\":1979,\"1025\":1715,\"1026\":1713,\"1027\":1714,\"1028\":1716,\"1029\":1717,\"1030\":1718,\"1031\":1719,\"1032\":1720,\"1033\":1721,\"1034\":1722,\"1035\":1723,\"1036\":1724,\"1038\":1726,\"1039\":1727,\"1040\":1761,\"1041\":1762,\"1042\":1783,\"1043\":1767,\"1044\":1764,\"1045\":1765,\"1046\":1782,\"1047\":1786,\"1048\":1769,\"1049\":1770,\"1050\":1771,\"1051\":1772,\"1052\":1773,\"1053\":1774,\"1054\":1775,\"1055\":1776,\"1056\":1778,\"1057\":1779,\"1058\":1780,\"1059\":1781,\"1060\":1766,\"1061\":1768,\"1062\":1763,\"1063\":1790,\"1064\":1787,\"1065\":1789,\"1066\":1791,\"1067\":1785,\"1068\":1784,\"1069\":1788,\"1070\":1760,\"1071\":1777,\"1072\":1729,\"1073\":1730,\"1074\":1751,\"1075\":1735,\"1076\":1732,\"1077\":1733,\"1078\":1750,\"1079\":1754,\"1080\":1737,\"1081\":1738,\"1082\":1739,\"1083\":1740,\"1084\":1741,\"1085\":1742,\"1086\":1743,\"1087\":1744,\"1088\":1746,\"1089\":1747,\"1090\":1748,\"1091\":1749,\"1092\":1734,\"1093\":1736,\"1094\":1731,\"1095\":1758,\"1096\":1755,\"1097\":1757,\"1098\":1759,\"1099\":1753,\"1100\":1752,\"1101\":1756,\"1102\":1728,\"1103\":1745,\"1105\":1699,\"1106\":1697,\"1107\":1698,\"1108\":1700,\"1109\":1701,\"1110\":1702,\"1111\":1703,\"1112\":1704,\"1113\":1705,\"1114\":1706,\"1115\":1707,\"1116\":1708,\"1118\":1710,\"1119\":1711,\"1168\":1725,\"1169\":1709,\"1170\":16778386,\"1171\":16778387,\"1174\":16778390,\"1175\":16778391,\"1178\":16778394,\"1179\":16778395,\"1180\":16778396,\"1181\":16778397,\"1186\":16778402,\"1187\":16778403,\"1198\":16778414,\"1199\":16778415,\"1200\":16778416,\"1201\":16778417,\"1202\":16778418,\"1203\":16778419,\"1206\":16778422,\"1207\":16778423,\"1208\":16778424,\"1209\":16778425,\"1210\":16778426,\"1211\":16778427,\"1240\":16778456,\"1241\":16778457,\"1250\":16778466,\"1251\":16778467,\"1256\":16778472,\"1257\":16778473,\"1262\":16778478,\"1263\":16778479,\"1329\":16778545,\"1330\":16778546,\"1331\":16778547,\"1332\":16778548,\"1333\":16778549,\"1334\":16778550,\"1335\":16778551,\"1336\":16778552,\"1337\":16778553,\"1338\":16778554,\"1339\":16778555,\"1340\":16778556,\"1341\":16778557,\"1342\":16778558,\"1343\":16778559,\"1344\":16778560,\"1345\":16778561,\"1346\":16778562,\"1347\":16778563,\"1348\":16778564,\"1349\":16778565,\"1350\":16778566,\"1351\":16778567,\"1352\":16778568,\"1353\":16778569,\"1354\":16778570,\"1355\":16778571,\"1356\":16778572,\"1357\":16778573,\"1358\":16778574,\"1359\":16778575,\"1360\":16778576,\"1361\":16778577,\"1362\":16778578,\"1363\":16778579,\"1364\":16778580,\"1365\":16778581,\"1366\":16778582,\"1370\":16778586,\"1371\":16778587,\"1372\":16778588,\"1373\":16778589,\"1374\":16778590,\"1377\":16778593,\"1378\":16778594,\"1379\":16778595,\"1380\":16778596,\"1381\":16778597,\"1382\":16778598,\"1383\":16778599,\"1384\":16778600,\"1385\":16778601,\"1386\":16778602,\"1387\":16778603,\"1388\":16778604,\"1389\":16778605,\"1390\":16778606,\"1391\":16778607,\"1392\":16778608,\"1393\":16778609,\"1394\":16778610,\"1395\":16778611,\"1396\":16778612,\"1397\":16778613,\"1398\":16778614,\"1399\":16778615,\"1400\":16778616,\"1401\":16778617,\"1402\":16778618,\"1403\":16778619,\"1404\":16778620,\"1405\":16778621,\"1406\":16778622,\"1407\":16778623,\"1408\":16778624,\"1409\":16778625,\"1410\":16778626,\"1411\":16778627,\"1412\":16778628,\"1413\":16778629,\"1414\":16778630,\"1415\":16778631,\"1417\":16778633,\"1418\":16778634,\"1488\":3296,\"1489\":3297,\"1490\":3298,\"1491\":3299,\"1492\":3300,\"1493\":3301,\"1494\":3302,\"1495\":3303,\"1496\":3304,\"1497\":3305,\"1498\":3306,\"1499\":3307,\"1500\":3308,\"1501\":3309,\"1502\":3310,\"1503\":3311,\"1504\":3312,\"1505\":3313,\"1506\":3314,\"1507\":3315,\"1508\":3316,\"1509\":3317,\"1510\":3318,\"1511\":3319,\"1512\":3320,\"1513\":3321,\"1514\":3322,\"1548\":1452,\"1563\":1467,\"1567\":1471,\"1569\":1473,\"1570\":1474,\"1571\":1475,\"1572\":1476,\"1573\":1477,\"1574\":1478,\"1575\":1479,\"1576\":1480,\"1577\":1481,\"1578\":1482,\"1579\":1483,\"1580\":1484,\"1581\":1485,\"1582\":1486,\"1583\":1487,\"1584\":1488,\"1585\":1489,\"1586\":1490,\"1587\":1491,\"1588\":1492,\"1589\":1493,\"1590\":1494,\"1591\":1495,\"1592\":1496,\"1593\":1497,\"1594\":1498,\"1600\":1504,\"1601\":1505,\"1602\":1506,\"1603\":1507,\"1604\":1508,\"1605\":1509,\"1606\":1510,\"1607\":1511,\"1608\":1512,\"1609\":1513,\"1610\":1514,\"1611\":1515,\"1612\":1516,\"1613\":1517,\"1614\":1518,\"1615\":1519,\"1616\":1520,\"1617\":1521,\"1618\":1522,\"1619\":16778835,\"1620\":16778836,\"1621\":16778837,\"1632\":16778848,\"1633\":16778849,\"1634\":16778850,\"1635\":16778851,\"1636\":16778852,\"1637\":16778853,\"1638\":16778854,\"1639\":16778855,\"1640\":16778856,\"1641\":16778857,\"1642\":16778858,\"1648\":16778864,\"1657\":16778873,\"1662\":16778878,\"1670\":16778886,\"1672\":16778888,\"1681\":16778897,\"1688\":16778904,\"1700\":16778916,\"1705\":16778921,\"1711\":16778927,\"1722\":16778938,\"1726\":16778942,\"1729\":16778945,\"1740\":16778956,\"1746\":16778962,\"1748\":16778964,\"1776\":16778992,\"1777\":16778993,\"1778\":16778994,\"1779\":16778995,\"1780\":16778996,\"1781\":16778997,\"1782\":16778998,\"1783\":16778999,\"1784\":16779000,\"1785\":16779001,\"3458\":16780674,\"3459\":16780675,\"3461\":16780677,\"3462\":16780678,\"3463\":16780679,\"3464\":16780680,\"3465\":16780681,\"3466\":16780682,\"3467\":16780683,\"3468\":16780684,\"3469\":16780685,\"3470\":16780686,\"3471\":16780687,\"3472\":16780688,\"3473\":16780689,\"3474\":16780690,\"3475\":16780691,\"3476\":16780692,\"3477\":16780693,\"3478\":16780694,\"3482\":16780698,\"3483\":16780699,\"3484\":16780700,\"3485\":16780701,\"3486\":16780702,\"3487\":16780703,\"3488\":16780704,\"3489\":16780705,\"3490\":16780706,\"3491\":16780707,\"3492\":16780708,\"3493\":16780709,\"3494\":16780710,\"3495\":16780711,\"3496\":16780712,\"3497\":16780713,\"3498\":16780714,\"3499\":16780715,\"3500\":16780716,\"3501\":16780717,\"3502\":16780718,\"3503\":16780719,\"3504\":16780720,\"3505\":16780721,\"3507\":16780723,\"3508\":16780724,\"3509\":16780725,\"3510\":16780726,\"3511\":16780727,\"3512\":16780728,\"3513\":16780729,\"3514\":16780730,\"3515\":16780731,\"3517\":16780733,\"3520\":16780736,\"3521\":16780737,\"3522\":16780738,\"3523\":16780739,\"3524\":16780740,\"3525\":16780741,\"3526\":16780742,\"3530\":16780746,\"3535\":16780751,\"3536\":16780752,\"3537\":16780753,\"3538\":16780754,\"3539\":16780755,\"3540\":16780756,\"3542\":16780758,\"3544\":16780760,\"3545\":16780761,\"3546\":16780762,\"3547\":16780763,\"3548\":16780764,\"3549\":16780765,\"3550\":16780766,\"3551\":16780767,\"3570\":16780786,\"3571\":16780787,\"3572\":16780788,\"3585\":3489,\"3586\":3490,\"3587\":3491,\"3588\":3492,\"3589\":3493,\"3590\":3494,\"3591\":3495,\"3592\":3496,\"3593\":3497,\"3594\":3498,\"3595\":3499,\"3596\":3500,\"3597\":3501,\"3598\":3502,\"3599\":3503,\"3600\":3504,\"3601\":3505,\"3602\":3506,\"3603\":3507,\"3604\":3508,\"3605\":3509,\"3606\":3510,\"3607\":3511,\"3608\":3512,\"3609\":3513,\"3610\":3514,\"3611\":3515,\"3612\":3516,\"3613\":3517,\"3614\":3518,\"3615\":3519,\"3616\":3520,\"3617\":3521,\"3618\":3522,\"3619\":3523,\"3620\":3524,\"3621\":3525,\"3622\":3526,\"3623\":3527,\"3624\":3528,\"3625\":3529,\"3626\":3530,\"3627\":3531,\"3628\":3532,\"3629\":3533,\"3630\":3534,\"3631\":3535,\"3632\":3536,\"3633\":3537,\"3634\":3538,\"3635\":3539,\"3636\":3540,\"3637\":3541,\"3638\":3542,\"3639\":3543,\"3640\":3544,\"3641\":3545,\"3642\":3546,\"3647\":3551,\"3648\":3552,\"3649\":3553,\"3650\":3554,\"3651\":3555,\"3652\":3556,\"3653\":3557,\"3654\":3558,\"3655\":3559,\"3656\":3560,\"3657\":3561,\"3658\":3562,\"3659\":3563,\"3660\":3564,\"3661\":3565,\"3664\":3568,\"3665\":3569,\"3666\":3570,\"3667\":3571,\"3668\":3572,\"3669\":3573,\"3670\":3574,\"3671\":3575,\"3672\":3576,\"3673\":3577,\"4304\":16781520,\"4305\":16781521,\"4306\":16781522,\"4307\":16781523,\"4308\":16781524,\"4309\":16781525,\"4310\":16781526,\"4311\":16781527,\"4312\":16781528,\"4313\":16781529,\"4314\":16781530,\"4315\":16781531,\"4316\":16781532,\"4317\":16781533,\"4318\":16781534,\"4319\":16781535,\"4320\":16781536,\"4321\":16781537,\"4322\":16781538,\"4323\":16781539,\"4324\":16781540,\"4325\":16781541,\"4326\":16781542,\"4327\":16781543,\"4328\":16781544,\"4329\":16781545,\"4330\":16781546,\"4331\":16781547,\"4332\":16781548,\"4333\":16781549,\"4334\":16781550,\"4335\":16781551,\"4336\":16781552,\"4337\":16781553,\"4338\":16781554,\"4339\":16781555,\"4340\":16781556,\"4341\":16781557,\"4342\":16781558,\"7682\":16784898,\"7683\":16784899,\"7690\":16784906,\"7691\":16784907,\"7710\":16784926,\"7711\":16784927,\"7734\":16784950,\"7735\":16784951,\"7744\":16784960,\"7745\":16784961,\"7766\":16784982,\"7767\":16784983,\"7776\":16784992,\"7777\":16784993,\"7786\":16785002,\"7787\":16785003,\"7808\":16785024,\"7809\":16785025,\"7810\":16785026,\"7811\":16785027,\"7812\":16785028,\"7813\":16785029,\"7818\":16785034,\"7819\":16785035,\"7840\":16785056,\"7841\":16785057,\"7842\":16785058,\"7843\":16785059,\"7844\":16785060,\"7845\":16785061,\"7846\":16785062,\"7847\":16785063,\"7848\":16785064,\"7849\":16785065,\"7850\":16785066,\"7851\":16785067,\"7852\":16785068,\"7853\":16785069,\"7854\":16785070,\"7855\":16785071,\"7856\":16785072,\"7857\":16785073,\"7858\":16785074,\"7859\":16785075,\"7860\":16785076,\"7861\":16785077,\"7862\":16785078,\"7863\":16785079,\"7864\":16785080,\"7865\":16785081,\"7866\":16785082,\"7867\":16785083,\"7868\":16785084,\"7869\":16785085,\"7870\":16785086,\"7871\":16785087,\"7872\":16785088,\"7873\":16785089,\"7874\":16785090,\"7875\":16785091,\"7876\":16785092,\"7877\":16785093,\"7878\":16785094,\"7879\":16785095,\"7880\":16785096,\"7881\":16785097,\"7882\":16785098,\"7883\":16785099,\"7884\":16785100,\"7885\":16785101,\"7886\":16785102,\"7887\":16785103,\"7888\":16785104,\"7889\":16785105,\"7890\":16785106,\"7891\":16785107,\"7892\":16785108,\"7893\":16785109,\"7894\":16785110,\"7895\":16785111,\"7896\":16785112,\"7897\":16785113,\"7898\":16785114,\"7899\":16785115,\"7900\":16785116,\"7901\":16785117,\"7902\":16785118,\"7903\":16785119,\"7904\":16785120,\"7905\":16785121,\"7906\":16785122,\"7907\":16785123,\"7908\":16785124,\"7909\":16785125,\"7910\":16785126,\"7911\":16785127,\"7912\":16785128,\"7913\":16785129,\"7914\":16785130,\"7915\":16785131,\"7916\":16785132,\"7917\":16785133,\"7918\":16785134,\"7919\":16785135,\"7920\":16785136,\"7921\":16785137,\"7922\":16785138,\"7923\":16785139,\"7924\":16785140,\"7925\":16785141,\"7926\":16785142,\"7927\":16785143,\"7928\":16785144,\"7929\":16785145,\"8194\":2722,\"8195\":2721,\"8196\":2723,\"8197\":2724,\"8199\":2725,\"8200\":2726,\"8201\":2727,\"8202\":2728,\"8210\":2747,\"8211\":2730,\"8212\":2729,\"8213\":1967,\"8215\":3295,\"8216\":2768,\"8217\":2769,\"8218\":2813,\"8220\":2770,\"8221\":2771,\"8222\":2814,\"8224\":2801,\"8225\":2802,\"8226\":2790,\"8229\":2735,\"8230\":2734,\"8240\":2773,\"8242\":2774,\"8243\":2775,\"8248\":2812,\"8254\":1150,\"8304\":16785520,\"8308\":16785524,\"8309\":16785525,\"8310\":16785526,\"8311\":16785527,\"8312\":16785528,\"8313\":16785529,\"8320\":16785536,\"8321\":16785537,\"8322\":16785538,\"8323\":16785539,\"8324\":16785540,\"8325\":16785541,\"8326\":16785542,\"8327\":16785543,\"8328\":16785544,\"8329\":16785545,\"8352\":16785568,\"8353\":16785569,\"8354\":16785570,\"8355\":16785571,\"8356\":16785572,\"8357\":16785573,\"8358\":16785574,\"8359\":16785575,\"8360\":16785576,\"8361\":3839,\"8362\":16785578,\"8363\":16785579,\"8364\":8364,\"8453\":2744,\"8470\":1712,\"8471\":2811,\"8478\":2772,\"8482\":2761,\"8531\":2736,\"8532\":2737,\"8533\":2738,\"8534\":2739,\"8535\":2740,\"8536\":2741,\"8537\":2742,\"8538\":2743,\"8539\":2755,\"8540\":2756,\"8541\":2757,\"8542\":2758,\"8592\":2299,\"8593\":2300,\"8594\":2301,\"8595\":2302,\"8658\":2254,\"8660\":2253,\"8706\":2287,\"8709\":16785925,\"8711\":2245,\"8712\":16785928,\"8713\":16785929,\"8715\":16785931,\"8728\":3018,\"8730\":2262,\"8731\":16785947,\"8732\":16785948,\"8733\":2241,\"8734\":2242,\"8743\":2270,\"8744\":2271,\"8745\":2268,\"8746\":2269,\"8747\":2239,\"8748\":16785964,\"8749\":16785965,\"8756\":2240,\"8757\":16785973,\"8764\":2248,\"8771\":2249,\"8773\":16785992,\"8775\":16785991,\"8800\":2237,\"8801\":2255,\"8802\":16786018,\"8803\":16786019,\"8804\":2236,\"8805\":2238,\"8834\":2266,\"8835\":2267,\"8866\":3068,\"8867\":3036,\"8868\":3010,\"8869\":3022,\"8968\":3027,\"8970\":3012,\"8981\":2810,\"8992\":2212,\"8993\":2213,\"9109\":3020,\"9115\":2219,\"9117\":2220,\"9118\":2221,\"9120\":2222,\"9121\":2215,\"9123\":2216,\"9124\":2217,\"9126\":2218,\"9128\":2223,\"9132\":2224,\"9143\":2209,\"9146\":2543,\"9147\":2544,\"9148\":2546,\"9149\":2547,\"9225\":2530,\"9226\":2533,\"9227\":2537,\"9228\":2531,\"9229\":2532,\"9251\":2732,\"9252\":2536,\"9472\":2211,\"9474\":2214,\"9484\":2210,\"9488\":2539,\"9492\":2541,\"9496\":2538,\"9500\":2548,\"9508\":2549,\"9516\":2551,\"9524\":2550,\"9532\":2542,\"9618\":2529,\"9642\":2791,\"9643\":2785,\"9644\":2779,\"9645\":2786,\"9646\":2783,\"9647\":2767,\"9650\":2792,\"9651\":2787,\"9654\":2781,\"9655\":2765,\"9660\":2793,\"9661\":2788,\"9664\":2780,\"9665\":2764,\"9670\":2528,\"9675\":2766,\"9679\":2782,\"9702\":2784,\"9734\":2789,\"9742\":2809,\"9747\":2762,\"9756\":2794,\"9758\":2795,\"9792\":2808,\"9794\":2807,\"9827\":2796,\"9829\":2798,\"9830\":2797,\"9837\":2806,\"9839\":2805,\"10003\":2803,\"10007\":2804,\"10013\":2777,\"10016\":2800,\"10216\":2748,\"10217\":2750,\"10240\":16787456,\"10241\":16787457,\"10242\":16787458,\"10243\":16787459,\"10244\":16787460,\"10245\":16787461,\"10246\":16787462,\"10247\":16787463,\"10248\":16787464,\"10249\":16787465,\"10250\":16787466,\"10251\":16787467,\"10252\":16787468,\"10253\":16787469,\"10254\":16787470,\"10255\":16787471,\"10256\":16787472,\"10257\":16787473,\"10258\":16787474,\"10259\":16787475,\"10260\":16787476,\"10261\":16787477,\"10262\":16787478,\"10263\":16787479,\"10264\":16787480,\"10265\":16787481,\"10266\":16787482,\"10267\":16787483,\"10268\":16787484,\"10269\":16787485,\"10270\":16787486,\"10271\":16787487,\"10272\":16787488,\"10273\":16787489,\"10274\":16787490,\"10275\":16787491,\"10276\":16787492,\"10277\":16787493,\"10278\":16787494,\"10279\":16787495,\"10280\":16787496,\"10281\":16787497,\"10282\":16787498,\"10283\":16787499,\"10284\":16787500,\"10285\":16787501,\"10286\":16787502,\"10287\":16787503,\"10288\":16787504,\"10289\":16787505,\"10290\":16787506,\"10291\":16787507,\"10292\":16787508,\"10293\":16787509,\"10294\":16787510,\"10295\":16787511,\"10296\":16787512,\"10297\":16787513,\"10298\":16787514,\"10299\":16787515,\"10300\":16787516,\"10301\":16787517,\"10302\":16787518,\"10303\":16787519,\"10304\":16787520,\"10305\":16787521,\"10306\":16787522,\"10307\":16787523,\"10308\":16787524,\"10309\":16787525,\"10310\":16787526,\"10311\":16787527,\"10312\":16787528,\"10313\":16787529,\"10314\":16787530,\"10315\":16787531,\"10316\":16787532,\"10317\":16787533,\"10318\":16787534,\"10319\":16787535,\"10320\":16787536,\"10321\":16787537,\"10322\":16787538,\"10323\":16787539,\"10324\":16787540,\"10325\":16787541,\"10326\":16787542,\"10327\":16787543,\"10328\":16787544,\"10329\":16787545,\"10330\":16787546,\"10331\":16787547,\"10332\":16787548,\"10333\":16787549,\"10334\":16787550,\"10335\":16787551,\"10336\":16787552,\"10337\":16787553,\"10338\":16787554,\"10339\":16787555,\"10340\":16787556,\"10341\":16787557,\"10342\":16787558,\"10343\":16787559,\"10344\":16787560,\"10345\":16787561,\"10346\":16787562,\"10347\":16787563,\"10348\":16787564,\"10349\":16787565,\"10350\":16787566,\"10351\":16787567,\"10352\":16787568,\"10353\":16787569,\"10354\":16787570,\"10355\":16787571,\"10356\":16787572,\"10357\":16787573,\"10358\":16787574,\"10359\":16787575,\"10360\":16787576,\"10361\":16787577,\"10362\":16787578,\"10363\":16787579,\"10364\":16787580,\"10365\":16787581,\"10366\":16787582,\"10367\":16787583,\"10368\":16787584,\"10369\":16787585,\"10370\":16787586,\"10371\":16787587,\"10372\":16787588,\"10373\":16787589,\"10374\":16787590,\"10375\":16787591,\"10376\":16787592,\"10377\":16787593,\"10378\":16787594,\"10379\":16787595,\"10380\":16787596,\"10381\":16787597,\"10382\":16787598,\"10383\":16787599,\"10384\":16787600,\"10385\":16787601,\"10386\":16787602,\"10387\":16787603,\"10388\":16787604,\"10389\":16787605,\"10390\":16787606,\"10391\":16787607,\"10392\":16787608,\"10393\":16787609,\"10394\":16787610,\"10395\":16787611,\"10396\":16787612,\"10397\":16787613,\"10398\":16787614,\"10399\":16787615,\"10400\":16787616,\"10401\":16787617,\"10402\":16787618,\"10403\":16787619,\"10404\":16787620,\"10405\":16787621,\"10406\":16787622,\"10407\":16787623,\"10408\":16787624,\"10409\":16787625,\"10410\":16787626,\"10411\":16787627,\"10412\":16787628,\"10413\":16787629,\"10414\":16787630,\"10415\":16787631,\"10416\":16787632,\"10417\":16787633,\"10418\":16787634,\"10419\":16787635,\"10420\":16787636,\"10421\":16787637,\"10422\":16787638,\"10423\":16787639,\"10424\":16787640,\"10425\":16787641,\"10426\":16787642,\"10427\":16787643,\"10428\":16787644,\"10429\":16787645,\"10430\":16787646,\"10431\":16787647,\"10432\":16787648,\"10433\":16787649,\"10434\":16787650,\"10435\":16787651,\"10436\":16787652,\"10437\":16787653,\"10438\":16787654,\"10439\":16787655,\"10440\":16787656,\"10441\":16787657,\"10442\":16787658,\"10443\":16787659,\"10444\":16787660,\"10445\":16787661,\"10446\":16787662,\"10447\":16787663,\"10448\":16787664,\"10449\":16787665,\"10450\":16787666,\"10451\":16787667,\"10452\":16787668,\"10453\":16787669,\"10454\":16787670,\"10455\":16787671,\"10456\":16787672,\"10457\":16787673,\"10458\":16787674,\"10459\":16787675,\"10460\":16787676,\"10461\":16787677,\"10462\":16787678,\"10463\":16787679,\"10464\":16787680,\"10465\":16787681,\"10466\":16787682,\"10467\":16787683,\"10468\":16787684,\"10469\":16787685,\"10470\":16787686,\"10471\":16787687,\"10472\":16787688,\"10473\":16787689,\"10474\":16787690,\"10475\":16787691,\"10476\":16787692,\"10477\":16787693,\"10478\":16787694,\"10479\":16787695,\"10480\":16787696,\"10481\":16787697,\"10482\":16787698,\"10483\":16787699,\"10484\":16787700,\"10485\":16787701,\"10486\":16787702,\"10487\":16787703,\"10488\":16787704,\"10489\":16787705,\"10490\":16787706,\"10491\":16787707,\"10492\":16787708,\"10493\":16787709,\"10494\":16787710,\"10495\":16787711,\"12289\":1188,\"12290\":1185,\"12300\":1186,\"12301\":1187,\"12443\":1246,\"12444\":1247,\"12449\":1191,\"12450\":1201,\"12451\":1192,\"12452\":1202,\"12453\":1193,\"12454\":1203,\"12455\":1194,\"12456\":1204,\"12457\":1195,\"12458\":1205,\"12459\":1206,\"12461\":1207,\"12463\":1208,\"12465\":1209,\"12467\":1210,\"12469\":1211,\"12471\":1212,\"12473\":1213,\"12475\":1214,\"12477\":1215,\"12479\":1216,\"12481\":1217,\"12483\":1199,\"12484\":1218,\"12486\":1219,\"12488\":1220,\"12490\":1221,\"12491\":1222,\"12492\":1223,\"12493\":1224,\"12494\":1225,\"12495\":1226,\"12498\":1227,\"12501\":1228,\"12504\":1229,\"12507\":1230,\"12510\":1231,\"12511\":1232,\"12512\":1233,\"12513\":1234,\"12514\":1235,\"12515\":1196,\"12516\":1236,\"12517\":1197,\"12518\":1237,\"12519\":1198,\"12520\":1238,\"12521\":1239,\"12522\":1240,\"12523\":1241,\"12524\":1242,\"12525\":1243,\"12527\":1244,\"12530\":1190,\"12531\":1245,\"12539\":1189,\"12540\":1200};\n\n    function lookup(k) { return k ? {keysym: k, keyname: keynames ? keynames[k] : k} : undefined; }\n    return {\n        fromUnicode : function(u) { return lookup(codepoints[u]); },\n        lookup : lookup\n    };\n})();\n\ndefine(\"vnc-keysymdef\", [\"vnc-util\"], function(){});\n\n","/*\n * noVNC: HTML5 VNC client\n * Copyright (C) 2012 Joel Martin\n * Copyright (C) 2013 Samuel Mannehed for Cendio AB\n * Licensed under MPL 2.0 or any later version (see LICENSE.txt)\n */\n\n/*jslint browser: true, white: false */\n/*global window, Util */\n\nvar Keyboard, Mouse;\n\n(function () {\n    \"use strict\";\n\n    //\n    // Keyboard event handler\n    //\n\n    Keyboard = function (defaults) {\n        this._keyDownList = [];         // List of depressed keys\n                                        // (even if they are happy)\n\n        Util.set_defaults(this, defaults, {\n            'target': document,\n            'focused': true\n        });\n\n        // create the keyboard handler\n        this._handler = new KeyEventDecoder(kbdUtil.ModifierSync(),\n            VerifyCharModifier( /* jshint newcap: false */\n                TrackKeyState(\n                    EscapeModifiers(this._handleRfbEvent.bind(this))\n                )\n            )\n        ); /* jshint newcap: true */\n\n        // keep these here so we can refer to them later\n        this._eventHandlers = {\n            'keyup': this._handleKeyUp.bind(this),\n            'keydown': this._handleKeyDown.bind(this),\n            'keypress': this._handleKeyPress.bind(this),\n            'blur': this._allKeysUp.bind(this)\n        };\n    };\n\n    Keyboard.prototype = {\n        // private methods\n\n        _handleRfbEvent: function (e) {\n            if (this._onKeyPress) {\n                Util.Debug(\"onKeyPress \" + (e.type == 'keydown' ? \"down\" : \"up\") +\n                           \", keysym: \" + e.keysym.keysym + \"(\" + e.keysym.keyname + \")\");\n                this._onKeyPress(e.keysym.keysym, e.type == 'keydown');\n            }\n        },\n\n        _handleKeyDown: function (e) {\n            if (!this._focused) { return true; }\n\n            if (this._handler.keydown(e)) {\n                // Suppress bubbling/default actions\n                Util.stopEvent(e);\n                return false;\n            } else {\n                // Allow the event to bubble and become a keyPress event which\n                // will have the character code translated\n                return true;\n            }\n        },\n\n        _handleKeyPress: function (e) {\n            if (!this._focused) { return true; }\n\n            if (this._handler.keypress(e)) {\n                // Suppress bubbling/default actions\n                Util.stopEvent(e);\n                return false;\n            } else {\n                // Allow the event to bubble and become a keyPress event which\n                // will have the character code translated\n                return true;\n            }\n        },\n\n        _handleKeyUp: function (e) {\n            if (!this._focused) { return true; }\n\n            if (this._handler.keyup(e)) {\n                // Suppress bubbling/default actions\n                Util.stopEvent(e);\n                return false;\n            } else {\n                // Allow the event to bubble and become a keyPress event which\n                // will have the character code translated\n                return true;\n            }\n        },\n\n        _allKeysUp: function () {\n            Util.Debug(\">> Keyboard.allKeysUp\");\n            this._handler.releaseAll();\n            Util.Debug(\"<< Keyboard.allKeysUp\");\n        },\n\n        // Public methods\n\n        grab: function () {\n            //Util.Debug(\">> Keyboard.grab\");\n            var c = this._target;\n\n            Util.addEvent(c, 'keydown', this._eventHandlers.keydown);\n            Util.addEvent(c, 'keyup', this._eventHandlers.keyup);\n            Util.addEvent(c, 'keypress', this._eventHandlers.keypress);\n\n            // Release (key up) if window loses focus\n            Util.addEvent(window, 'blur', this._eventHandlers.blur);\n\n            //Util.Debug(\"<< Keyboard.grab\");\n        },\n\n        ungrab: function () {\n            //Util.Debug(\">> Keyboard.ungrab\");\n            var c = this._target;\n\n            Util.removeEvent(c, 'keydown', this._eventHandlers.keydown);\n            Util.removeEvent(c, 'keyup', this._eventHandlers.keyup);\n            Util.removeEvent(c, 'keypress', this._eventHandlers.keypress);\n            Util.removeEvent(window, 'blur', this._eventHandlers.blur);\n\n            // Release (key up) all keys that are in a down state\n            this._allKeysUp();\n\n            //Util.Debug(\">> Keyboard.ungrab\");\n        },\n\n        sync: function (e) {\n            this._handler.syncModifiers(e);\n        }\n    };\n\n    Util.make_properties(Keyboard, [\n        ['target',     'wo', 'dom'],  // DOM element that captures keyboard input\n        ['focused',    'rw', 'bool'], // Capture and send key events\n\n        ['onKeyPress', 'rw', 'func'] // Handler for key press/release\n    ]);\n\n    //\n    // Mouse event handler\n    //\n\n    Mouse = function (defaults) {\n        this._mouseCaptured  = false;\n\n        this._doubleClickTimer = null;\n        this._lastTouchPos = null;\n\n        // Configuration attributes\n        Util.set_defaults(this, defaults, {\n            'target': document,\n            'focused': true,\n            'scale': 1.0,\n            'touchButton': 1\n        });\n\n        this._eventHandlers = {\n            'mousedown': this._handleMouseDown.bind(this),\n            'mouseup': this._handleMouseUp.bind(this),\n            'mousemove': this._handleMouseMove.bind(this),\n            'mousewheel': this._handleMouseWheel.bind(this),\n            'mousedisable': this._handleMouseDisable.bind(this)\n        };\n    };\n\n    Mouse.prototype = {\n        // private methods\n        _captureMouse: function () {\n            // capturing the mouse ensures we get the mouseup event\n            if (this._target.setCapture) {\n                this._target.setCapture();\n            }\n\n            // some browsers give us mouseup events regardless,\n            // so if we never captured the mouse, we can disregard the event\n            this._mouseCaptured = true;\n        },\n\n        _releaseMouse: function () {\n            if (this._target.releaseCapture) {\n                this._target.releaseCapture();\n            }\n            this._mouseCaptured = false;\n        },\n\n        _resetDoubleClickTimer: function () {\n            this._doubleClickTimer = null;\n        },\n\n        _handleMouseButton: function (e, down) {\n            if (!this._focused) { return true; }\n\n            if (this._notify) {\n                this._notify(e);\n            }\n\n            var evt = (e ? e : window.event);\n            var pos = Util.getEventPosition(e, this._target, this._scale);\n\n            var bmask;\n            if (e.touches || e.changedTouches) {\n                // Touch device\n\n                // When two touches occur within 500 ms of each other and are\n                // closer than 20 pixels together a double click is triggered.\n                if (down == 1) {\n                    if (this._doubleClickTimer === null) {\n                        this._lastTouchPos = pos;\n                    } else {\n                        clearTimeout(this._doubleClickTimer);\n\n                        // When the distance between the two touches is small enough\n                        // force the position of the latter touch to the position of\n                        // the first.\n\n                        var xs = this._lastTouchPos.x - pos.x;\n                        var ys = this._lastTouchPos.y - pos.y;\n                        var d = Math.sqrt((xs * xs) + (ys * ys));\n\n                        // The goal is to trigger on a certain physical width, the\n                        // devicePixelRatio brings us a bit closer but is not optimal.\n                        if (d < 20 * window.devicePixelRatio) {\n                            pos = this._lastTouchPos;\n                        }\n                    }\n                    this._doubleClickTimer = setTimeout(this._resetDoubleClickTimer.bind(this), 500);\n                }\n                bmask = this._touchButton;\n                // If bmask is set\n            } else if (evt.which) {\n                /* everything except IE */\n                bmask = 1 << evt.button;\n            } else {\n                /* IE including 9 */\n                bmask = (evt.button & 0x1) +      // Left\n                        (evt.button & 0x2) * 2 +  // Right\n                        (evt.button & 0x4) / 2;   // Middle\n            }\n\n            if (this._onMouseButton) {\n                Util.Debug(\"onMouseButton \" + (down ? \"down\" : \"up\") +\n                           \", x: \" + pos.x + \", y: \" + pos.y + \", bmask: \" + bmask);\n                this._onMouseButton(pos.x, pos.y, down, bmask);\n            }\n            Util.stopEvent(e);\n            return false;\n        },\n\n        _handleMouseDown: function (e) {\n            this._captureMouse();\n            this._handleMouseButton(e, 1);\n        },\n\n        _handleMouseUp: function (e) {\n            if (!this._mouseCaptured) { return; }\n\n            this._handleMouseButton(e, 0);\n            this._releaseMouse();\n        },\n\n        _handleMouseWheel: function (e) {\n            if (!this._focused) { return true; }\n\n            if (this._notify) {\n                this._notify(e);\n            }\n\n            var evt = (e ? e : window.event);\n            var pos = Util.getEventPosition(e, this._target, this._scale);\n            var wheelData = evt.detail ? evt.detail * -1 : evt.wheelDelta / 40;\n            var bmask;\n            if (wheelData > 0) {\n                bmask = 1 << 3;\n            } else {\n                bmask = 1 << 4;\n            }\n\n            if (this._onMouseButton) {\n                this._onMouseButton(pos.x, pos.y, 1, bmask);\n                this._onMouseButton(pos.x, pos.y, 0, bmask);\n            }\n            Util.stopEvent(e);\n            return false;\n        },\n\n        _handleMouseMove: function (e) {\n            if (! this._focused) { return true; }\n\n            if (this._notify) {\n                this._notify(e);\n            }\n\n            var evt = (e ? e : window.event);\n            var pos = Util.getEventPosition(e, this._target, this._scale);\n            if (this._onMouseMove) {\n                this._onMouseMove(pos.x, pos.y);\n            }\n            Util.stopEvent(e);\n            return false;\n        },\n\n        _handleMouseDisable: function (e) {\n            if (!this._focused) { return true; }\n\n            var evt = (e ? e : window.event);\n            var pos = Util.getEventPosition(e, this._target, this._scale);\n\n            /* Stop propagation if inside canvas area */\n            if ((pos.realx >= 0) && (pos.realy >= 0) &&\n                (pos.realx < this._target.offsetWidth) &&\n                (pos.realy < this._target.offsetHeight)) {\n                //Util.Debug(\"mouse event disabled\");\n                Util.stopEvent(e);\n                return false;\n            }\n\n            return true;\n        },\n\n\n        // Public methods\n        grab: function () {\n            var c = this._target;\n\n            if ('ontouchstart' in document.documentElement) {\n                Util.addEvent(c, 'touchstart', this._eventHandlers.mousedown);\n                Util.addEvent(window, 'touchend', this._eventHandlers.mouseup);\n                Util.addEvent(c, 'touchend', this._eventHandlers.mouseup);\n                Util.addEvent(c, 'touchmove', this._eventHandlers.mousemove);\n            } else {\n                Util.addEvent(c, 'mousedown', this._eventHandlers.mousedown);\n                Util.addEvent(window, 'mouseup', this._eventHandlers.mouseup);\n                Util.addEvent(c, 'mouseup', this._eventHandlers.mouseup);\n                Util.addEvent(c, 'mousemove', this._eventHandlers.mousemove);\n                Util.addEvent(c, (Util.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel',\n                              this._eventHandlers.mousewheel);\n            }\n\n            /* Work around right and middle click browser behaviors */\n            Util.addEvent(document, 'click', this._eventHandlers.mousedisable);\n            Util.addEvent(document.body, 'contextmenu', this._eventHandlers.mousedisable);\n        },\n\n        ungrab: function () {\n            var c = this._target;\n\n            if ('ontouchstart' in document.documentElement) {\n                Util.removeEvent(c, 'touchstart', this._eventHandlers.mousedown);\n                Util.removeEvent(window, 'touchend', this._eventHandlers.mouseup);\n                Util.removeEvent(c, 'touchend', this._eventHandlers.mouseup);\n                Util.removeEvent(c, 'touchmove', this._eventHandlers.mousemove);\n            } else {\n                Util.removeEvent(c, 'mousedown', this._eventHandlers.mousedown);\n                Util.removeEvent(window, 'mouseup', this._eventHandlers.mouseup);\n                Util.removeEvent(c, 'mouseup', this._eventHandlers.mouseup);\n                Util.removeEvent(c, 'mousemove', this._eventHandlers.mousemove);\n                Util.removeEvent(c, (Util.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel',\n                                 this._eventHandlers.mousewheel);\n            }\n\n            /* Work around right and middle click browser behaviors */\n            Util.removeEvent(document, 'click', this._eventHandlers.mousedisable);\n            Util.removeEvent(document.body, 'contextmenu', this._eventHandlers.mousedisable);\n\n        }\n    };\n\n    Util.make_properties(Mouse, [\n        ['target',         'ro', 'dom'],   // DOM element that captures mouse input\n        ['notify',         'ro', 'func'],  // Function to call to notify whenever a mouse event is received\n        ['focused',        'rw', 'bool'],  // Capture and send mouse clicks/movement\n        ['scale',          'rw', 'float'], // Viewport scale factor 0.0 - 1.0\n\n        ['onMouseButton',  'rw', 'func'],  // Handler for mouse button click/release\n        ['onMouseMove',    'rw', 'func'],  // Handler for mouse movement\n        ['touchButton',    'rw', 'int']    // Button mask (1, 2, 4) for touch devices (0 means ignore clicks)\n    ]);\n})();\n\ndefine(\"vnc-input\", [\"vnc-util\"], function(){});\n\n","/*\n * noVNC: HTML5 VNC client\n * Copyright (C) 2012 Joel Martin\n * Licensed under MPL 2.0 (see LICENSE.txt)\n *\n * See README.md for usage and integration instructions.\n */\n\n/*jslint browser: true, white: false */\n/*global Util, Base64, changeCursor */\n\nvar Display;\n\n(function () {\n    \"use strict\";\n\n    Display = function (defaults) {\n        this._drawCtx = null;\n        this._c_forceCanvas = false;\n\n        this._renderQ = [];  // queue drawing actions for in-oder rendering\n\n        // the full frame buffer (logical canvas) size\n        this._fb_width = 0;\n        this._fb_height = 0;\n\n        // the visible \"physical canvas\" viewport\n        this._viewportLoc = { 'x': 0, 'y': 0, 'w': 0, 'h': 0 };\n        this._cleanRect = { 'x1': 0, 'y1': 0, 'x2': -1, 'y2': -1 };\n\n        this._prevDrawStyle = \"\";\n        this._tile = null;\n        this._tile16x16 = null;\n        this._tile_x = 0;\n        this._tile_y = 0;\n\n        Util.set_defaults(this, defaults, {\n            'true_color': true,\n            'colourMap': [],\n            'scale': 1.0,\n            'viewport': false,\n            'render_mode': ''\n        });\n\n        Util.Debug(\">> Display.constructor\");\n\n        if (!this._target) {\n            throw new Error(\"Target must be set\");\n        }\n\n        if (typeof this._target === 'string') {\n            throw new Error('target must be a DOM element');\n        }\n\n        if (!this._target.getContext) {\n            throw new Error(\"no getContext method\");\n        }\n\n        if (!this._drawCtx) {\n            this._drawCtx = this._target.getContext('2d');\n        }\n\n        Util.Debug(\"User Agent: \" + navigator.userAgent);\n        if (Util.Engine.gecko) { Util.Debug(\"Browser: gecko \" + Util.Engine.gecko); }\n        if (Util.Engine.webkit) { Util.Debug(\"Browser: webkit \" + Util.Engine.webkit); }\n        if (Util.Engine.trident) { Util.Debug(\"Browser: trident \" + Util.Engine.trident); }\n        if (Util.Engine.presto) { Util.Debug(\"Browser: presto \" + Util.Engine.presto); }\n\n        this.clear();\n\n        // Check canvas features\n        if ('createImageData' in this._drawCtx) {\n            this._render_mode = 'canvas rendering';\n        } else {\n            throw new Error(\"Canvas does not support createImageData\");\n        }\n\n        if (this._prefer_js === null) {\n            Util.Info(\"Prefering javascript operations\");\n            this._prefer_js = true;\n        }\n\n        // Determine browser support for setting the cursor via data URI scheme\n        var curDat = [];\n        for (var i = 0; i < 8 * 8 * 4; i++) {\n            curDat.push(255);\n        }\n        try {\n            var curSave = this._target.style.cursor;\n            Display.changeCursor(this._target, curDat, curDat, 2, 2, 8, 8);\n            if (this._target.style.cursor) {\n                if (this._cursor_uri === null || this._cursor_uri === undefined) {\n                    this._cursor_uri = true;\n                }\n                Util.Info(\"Data URI scheme cursor supported\");\n            } else {\n                if (this._cursor_uri === null || this._cursor_uri === undefined) {\n                    this._cursor_uri = false;\n                }\n                Util.Warn(\"Data URI scheme cursor not supported\");\n            }\n            this._target.style.cursor = curSave;\n        } catch (exc) {\n            Util.Error(\"Data URI scheme cursor test exception: \" + exc);\n            this._cursor_uri = false;\n        }\n\n        Util.Debug(\"<< Display.constructor\");\n    };\n\n    Display.prototype = {\n        // Public methods\n        viewportChange: function (deltaX, deltaY, width, height) {\n            var vp = this._viewportLoc;\n            var cr = this._cleanRect;\n            var canvas = this._target;\n\n            if (!this._viewport) {\n                Util.Debug(\"Setting viewport to full display region\");\n                deltaX = -vp.w;  // clamped later of out of bounds\n                deltaY = -vp.h;\n                width = this._fb_width;\n                height = this._fb_height;\n            }\n\n            if (typeof(deltaX) === \"undefined\") { deltaX = 0; }\n            if (typeof(deltaY) === \"undefined\") { deltaY = 0; }\n            if (typeof(width) === \"undefined\") { width = vp.w; }\n            if (typeof(height) === \"undefined\") { height = vp.h; }\n\n            // Size change\n            if (width > this._fb_width) { width = this._fb_width; }\n            if (height > this._fb_height) { height = this._fb_height; }\n\n            if (vp.w !== width || vp.h !== height) {\n                // Change width\n                if (width < vp.w &&  cr.x2 > vp.x + width - 1) {\n                    cr.x2 = vp.x + width - 1;\n                }\n                vp.w = width;\n\n                // Change height\n                if (height < vp.h &&  cr.y2 > vp.y + height - 1) {\n                    cr.y2 = vp.y + height - 1;\n                }\n                vp.h = height;\n\n                var saveImg = null;\n                if (vp.w > 0 && vp.h > 0 && canvas.width > 0 && canvas.height > 0) {\n                    var img_width = canvas.width < vp.w ? canvas.width : vp.w;\n                    var img_height = canvas.height < vp.h ? canvas.height : vp.h;\n                    saveImg = this._drawCtx.getImageData(0, 0, img_width, img_height);\n                }\n\n                canvas.width = vp.w;\n                canvas.height = vp.h;\n\n                if (saveImg) {\n                    this._drawCtx.putImageData(saveImg, 0, 0);\n                }\n            }\n\n            var vx2 = vp.x + vp.w - 1;\n            var vy2 = vp.y + vp.h - 1;\n\n            // Position change\n\n            if (deltaX < 0 && vp.x + deltaX < 0) {\n                deltaX = -vp.x;\n            }\n            if (vx2 + deltaX >= this._fb_width) {\n                deltaX -= vx2 + deltaX - this._fb_width + 1;\n            }\n\n            if (vp.y + deltaY < 0) {\n                deltaY = -vp.y;\n            }\n            if (vy2 + deltaY >= this._fb_height) {\n                deltaY -= (vy2 + deltaY - this._fb_height + 1);\n            }\n\n            if (deltaX === 0 && deltaY === 0) {\n                return;\n            }\n            Util.Debug(\"viewportChange deltaX: \" + deltaX + \", deltaY: \" + deltaY);\n\n            vp.x += deltaX;\n            vx2 += deltaX;\n            vp.y += deltaY;\n            vy2 += deltaY;\n\n            // Update the clean rectangle\n            if (vp.x > cr.x1) {\n                cr.x1 = vp.x;\n            }\n            if (vx2 < cr.x2) {\n                cr.x2 = vx2;\n            }\n            if (vp.y > cr.y1) {\n                cr.y1 = vp.y;\n            }\n            if (vy2 < cr.y2) {\n                cr.y2 = vy2;\n            }\n\n            var x1, w;\n            if (deltaX < 0) {\n                // Shift viewport left, redraw left section\n                x1 = 0;\n                w = -deltaX;\n            } else {\n                // Shift viewport right, redraw right section\n                x1 = vp.w - deltaX;\n                w = deltaX;\n            }\n\n            var y1, h;\n            if (deltaY < 0) {\n                // Shift viewport up, redraw top section\n                y1 = 0;\n                h = -deltaY;\n            } else {\n                // Shift viewport down, redraw bottom section\n                y1 = vp.h - deltaY;\n                h = deltaY;\n            }\n\n            // Copy the valid part of the viewport to the shifted location\n            var saveStyle = this._drawCtx.fillStyle;\n            this._drawCtx.fillStyle = \"rgb(255,255,255)\";\n            if (deltaX !== 0) {\n                this._drawCtx.drawImage(canvas, 0, 0, vp.w, vp.h, -deltaX, 0, vp.w, vp.h);\n                this._drawCtx.fillRect(x1, 0, w, vp.h);\n            }\n            if (deltaY !== 0) {\n                this._drawCtx.drawImage(canvas, 0, 0, vp.w, vp.h, 0, -deltaY, vp.w, vp.h);\n                this._drawCtx.fillRect(0, y1, vp.w, h);\n            }\n            this._drawCtx.fillStyle = saveStyle;\n        },\n\n        // Return a map of clean and dirty areas of the viewport and reset the\n        // tracking of clean and dirty areas\n        //\n        // Returns: { 'cleanBox': { 'x': x, 'y': y, 'w': w, 'h': h},\n        //            'dirtyBoxes': [{ 'x': x, 'y': y, 'w': w, 'h': h }, ...] }\n        getCleanDirtyReset: function () {\n            var vp = this._viewportLoc;\n            var cr = this._cleanRect;\n\n            var cleanBox = { 'x': cr.x1, 'y': cr.y1,\n                             'w': cr.x2 - cr.x1 + 1, 'h': cr.y2 - cr.y1 + 1 };\n\n            var dirtyBoxes = [];\n            if (cr.x1 >= cr.x2 || cr.y1 >= cr.y2) {\n                // Whole viewport is dirty\n                dirtyBoxes.push({ 'x': vp.x, 'y': vp.y, 'w': vp.w, 'h': vp.h });\n            } else {\n                // Redraw dirty regions\n                var vx2 = vp.x + vp.w - 1;\n                var vy2 = vp.y + vp.h - 1;\n\n                if (vp.x < cr.x1) {\n                    // left side dirty region\n                    dirtyBoxes.push({'x': vp.x, 'y': vp.y,\n                                     'w': cr.x1 - vp.x + 1, 'h': vp.h});\n                }\n                if (vx2 > cr.x2) {\n                    // right side dirty region\n                    dirtyBoxes.push({'x': cr.x2 + 1, 'y': vp.y,\n                                     'w': vx2 - cr.x2, 'h': vp.h});\n                }\n                if(vp.y < cr.y1) {\n                    // top/middle dirty region\n                    dirtyBoxes.push({'x': cr.x1, 'y': vp.y,\n                                     'w': cr.x2 - cr.x1 + 1, 'h': cr.y1 - vp.y});\n                }\n                if (vy2 > cr.y2) {\n                    // bottom/middle dirty region\n                    dirtyBoxes.push({'x': cr.x1, 'y': cr.y2 + 1,\n                                     'w': cr.x2 - cr.x1 + 1, 'h': vy2 - cr.y2});\n                }\n            }\n\n            this._cleanRect = {'x1': vp.x, 'y1': vp.y,\n                               'x2': vp.x + vp.w - 1, 'y2': vp.y + vp.h - 1};\n\n            return {'cleanBox': cleanBox, 'dirtyBoxes': dirtyBoxes};\n        },\n\n        absX: function (x) {\n            return x + this._viewportLoc.x;\n        },\n\n        absY: function (y) {\n            return y + this._viewportLoc.y;\n        },\n\n        resize: function (width, height) {\n            this._prevDrawStyle = \"\";\n\n            this._fb_width = width;\n            this._fb_height = height;\n\n            this._rescale(this._scale);\n\n            this.viewportChange();\n        },\n\n        clear: function () {\n            if (this._logo) {\n                this.resize(this._logo.width, this._logo.height);\n                this.blitStringImage(this._logo.data, 0, 0);\n            } else {\n                if (Util.Engine.trident === 6) {\n                    // NB(directxman12): there's a bug in IE10 where we can fail to actually\n                    //                   clear the canvas here because of the resize.\n                    //                   Clearing the current viewport first fixes the issue\n                    this._drawCtx.clearRect(0, 0, this._viewportLoc.w, this._viewportLoc.h);\n                }\n                this.resize(240, 20);\n                this._drawCtx.clearRect(0, 0, this._viewportLoc.w, this._viewportLoc.h);\n            }\n\n            this._renderQ = [];\n        },\n\n        fillRect: function (x, y, width, height, color) {\n            this._setFillColor(color);\n            this._drawCtx.fillRect(x - this._viewportLoc.x, y - this._viewportLoc.y, width, height);\n        },\n\n        copyImage: function (old_x, old_y, new_x, new_y, w, h) {\n            var x1 = old_x - this._viewportLoc.x;\n            var y1 = old_y - this._viewportLoc.y;\n            var x2 = new_x - this._viewportLoc.x;\n            var y2 = new_y - this._viewportLoc.y;\n\n            this._drawCtx.drawImage(this._target, x1, y1, w, h, x2, y2, w, h);\n        },\n\n        // start updating a tile\n        startTile: function (x, y, width, height, color) {\n            this._tile_x = x;\n            this._tile_y = y;\n            if (width === 16 && height === 16) {\n                this._tile = this._tile16x16;\n            } else {\n                this._tile = this._drawCtx.createImageData(width, height);\n            }\n\n            if (this._prefer_js) {\n                var bgr;\n                if (this._true_color) {\n                    bgr = color;\n                } else {\n                    bgr = this._colourMap[color[0]];\n                }\n                var red = bgr[2];\n                var green = bgr[1];\n                var blue = bgr[0];\n\n                var data = this._tile.data;\n                for (var i = 0; i < width * height * 4; i += 4) {\n                    data[i] = red;\n                    data[i + 1] = green;\n                    data[i + 2] = blue;\n                    data[i + 3] = 255;\n                }\n            } else {\n                this.fillRect(x, y, width, height, color);\n            }\n        },\n\n        // update sub-rectangle of the current tile\n        subTile: function (x, y, w, h, color) {\n            if (this._prefer_js) {\n                var bgr;\n                if (this._true_color) {\n                    bgr = color;\n                } else {\n                    bgr = this._colourMap[color[0]];\n                }\n                var red = bgr[2];\n                var green = bgr[1];\n                var blue = bgr[0];\n                var xend = x + w;\n                var yend = y + h;\n\n                var data = this._tile.data;\n                var width = this._tile.width;\n                for (var j = y; j < yend; j++) {\n                    for (var i = x; i < xend; i++) {\n                        var p = (i + (j * width)) * 4;\n                        data[p] = red;\n                        data[p + 1] = green;\n                        data[p + 2] = blue;\n                        data[p + 3] = 255;\n                    }\n                }\n            } else {\n                this.fillRect(this._tile_x + x, this._tile_y + y, w, h, color);\n            }\n        },\n\n        // draw the current tile to the screen\n        finishTile: function () {\n            if (this._prefer_js) {\n                this._drawCtx.putImageData(this._tile, this._tile_x - this._viewportLoc.x,\n                                           this._tile_y - this._viewportLoc.y);\n            }\n            // else: No-op -- already done by setSubTile\n        },\n\n        blitImage: function (x, y, width, height, arr, offset) {\n            if (this._true_color) {\n                this._bgrxImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset);\n            } else {\n                this._cmapImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset);\n            }\n        },\n\n        blitRgbImage: function (x, y , width, height, arr, offset) {\n            if (this._true_color) {\n                this._rgbImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset);\n            } else {\n                // probably wrong?\n                this._cmapImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset);\n            }\n        },\n\n        blitStringImage: function (str, x, y) {\n            var img = new Image();\n            img.onload = function () {\n                this._drawCtx.drawImage(img, x - this._viewportLoc.x, y - this._viewportLoc.y);\n            }.bind(this);\n            img.src = str;\n            return img; // for debugging purposes\n        },\n\n        // wrap ctx.drawImage but relative to viewport\n        drawImage: function (img, x, y) {\n            this._drawCtx.drawImage(img, x - this._viewportLoc.x, y - this._viewportLoc.y);\n        },\n\n        renderQ_push: function (action) {\n            this._renderQ.push(action);\n            if (this._renderQ.length === 1) {\n                // If this can be rendered immediately it will be, otherwise\n                // the scanner will start polling the queue (every\n                // requestAnimationFrame interval)\n                this._scan_renderQ();\n            }\n        },\n\n        changeCursor: function (pixels, mask, hotx, hoty, w, h) {\n            if (this._cursor_uri === false) {\n                Util.Warn(\"changeCursor called but no cursor data URI support\");\n                return;\n            }\n\n            if (this._true_color) {\n                Display.changeCursor(this._target, pixels, mask, hotx, hoty, w, h);\n            } else {\n                Display.changeCursor(this._target, pixels, mask, hotx, hoty, w, h, this._colourMap);\n            }\n        },\n\n        defaultCursor: function () {\n            this._target.style.cursor = \"default\";\n        },\n\n        // Overridden getters/setters\n        get_context: function () {\n            return this._drawCtx;\n        },\n\n        set_scale: function (scale) {\n            this._rescale(scale);\n        },\n\n        set_width: function (w) {\n            this.resize(w, this._fb_height);\n        },\n        get_width: function () {\n            return this._fb_width;\n        },\n\n        set_height: function (h) {\n            this.resize(this._fb_width, h);\n        },\n        get_height: function () {\n            return this._fb_height;\n        },\n\n        // Private Methods\n        _rescale: function (factor) {\n            var canvas = this._target;\n            var properties = ['transform', 'WebkitTransform', 'MozTransform'];\n            var transform_prop;\n            while ((transform_prop = properties.shift())) {\n                if (typeof canvas.style[transform_prop] !== 'undefined') {\n                    break;\n                }\n            }\n\n            if (transform_prop === null) {\n                Util.Debug(\"No scaling support\");\n                return;\n            }\n\n            if (typeof(factor) === \"undefined\") {\n                factor = this._scale;\n            } else if (factor > 1.0) {\n                factor = 1.0;\n            } else if (factor < 0.1) {\n                factor = 0.1;\n            }\n\n            if (this._scale === factor) {\n                return;\n            }\n\n            this._scale = factor;\n            var x = canvas.width - (canvas.width * factor);\n            var y = canvas.height - (canvas.height * factor);\n            canvas.style[transform_prop] = 'scale(' + this._scale + ') translate(-' + x + 'px, -' + y + 'px)';\n        },\n\n        _setFillColor: function (color) {\n            var bgr;\n            if (this._true_color) {\n                bgr = color;\n            } else {\n                bgr = this._colourMap[color[0]];\n            }\n\n            var newStyle = 'rgb(' + bgr[2] + ',' + bgr[1] + ',' + bgr[0] + ')';\n            if (newStyle !== this._prevDrawStyle) {\n                this._drawCtx.fillStyle = newStyle;\n                this._prevDrawStyle = newStyle;\n            }\n        },\n\n        _rgbImageData: function (x, y, vx, vy, width, height, arr, offset) {\n            var img = this._drawCtx.createImageData(width, height);\n            var data = img.data;\n            for (var i = 0, j = offset; i < width * height * 4; i += 4, j += 3) {\n                data[i]     = arr[j];\n                data[i + 1] = arr[j + 1];\n                data[i + 2] = arr[j + 2];\n                data[i + 3] = 255;  // Alpha\n            }\n            this._drawCtx.putImageData(img, x - vx, y - vy);\n        },\n\n        _bgrxImageData: function (x, y, vx, vy, width, height, arr, offset) {\n            var img = this._drawCtx.createImageData(width, height);\n            var data = img.data;\n            for (var i = 0, j = offset; i < width * height * 4; i += 4, j += 4) {\n                data[i]     = arr[j + 2];\n                data[i + 1] = arr[j + 1];\n                data[i + 2] = arr[j];\n                data[i + 3] = 255;  // Alpha\n            }\n            this._drawCtx.putImageData(img, x - vx, y - vy);\n        },\n\n        _cmapImageData: function (x, y, vx, vy, width, height, arr, offset) {\n            var img = this._drawCtx.createImageData(width, height);\n            var data = img.data;\n            var cmap = this._colourMap;\n            for (var i = 0, j = offset; i < width * height * 4; i += 4, j++) {\n                var bgr = cmap[arr[j]];\n                data[i]     = bgr[2];\n                data[i + 1] = bgr[1];\n                data[i + 2] = bgr[0];\n                data[i + 3] = 255;  // Alpha\n            }\n            this._drawCtx.putImageData(img, x - vx, y - vy);\n        },\n\n        _scan_renderQ: function () {\n            var ready = true;\n            while (ready && this._renderQ.length > 0) {\n                var a = this._renderQ[0];\n                switch (a.type) {\n                    case 'copy':\n                        this.copyImage(a.old_x, a.old_y, a.x, a.y, a.width, a.height);\n                        break;\n                    case 'fill':\n                        this.fillRect(a.x, a.y, a.width, a.height, a.color);\n                        break;\n                    case 'blit':\n                        this.blitImage(a.x, a.y, a.width, a.height, a.data, 0);\n                        break;\n                    case 'blitRgb':\n                        this.blitRgbImage(a.x, a.y, a.width, a.height, a.data, 0);\n                        break;\n                    case 'img':\n                        if (a.img.complete) {\n                            this.drawImage(a.img, a.x, a.y);\n                        } else {\n                            // We need to wait for this image to 'load'\n                            // to keep things in-order\n                            ready = false;\n                        }\n                        break;\n                }\n\n                if (ready) {\n                    this._renderQ.shift();\n                }\n            }\n\n            if (this._renderQ.length > 0) {\n                requestAnimFrame(this._scan_renderQ.bind(this));\n            }\n        },\n    };\n\n    Util.make_properties(Display, [\n        ['target', 'wo', 'dom'],       // Canvas element for rendering\n        ['context', 'ro', 'raw'],      // Canvas 2D context for rendering (read-only)\n        ['logo', 'rw', 'raw'],         // Logo to display when cleared: {\"width\": w, \"height\": h, \"data\": data}\n        ['true_color', 'rw', 'bool'],  // Use true-color pixel data\n        ['colourMap', 'rw', 'arr'],    // Colour map array (when not true-color)\n        ['scale', 'rw', 'float'],      // Display area scale factor 0.0 - 1.0\n        ['viewport', 'rw', 'bool'],    // Use a viewport set with viewportChange()\n        ['width', 'rw', 'int'],        // Display area width\n        ['height', 'rw', 'int'],       // Display area height\n\n        ['render_mode', 'ro', 'str'],  // Canvas rendering mode (read-only)\n\n        ['prefer_js', 'rw', 'str'],    // Prefer Javascript over canvas methods\n        ['cursor_uri', 'rw', 'raw']    // Can we render cursor using data URI\n    ]);\n\n    // Class Methods\n    Display.changeCursor = function (target, pixels, mask, hotx, hoty, w0, h0, cmap) {\n        var w = w0;\n        var h = h0;\n        if (h < w) {\n            h = w;  // increase h to make it square\n        } else {\n            w = h;  // increase w to make it square\n        }\n\n        var cur = [];\n\n        // Push multi-byte little-endian values\n        cur.push16le = function (num) {\n            this.push(num & 0xFF, (num >> 8) & 0xFF);\n        };\n        cur.push32le = function (num) {\n            this.push(num & 0xFF,\n                      (num >> 8) & 0xFF,\n                      (num >> 16) & 0xFF,\n                      (num >> 24) & 0xFF);\n        };\n\n        var IHDRsz = 40;\n        var RGBsz = w * h * 4;\n        var XORsz = Math.ceil((w * h) / 8.0);\n        var ANDsz = Math.ceil((w * h) / 8.0);\n\n        cur.push16le(0);        // 0: Reserved\n        cur.push16le(2);        // 2: .CUR type\n        cur.push16le(1);        // 4: Number of images, 1 for non-animated ico\n\n        // Cursor #1 header (ICONDIRENTRY)\n        cur.push(w);            // 6: width\n        cur.push(h);            // 7: height\n        cur.push(0);            // 8: colors, 0 -> true-color\n        cur.push(0);            // 9: reserved\n        cur.push16le(hotx);     // 10: hotspot x coordinate\n        cur.push16le(hoty);     // 12: hotspot y coordinate\n        cur.push32le(IHDRsz + RGBsz + XORsz + ANDsz);\n                                // 14: cursor data byte size\n        cur.push32le(22);       // 18: offset of cursor data in the file\n\n        // Cursor #1 InfoHeader (ICONIMAGE/BITMAPINFO)\n        cur.push32le(IHDRsz);   // 22: InfoHeader size\n        cur.push32le(w);        // 26: Cursor width\n        cur.push32le(h * 2);    // 30: XOR+AND height\n        cur.push16le(1);        // 34: number of planes\n        cur.push16le(32);       // 36: bits per pixel\n        cur.push32le(0);        // 38: Type of compression\n\n        cur.push32le(XORsz + ANDsz);\n                                // 42: Size of Image\n        cur.push32le(0);        // 46: reserved\n        cur.push32le(0);        // 50: reserved\n        cur.push32le(0);        // 54: reserved\n        cur.push32le(0);        // 58: reserved\n\n        // 62: color data (RGBQUAD icColors[])\n        var y, x;\n        for (y = h - 1; y >= 0; y--) {\n            for (x = 0; x < w; x++) {\n                if (x >= w0 || y >= h0) {\n                    cur.push(0);  // blue\n                    cur.push(0);  // green\n                    cur.push(0);  // red\n                    cur.push(0);  // alpha\n                } else {\n                    var idx = y * Math.ceil(w0 / 8) + Math.floor(x / 8);\n                    var alpha = (mask[idx] << (x % 8)) & 0x80 ? 255 : 0;\n                    if (cmap) {\n                        idx = (w0 * y) + x;\n                        var rgb = cmap[pixels[idx]];\n                        cur.push(rgb[2]);  // blue\n                        cur.push(rgb[1]);  // green\n                        cur.push(rgb[0]);  // red\n                        cur.push(alpha);   // alpha\n                    } else {\n                        idx = ((w0 * y) + x) * 4;\n                        cur.push(pixels[idx + 2]); // blue\n                        cur.push(pixels[idx + 1]); // green\n                        cur.push(pixels[idx]);     // red\n                        cur.push(alpha);           // alpha\n                    }\n                }\n            }\n        }\n\n        // XOR/bitmask data (BYTE icXOR[])\n        // (ignored, just needs to be the right size)\n        for (y = 0; y < h; y++) {\n            for (x = 0; x < Math.ceil(w / 8); x++) {\n                cur.push(0);\n            }\n        }\n\n        // AND/bitmask data (BYTE icAND[])\n        // (ignored, just needs to be the right size)\n        for (y = 0; y < h; y++) {\n            for (x = 0; x < Math.ceil(w / 8); x++) {\n                cur.push(0);\n            }\n        }\n\n        var url = 'data:image/x-icon;base64,' + Base64.encode(cur);\n        target.style.cursor = 'url(' + url + ')' + hotx + ' ' + hoty + ', default';\n    };\n})();\n\ndefine(\"vnc-display\", [\"vnc-util\"], function(){});\n\n","/*\n * noVNC: HTML5 VNC client\n * Copyright (C) 2012 Joel Martin\n * Copyright (C) 2013 Samuel Mannehed for Cendio AB\n * Licensed under MPL 2.0 (see LICENSE.txt)\n *\n * See README.md for usage and integration instructions.\n *\n * TIGHT decoder portion:\n * (c) 2012 Michael Tinglof, Joe Balaz, Les Piech (Mercuri.ca)\n */\n\n/*jslint white: false, browser: true */\n/*global window, Util, Display, Keyboard, Mouse, Websock, Websock_native, Base64, DES */\n\nvar RFB;\n\n(function () {\n    \"use strict\";\n    RFB = function (defaults) {\n        if (!defaults) {\n            defaults = {};\n        }\n\n        this._rfb_host = '';\n        this._rfb_port = 5900;\n        this._rfb_password = '';\n        this._rfb_path = '';\n\n        this._rfb_state = 'disconnected';\n        this._rfb_version = 0;\n        this._rfb_max_version = 3.8;\n        this._rfb_auth_scheme = '';\n\n        this._rfb_tightvnc = false;\n        this._rfb_xvp_ver = 0;\n\n        // In preference order\n        this._encodings = [\n            ['COPYRECT',         0x01 ],\n            ['TIGHT',            0x07 ],\n            ['TIGHT_PNG',        -260 ],\n            ['HEXTILE',          0x05 ],\n            ['RRE',              0x02 ],\n            ['RAW',              0x00 ],\n            ['DesktopSize',      -223 ],\n            ['Cursor',           -239 ],\n\n            // Psuedo-encoding settings\n            //['JPEG_quality_lo',   -32 ],\n            ['JPEG_quality_med',    -26 ],\n            //['JPEG_quality_hi',   -23 ],\n            //['compress_lo',      -255 ],\n            ['compress_hi',        -247 ],\n            ['last_rect',          -224 ],\n            ['xvp',                -309 ]\n        ];\n\n        this._encHandlers = {};\n        this._encNames = {};\n        this._encStats = {};\n\n        this._sock = null;              // Websock object\n        this._display = null;           // Display object\n        this._keyboard = null;          // Keyboard input handler object\n        this._mouse = null;             // Mouse input handler object\n        this._sendTimer = null;         // Send Queue check timer\n        this._disconnTimer = null;      // disconnection timer\n        this._msgTimer = null;          // queued handle_msg timer\n\n        // Frame buffer update state\n        this._FBU = {\n            rects: 0,\n            subrects: 0,            // RRE\n            lines: 0,               // RAW\n            tiles: 0,               // HEXTILE\n            bytes: 0,\n            x: 0,\n            y: 0,\n            width: 0,\n            height: 0,\n            encoding: 0,\n            subencoding: -1,\n            background: null,\n            zlib: []                // TIGHT zlib streams\n        };\n\n        this._fb_Bpp = 4;\n        this._fb_depth = 3;\n        this._fb_width = 0;\n        this._fb_height = 0;\n        this._fb_name = \"\";\n\n        this._rre_chunk_sz = 100;\n\n        this._timing = {\n            last_fbu: 0,\n            fbu_total: 0,\n            fbu_total_cnt: 0,\n            full_fbu_total: 0,\n            full_fbu_cnt: 0,\n\n            fbu_rt_start: 0,\n            fbu_rt_total: 0,\n            fbu_rt_cnt: 0,\n            pixels: 0\n        };\n\n        // Mouse state\n        this._mouse_buttonMask = 0;\n        this._mouse_arr = [];\n        this._viewportDragging = false;\n        this._viewportDragPos = {};\n\n        // set the default value on user-facing properties\n        Util.set_defaults(this, defaults, {\n            'target': 'null',                       // VNC display rendering Canvas object\n            'focusContainer': document,             // DOM element that captures keyboard input\n            'encrypt': false,                       // Use TLS/SSL/wss encryption\n            'true_color': true,                     // Request true color pixel data\n            'local_cursor': false,                  // Request locally rendered cursor\n            'shared': true,                         // Request shared mode\n            'view_only': false,                     // Disable client mouse/keyboard\n            'xvp_password_sep': '@',                // Separator for XVP password fields\n            'disconnectTimeout': 3,                 // Time (s) to wait for disconnection\n            'wsProtocols': ['binary', 'base64'],    // Protocols to use in the WebSocket connection\n            'repeaterID': '',                       // [UltraVNC] RepeaterID to connect to\n            'viewportDrag': false,                  // Move the viewport on mouse drags\n\n            // Callback functions\n            'onUpdateState': function () { },       // onUpdateState(rfb, state, oldstate, statusMsg): state update/change\n            'onPasswordRequired': function () { },  // onPasswordRequired(rfb): VNC password is required\n            'onClipboard': function () { },         // onClipboard(rfb, text): RFB clipboard contents received\n            'onBell': function () { },              // onBell(rfb): RFB Bell message received\n            'onFBUReceive': function () { },        // onFBUReceive(rfb, fbu): RFB FBU received but not yet processed\n            'onFBUComplete': function () { },       // onFBUComplete(rfb, fbu): RFB FBU received and processed\n            'onFBResize': function () { },          // onFBResize(rfb, width, height): frame buffer resized\n            'onDesktopName': function () { },       // onDesktopName(rfb, name): desktop name received\n            'onXvpInit': function () { },           // onXvpInit(version): XVP extensions active for this connection\n        });\n\n        // main setup\n        Util.Debug(\">> RFB.constructor\");\n\n        // populate encHandlers with bound versions\n        Object.keys(RFB.encodingHandlers).forEach(function (encName) {\n            this._encHandlers[encName] = RFB.encodingHandlers[encName].bind(this);\n        }.bind(this));\n\n        // Create lookup tables based on encoding number\n        for (var i = 0; i < this._encodings.length; i++) {\n            this._encHandlers[this._encodings[i][1]] = this._encHandlers[this._encodings[i][0]];\n            this._encNames[this._encodings[i][1]] = this._encodings[i][0];\n            this._encStats[this._encodings[i][1]] = [0, 0];\n        }\n\n        try {\n            this._display = new Display({target: this._target});\n        } catch (exc) {\n            Util.Error(\"Display exception: \" + exc);\n            this._updateState('fatal', \"No working Display\");\n        }\n\n        this._keyboard = new Keyboard({target: this._focusContainer,\n                                       onKeyPress: this._handleKeyPress.bind(this)});\n\n        this._mouse = new Mouse({target: this._target,\n                                 onMouseButton: this._handleMouseButton.bind(this),\n                                 onMouseMove: this._handleMouseMove.bind(this),\n                                 notify: this._keyboard.sync.bind(this._keyboard)});\n\n        this._sock = new Websock();\n        this._sock.on('message', this._handle_message.bind(this));\n        this._sock.on('open', function () {\n            if (this._rfb_state === 'connect') {\n                this._updateState('ProtocolVersion', \"Starting VNC handshake\");\n            } else {\n                this._fail(\"Got unexpected WebSocket connection\");\n            }\n        }.bind(this));\n        this._sock.on('close', function (e) {\n            Util.Warn(\"WebSocket on-close event\");\n            var msg = \"\";\n            if (e.code) {\n                msg = \" (code: \" + e.code;\n                if (e.reason) {\n                    msg += \", reason: \" + e.reason;\n                }\n                msg += \")\";\n            }\n            if (this._rfb_state === 'disconnect') {\n                this._updateState('disconnected', 'VNC disconnected' + msg);\n            } else if (this._rfb_state === 'ProtocolVersion') {\n                this._fail('Failed to connect to server' + msg);\n            } else if (this._rfb_state in {'failed': 1, 'disconnected': 1}) {\n                Util.Error(\"Received onclose while disconnected\" + msg);\n            } else {\n                this._fail(\"Server disconnected\" + msg);\n            }\n        }.bind(this));\n        this._sock.on('error', function (e) {\n            Util.Warn(\"WebSocket on-error event\");\n        });\n\n        this._init_vars();\n\n        var rmode = this._display.get_render_mode();\n        if (Websock_native) {\n            Util.Info(\"Using native WebSockets\");\n            this._updateState('loaded', 'noVNC ready: native WebSockets, ' + rmode);\n        } else {\n            Util.Warn(\"Using web-socket-js bridge.  Flash version: \" + Util.Flash.version);\n            if (!Util.Flash || Util.Flash.version < 9) {\n                this._updateState('fatal', \"WebSockets or <a href='http://get.adobe.com/flashplayer'>Adobe Flash</a> is required\");\n            } else if (document.location.href.substr(0, 7) === 'file://') {\n                this._updateState('fatal', \"'file://' URL is incompatible with Adobe Flash\");\n            } else {\n                this._updateState('loaded', 'noVNC ready: WebSockets emulation, ' + rmode);\n            }\n        }\n\n        Util.Debug(\"<< RFB.constructor\");\n    };\n\n    RFB.prototype = {\n        // Public methods\n        connect: function (host, port, password, path) {\n            this._rfb_host = host;\n            this._rfb_port = port;\n            this._rfb_password = (password !== undefined) ? password : \"\";\n            this._rfb_path = (path !== undefined) ? path : \"\";\n\n            if (!this._rfb_host || !this._rfb_port) {\n                return this._fail(\"Must set host and port\");\n            }\n\n            this._updateState('connect');\n        },\n\n        disconnect: function () {\n            this._updateState('disconnect', 'Disconnecting');\n        },\n\n        sendPassword: function (passwd) {\n            this._rfb_password = passwd;\n            this._rfb_state = 'Authentication';\n            setTimeout(this._init_msg.bind(this), 1);\n        },\n\n        sendCtrlAltDel: function () {\n            if (this._rfb_state !== 'normal' || this._view_only) { return false; }\n            Util.Info(\"Sending Ctrl-Alt-Del\");\n\n            var arr = [];\n            arr = arr.concat(RFB.messages.keyEvent(XK_Control_L, 1));\n            arr = arr.concat(RFB.messages.keyEvent(XK_Alt_L, 1));\n            arr = arr.concat(RFB.messages.keyEvent(XK_Delete, 1));\n            arr = arr.concat(RFB.messages.keyEvent(XK_Delete, 0));\n            arr = arr.concat(RFB.messages.keyEvent(XK_Alt_L, 0));\n            arr = arr.concat(RFB.messages.keyEvent(XK_Control_L, 0));\n            this._sock.send(arr);\n        },\n\n        xvpOp: function (ver, op) {\n            if (this._rfb_xvp_ver < ver) { return false; }\n            Util.Info(\"Sending XVP operation \" + op + \" (version \" + ver + \")\");\n            this._sock.send_string(\"\\xFA\\x00\" + String.fromCharCode(ver) + String.fromCharCode(op));\n            return true;\n        },\n\n        xvpShutdown: function () {\n            return this.xvpOp(1, 2);\n        },\n\n        xvpReboot: function () {\n            return this.xvpOp(1, 3);\n        },\n\n        xvpReset: function () {\n            return this.xvpOp(1, 4);\n        },\n\n        // Send a key press. If 'down' is not specified then send a down key\n        // followed by an up key.\n        sendKey: function (code, down) {\n            if (this._rfb_state !== \"normal\" || this._view_only) { return false; }\n            var arr = [];\n            if (typeof down !== 'undefined') {\n                Util.Info(\"Sending key code (\" + (down ? \"down\" : \"up\") + \"): \" + code);\n                arr = arr.concat(RFB.messages.keyEvent(code, down ? 1 : 0));\n            } else {\n                Util.Info(\"Sending key code (down + up): \" + code);\n                arr = arr.concat(RFB.messages.keyEvent(code, 1));\n                arr = arr.concat(RFB.messages.keyEvent(code, 0));\n            }\n            this._sock.send(arr);\n        },\n\n        clipboardPasteFrom: function (text) {\n            if (this._rfb_state !== 'normal') { return; }\n            this._sock.send(RFB.messages.clientCutText(text));\n        },\n\n        // Private methods\n\n        _connect: function () {\n            Util.Debug(\">> RFB.connect\");\n\n            var uri;\n            if (typeof UsingSocketIO !== 'undefined') {\n                uri = 'http';\n            } else {\n                uri = this._encrypt ? 'wss' : 'ws';\n            }\n\n            uri += '://' + this._rfb_host + ':' + this._rfb_port + '/' + this._rfb_path;\n            Util.Info(\"connecting to \" + uri);\n\n            this._sock.open(uri, this._wsProtocols);\n\n            Util.Debug(\"<< RFB.connect\");\n        },\n\n        _init_vars: function () {\n            // reset state\n            this._sock.init();\n\n            this._FBU.rects        = 0;\n            this._FBU.subrects     = 0;  // RRE and HEXTILE\n            this._FBU.lines        = 0;  // RAW\n            this._FBU.tiles        = 0;  // HEXTILE\n            this._FBU.zlibs        = []; // TIGHT zlib encoders\n            this._mouse_buttonMask = 0;\n            this._mouse_arr        = [];\n            this._rfb_tightvnc     = false;\n\n            // Clear the per connection encoding stats\n            var i;\n            for (i = 0; i < this._encodings.length; i++) {\n                this._encStats[this._encodings[i][1]][0] = 0;\n            }\n\n            for (i = 0; i < 4; i++) {\n                this._FBU.zlibs[i] = new TINF();\n                this._FBU.zlibs[i].init();\n            }\n        },\n\n        _print_stats: function () {\n            Util.Info(\"Encoding stats for this connection:\");\n            var i, s;\n            for (i = 0; i < this._encodings.length; i++) {\n                s = this._encStats[this._encodings[i][1]];\n                if (s[0] + s[1] > 0) {\n                    Util.Info(\"    \" + this._encodings[i][0] + \": \" + s[0] + \" rects\");\n                }\n            }\n\n            Util.Info(\"Encoding stats since page load:\");\n            for (i = 0; i < this._encodings.length; i++) {\n                s = this._encStats[this._encodings[i][1]];\n                Util.Info(\"    \" + this._encodings[i][0] + \": \" + s[1] + \" rects\");\n            }\n        },\n\n\n        /*\n         * Page states:\n         *   loaded       - page load, equivalent to disconnected\n         *   disconnected - idle state\n         *   connect      - starting to connect (to ProtocolVersion)\n         *   normal       - connected\n         *   disconnect   - starting to disconnect\n         *   failed       - abnormal disconnect\n         *   fatal        - failed to load page, or fatal error\n         *\n         * RFB protocol initialization states:\n         *   ProtocolVersion\n         *   Security\n         *   Authentication\n         *   password     - waiting for password, not part of RFB\n         *   SecurityResult\n         *   ClientInitialization - not triggered by server message\n         *   ServerInitialization (to normal)\n         */\n        _updateState: function (state, statusMsg) {\n            var oldstate = this._rfb_state;\n\n            if (state === oldstate) {\n                // Already here, ignore\n                Util.Debug(\"Already in state '\" + state + \"', ignoring\");\n            }\n\n            /*\n             * These are disconnected states. A previous connect may\n             * asynchronously cause a connection so make sure we are closed.\n             */\n            if (state in {'disconnected': 1, 'loaded': 1, 'connect': 1,\n                          'disconnect': 1, 'failed': 1, 'fatal': 1}) {\n\n                if (this._sendTimer) {\n                    clearInterval(this._sendTimer);\n                    this._sendTimer = null;\n                }\n\n                if (this._msgTimer) {\n                    clearInterval(this._msgTimer);\n                    this._msgTimer = null;\n                }\n\n                if (this._display && this._display.get_context()) {\n                    this._keyboard.ungrab();\n                    this._mouse.ungrab();\n                    this._display.defaultCursor();\n                    if (Util.get_logging() !== 'debug' || state === 'loaded') {\n                        // Show noVNC logo on load and when disconnected, unless in\n                        // debug mode\n                        this._display.clear();\n                    }\n                }\n\n                this._sock.close();\n            }\n\n            if (oldstate === 'fatal') {\n                Util.Error('Fatal error, cannot continue');\n            }\n\n            var cmsg = typeof(statusMsg) !== 'undefined' ? (\" Msg: \" + statusMsg) : \"\";\n            var fullmsg = \"New state '\" + state + \"', was '\" + oldstate + \"'.\" + cmsg;\n            if (state === 'failed' || state === 'fatal') {\n                Util.Error(cmsg);\n            } else {\n                Util.Warn(cmsg);\n            }\n\n            if (oldstate === 'failed' && state === 'disconnected') {\n                // do disconnect action, but stay in failed state\n                this._rfb_state = 'failed';\n            } else {\n                this._rfb_state = state;\n            }\n\n            if (this._disconnTimer && this._rfb_state !== 'disconnect') {\n                Util.Debug(\"Clearing disconnect timer\");\n                clearTimeout(this._disconnTimer);\n                this._disconnTimer = null;\n            }\n\n            switch (state) {\n                case 'normal':\n                    if (oldstate === 'disconnected' || oldstate === 'failed') {\n                        Util.Error(\"Invalid transition from 'disconnected' or 'failed' to 'normal'\");\n                    }\n                    break;\n\n                case 'connect':\n                    this._init_vars();\n                    this._connect();\n                    // WebSocket.onopen transitions to 'ProtocolVersion'\n                    break;\n\n                case 'disconnect':\n                    this._disconnTimer = setTimeout(function () {\n                        this._fail(\"Disconnect timeout\");\n                    }.bind(this), this._disconnectTimeout * 1000);\n\n                    this._print_stats();\n\n                    // WebSocket.onclose transitions to 'disconnected'\n                    break;\n\n                case 'failed':\n                    if (oldstate === 'disconnected') {\n                        Util.Error(\"Invalid transition from 'disconnected' to 'failed'\");\n                    } else if (oldstate === 'normal') {\n                        Util.Error(\"Error while connected.\");\n                    } else if (oldstate === 'init') {\n                        Util.Error(\"Error while initializing.\");\n                    }\n\n                    // Make sure we transition to disconnected\n                    setTimeout(function () {\n                        this._updateState('disconnected');\n                    }.bind(this), 50);\n\n                    break;\n\n                default:\n                    // No state change action to take\n            }\n\n            if (oldstate === 'failed' && state === 'disconnected') {\n                this._onUpdateState(this, state, oldstate);\n            } else {\n                this._onUpdateState(this, state, oldstate, statusMsg);\n            }\n        },\n\n        _fail: function (msg) {\n            this._updateState('failed', msg);\n            return false;\n        },\n\n        _handle_message: function () {\n            if (this._sock.rQlen() === 0) {\n                Util.Warn(\"handle_message called on an empty receive queue\");\n                return;\n            }\n\n            switch (this._rfb_state) {\n                case 'disconnected':\n                case 'failed':\n                    Util.Error(\"Got data while disconnected\");\n                    break;\n                case 'normal':\n                    if (this._normal_msg() && this._sock.rQlen() > 0) {\n                        // true means we can continue processing\n                        // Give other events a chance to run\n                        if (this._msgTimer === null) {\n                            Util.Debug(\"More data to process, creating timer\");\n                            this._msgTimer = setTimeout(function () {\n                                this._msgTimer = null;\n                                this._handle_message();\n                            }.bind(this), 10);\n                        } else {\n                            Util.Debug(\"More data to process, existing timer\");\n                        }\n                    }\n                    break;\n                default:\n                    this._init_msg();\n                    break;\n            }\n        },\n\n        _checkEvents: function () {\n            if (this._rfb_state === 'normal' && !this._viewportDragging && this._mouse_arr.length > 0) {\n                this._sock.send(this._mouse_arr);\n                this._mouse_arr = [];\n            }\n        },\n\n        _handleKeyPress: function (keysym, down) {\n            if (this._view_only) { return; } // View only, skip keyboard, events\n            this._sock.send(RFB.messages.keyEvent(keysym, down));\n        },\n\n        _handleMouseButton: function (x, y, down, bmask) {\n            if (down) {\n                this._mouse_buttonMask |= bmask;\n            } else {\n                this._mouse_buttonMask ^= bmask;\n            }\n\n            if (this._viewportDrag) {\n                if (down && !this._viewportDragging) {\n                    this._viewportDragging = true;\n                    this._viewportDragPos = {'x': x, 'y': y};\n\n                    // Skip sending mouse events\n                    return;\n                } else {\n                    this._viewportDragging = false;\n                }\n            }\n\n            if (this._view_only) { return; } // View only, skip mouse events\n\n            this._mouse_arr = this._mouse_arr.concat(\n                    RFB.messages.pointerEvent(this._display.absX(x), this._display.absY(y), this._mouse_buttonMask));\n            this._sock.send(this._mouse_arr);\n            this._mouse_arr = [];\n        },\n\n        _handleMouseMove: function (x, y) {\n            if (this._viewportDragging) {\n                var deltaX = this._viewportDragPos.x - x;\n                var deltaY = this._viewportDragPos.y - y;\n                this._viewportDragPos = {'x': x, 'y': y};\n\n                this._display.viewportChange(deltaX, deltaY);\n\n                // Skip sending mouse events\n                return;\n            }\n\n            if (this._view_only) { return; } // View only, skip mouse events\n\n            this._mouse_arr = this._mouse_arr.concat(\n                    RFB.messages.pointerEvent(this._display.absX(x), this._display.absY(y), this._mouse_buttonMask));\n\n            this._checkEvents();\n        },\n\n        // Message Handlers\n\n        _negotiate_protocol_version: function () {\n            if (this._sock.rQlen() < 12) {\n                return this._fail(\"Incomplete protocol version\");\n            }\n\n            var sversion = this._sock.rQshiftStr(12).substr(4, 7);\n            Util.Info(\"Server ProtocolVersion: \" + sversion);\n            var is_repeater = 0;\n            switch (sversion) {\n                case \"000.000\":  // UltraVNC repeater\n                    is_repeater = 1;\n                    break;\n                case \"003.003\":\n                case \"003.006\":  // UltraVNC\n                case \"003.889\":  // Apple Remote Desktop\n                    this._rfb_version = 3.3;\n                    break;\n                case \"003.007\":\n                    this._rfb_version = 3.7;\n                    break;\n                case \"003.008\":\n                case \"004.000\":  // Intel AMT KVM\n                case \"004.001\":  // RealVNC 4.6\n                    this._rfb_version = 3.8;\n                    break;\n                default:\n                    return this._fail(\"Invalid server version \" + sversion);\n            }\n\n            if (is_repeater) {\n                var repeaterID = this._repeaterID;\n                while (repeaterID.length < 250) {\n                    repeaterID += \"\\0\";\n                }\n                this._sock.send_string(repeaterID);\n                return true;\n            }\n\n            if (this._rfb_version > this._rfb_max_version) {\n                this._rfb_version = this._rfb_max_version;\n            }\n\n            // Send updates either at a rate of 1 update per 50ms, or\n            // whatever slower rate the network can handle\n            this._sendTimer = setInterval(this._sock.flush.bind(this._sock), 50);\n\n            var cversion = \"00\" + parseInt(this._rfb_version, 10) +\n                           \".00\" + ((this._rfb_version * 10) % 10);\n            this._sock.send_string(\"RFB \" + cversion + \"\\n\");\n            this._updateState('Security', 'Sent ProtocolVersion: ' + cversion);\n        },\n\n        _negotiate_security: function () {\n            if (this._rfb_version >= 3.7) {\n                // Server sends supported list, client decides\n                var num_types = this._sock.rQshift8();\n                if (this._sock.rQwait(\"security type\", num_types, 1)) { return false; }\n\n                if (num_types === 0) {\n                    var strlen = this._sock.rQshift32();\n                    var reason = this._sock.rQshiftStr(strlen);\n                    return this._fail(\"Security failure: \" + reason);\n                }\n\n                this._rfb_auth_scheme = 0;\n                var types = this._sock.rQshiftBytes(num_types);\n                Util.Debug(\"Server security types: \" + types);\n                for (var i = 0; i < types.length; i++) {\n                    if (types[i] > this._rfb_auth_scheme && (types[i] <= 16 || types[i] == 22)) {\n                        this._rfb_auth_scheme = types[i];\n                    }\n                }\n\n                if (this._rfb_auth_scheme === 0) {\n                    return this._fail(\"Unsupported security types: \" + types);\n                }\n\n                this._sock.send([this._rfb_auth_scheme]);\n            } else {\n                // Server decides\n                if (this._sock.rQwait(\"security scheme\", 4)) { return false; }\n                this._rfb_auth_scheme = this._sock.rQshift32();\n            }\n\n            this._updateState('Authentication', 'Authenticating using scheme: ' + this._rfb_auth_scheme);\n            return this._init_msg(); // jump to authentication\n        },\n\n        // authentication\n        _negotiate_xvp_auth: function () {\n            var xvp_sep = this._xvp_password_sep;\n            var xvp_auth = this._rfb_password.split(xvp_sep);\n            if (xvp_auth.length < 3) {\n                this._updateState('password', 'XVP credentials required (user' + xvp_sep +\n                                  'target' + xvp_sep + 'password) -- got only ' + this._rfb_password);\n                this._onPasswordRequired(this);\n                return false;\n            }\n\n            var xvp_auth_str = String.fromCharCode(xvp_auth[0].length) +\n                               String.fromCharCode(xvp_auth[1].length) +\n                               xvp_auth[0] +\n                               xvp_auth[1];\n            this._sock.send_string(xvp_auth_str);\n            this._rfb_password = xvp_auth.slice(2).join(xvp_sep);\n            this._rfb_auth_scheme = 2;\n            return this._negotiate_authentication();\n        },\n\n        _negotiate_std_vnc_auth: function () {\n            if (this._rfb_password.length === 0) {\n                // Notify via both callbacks since it's kind of\n                // an RFB state change and a UI interface issue\n                this._updateState('password', \"Password Required\");\n                this._onPasswordRequired(this);\n            }\n\n            if (this._sock.rQwait(\"auth challenge\", 16)) { return false; }\n\n            var challenge = this._sock.rQshiftBytes(16);\n            var response = RFB.genDES(this._rfb_password, challenge);\n            this._sock.send(response);\n            this._updateState(\"SecurityResult\");\n            return true;\n        },\n\n        _negotiate_tight_tunnels: function (numTunnels) {\n            var clientSupportedTunnelTypes = {\n                0: { vendor: 'TGHT', signature: 'NOTUNNEL' }\n            };\n            var serverSupportedTunnelTypes = {};\n            // receive tunnel capabilities\n            for (var i = 0; i < numTunnels; i++) {\n                var cap_code = this._sock.rQshift32();\n                var cap_vendor = this._sock.rQshiftStr(4);\n                var cap_signature = this._sock.rQshiftStr(8);\n                serverSupportedTunnelTypes[cap_code] = { vendor: cap_vendor, signature: cap_signature };\n            }\n\n            // choose the notunnel type\n            if (serverSupportedTunnelTypes[0]) {\n                if (serverSupportedTunnelTypes[0].vendor != clientSupportedTunnelTypes[0].vendor ||\n                    serverSupportedTunnelTypes[0].signature != clientSupportedTunnelTypes[0].signature) {\n                    return this._fail(\"Client's tunnel type had the incorrect vendor or signature\");\n                }\n                this._sock.send([0, 0, 0, 0]);  // use NOTUNNEL\n                return false; // wait until we receive the sub auth count to continue\n            } else {\n                return this._fail(\"Server wanted tunnels, but doesn't support the notunnel type\");\n            }\n        },\n\n        _negotiate_tight_auth: function () {\n            if (!this._rfb_tightvnc) {  // first pass, do the tunnel negotiation\n                if (this._sock.rQwait(\"num tunnels\", 4)) { return false; }\n                var numTunnels = this._sock.rQshift32();\n                if (numTunnels > 0 && this._sock.rQwait(\"tunnel capabilities\", 16 * numTunnels, 4)) { return false; }\n\n                this._rfb_tightvnc = true;\n\n                if (numTunnels > 0) {\n                    this._negotiate_tight_tunnels(numTunnels);\n                    return false;  // wait until we receive the sub auth to continue\n                }\n            }\n\n            // second pass, do the sub-auth negotiation\n            if (this._sock.rQwait(\"sub auth count\", 4)) { return false; }\n            var subAuthCount = this._sock.rQshift32();\n            if (this._sock.rQwait(\"sub auth capabilities\", 16 * subAuthCount, 4)) { return false; }\n\n            var clientSupportedTypes = {\n                'STDVNOAUTH__': 1,\n                'STDVVNCAUTH_': 2\n            };\n\n            var serverSupportedTypes = [];\n\n            for (var i = 0; i < subAuthCount; i++) {\n                var capNum = this._sock.rQshift32();\n                var capabilities = this._sock.rQshiftStr(12);\n                serverSupportedTypes.push(capabilities);\n            }\n\n            for (var authType in clientSupportedTypes) {\n                if (serverSupportedTypes.indexOf(authType) != -1) {\n                    this._sock.send([0, 0, 0, clientSupportedTypes[authType]]);\n\n                    switch (authType) {\n                        case 'STDVNOAUTH__':  // no auth\n                            this._updateState('SecurityResult');\n                            return true;\n                        case 'STDVVNCAUTH_': // VNC auth\n                            this._rfb_auth_scheme = 2;\n                            return this._init_msg();\n                        default:\n                            return this._fail(\"Unsupported tiny auth scheme: \" + authType);\n                    }\n                }\n            }\n\n            this._fail(\"No supported sub-auth types!\");\n        },\n\n        _negotiate_authentication: function () {\n            switch (this._rfb_auth_scheme) {\n                case 0:  // connection failed\n                    if (this._sock.rQwait(\"auth reason\", 4)) { return false; }\n                    var strlen = this._sock.rQshift32();\n                    var reason = this._sock.rQshiftStr(strlen);\n                    return this._fail(\"Auth failure: \" + reason);\n\n                case 1:  // no auth\n                    if (this._rfb_version >= 3.8) {\n                        this._updateState('SecurityResult');\n                        return true;\n                    }\n                    this._updateState('ClientInitialisation', \"No auth required\");\n                    return this._init_msg();\n\n                case 22:  // XVP auth\n                    return this._negotiate_xvp_auth();\n\n                case 2:  // VNC authentication\n                    return this._negotiate_std_vnc_auth();\n\n                case 16:  // TightVNC Security Type\n                    return this._negotiate_tight_auth();\n\n                default:\n                    return this._fail(\"Unsupported auth scheme: \" + this._rfb_auth_scheme);\n            }\n        },\n\n        _handle_security_result: function () {\n            if (this._sock.rQwait('VNC auth response ', 4)) { return false; }\n            switch (this._sock.rQshift32()) {\n                case 0:  // OK\n                    this._updateState('ClientInitialisation', 'Authentication OK');\n                    return this._init_msg();\n                case 1:  // failed\n                    if (this._rfb_version >= 3.8) {\n                        var length = this._sock.rQshift32();\n                        if (this._sock.rQwait(\"SecurityResult reason\", length, 8)) { return false; }\n                        var reason = this._sock.rQshiftStr(length);\n                        return this._fail(reason);\n                    } else {\n                        return this._fail(\"Authentication failure\");\n                    }\n                    return false;\n                case 2:\n                    return this._fail(\"Too many auth attempts\");\n            }\n        },\n\n        _negotiate_server_init: function () {\n            if (this._sock.rQwait(\"server initialization\", 24)) { return false; }\n\n            /* Screen size */\n            this._fb_width  = this._sock.rQshift16();\n            this._fb_height = this._sock.rQshift16();\n\n            /* PIXEL_FORMAT */\n            var bpp         = this._sock.rQshift8();\n            var depth       = this._sock.rQshift8();\n            var big_endian  = this._sock.rQshift8();\n            var true_color  = this._sock.rQshift8();\n\n            var red_max     = this._sock.rQshift16();\n            var green_max   = this._sock.rQshift16();\n            var blue_max    = this._sock.rQshift16();\n            var red_shift   = this._sock.rQshift8();\n            var green_shift = this._sock.rQshift8();\n            var blue_shift  = this._sock.rQshift8();\n            this._sock.rQskipBytes(3);  // padding\n\n            // NB(directxman12): we don't want to call any callbacks or print messages until\n            //                   *after* we're past the point where we could backtrack\n\n            /* Connection name/title */\n            var name_length = this._sock.rQshift32();\n            if (this._sock.rQwait('server init name', name_length, 24)) { return false; }\n            this._fb_name = Util.decodeUTF8(this._sock.rQshiftStr(name_length));\n\n            if (this._rfb_tightvnc) {\n                if (this._sock.rQwait('TightVNC extended server init header', 8, 24 + name_length)) { return false; }\n                // In TightVNC mode, ServerInit message is extended\n                var numServerMessages = this._sock.rQshift16();\n                var numClientMessages = this._sock.rQshift16();\n                var numEncodings = this._sock.rQshift16();\n                this._sock.rQskipBytes(2);  // padding\n\n                var totalMessagesLength = (numServerMessages + numClientMessages + numEncodings) * 16;\n                if (this._sock.rQwait('TightVNC extended server init header', totalMessagesLength, 32 + name_length)) { return false; }\n\n                var i;\n                for (i = 0; i < numServerMessages; i++) {\n                    var srvMsg = this._sock.rQshiftStr(16);\n                }\n\n                for (i = 0; i < numClientMessages; i++) {\n                    var clientMsg = this._sock.rQshiftStr(16);\n                }\n\n                for (i = 0; i < numEncodings; i++) {\n                    var encoding = this._sock.rQshiftStr(16);\n                }\n            }\n\n            // NB(directxman12): these are down here so that we don't run them multiple times\n            //                   if we backtrack\n            Util.Info(\"Screen: \" + this._fb_width + \"x\" + this._fb_height +\n                      \", bpp: \" + bpp + \", depth: \" + depth +\n                      \", big_endian: \" + big_endian +\n                      \", true_color: \" + true_color +\n                      \", red_max: \" + red_max +\n                      \", green_max: \" + green_max +\n                      \", blue_max: \" + blue_max +\n                      \", red_shift: \" + red_shift +\n                      \", green_shift: \" + green_shift +\n                      \", blue_shift: \" + blue_shift);\n\n            if (big_endian !== 0) {\n                Util.Warn(\"Server native endian is not little endian\");\n            }\n\n            if (red_shift !== 16) {\n                Util.Warn(\"Server native red-shift is not 16\");\n            }\n\n            if (blue_shift !== 0) {\n                Util.Warn(\"Server native blue-shift is not 0\");\n            }\n\n            // we're past the point where we could backtrack, so it's safe to call this\n            this._onDesktopName(this, this._fb_name);\n\n            if (this._true_color && this._fb_name === \"Intel(r) AMT KVM\") {\n                Util.Warn(\"Intel AMT KVM only supports 8/16 bit depths.  Disabling true color\");\n                this._true_color = false;\n            }\n\n            this._display.set_true_color(this._true_color);\n            this._onFBResize(this, this._fb_width, this._fb_height);\n            this._display.resize(this._fb_width, this._fb_height);\n            this._keyboard.grab();\n            this._mouse.grab();\n\n            if (this._true_color) {\n                this._fb_Bpp = 4;\n                this._fb_depth = 3;\n            } else {\n                this._fb_Bpp = 1;\n                this._fb_depth = 1;\n            }\n\n            var response = RFB.messages.pixelFormat(this._fb_Bpp, this._fb_depth, this._true_color);\n            response = response.concat(\n                            RFB.messages.clientEncodings(this._encodings, this._local_cursor, this._true_color));\n            response = response.concat(\n                            RFB.messages.fbUpdateRequests(this._display.getCleanDirtyReset(),\n                                                          this._fb_width, this._fb_height));\n\n            this._timing.fbu_rt_start = (new Date()).getTime();\n            this._timing.pixels = 0;\n            this._sock.send(response);\n\n            this._checkEvents();\n\n            if (this._encrypt) {\n                this._updateState('normal', 'Connected (encrypted) to: ' + this._fb_name);\n            } else {\n                this._updateState('normal', 'Connected (unencrypted) to: ' + this._fb_name);\n            }\n        },\n\n        _init_msg: function () {\n            switch (this._rfb_state) {\n                case 'ProtocolVersion':\n                    return this._negotiate_protocol_version();\n\n                case 'Security':\n                    return this._negotiate_security();\n\n                case 'Authentication':\n                    return this._negotiate_authentication();\n\n                case 'SecurityResult':\n                    return this._handle_security_result();\n\n                case 'ClientInitialisation':\n                    this._sock.send([this._shared ? 1 : 0]); // ClientInitialisation\n                    this._updateState('ServerInitialisation', \"Authentication OK\");\n                    return true;\n\n                case 'ServerInitialisation':\n                    return this._negotiate_server_init();\n            }\n        },\n\n        _handle_set_colour_map_msg: function () {\n            Util.Debug(\"SetColorMapEntries\");\n            this._sock.rQskip8();  // Padding\n\n            var first_colour = this._sock.rQshift16();\n            var num_colours = this._sock.rQshift16();\n            if (this._sock.rQwait('SetColorMapEntries', num_colours * 6, 6)) { return false; }\n\n            for (var c = 0; c < num_colours; c++) {\n                var red = parseInt(this._sock.rQshift16() / 256, 10);\n                var green = parseInt(this._sock.rQshift16() / 256, 10);\n                var blue = parseInt(this._sock.rQshift16() / 256, 10);\n                this._display.set_colourMap([blue, green, red], first_colour + c);\n            }\n            Util.Debug(\"colourMap: \" + this._display.get_colourMap());\n            Util.Info(\"Registered \" + num_colours + \" colourMap entries\");\n\n            return true;\n        },\n\n        _handle_server_cut_text: function () {\n            Util.Debug(\"ServerCutText\");\n            if (this._sock.rQwait(\"ServerCutText header\", 7, 1)) { return false; }\n            this._sock.rQskipBytes(3);  // Padding\n            var length = this._sock.rQshift32();\n            if (this._sock.rQwait(\"ServerCutText\", length, 8)) { return false; }\n\n            var text = this._sock.rQshiftStr(length);\n            this._onClipboard(this, text);\n\n            return true;\n        },\n\n        _handle_xvp_msg: function () {\n            if (this._sock.rQwait(\"XVP version and message\", 3, 1)) { return false; }\n            this._sock.rQskip8();  // Padding\n            var xvp_ver = this._sock.rQshift8();\n            var xvp_msg = this._sock.rQshift8();\n\n            switch (xvp_msg) {\n                case 0:  // XVP_FAIL\n                    this._updateState(this._rfb_state, \"Operation Failed\");\n                    break;\n                case 1:  // XVP_INIT\n                    this._rfb_xvp_ver = xvp_ver;\n                    Util.Info(\"XVP extensions enabled (version \" + this._rfb_xvp_ver + \")\");\n                    this._onXvpInit(this._rfb_xvp_ver);\n                    break;\n                default:\n                    this._fail(\"Disconnected: illegal server XVP message \" + xvp_msg);\n                    break;\n            }\n\n            return true;\n        },\n\n        _normal_msg: function () {\n            var msg_type;\n\n            if (this._FBU.rects > 0) {\n                msg_type = 0;\n            } else {\n                msg_type = this._sock.rQshift8();\n            }\n\n            switch (msg_type) {\n                case 0:  // FramebufferUpdate\n                    var ret = this._framebufferUpdate();\n                    if (ret) {\n                        this._sock.send(RFB.messages.fbUpdateRequests(this._display.getCleanDirtyReset(),\n                                                                      this._fb_width, this._fb_height));\n                    }\n                    return ret;\n\n                case 1:  // SetColorMapEntries\n                    return this._handle_set_colour_map_msg();\n\n                case 2:  // Bell\n                    Util.Debug(\"Bell\");\n                    this._onBell(this);\n                    return true;\n\n                case 3:  // ServerCutText\n                    return this._handle_server_cut_text();\n\n                case 250:  // XVP\n                    return this._handle_xvp_msg();\n\n                default:\n                    this._fail(\"Disconnected: illegal server message type \" + msg_type);\n                    Util.Debug(\"sock.rQslice(0, 30): \" + this._sock.rQslice(0, 30));\n                    return true;\n            }\n        },\n\n        _framebufferUpdate: function () {\n            var ret = true;\n            var now;\n\n            if (this._FBU.rects === 0) {\n                if (this._sock.rQwait(\"FBU header\", 3, 1)) { return false; }\n                this._sock.rQskip8();  // Padding\n                this._FBU.rects = this._sock.rQshift16();\n                this._FBU.bytes = 0;\n                this._timing.cur_fbu = 0;\n                if (this._timing.fbu_rt_start > 0) {\n                    now = (new Date()).getTime();\n                    Util.Info(\"First FBU latency: \" + (now - this._timing.fbu_rt_start));\n                }\n            }\n\n            while (this._FBU.rects > 0) {\n                if (this._rfb_state !== \"normal\") { return false; }\n\n                if (this._sock.rQwait(\"FBU\", this._FBU.bytes)) { return false; }\n                if (this._FBU.bytes === 0) {\n                    if (this._sock.rQwait(\"rect header\", 12)) { return false; }\n                    /* New FramebufferUpdate */\n\n                    var hdr = this._sock.rQshiftBytes(12);\n                    this._FBU.x        = (hdr[0] << 8) + hdr[1];\n                    this._FBU.y        = (hdr[2] << 8) + hdr[3];\n                    this._FBU.width    = (hdr[4] << 8) + hdr[5];\n                    this._FBU.height   = (hdr[6] << 8) + hdr[7];\n                    this._FBU.encoding = parseInt((hdr[8] << 24) + (hdr[9] << 16) +\n                                                  (hdr[10] << 8) + hdr[11], 10);\n\n                    this._onFBUReceive(this,\n                        {'x': this._FBU.x, 'y': this._FBU.y,\n                         'width': this._FBU.width, 'height': this._FBU.height,\n                         'encoding': this._FBU.encoding,\n                         'encodingName': this._encNames[this._FBU.encoding]});\n\n                    if (!this._encNames[this._FBU.encoding]) {\n                        this._fail(\"Disconnected: unsupported encoding \" +\n                                   this._FBU.encoding);\n                        return false;\n                    }\n                }\n\n                this._timing.last_fbu = (new Date()).getTime();\n\n                ret = this._encHandlers[this._FBU.encoding]();\n\n                now = (new Date()).getTime();\n                this._timing.cur_fbu += (now - this._timing.last_fbu);\n\n                if (ret) {\n                    this._encStats[this._FBU.encoding][0]++;\n                    this._encStats[this._FBU.encoding][1]++;\n                    this._timing.pixels += this._FBU.width * this._FBU.height;\n                }\n\n                if (this._timing.pixels >= (this._fb_width * this._fb_height)) {\n                    if ((this._FBU.width === this._fb_width && this._FBU.height === this._fb_height) ||\n                        this._timing.fbu_rt_start > 0) {\n                        this._timing.full_fbu_total += this._timing.cur_fbu;\n                        this._timing.full_fbu_cnt++;\n                        Util.Info(\"Timing of full FBU, curr: \" +\n                                  this._timing.cur_fbu + \", total: \" +\n                                  this._timing.full_fbu_total + \", cnt: \" +\n                                  this._timing.full_fbu_cnt + \", avg: \" +\n                                  (this._timing.full_fbu_total / this._timing.full_fbu_cnt));\n                    }\n\n                    if (this._timing.fbu_rt_start > 0) {\n                        var fbu_rt_diff = now - this._timing.fbu_rt_start;\n                        this._timing.fbu_rt_total += fbu_rt_diff;\n                        this._timing.fbu_rt_cnt++;\n                        Util.Info(\"full FBU round-trip, cur: \" +\n                                  fbu_rt_diff + \", total: \" +\n                                  this._timing.fbu_rt_total + \", cnt: \" +\n                                  this._timing.fbu_rt_cnt + \", avg: \" +\n                                  (this._timing.fbu_rt_total / this._timing.fbu_rt_cnt));\n                        this._timing.fbu_rt_start = 0;\n                    }\n                }\n\n                if (!ret) { return ret; }  // need more data\n            }\n\n            this._onFBUComplete(this,\n                    {'x': this._FBU.x, 'y': this._FBU.y,\n                     'width': this._FBU.width, 'height': this._FBU.height,\n                     'encoding': this._FBU.encoding,\n                     'encodingName': this._encNames[this._FBU.encoding]});\n\n            return true;  // We finished this FBU\n        },\n    };\n\n    Util.make_properties(RFB, [\n        ['target', 'wo', 'dom'],                // VNC display rendering Canvas object\n        ['focusContainer', 'wo', 'dom'],        // DOM element that captures keyboard input\n        ['encrypt', 'rw', 'bool'],              // Use TLS/SSL/wss encryption\n        ['true_color', 'rw', 'bool'],           // Request true color pixel data\n        ['local_cursor', 'rw', 'bool'],         // Request locally rendered cursor\n        ['shared', 'rw', 'bool'],               // Request shared mode\n        ['view_only', 'rw', 'bool'],            // Disable client mouse/keyboard\n        ['xvp_password_sep', 'rw', 'str'],      // Separator for XVP password fields\n        ['disconnectTimeout', 'rw', 'int'],     // Time (s) to wait for disconnection\n        ['wsProtocols', 'rw', 'arr'],           // Protocols to use in the WebSocket connection\n        ['repeaterID', 'rw', 'str'],            // [UltraVNC] RepeaterID to connect to\n        ['viewportDrag', 'rw', 'bool'],         // Move the viewport on mouse drags\n\n        // Callback functions\n        ['onUpdateState', 'rw', 'func'],        // onUpdateState(rfb, state, oldstate, statusMsg): RFB state update/change\n        ['onPasswordRequired', 'rw', 'func'],   // onPasswordRequired(rfb): VNC password is required\n        ['onClipboard', 'rw', 'func'],          // onClipboard(rfb, text): RFB clipboard contents received\n        ['onBell', 'rw', 'func'],               // onBell(rfb): RFB Bell message received\n        ['onFBUReceive', 'rw', 'func'],         // onFBUReceive(rfb, fbu): RFB FBU received but not yet processed\n        ['onFBUComplete', 'rw', 'func'],        // onFBUComplete(rfb, fbu): RFB FBU received and processed\n        ['onFBResize', 'rw', 'func'],           // onFBResize(rfb, width, height): frame buffer resized\n        ['onDesktopName', 'rw', 'func'],        // onDesktopName(rfb, name): desktop name received\n        ['onXvpInit', 'rw', 'func'],            // onXvpInit(version): XVP extensions active for this connection\n    ]);\n\n    RFB.prototype.set_local_cursor = function (cursor) {\n        if (!cursor || (cursor in {'0': 1, 'no': 1, 'false': 1})) {\n            this._local_cursor = false;\n        } else {\n            if (this._display.get_cursor_uri()) {\n                this._local_cursor = true;\n            } else {\n                Util.Warn(\"Browser does not support local cursor\");\n            }\n        }\n    };\n\n    RFB.prototype.get_display = function () { return this._display; };\n    RFB.prototype.get_keyboard = function () { return this._keyboard; };\n    RFB.prototype.get_mouse = function () { return this._mouse; };\n\n    // Class Methods\n    RFB.messages = {\n        keyEvent: function (keysym, down) {\n            var arr = [4];\n            arr.push8(down);\n            arr.push16(0);\n            arr.push32(keysym);\n            return arr;\n        },\n\n        pointerEvent: function (x, y, mask) {\n            var arr = [5];  // msg-type\n            arr.push8(mask);\n            arr.push16(x);\n            arr.push16(y);\n            return arr;\n        },\n\n        // TODO(directxman12): make this unicode compatible?\n        clientCutText: function (text) {\n            var arr = [6];  // msg-type\n            arr.push8(0);   // padding\n            arr.push8(0);   // padding\n            arr.push8(0);   // padding\n            arr.push32(text.length);\n            var n = text.length;\n            for (var i = 0; i < n; i++) {\n                arr.push(text.charCodeAt(i));\n            }\n\n            return arr;\n        },\n\n        pixelFormat: function (bpp, depth, true_color) {\n            var arr = [0]; // msg-type\n            arr.push8(0);  // padding\n            arr.push8(0);  // padding\n            arr.push8(0);  // padding\n\n            arr.push8(bpp * 8); // bits-per-pixel\n            arr.push8(depth * 8); // depth\n            arr.push8(0);  // little-endian\n            arr.push8(true_color ? 1 : 0);  // true-color\n\n            arr.push16(255);  // red-max\n            arr.push16(255);  // green-max\n            arr.push16(255);  // blue-max\n            arr.push8(16);    // red-shift\n            arr.push8(8);     // green-shift\n            arr.push8(0);     // blue-shift\n\n            arr.push8(0);     // padding\n            arr.push8(0);     // padding\n            arr.push8(0);     // padding\n            return arr;\n        },\n\n        clientEncodings: function (encodings, local_cursor, true_color) {\n            var i, encList = [];\n\n            for (i = 0; i < encodings.length; i++) {\n                if (encodings[i][0] === \"Cursor\" && !local_cursor) {\n                    Util.Debug(\"Skipping Cursor pseudo-encoding\");\n                } else if (encodings[i][0] === \"TIGHT\" && !true_color) {\n                    // TODO: remove this when we have tight+non-true-color\n                    Util.Warn(\"Skipping tight as it is only supported with true color\");\n                } else {\n                    encList.push(encodings[i][1]);\n                }\n            }\n\n            var arr = [2];  // msg-type\n            arr.push8(0);   // padding\n\n            arr.push16(encList.length);  // encoding count\n            for (i = 0; i < encList.length; i++) {\n                arr.push32(encList[i]);\n            }\n\n            return arr;\n        },\n\n        fbUpdateRequests: function (cleanDirty, fb_width, fb_height) {\n            var arr = [];\n\n            var cb = cleanDirty.cleanBox;\n            var w, h;\n            if (cb.w > 0 && cb.h > 0) {\n                w = typeof cb.w === \"undefined\" ? fb_width : cb.w;\n                h = typeof cb.h === \"undefined\" ? fb_height : cb.h;\n                // Request incremental for clean box\n                arr = arr.concat(RFB.messages.fbUpdateRequest(1, cb.x, cb.y, w, h));\n            }\n\n            for (var i = 0; i < cleanDirty.dirtyBoxes.length; i++) {\n                var db = cleanDirty.dirtyBoxes[i];\n                // Force all (non-incremental) for dirty box\n                w = typeof db.w === \"undefined\" ? fb_width : db.w;\n                h = typeof db.h === \"undefined\" ? fb_height : db.h;\n                arr = arr.concat(RFB.messages.fbUpdateRequest(0, db.x, db.y, w, h));\n            }\n\n            return arr;\n        },\n\n        fbUpdateRequest: function (incremental, x, y, w, h) {\n            if (typeof(x) === \"undefined\") { x = 0; }\n            if (typeof(y) === \"undefined\") { y = 0; }\n\n            var arr = [3];  // msg-type\n            arr.push8(incremental);\n            arr.push16(x);\n            arr.push16(y);\n            arr.push16(w);\n            arr.push16(h);\n\n            return arr;\n        }\n    };\n\n    RFB.genDES = function (password, challenge) {\n        var passwd = [];\n        for (var i = 0; i < password.length; i++) {\n            passwd.push(password.charCodeAt(i));\n        }\n        return (new DES(passwd)).encrypt(challenge);\n    };\n\n    RFB.extract_data_uri = function (arr) {\n        return \";base64,\" + Base64.encode(arr);\n    };\n\n    RFB.encodingHandlers = {\n        RAW: function () {\n            if (this._FBU.lines === 0) {\n                this._FBU.lines = this._FBU.height;\n            }\n\n            this._FBU.bytes = this._FBU.width * this._fb_Bpp;  // at least a line\n            if (this._sock.rQwait(\"RAW\", this._FBU.bytes)) { return false; }\n            var cur_y = this._FBU.y + (this._FBU.height - this._FBU.lines);\n            var curr_height = Math.min(this._FBU.lines,\n                                       Math.floor(this._sock.rQlen() / (this._FBU.width * this._fb_Bpp)));\n            this._display.blitImage(this._FBU.x, cur_y, this._FBU.width,\n                                    curr_height, this._sock.get_rQ(),\n                                    this._sock.get_rQi());\n            this._sock.rQskipBytes(this._FBU.width * curr_height * this._fb_Bpp);\n            this._FBU.lines -= curr_height;\n\n            if (this._FBU.lines > 0) {\n                this._FBU.bytes = this._FBU.width * this._fb_Bpp;  // At least another line\n            } else {\n                this._FBU.rects--;\n                this._FBU.bytes = 0;\n            }\n\n            return true;\n        },\n\n        COPYRECT: function () {\n            this._FBU.bytes = 4;\n            if (this._sock.rQwait(\"COPYRECT\", 4)) { return false; }\n            this._display.renderQ_push({\n                'type': 'copy',\n                'old_x': this._sock.rQshift16(),\n                'old_y': this._sock.rQshift16(),\n                'x': this._FBU.x,\n                'y': this._FBU.y,\n                'width': this._FBU.width,\n                'height': this._FBU.height\n            });\n            this._FBU.rects--;\n            this._FBU.bytes = 0;\n            return true;\n        },\n\n        RRE: function () {\n            var color;\n            if (this._FBU.subrects === 0) {\n                this._FBU.bytes = 4 + this._fb_Bpp;\n                if (this._sock.rQwait(\"RRE\", 4 + this._fb_Bpp)) { return false; }\n                this._FBU.subrects = this._sock.rQshift32();\n                color = this._sock.rQshiftBytes(this._fb_Bpp);  // Background\n                this._display.fillRect(this._FBU.x, this._FBU.y, this._FBU.width, this._FBU.height, color);\n            }\n\n            while (this._FBU.subrects > 0 && this._sock.rQlen() >= (this._fb_Bpp + 8)) {\n                color = this._sock.rQshiftBytes(this._fb_Bpp);\n                var x = this._sock.rQshift16();\n                var y = this._sock.rQshift16();\n                var width = this._sock.rQshift16();\n                var height = this._sock.rQshift16();\n                this._display.fillRect(this._FBU.x + x, this._FBU.y + y, width, height, color);\n                this._FBU.subrects--;\n            }\n\n            if (this._FBU.subrects > 0) {\n                var chunk = Math.min(this._rre_chunk_sz, this._FBU.subrects);\n                this._FBU.bytes = (this._fb_Bpp + 8) * chunk;\n            } else {\n                this._FBU.rects--;\n                this._FBU.bytes = 0;\n            }\n\n            return true;\n        },\n\n        HEXTILE: function () {\n            var rQ = this._sock.get_rQ();\n            var rQi = this._sock.get_rQi();\n\n            if (this._FBU.tiles === 0) {\n                this._FBU.tiles_x = Math.ceil(this._FBU.width / 16);\n                this._FBU.tiles_y = Math.ceil(this._FBU.height / 16);\n                this._FBU.total_tiles = this._FBU.tiles_x * this._FBU.tiles_y;\n                this._FBU.tiles = this._FBU.total_tiles;\n            }\n\n            while (this._FBU.tiles > 0) {\n                this._FBU.bytes = 1;\n                if (this._sock.rQwait(\"HEXTILE subencoding\", this._FBU.bytes)) { return false; }\n                var subencoding = rQ[rQi];  // Peek\n                if (subencoding > 30) {  // Raw\n                    this._fail(\"Disconnected: illegal hextile subencoding \" + subencoding);\n                    return false;\n                }\n\n                var subrects = 0;\n                var curr_tile = this._FBU.total_tiles - this._FBU.tiles;\n                var tile_x = curr_tile % this._FBU.tiles_x;\n                var tile_y = Math.floor(curr_tile / this._FBU.tiles_x);\n                var x = this._FBU.x + tile_x * 16;\n                var y = this._FBU.y + tile_y * 16;\n                var w = Math.min(16, (this._FBU.x + this._FBU.width) - x);\n                var h = Math.min(16, (this._FBU.y + this._FBU.height) - y);\n\n                // Figure out how much we are expecting\n                if (subencoding & 0x01) {  // Raw\n                    this._FBU.bytes += w * h * this._fb_Bpp;\n                } else {\n                    if (subencoding & 0x02) {  // Background\n                        this._FBU.bytes += this._fb_Bpp;\n                    }\n                    if (subencoding & 0x04) {  // Foreground\n                        this._FBU.bytes += this._fb_Bpp;\n                    }\n                    if (subencoding & 0x08) {  // AnySubrects\n                        this._FBU.bytes++;  // Since we aren't shifting it off\n                        if (this._sock.rQwait(\"hextile subrects header\", this._FBU.bytes)) { return false; }\n                        subrects = rQ[rQi + this._FBU.bytes - 1];  // Peek\n                        if (subencoding & 0x10) {  // SubrectsColoured\n                            this._FBU.bytes += subrects * (this._fb_Bpp + 2);\n                        } else {\n                            this._FBU.bytes += subrects * 2;\n                        }\n                    }\n                }\n\n                if (this._sock.rQwait(\"hextile\", this._FBU.bytes)) { return false; }\n\n                // We know the encoding and have a whole tile\n                this._FBU.subencoding = rQ[rQi];\n                rQi++;\n                if (this._FBU.subencoding === 0) {\n                    if (this._FBU.lastsubencoding & 0x01) {\n                        // Weird: ignore blanks are RAW\n                        Util.Debug(\"     Ignoring blank after RAW\");\n                    } else {\n                        this._display.fillRect(x, y, w, h, this._FBU.background);\n                    }\n                } else if (this._FBU.subencoding & 0x01) {  // Raw\n                    this._display.blitImage(x, y, w, h, rQ, rQi);\n                    rQi += this._FBU.bytes - 1;\n                } else {\n                    if (this._FBU.subencoding & 0x02) {  // Background\n                        this._FBU.background = rQ.slice(rQi, rQi + this._fb_Bpp);\n                        rQi += this._fb_Bpp;\n                    }\n                    if (this._FBU.subencoding & 0x04) {  // Foreground\n                        this._FBU.foreground = rQ.slice(rQi, rQi + this._fb_Bpp);\n                        rQi += this._fb_Bpp;\n                    }\n\n                    this._display.startTile(x, y, w, h, this._FBU.background);\n                    if (this._FBU.subencoding & 0x08) {  // AnySubrects\n                        subrects = rQ[rQi];\n                        rQi++;\n\n                        for (var s = 0; s < subrects; s++) {\n                            var color;\n                            if (this._FBU.subencoding & 0x10) {  // SubrectsColoured\n                                color = rQ.slice(rQi, rQi + this._fb_Bpp);\n                                rQi += this._fb_Bpp;\n                            } else {\n                                color = this._FBU.foreground;\n                            }\n                            var xy = rQ[rQi];\n                            rQi++;\n                            var sx = (xy >> 4);\n                            var sy = (xy & 0x0f);\n\n                            var wh = rQ[rQi];\n                            rQi++;\n                            var sw = (wh >> 4) + 1;\n                            var sh = (wh & 0x0f) + 1;\n\n                            this._display.subTile(sx, sy, sw, sh, color);\n                        }\n                    }\n                    this._display.finishTile();\n                }\n                this._sock.set_rQi(rQi);\n                this._FBU.lastsubencoding = this._FBU.subencoding;\n                this._FBU.bytes = 0;\n                this._FBU.tiles--;\n            }\n\n            if (this._FBU.tiles === 0) {\n                this._FBU.rects--;\n            }\n\n            return true;\n        },\n\n        getTightCLength: function (arr) {\n            var header = 1, data = 0;\n            data += arr[0] & 0x7f;\n            if (arr[0] & 0x80) {\n                header++;\n                data += (arr[1] & 0x7f) << 7;\n                if (arr[1] & 0x80) {\n                    header++;\n                    data += arr[2] << 14;\n                }\n            }\n            return [header, data];\n        },\n\n        display_tight: function (isTightPNG) {\n            if (this._fb_depth === 1) {\n                this._fail(\"Tight protocol handler only implements true color mode\");\n            }\n\n            this._FBU.bytes = 1;  // compression-control byte\n            if (this._sock.rQwait(\"TIGHT compression-control\", this._FBU.bytes)) { return false; }\n\n            var checksum = function (data) {\n                var sum = 0;\n                for (var i = 0; i < data.length; i++) {\n                    sum += data[i];\n                    if (sum > 65536) sum -= 65536;\n                }\n                return sum;\n            };\n\n            var resetStreams = 0;\n            var streamId = -1;\n            var decompress = function (data) {\n                for (var i = 0; i < 4; i++) {\n                    if ((resetStreams >> i) & 1) {\n                        this._FBU.zlibs[i].reset();\n                        Util.Info(\"Reset zlib stream \" + i);\n                    }\n                }\n\n                var uncompressed = this._FBU.zlibs[streamId].uncompress(data, 0);\n                if (uncompressed.status !== 0) {\n                    Util.Error(\"Invalid data in zlib stream\");\n                }\n\n                return uncompressed.data;\n            }.bind(this);\n\n            var indexedToRGB = function (data, numColors, palette, width, height) {\n                // Convert indexed (palette based) image data to RGB\n                // TODO: reduce number of calculations inside loop\n                var dest = [];\n                var x, y, dp, sp;\n                if (numColors === 2) {\n                    var w = Math.floor((width + 7) / 8);\n                    var w1 = Math.floor(width / 8);\n\n                    for (y = 0; y < height; y++) {\n                        var b;\n                        for (x = 0; x < w1; x++) {\n                            for (b = 7; b >= 0; b--) {\n                                dp = (y * width + x * 8 + 7 - b) * 3;\n                                sp = (data[y * w + x] >> b & 1) * 3;\n                                dest[dp] = palette[sp];\n                                dest[dp + 1] = palette[sp + 1];\n                                dest[dp + 2] = palette[sp + 2];\n                            }\n                        }\n\n                        for (b = 7; b >= 8 - width % 8; b--) {\n                            dp = (y * width + x * 8 + 7 - b) * 3;\n                            sp = (data[y * w + x] >> b & 1) * 3;\n                            dest[dp] = palette[sp];\n                            dest[dp + 1] = palette[sp + 1];\n                            dest[dp + 2] = palette[sp + 2];\n                        }\n                    }\n                } else {\n                    for (y = 0; y < height; y++) {\n                        for (x = 0; x < width; x++) {\n                            dp = (y * width + x) * 3;\n                            sp = data[y * width + x] * 3;\n                            dest[dp] = palette[sp];\n                            dest[dp + 1] = palette[sp + 1];\n                            dest[dp + 2] = palette[sp + 2];\n                        }\n                    }\n                }\n\n                return dest;\n            }.bind(this);\n\n            var rQ = this._sock.get_rQ();\n            var rQi = this._sock.get_rQi();\n            var cmode, clength, data;\n\n            var handlePalette = function () {\n                var numColors = rQ[rQi + 2] + 1;\n                var paletteSize = numColors * this._fb_depth;\n                this._FBU.bytes += paletteSize;\n                if (this._sock.rQwait(\"TIGHT palette \" + cmode, this._FBU.bytes)) { return false; }\n\n                var bpp = (numColors <= 2) ? 1 : 8;\n                var rowSize = Math.floor((this._FBU.width * bpp + 7) / 8);\n                var raw = false;\n                if (rowSize * this._FBU.height < 12) {\n                    raw = true;\n                    clength = [0, rowSize * this._FBU.height];\n                } else {\n                    clength = RFB.encodingHandlers.getTightCLength(this._sock.rQslice(3 + paletteSize,\n                                                                                      3 + paletteSize + 3));\n                }\n\n                this._FBU.bytes += clength[0] + clength[1];\n                if (this._sock.rQwait(\"TIGHT \" + cmode, this._FBU.bytes)) { return false; }\n\n                // Shift ctl, filter id, num colors, palette entries, and clength off\n                this._sock.rQskipBytes(3);\n                var palette = this._sock.rQshiftBytes(paletteSize);\n                this._sock.rQskipBytes(clength[0]);\n\n                if (raw) {\n                    data = this._sock.rQshiftBytes(clength[1]);\n                } else {\n                    data = decompress(this._sock.rQshiftBytes(clength[1]));\n                }\n\n                // Convert indexed (palette based) image data to RGB\n                var rgb = indexedToRGB(data, numColors, palette, this._FBU.width, this._FBU.height);\n\n                this._display.renderQ_push({\n                    'type': 'blitRgb',\n                    'data': rgb,\n                    'x': this._FBU.x,\n                    'y': this._FBU.y,\n                    'width': this._FBU.width,\n                    'height': this._FBU.height\n                });\n\n                return true;\n            }.bind(this);\n\n            var handleCopy = function () {\n                var raw = false;\n                var uncompressedSize = this._FBU.width * this._FBU.height * this._fb_depth;\n                if (uncompressedSize < 12) {\n                    raw = true;\n                    clength = [0, uncompressedSize];\n                } else {\n                    clength = RFB.encodingHandlers.getTightCLength(this._sock.rQslice(1, 4));\n                }\n                this._FBU.bytes = 1 + clength[0] + clength[1];\n                if (this._sock.rQwait(\"TIGHT \" + cmode, this._FBU.bytes)) { return false; }\n\n                // Shift ctl, clength off\n                this._sock.rQshiftBytes(1 + clength[0]);\n\n                if (raw) {\n                    data = this._sock.rQshiftBytes(clength[1]);\n                } else {\n                    data = decompress(this._sock.rQshiftBytes(clength[1]));\n                }\n\n                this._display.renderQ_push({\n                    'type': 'blitRgb',\n                    'data': data,\n                    'x': this._FBU.x,\n                    'y': this._FBU.y,\n                    'width': this._FBU.width,\n                    'height': this._FBU.height\n                });\n\n                return true;\n            }.bind(this);\n\n            var ctl = this._sock.rQpeek8();\n\n            // Keep tight reset bits\n            resetStreams = ctl & 0xF;\n\n            // Figure out filter\n            ctl = ctl >> 4;\n            streamId = ctl & 0x3;\n\n            if (ctl === 0x08)       cmode = \"fill\";\n            else if (ctl === 0x09)  cmode = \"jpeg\";\n            else if (ctl === 0x0A)  cmode = \"png\";\n            else if (ctl & 0x04)    cmode = \"filter\";\n            else if (ctl < 0x04)    cmode = \"copy\";\n            else return this._fail(\"Illegal tight compression received, ctl: \" + ctl);\n\n            if (isTightPNG && (cmode === \"filter\" || cmode === \"copy\")) {\n                return this._fail(\"filter/copy received in tightPNG mode\");\n            }\n\n            switch (cmode) {\n                // fill use fb_depth because TPIXELs drop the padding byte\n                case \"fill\":  // TPIXEL\n                    this._FBU.bytes += this._fb_depth;\n                    break;\n                case \"jpeg\":  // max clength\n                    this._FBU.bytes += 3;\n                    break;\n                case \"png\":  // max clength\n                    this._FBU.bytes += 3;\n                    break;\n                case \"filter\":  // filter id + num colors if palette\n                    this._FBU.bytes += 2;\n                    break;\n                case \"copy\":\n                    break;\n            }\n\n            if (this._sock.rQwait(\"TIGHT \" + cmode, this._FBU.bytes)) { return false; }\n\n            // Determine FBU.bytes\n            switch (cmode) {\n                case \"fill\":\n                    this._sock.rQskip8();  // shift off ctl\n                    var color = this._sock.rQshiftBytes(this._fb_depth);\n                    this._display.renderQ_push({\n                        'type': 'fill',\n                        'x': this._FBU.x,\n                        'y': this._FBU.y,\n                        'width': this._FBU.width,\n                        'height': this._FBU.height,\n                        'color': [color[2], color[1], color[0]]\n                    });\n                    break;\n                case \"png\":\n                case \"jpeg\":\n                    clength = RFB.encodingHandlers.getTightCLength(this._sock.rQslice(1, 4));\n                    this._FBU.bytes = 1 + clength[0] + clength[1];  // ctl + clength size + jpeg-data\n                    if (this._sock.rQwait(\"TIGHT \" + cmode, this._FBU.bytes)) { return false; }\n\n                    // We have everything, render it\n                    this._sock.rQskipBytes(1 + clength[0]);  // shift off clt + compact length\n                    var img = new Image();\n                    img.src = \"data: image/\" + cmode +\n                        RFB.extract_data_uri(this._sock.rQshiftBytes(clength[1]));\n                    this._display.renderQ_push({\n                        'type': 'img',\n                        'img': img,\n                        'x': this._FBU.x,\n                        'y': this._FBU.y\n                    });\n                    img = null;\n                    break;\n                case \"filter\":\n                    var filterId = rQ[rQi + 1];\n                    if (filterId === 1) {\n                        if (!handlePalette()) { return false; }\n                    } else {\n                        // Filter 0, Copy could be valid here, but servers don't send it as an explicit filter\n                        // Filter 2, Gradient is valid but not use if jpeg is enabled\n                        // TODO(directxman12): why aren't we just calling '_fail' here\n                        throw new Error(\"Unsupported tight subencoding received, filter: \" + filterId);\n                    }\n                    break;\n                case \"copy\":\n                    if (!handleCopy()) { return false; }\n                    break;\n            }\n\n\n            this._FBU.bytes = 0;\n            this._FBU.rects--;\n\n            return true;\n        },\n\n        TIGHT: function () { return this._encHandlers.display_tight(false); },\n        TIGHT_PNG: function () { return this._encHandlers.display_tight(true); },\n\n        last_rect: function () {\n            this._FBU.rects = 0;\n            return true;\n        },\n\n        DesktopSize: function () {\n            Util.Debug(\">> set_desktopsize\");\n            this._fb_width = this._FBU.width;\n            this._fb_height = this._FBU.height;\n            this._onFBResize(this, this._fb_width, this._fb_height);\n            this._display.resize(this._fb_width, this._fb_height);\n            this._timing.fbu_rt_start = (new Date()).getTime();\n\n            this._FBU.bytes = 0;\n            this._FBU.rects--;\n\n            Util.Debug(\"<< set_desktopsize\");\n            return true;\n        },\n\n        Cursor: function () {\n            Util.Debug(\">> set_cursor\");\n            var x = this._FBU.x;  // hotspot-x\n            var y = this._FBU.y;  // hotspot-y\n            var w = this._FBU.width;\n            var h = this._FBU.height;\n\n            var pixelslength = w * h * this._fb_Bpp;\n            var masklength = Math.floor((w + 7) / 8) * h;\n\n            this._FBU.bytes = pixelslength + masklength;\n            if (this._sock.rQwait(\"cursor encoding\", this._FBU.bytes)) { return false; }\n\n            this._display.changeCursor(this._sock.rQshiftBytes(pixelslength),\n                                       this._sock.rQshiftBytes(masklength),\n                                       x, y, w, h);\n\n            this._FBU.bytes = 0;\n            this._FBU.rects--;\n\n            Util.Debug(\"<< set_cursor\");\n            return true;\n        },\n\n        JPEG_quality_lo: function () {\n            Util.Error(\"Server sent jpeg_quality pseudo-encoding\");\n        },\n\n        compress_lo: function () {\n            Util.Error(\"Server sent compress level pseudo-encoding\");\n        }\n    };\n})();\n\ndefine(\"vnc-rfb\", [\"vnc-util\"], function(){});\n\n","var XK_VoidSymbol =                0xffffff, /* Void symbol */\n\nXK_BackSpace =                   0xff08, /* Back space, back char */\nXK_Tab =                         0xff09,\nXK_Linefeed =                    0xff0a, /* Linefeed, LF */\nXK_Clear =                       0xff0b,\nXK_Return =                      0xff0d, /* Return, enter */\nXK_Pause =                       0xff13, /* Pause, hold */\nXK_Scroll_Lock =                 0xff14,\nXK_Sys_Req =                     0xff15,\nXK_Escape =                      0xff1b,\nXK_Delete =                      0xffff, /* Delete, rubout */\n\n/* Cursor control & motion */\n\nXK_Home =                        0xff50,\nXK_Left =                        0xff51, /* Move left, left arrow */\nXK_Up =                          0xff52, /* Move up, up arrow */\nXK_Right =                       0xff53, /* Move right, right arrow */\nXK_Down =                        0xff54, /* Move down, down arrow */\nXK_Prior =                       0xff55, /* Prior, previous */\nXK_Page_Up =                     0xff55,\nXK_Next =                        0xff56, /* Next */\nXK_Page_Down =                   0xff56,\nXK_End =                         0xff57, /* EOL */\nXK_Begin =                       0xff58, /* BOL */\n\n\n/* Misc functions */\n\nXK_Select =                      0xff60, /* Select, mark */\nXK_Print =                       0xff61,\nXK_Execute =                     0xff62, /* Execute, run, do */\nXK_Insert =                      0xff63, /* Insert, insert here */\nXK_Undo =                        0xff65,\nXK_Redo =                        0xff66, /* Redo, again */\nXK_Menu =                        0xff67,\nXK_Find =                        0xff68, /* Find, search */\nXK_Cancel =                      0xff69, /* Cancel, stop, abort, exit */\nXK_Help =                        0xff6a, /* Help */\nXK_Break =                       0xff6b,\nXK_Mode_switch =                 0xff7e, /* Character set switch */\nXK_script_switch =               0xff7e, /* Alias for mode_switch */\nXK_Num_Lock =                    0xff7f,\n\n/* Keypad functions, keypad numbers cleverly chosen to map to ASCII */\n\nXK_KP_Space =                    0xff80, /* Space */\nXK_KP_Tab =                      0xff89,\nXK_KP_Enter =                    0xff8d, /* Enter */\nXK_KP_F1 =                       0xff91, /* PF1, KP_A, ... */\nXK_KP_F2 =                       0xff92,\nXK_KP_F3 =                       0xff93,\nXK_KP_F4 =                       0xff94,\nXK_KP_Home =                     0xff95,\nXK_KP_Left =                     0xff96,\nXK_KP_Up =                       0xff97,\nXK_KP_Right =                    0xff98,\nXK_KP_Down =                     0xff99,\nXK_KP_Prior =                    0xff9a,\nXK_KP_Page_Up =                  0xff9a\nXK_KP_Next =                     0xff9b,\nXK_KP_Page_Down =                0xff9b,\nXK_KP_End =                      0xff9c,\nXK_KP_Begin =                    0xff9d,\nXK_KP_Insert =                   0xff9e,\nXK_KP_Delete =                   0xff9f,\nXK_KP_Equal =                    0xffbd, /* Equals */\nXK_KP_Multiply =                 0xffaa,\nXK_KP_Add =                      0xffab,\nXK_KP_Separator =                0xffac, /* Separator, often comma */\nXK_KP_Subtract =                 0xffad,\nXK_KP_Decimal =                  0xffae,\nXK_KP_Divide =                   0xffaf,\n\nXK_KP_0 =                        0xffb0,\nXK_KP_1 =                        0xffb1,\nXK_KP_2 =                        0xffb2,\nXK_KP_3 =                        0xffb3,\nXK_KP_4 =                        0xffb4,\nXK_KP_5 =                        0xffb5,\nXK_KP_6 =                        0xffb6,\nXK_KP_7 =                        0xffb7,\nXK_KP_8 =                        0xffb8,\nXK_KP_9 =                        0xffb9,\n\n/*\n * Auxiliary functions; note the duplicate definitions for left and right\n * function keys;  Sun keyboards and a few other manufacturers have such\n * function key groups on the left and/or right sides of the keyboard.\n * We've not found a keyboard with more than 35 function keys total.\n */\n\nXK_F1 =                          0xffbe,\nXK_F2 =                          0xffbf,\nXK_F3 =                          0xffc0,\nXK_F4 =                          0xffc1,\nXK_F5 =                          0xffc2,\nXK_F6 =                          0xffc3,\nXK_F7 =                          0xffc4,\nXK_F8 =                          0xffc5,\nXK_F9 =                          0xffc6,\nXK_F10 =                         0xffc7,\nXK_F11 =                         0xffc8,\nXK_L1 =                          0xffc8,\nXK_F12 =                         0xffc9,\nXK_L2 =                          0xffc9,\nXK_F13 =                         0xffca,\nXK_L3 =                          0xffca,\nXK_F14 =                         0xffcb,\nXK_L4 =                          0xffcb,\nXK_F15 =                         0xffcc,\nXK_L5 =                          0xffcc,\nXK_F16 =                         0xffcd,\nXK_L6 =                          0xffcd,\nXK_F17 =                         0xffce,\nXK_L7 =                          0xffce,\nXK_F18 =                         0xffcf,\nXK_L8 =                          0xffcf,\nXK_F19 =                         0xffd0,\nXK_L9 =                          0xffd0,\nXK_F20 =                         0xffd1,\nXK_L10 =                         0xffd1,\nXK_F21 =                         0xffd2,\nXK_R1 =                          0xffd2,\nXK_F22 =                         0xffd3,\nXK_R2 =                          0xffd3,\nXK_F23 =                         0xffd4,\nXK_R3 =                          0xffd4,\nXK_F24 =                         0xffd5,\nXK_R4 =                          0xffd5,\nXK_F25 =                         0xffd6,\nXK_R5 =                          0xffd6,\nXK_F26 =                         0xffd7,\nXK_R6 =                          0xffd7,\nXK_F27 =                         0xffd8,\nXK_R7 =                          0xffd8,\nXK_F28 =                         0xffd9,\nXK_R8 =                          0xffd9,\nXK_F29 =                         0xffda,\nXK_R9 =                          0xffda,\nXK_F30 =                         0xffdb,\nXK_R10 =                         0xffdb,\nXK_F31 =                         0xffdc,\nXK_R11 =                         0xffdc,\nXK_F32 =                         0xffdd,\nXK_R12 =                         0xffdd,\nXK_F33 =                         0xffde,\nXK_R13 =                         0xffde,\nXK_F34 =                         0xffdf,\nXK_R14 =                         0xffdf,\nXK_F35 =                         0xffe0,\nXK_R15 =                         0xffe0,\n\n/* Modifiers */\n\nXK_Shift_L =                     0xffe1, /* Left shift */\nXK_Shift_R =                     0xffe2, /* Right shift */\nXK_Control_L =                   0xffe3, /* Left control */\nXK_Control_R =                   0xffe4, /* Right control */\nXK_Caps_Lock =                   0xffe5, /* Caps lock */\nXK_Shift_Lock =                  0xffe6, /* Shift lock */\n\nXK_Meta_L =                      0xffe7, /* Left meta */\nXK_Meta_R =                      0xffe8, /* Right meta */\nXK_Alt_L =                       0xffe9, /* Left alt */\nXK_Alt_R =                       0xffea, /* Right alt */\nXK_Super_L =                     0xffeb, /* Left super */\nXK_Super_R =                     0xffec, /* Right super */\nXK_Hyper_L =                     0xffed, /* Left hyper */\nXK_Hyper_R =                     0xffee, /* Right hyper */\n\nXK_ISO_Level3_Shift =            0xfe03, /* AltGr */\n\n/*\n * Latin 1\n * (ISO/IEC 8859-1 = Unicode U+0020..U+00FF)\n * Byte 3 = 0\n */\n\nXK_space =                       0x0020, /* U+0020 SPACE */\nXK_exclam =                      0x0021, /* U+0021 EXCLAMATION MARK */\nXK_quotedbl =                    0x0022, /* U+0022 QUOTATION MARK */\nXK_numbersign =                  0x0023, /* U+0023 NUMBER SIGN */\nXK_dollar =                      0x0024, /* U+0024 DOLLAR SIGN */\nXK_percent =                     0x0025, /* U+0025 PERCENT SIGN */\nXK_ampersand =                   0x0026, /* U+0026 AMPERSAND */\nXK_apostrophe =                  0x0027, /* U+0027 APOSTROPHE */\nXK_quoteright =                  0x0027, /* deprecated */\nXK_parenleft =                   0x0028, /* U+0028 LEFT PARENTHESIS */\nXK_parenright =                  0x0029, /* U+0029 RIGHT PARENTHESIS */\nXK_asterisk =                    0x002a, /* U+002A ASTERISK */\nXK_plus =                        0x002b, /* U+002B PLUS SIGN */\nXK_comma =                       0x002c, /* U+002C COMMA */\nXK_minus =                       0x002d, /* U+002D HYPHEN-MINUS */\nXK_period =                      0x002e, /* U+002E FULL STOP */\nXK_slash =                       0x002f, /* U+002F SOLIDUS */\nXK_0 =                           0x0030, /* U+0030 DIGIT ZERO */\nXK_1 =                           0x0031, /* U+0031 DIGIT ONE */\nXK_2 =                           0x0032, /* U+0032 DIGIT TWO */\nXK_3 =                           0x0033, /* U+0033 DIGIT THREE */\nXK_4 =                           0x0034, /* U+0034 DIGIT FOUR */\nXK_5 =                           0x0035, /* U+0035 DIGIT FIVE */\nXK_6 =                           0x0036, /* U+0036 DIGIT SIX */\nXK_7 =                           0x0037, /* U+0037 DIGIT SEVEN */\nXK_8 =                           0x0038, /* U+0038 DIGIT EIGHT */\nXK_9 =                           0x0039, /* U+0039 DIGIT NINE */\nXK_colon =                       0x003a, /* U+003A COLON */\nXK_semicolon =                   0x003b, /* U+003B SEMICOLON */\nXK_less =                        0x003c, /* U+003C LESS-THAN SIGN */\nXK_equal =                       0x003d, /* U+003D EQUALS SIGN */\nXK_greater =                     0x003e, /* U+003E GREATER-THAN SIGN */\nXK_question =                    0x003f, /* U+003F QUESTION MARK */\nXK_at =                          0x0040, /* U+0040 COMMERCIAL AT */\nXK_A =                           0x0041, /* U+0041 LATIN CAPITAL LETTER A */\nXK_B =                           0x0042, /* U+0042 LATIN CAPITAL LETTER B */\nXK_C =                           0x0043, /* U+0043 LATIN CAPITAL LETTER C */\nXK_D =                           0x0044, /* U+0044 LATIN CAPITAL LETTER D */\nXK_E =                           0x0045, /* U+0045 LATIN CAPITAL LETTER E */\nXK_F =                           0x0046, /* U+0046 LATIN CAPITAL LETTER F */\nXK_G =                           0x0047, /* U+0047 LATIN CAPITAL LETTER G */\nXK_H =                           0x0048, /* U+0048 LATIN CAPITAL LETTER H */\nXK_I =                           0x0049, /* U+0049 LATIN CAPITAL LETTER I */\nXK_J =                           0x004a, /* U+004A LATIN CAPITAL LETTER J */\nXK_K =                           0x004b, /* U+004B LATIN CAPITAL LETTER K */\nXK_L =                           0x004c, /* U+004C LATIN CAPITAL LETTER L */\nXK_M =                           0x004d, /* U+004D LATIN CAPITAL LETTER M */\nXK_N =                           0x004e, /* U+004E LATIN CAPITAL LETTER N */\nXK_O =                           0x004f, /* U+004F LATIN CAPITAL LETTER O */\nXK_P =                           0x0050, /* U+0050 LATIN CAPITAL LETTER P */\nXK_Q =                           0x0051, /* U+0051 LATIN CAPITAL LETTER Q */\nXK_R =                           0x0052, /* U+0052 LATIN CAPITAL LETTER R */\nXK_S =                           0x0053, /* U+0053 LATIN CAPITAL LETTER S */\nXK_T =                           0x0054, /* U+0054 LATIN CAPITAL LETTER T */\nXK_U =                           0x0055, /* U+0055 LATIN CAPITAL LETTER U */\nXK_V =                           0x0056, /* U+0056 LATIN CAPITAL LETTER V */\nXK_W =                           0x0057, /* U+0057 LATIN CAPITAL LETTER W */\nXK_X =                           0x0058, /* U+0058 LATIN CAPITAL LETTER X */\nXK_Y =                           0x0059, /* U+0059 LATIN CAPITAL LETTER Y */\nXK_Z =                           0x005a, /* U+005A LATIN CAPITAL LETTER Z */\nXK_bracketleft =                 0x005b, /* U+005B LEFT SQUARE BRACKET */\nXK_backslash =                   0x005c, /* U+005C REVERSE SOLIDUS */\nXK_bracketright =                0x005d, /* U+005D RIGHT SQUARE BRACKET */\nXK_asciicircum =                 0x005e, /* U+005E CIRCUMFLEX ACCENT */\nXK_underscore =                  0x005f, /* U+005F LOW LINE */\nXK_grave =                       0x0060, /* U+0060 GRAVE ACCENT */\nXK_quoteleft =                   0x0060, /* deprecated */\nXK_a =                           0x0061, /* U+0061 LATIN SMALL LETTER A */\nXK_b =                           0x0062, /* U+0062 LATIN SMALL LETTER B */\nXK_c =                           0x0063, /* U+0063 LATIN SMALL LETTER C */\nXK_d =                           0x0064, /* U+0064 LATIN SMALL LETTER D */\nXK_e =                           0x0065, /* U+0065 LATIN SMALL LETTER E */\nXK_f =                           0x0066, /* U+0066 LATIN SMALL LETTER F */\nXK_g =                           0x0067, /* U+0067 LATIN SMALL LETTER G */\nXK_h =                           0x0068, /* U+0068 LATIN SMALL LETTER H */\nXK_i =                           0x0069, /* U+0069 LATIN SMALL LETTER I */\nXK_j =                           0x006a, /* U+006A LATIN SMALL LETTER J */\nXK_k =                           0x006b, /* U+006B LATIN SMALL LETTER K */\nXK_l =                           0x006c, /* U+006C LATIN SMALL LETTER L */\nXK_m =                           0x006d, /* U+006D LATIN SMALL LETTER M */\nXK_n =                           0x006e, /* U+006E LATIN SMALL LETTER N */\nXK_o =                           0x006f, /* U+006F LATIN SMALL LETTER O */\nXK_p =                           0x0070, /* U+0070 LATIN SMALL LETTER P */\nXK_q =                           0x0071, /* U+0071 LATIN SMALL LETTER Q */\nXK_r =                           0x0072, /* U+0072 LATIN SMALL LETTER R */\nXK_s =                           0x0073, /* U+0073 LATIN SMALL LETTER S */\nXK_t =                           0x0074, /* U+0074 LATIN SMALL LETTER T */\nXK_u =                           0x0075, /* U+0075 LATIN SMALL LETTER U */\nXK_v =                           0x0076, /* U+0076 LATIN SMALL LETTER V */\nXK_w =                           0x0077, /* U+0077 LATIN SMALL LETTER W */\nXK_x =                           0x0078, /* U+0078 LATIN SMALL LETTER X */\nXK_y =                           0x0079, /* U+0079 LATIN SMALL LETTER Y */\nXK_z =                           0x007a, /* U+007A LATIN SMALL LETTER Z */\nXK_braceleft =                   0x007b, /* U+007B LEFT CURLY BRACKET */\nXK_bar =                         0x007c, /* U+007C VERTICAL LINE */\nXK_braceright =                  0x007d, /* U+007D RIGHT CURLY BRACKET */\nXK_asciitilde =                  0x007e, /* U+007E TILDE */\n\nXK_nobreakspace =                0x00a0, /* U+00A0 NO-BREAK SPACE */\nXK_exclamdown =                  0x00a1, /* U+00A1 INVERTED EXCLAMATION MARK */\nXK_cent =                        0x00a2, /* U+00A2 CENT SIGN */\nXK_sterling =                    0x00a3, /* U+00A3 POUND SIGN */\nXK_currency =                    0x00a4, /* U+00A4 CURRENCY SIGN */\nXK_yen =                         0x00a5, /* U+00A5 YEN SIGN */\nXK_brokenbar =                   0x00a6, /* U+00A6 BROKEN BAR */\nXK_section =                     0x00a7, /* U+00A7 SECTION SIGN */\nXK_diaeresis =                   0x00a8, /* U+00A8 DIAERESIS */\nXK_copyright =                   0x00a9, /* U+00A9 COPYRIGHT SIGN */\nXK_ordfeminine =                 0x00aa, /* U+00AA FEMININE ORDINAL INDICATOR */\nXK_guillemotleft =               0x00ab, /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */\nXK_notsign =                     0x00ac, /* U+00AC NOT SIGN */\nXK_hyphen =                      0x00ad, /* U+00AD SOFT HYPHEN */\nXK_registered =                  0x00ae, /* U+00AE REGISTERED SIGN */\nXK_macron =                      0x00af, /* U+00AF MACRON */\nXK_degree =                      0x00b0, /* U+00B0 DEGREE SIGN */\nXK_plusminus =                   0x00b1, /* U+00B1 PLUS-MINUS SIGN */\nXK_twosuperior =                 0x00b2, /* U+00B2 SUPERSCRIPT TWO */\nXK_threesuperior =               0x00b3, /* U+00B3 SUPERSCRIPT THREE */\nXK_acute =                       0x00b4, /* U+00B4 ACUTE ACCENT */\nXK_mu =                          0x00b5, /* U+00B5 MICRO SIGN */\nXK_paragraph =                   0x00b6, /* U+00B6 PILCROW SIGN */\nXK_periodcentered =              0x00b7, /* U+00B7 MIDDLE DOT */\nXK_cedilla =                     0x00b8, /* U+00B8 CEDILLA */\nXK_onesuperior =                 0x00b9, /* U+00B9 SUPERSCRIPT ONE */\nXK_masculine =                   0x00ba, /* U+00BA MASCULINE ORDINAL INDICATOR */\nXK_guillemotright =              0x00bb, /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */\nXK_onequarter =                  0x00bc, /* U+00BC VULGAR FRACTION ONE QUARTER */\nXK_onehalf =                     0x00bd, /* U+00BD VULGAR FRACTION ONE HALF */\nXK_threequarters =               0x00be, /* U+00BE VULGAR FRACTION THREE QUARTERS */\nXK_questiondown =                0x00bf, /* U+00BF INVERTED QUESTION MARK */\nXK_Agrave =                      0x00c0, /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */\nXK_Aacute =                      0x00c1, /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */\nXK_Acircumflex =                 0x00c2, /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */\nXK_Atilde =                      0x00c3, /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */\nXK_Adiaeresis =                  0x00c4, /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */\nXK_Aring =                       0x00c5, /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */\nXK_AE =                          0x00c6, /* U+00C6 LATIN CAPITAL LETTER AE */\nXK_Ccedilla =                    0x00c7, /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */\nXK_Egrave =                      0x00c8, /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */\nXK_Eacute =                      0x00c9, /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */\nXK_Ecircumflex =                 0x00ca, /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */\nXK_Ediaeresis =                  0x00cb, /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */\nXK_Igrave =                      0x00cc, /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */\nXK_Iacute =                      0x00cd, /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */\nXK_Icircumflex =                 0x00ce, /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */\nXK_Idiaeresis =                  0x00cf, /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */\nXK_ETH =                         0x00d0, /* U+00D0 LATIN CAPITAL LETTER ETH */\nXK_Eth =                         0x00d0, /* deprecated */\nXK_Ntilde =                      0x00d1, /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */\nXK_Ograve =                      0x00d2, /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */\nXK_Oacute =                      0x00d3, /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */\nXK_Ocircumflex =                 0x00d4, /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */\nXK_Otilde =                      0x00d5, /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */\nXK_Odiaeresis =                  0x00d6, /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */\nXK_multiply =                    0x00d7, /* U+00D7 MULTIPLICATION SIGN */\nXK_Oslash =                      0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */\nXK_Ooblique =                    0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */\nXK_Ugrave =                      0x00d9, /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */\nXK_Uacute =                      0x00da, /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */\nXK_Ucircumflex =                 0x00db, /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */\nXK_Udiaeresis =                  0x00dc, /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */\nXK_Yacute =                      0x00dd, /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */\nXK_THORN =                       0x00de, /* U+00DE LATIN CAPITAL LETTER THORN */\nXK_Thorn =                       0x00de, /* deprecated */\nXK_ssharp =                      0x00df, /* U+00DF LATIN SMALL LETTER SHARP S */\nXK_agrave =                      0x00e0, /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */\nXK_aacute =                      0x00e1, /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */\nXK_acircumflex =                 0x00e2, /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */\nXK_atilde =                      0x00e3, /* U+00E3 LATIN SMALL LETTER A WITH TILDE */\nXK_adiaeresis =                  0x00e4, /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */\nXK_aring =                       0x00e5, /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */\nXK_ae =                          0x00e6, /* U+00E6 LATIN SMALL LETTER AE */\nXK_ccedilla =                    0x00e7, /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */\nXK_egrave =                      0x00e8, /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */\nXK_eacute =                      0x00e9, /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */\nXK_ecircumflex =                 0x00ea, /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */\nXK_ediaeresis =                  0x00eb, /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */\nXK_igrave =                      0x00ec, /* U+00EC LATIN SMALL LETTER I WITH GRAVE */\nXK_iacute =                      0x00ed, /* U+00ED LATIN SMALL LETTER I WITH ACUTE */\nXK_icircumflex =                 0x00ee, /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */\nXK_idiaeresis =                  0x00ef, /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */\nXK_eth =                         0x00f0, /* U+00F0 LATIN SMALL LETTER ETH */\nXK_ntilde =                      0x00f1, /* U+00F1 LATIN SMALL LETTER N WITH TILDE */\nXK_ograve =                      0x00f2, /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */\nXK_oacute =                      0x00f3, /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */\nXK_ocircumflex =                 0x00f4, /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */\nXK_otilde =                      0x00f5, /* U+00F5 LATIN SMALL LETTER O WITH TILDE */\nXK_odiaeresis =                  0x00f6, /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */\nXK_division =                    0x00f7, /* U+00F7 DIVISION SIGN */\nXK_oslash =                      0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */\nXK_ooblique =                    0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */\nXK_ugrave =                      0x00f9, /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */\nXK_uacute =                      0x00fa, /* U+00FA LATIN SMALL LETTER U WITH ACUTE */\nXK_ucircumflex =                 0x00fb, /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */\nXK_udiaeresis =                  0x00fc, /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */\nXK_yacute =                      0x00fd, /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */\nXK_thorn =                       0x00fe, /* U+00FE LATIN SMALL LETTER THORN */\nXK_ydiaeresis =                  0x00ff; /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */\n;\ndefine(\"vnc-keysym\", [\"vnc-util\"], function(){});\n\n","define('utils/vnc',['require','vnc-util','vnc-webutil','vnc-base64','vnc-websock','vnc-des','vnc-keysymdef','vnc-keyboard','vnc-input','vnc-display','vnc-jsunzip','vnc-rfb','vnc-keysym','sunstone-config'],function(require) {\n  INCLUDE_URI = \"bower_components/no-vnc/include/\";\n  require('vnc-util');\n  require('vnc-webutil');\n  require('vnc-base64');\n  require('vnc-websock');\n  require('vnc-des');\n  require('vnc-keysymdef');\n  require('vnc-keyboard');\n  require('vnc-input');\n  require('vnc-display');\n  require('vnc-jsunzip');\n  require('vnc-rfb');\n  require('vnc-keysym');\n  \n  var Config = require('sunstone-config');\n\n  var _lock = false;\n  var _rfb;\n\n  return {\n    'lockStatus': lockStatus,\n    'lock': lock,\n    'unlock': unlock,\n    'vncCallback': vncCallback,\n    'disconnect': disconnect,\n    'sendCtrlAltDel': sendCtrlAltDel\n  }\n\n  function lockStatus() {\n    return _lock;\n  }\n\n  function lock() {\n    _lock = true;\n  }\n\n  function unlock() {\n    _lock = false;\n  }\n\n  function vncCallback(response) {\n    _rfb = new RFB({'target':       $D('VNC_canvas'),\n                   'encrypt':      Config.vncWSS == \"yes\",\n                   'true_color':   true,\n                   'local_cursor': true,\n                   'shared':       true,\n                   'onUpdateState':  updateVNCState});\n\n    var proxy_host = window.location.hostname;\n    var proxy_port = Config.vncProxyPort;\n    var pw = response[\"password\"];\n    var token = response[\"token\"];\n    var vm_name = response[\"vm_name\"];\n    var path = '?token=' + token;\n\n    var url = \"vnc?\";\n    url += \"host=\" + proxy_host;\n    url += \"&port=\" + proxy_port;\n    url += \"&token=\" + token;\n    url += \"&password=\" + pw;\n    url += \"&encrypt=\" + Config.vncWSS;\n    url += \"&title=\" + vm_name;\n\n    $(\"#open_in_a_new_window\").attr('href', url)\n    _rfb.connect(proxy_host, proxy_port, pw, path);\n  }\n\n  function disconnect() {\n    if (_rfb) { _rfb.disconnect(); }\n  }\n\n  function sendCtrlAltDel() {\n    if (_rfb) { rfb.sendCtrlAltDel(); }\n  }\n\n  //This is taken from noVNC examples\n  function updateVNCState(rfb, state, oldstate, msg) {\n    var s, sb, cad, klass;\n    s = $D('VNC_status');\n    sb = $D('VNC_status_bar');\n    cad = $D('sendCtrlAltDelButton');\n    switch (state) {\n      case 'failed':       level = \"error\";  break;\n      case 'fatal':        level = \"error\";  break;\n      case 'normal':       level = \"normal\"; break;\n      case 'disconnected': level = \"normal\"; break;\n      case 'loaded':       level = \"normal\"; break;\n      default:             level = \"warn\";   break;\n    }\n\n    if (state === \"normal\") {\n      cad.disabled = false;\n    } else {\n      cad.disabled = true;\n    }\n\n    if (typeof(msg) !== 'undefined') {\n      sb.setAttribute(\"class\", \"noVNC_status_\" + level);\n      s.innerHTML = msg;\n    }\n  }\n});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n\n/*----------------------------------------------------------------------------\n**  enums.js\n**      'constants' for Spice\n**--------------------------------------------------------------------------*/\nvar SPICE_MAGIC         = \"REDQ\";\nvar SPICE_VERSION_MAJOR = 2;\nvar SPICE_VERSION_MINOR = 2;\n\nvar SPICE_CONNECT_TIMEOUT = (30 * 1000);\n\nvar SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION = 0;\nvar SPICE_COMMON_CAP_AUTH_SPICE              = 1;\nvar SPICE_COMMON_CAP_AUTH_SASL               = 2;\nvar SPICE_COMMON_CAP_MINI_HEADER             = 3;\n\nvar SPICE_TICKET_KEY_PAIR_LENGTH             = 1024;\nvar SPICE_TICKET_PUBKEY_BYTES                = (SPICE_TICKET_KEY_PAIR_LENGTH / 8 + 34);\n\nvar SPICE_LINK_ERR_OK                        = 0,\n    SPICE_LINK_ERR_ERROR                     = 1,\n    SPICE_LINK_ERR_INVALID_MAGIC             = 2,\n    SPICE_LINK_ERR_INVALID_DATA              = 3,\n    SPICE_LINK_ERR_VERSION_MISMATCH          = 4,\n    SPICE_LINK_ERR_NEED_SECURED              = 5,\n    SPICE_LINK_ERR_NEED_UNSECURED            = 6,\n    SPICE_LINK_ERR_PERMISSION_DENIED         = 7,\n    SPICE_LINK_ERR_BAD_CONNECTION_ID         = 8,\n    SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE     = 9;\n\nvar SPICE_MSG_MIGRATE                   = 1;\nvar SPICE_MSG_MIGRATE_DATA              = 2;\nvar SPICE_MSG_SET_ACK                   = 3;\nvar SPICE_MSG_PING                      = 4;\nvar SPICE_MSG_WAIT_FOR_CHANNELS         = 5;\nvar SPICE_MSG_DISCONNECTING             = 6;\nvar SPICE_MSG_NOTIFY                    = 7;\nvar SPICE_MSG_LIST                      = 8;\n\nvar SPICE_MSG_MAIN_MIGRATE_BEGIN        = 101;\nvar SPICE_MSG_MAIN_MIGRATE_CANCEL       = 102;\nvar SPICE_MSG_MAIN_INIT                 = 103;\nvar SPICE_MSG_MAIN_CHANNELS_LIST        = 104;\nvar SPICE_MSG_MAIN_MOUSE_MODE           = 105;\nvar SPICE_MSG_MAIN_MULTI_MEDIA_TIME     = 106;\nvar SPICE_MSG_MAIN_AGENT_CONNECTED      = 107;\nvar SPICE_MSG_MAIN_AGENT_DISCONNECTED   = 108;\nvar SPICE_MSG_MAIN_AGENT_DATA           = 109;\nvar SPICE_MSG_MAIN_AGENT_TOKEN          = 110;\nvar SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST  = 111;\nvar SPICE_MSG_MAIN_MIGRATE_END          = 112;\nvar SPICE_MSG_MAIN_NAME                 = 113;\nvar SPICE_MSG_MAIN_UUID                 = 114;\nvar SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS = 115;\nvar SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS = 116;\nvar SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK = 117;\nvar SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK = 118;\nvar SPICE_MSG_END_MAIN                  = 119;\n\n\n\nvar SPICE_MSGC_ACK_SYNC                 = 1;\nvar SPICE_MSGC_ACK                      = 2;\nvar SPICE_MSGC_PONG                     = 3;\nvar SPICE_MSGC_MIGRATE_FLUSH_MARK       = 4;\nvar SPICE_MSGC_MIGRATE_DATA             = 5;\nvar SPICE_MSGC_DISCONNECTING            = 6;\n\n\nvar SPICE_MSGC_MAIN_CLIENT_INFO         = 101;\nvar SPICE_MSGC_MAIN_MIGRATE_CONNECTED   = 102;\nvar SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR = 103;\nvar SPICE_MSGC_MAIN_ATTACH_CHANNELS     = 104;\nvar SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST  = 105;\nvar SPICE_MSGC_MAIN_AGENT_START         = 106;\nvar SPICE_MSGC_MAIN_AGENT_DATA          = 107;\nvar SPICE_MSGC_MAIN_AGENT_TOKEN         = 108;\nvar SPICE_MSGC_MAIN_MIGRATE_END         = 109;\nvar SPICE_MSGC_END_MAIN                 = 110;\n\nvar SPICE_MSG_DISPLAY_MODE              = 101;\nvar SPICE_MSG_DISPLAY_MARK              = 102;\nvar SPICE_MSG_DISPLAY_RESET             = 103;\nvar SPICE_MSG_DISPLAY_COPY_BITS         = 104;\nvar SPICE_MSG_DISPLAY_INVAL_LIST        = 105;\nvar SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS = 106;\nvar SPICE_MSG_DISPLAY_INVAL_PALETTE     = 107;\nvar SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES= 108;\n\nvar SPICE_MSG_DISPLAY_STREAM_CREATE     = 122;\nvar SPICE_MSG_DISPLAY_STREAM_DATA       = 123;\nvar SPICE_MSG_DISPLAY_STREAM_CLIP       = 124;\nvar SPICE_MSG_DISPLAY_STREAM_DESTROY    = 125;\nvar SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL= 126;\n\nvar SPICE_MSG_DISPLAY_DRAW_FILL         = 302;\nvar SPICE_MSG_DISPLAY_DRAW_OPAQUE       = 303;\nvar SPICE_MSG_DISPLAY_DRAW_COPY         = 304;\nvar SPICE_MSG_DISPLAY_DRAW_BLEND        = 305;\nvar SPICE_MSG_DISPLAY_DRAW_BLACKNESS    = 306;\nvar SPICE_MSG_DISPLAY_DRAW_WHITENESS    = 307;\nvar SPICE_MSG_DISPLAY_DRAW_INVERS       = 308;\nvar SPICE_MSG_DISPLAY_DRAW_ROP3         = 309;\nvar SPICE_MSG_DISPLAY_DRAW_STROKE       = 310;\nvar SPICE_MSG_DISPLAY_DRAW_TEXT         = 311;\nvar SPICE_MSG_DISPLAY_DRAW_TRANSPARENT  = 312;\nvar SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND  = 313;\nvar SPICE_MSG_DISPLAY_SURFACE_CREATE    = 314;\nvar SPICE_MSG_DISPLAY_SURFACE_DESTROY   = 315;\n\nvar SPICE_MSGC_DISPLAY_INIT             = 101;\n\nvar SPICE_MSG_INPUTS_INIT               = 101;\nvar SPICE_MSG_INPUTS_KEY_MODIFIERS      = 102;\n\nvar SPICE_MSG_INPUTS_MOUSE_MOTION_ACK   = 111;\n\nvar SPICE_MSGC_INPUTS_KEY_DOWN          = 101;\nvar SPICE_MSGC_INPUTS_KEY_UP            = 102;\nvar SPICE_MSGC_INPUTS_KEY_MODIFIERS     = 103;\n\nvar SPICE_MSGC_INPUTS_MOUSE_MOTION      = 111;\nvar SPICE_MSGC_INPUTS_MOUSE_POSITION    = 112;\nvar SPICE_MSGC_INPUTS_MOUSE_PRESS       = 113;\nvar SPICE_MSGC_INPUTS_MOUSE_RELEASE     = 114;\n\nvar SPICE_MSG_CURSOR_INIT               = 101;\nvar SPICE_MSG_CURSOR_RESET              = 102;\nvar SPICE_MSG_CURSOR_SET                = 103;\nvar SPICE_MSG_CURSOR_MOVE               = 104;\nvar SPICE_MSG_CURSOR_HIDE               = 105;\nvar SPICE_MSG_CURSOR_TRAIL              = 106;\nvar SPICE_MSG_CURSOR_INVAL_ONE          = 107;\nvar SPICE_MSG_CURSOR_INVAL_ALL          = 108;\n\nvar SPICE_MSG_PLAYBACK_DATA             = 101;\nvar SPICE_MSG_PLAYBACK_MODE             = 102;\nvar SPICE_MSG_PLAYBACK_START            = 103;\nvar SPICE_MSG_PLAYBACK_STOP             = 104;\nvar SPICE_MSG_PLAYBACK_VOLUME           = 105;\nvar SPICE_MSG_PLAYBACK_MUTE             = 106;\nvar SPICE_MSG_PLAYBACK_LATENCY          = 107;\n\nvar SPICE_PLAYBACK_CAP_CELT_0_5_1       = 0;\nvar SPICE_PLAYBACK_CAP_VOLUME           = 1;\nvar SPICE_PLAYBACK_CAP_LATENCY          = 2;\nvar SPICE_PLAYBACK_CAP_OPUS             = 3;\n\nvar SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE  = 0;\nvar SPICE_MAIN_CAP_NAME_AND_UUID          = 1;\nvar SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS = 2;\nvar SPICE_MAIN_CAP_SEAMLESS_MIGRATE       = 3;\n\nvar SPICE_AUDIO_DATA_MODE_INVALID       = 0;\nvar SPICE_AUDIO_DATA_MODE_RAW           = 1;\nvar SPICE_AUDIO_DATA_MODE_CELT_0_5_1    = 2;\nvar SPICE_AUDIO_DATA_MODE_OPUS          = 3;\n\nvar SPICE_AUDIO_FMT_INVALID             = 0;\nvar SPICE_AUDIO_FMT_S16                 = 1;\n\nvar SPICE_CHANNEL_MAIN                  = 1;\nvar SPICE_CHANNEL_DISPLAY               = 2;\nvar SPICE_CHANNEL_INPUTS                = 3;\nvar SPICE_CHANNEL_CURSOR                = 4;\nvar SPICE_CHANNEL_PLAYBACK              = 5;\nvar SPICE_CHANNEL_RECORD                = 6;\nvar SPICE_CHANNEL_TUNNEL                = 7;\nvar SPICE_CHANNEL_SMARTCARD             = 8;\nvar SPICE_CHANNEL_USBREDIR              = 9;\n\nvar SPICE_SURFACE_FLAGS_PRIMARY = (1 << 0);\n\nvar SPICE_NOTIFY_SEVERITY_INFO  = 0;\nvar SPICE_NOTIFY_SEVERITY_WARN  = 1;\nvar SPICE_NOTIFY_SEVERITY_ERROR = 2;\n\nvar SPICE_MOUSE_MODE_SERVER = (1 << 0),\n    SPICE_MOUSE_MODE_CLIENT = (1 << 1),\n    SPICE_MOUSE_MODE_MASK = 0x3;\n\nvar SPICE_CLIP_TYPE_NONE            = 0;\nvar SPICE_CLIP_TYPE_RECTS           = 1;\n\nvar SPICE_IMAGE_TYPE_BITMAP         = 0;\nvar SPICE_IMAGE_TYPE_QUIC           = 1;\nvar SPICE_IMAGE_TYPE_RESERVED       = 2;\nvar SPICE_IMAGE_TYPE_LZ_PLT         = 100;\nvar SPICE_IMAGE_TYPE_LZ_RGB         = 101;\nvar SPICE_IMAGE_TYPE_GLZ_RGB        = 102;\nvar SPICE_IMAGE_TYPE_FROM_CACHE     = 103;\nvar SPICE_IMAGE_TYPE_SURFACE        = 104;\nvar SPICE_IMAGE_TYPE_JPEG           = 105;\nvar SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS = 106;\nvar SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB   = 107;\nvar SPICE_IMAGE_TYPE_JPEG_ALPHA     = 108;\n\nvar SPICE_IMAGE_FLAGS_CACHE_ME = (1 << 0),\n    SPICE_IMAGE_FLAGS_HIGH_BITS_SET = (1 << 1),\n    SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME = (1 << 2);\n\nvar SPICE_BITMAP_FLAGS_PAL_CACHE_ME = (1 << 0),\n    SPICE_BITMAP_FLAGS_PAL_FROM_CACHE = (1 << 1),\n    SPICE_BITMAP_FLAGS_TOP_DOWN = (1 << 2),\n    SPICE_BITMAP_FLAGS_MASK = 0x7;\n\nvar SPICE_BITMAP_FMT_INVALID        = 0,\n    SPICE_BITMAP_FMT_1BIT_LE        = 1,\n    SPICE_BITMAP_FMT_1BIT_BE        = 2,\n    SPICE_BITMAP_FMT_4BIT_LE        = 3,\n    SPICE_BITMAP_FMT_4BIT_BE        = 4,\n    SPICE_BITMAP_FMT_8BIT           = 5,\n    SPICE_BITMAP_FMT_16BIT          = 6,\n    SPICE_BITMAP_FMT_24BIT          = 7,\n    SPICE_BITMAP_FMT_32BIT          = 8,\n    SPICE_BITMAP_FMT_RGBA           = 9;\n\n\nvar SPICE_CURSOR_FLAGS_NONE = (1 << 0),\n    SPICE_CURSOR_FLAGS_CACHE_ME = (1 << 1),\n    SPICE_CURSOR_FLAGS_FROM_CACHE = (1 << 2),\n    SPICE_CURSOR_FLAGS_MASK = 0x7;\n\nvar SPICE_MOUSE_BUTTON_MASK_LEFT = (1 << 0),\n    SPICE_MOUSE_BUTTON_MASK_MIDDLE = (1 << 1),\n    SPICE_MOUSE_BUTTON_MASK_RIGHT = (1 << 2),\n    SPICE_MOUSE_BUTTON_MASK_MASK = 0x7;\n    \nvar SPICE_MOUSE_BUTTON_INVALID  = 0;\nvar SPICE_MOUSE_BUTTON_LEFT     = 1;\nvar SPICE_MOUSE_BUTTON_MIDDLE   = 2;\nvar SPICE_MOUSE_BUTTON_RIGHT    = 3;\nvar SPICE_MOUSE_BUTTON_UP       = 4;\nvar SPICE_MOUSE_BUTTON_DOWN     = 5;\n\nvar SPICE_BRUSH_TYPE_NONE = 0,\n    SPICE_BRUSH_TYPE_SOLID = 1,\n    SPICE_BRUSH_TYPE_PATTERN = 2;\n\nvar SPICE_SURFACE_FMT_INVALID = 0,\n    SPICE_SURFACE_FMT_1_A = 1,\n    SPICE_SURFACE_FMT_8_A = 8,\n    SPICE_SURFACE_FMT_16_555 = 16,\n    SPICE_SURFACE_FMT_32_xRGB = 32,\n    SPICE_SURFACE_FMT_16_565 = 80,\n    SPICE_SURFACE_FMT_32_ARGB = 96;\n\nvar SPICE_ROPD_INVERS_SRC = (1 << 0),\n    SPICE_ROPD_INVERS_BRUSH = (1 << 1),\n    SPICE_ROPD_INVERS_DEST = (1 << 2),\n    SPICE_ROPD_OP_PUT = (1 << 3),\n    SPICE_ROPD_OP_OR = (1 << 4),\n    SPICE_ROPD_OP_AND = (1 << 5),\n    SPICE_ROPD_OP_XOR = (1 << 6),\n    SPICE_ROPD_OP_BLACKNESS = (1 << 7),\n    SPICE_ROPD_OP_WHITENESS = (1 << 8),\n    SPICE_ROPD_OP_INVERS = (1 << 9),\n    SPICE_ROPD_INVERS_RES = (1 << 10),\n    SPICE_ROPD_MASK = 0x7ff;\n\nvar LZ_IMAGE_TYPE_INVALID = 0,\n    LZ_IMAGE_TYPE_PLT1_LE = 1,\n    LZ_IMAGE_TYPE_PLT1_BE = 2,      // PLT stands for palette\n    LZ_IMAGE_TYPE_PLT4_LE = 3,\n    LZ_IMAGE_TYPE_PLT4_BE = 4,\n    LZ_IMAGE_TYPE_PLT8    = 5,\n    LZ_IMAGE_TYPE_RGB16   = 6,\n    LZ_IMAGE_TYPE_RGB24   = 7,\n    LZ_IMAGE_TYPE_RGB32   = 8,\n    LZ_IMAGE_TYPE_RGBA    = 9,\n    LZ_IMAGE_TYPE_XXXA    = 10;\n\n\nvar QUIC_IMAGE_TYPE_INVALID = 0,\n    QUIC_IMAGE_TYPE_GRAY    = 1,\n    QUIC_IMAGE_TYPE_RGB16   = 2,\n    QUIC_IMAGE_TYPE_RGB24   = 3,\n    QUIC_IMAGE_TYPE_RGB32   = 4,\n    QUIC_IMAGE_TYPE_RGBA    = 5;\n\nvar SPICE_INPUT_MOTION_ACK_BUNCH = 4;\n\n\nvar SPICE_CURSOR_TYPE_ALPHA     = 0,\n    SPICE_CURSOR_TYPE_MONO      = 1,\n    SPICE_CURSOR_TYPE_COLOR4    = 2,\n    SPICE_CURSOR_TYPE_COLOR8    = 3,\n    SPICE_CURSOR_TYPE_COLOR16   = 4,\n    SPICE_CURSOR_TYPE_COLOR24   = 5,\n    SPICE_CURSOR_TYPE_COLOR32   = 6;\n\nvar SPICE_VIDEO_CODEC_TYPE_MJPEG = 1;\n\nvar VD_AGENT_PROTOCOL = 1;\nvar VD_AGENT_MAX_DATA_SIZE = 2048;\n\nvar VD_AGENT_MOUSE_STATE            = 1,\n    VD_AGENT_MONITORS_CONFIG        = 2,\n    VD_AGENT_REPLY                  = 3,\n    VD_AGENT_CLIPBOARD              = 4,\n    VD_AGENT_DISPLAY_CONFIG         = 5,\n    VD_AGENT_ANNOUNCE_CAPABILITIES  = 6,\n    VD_AGENT_CLIPBOARD_GRAB         = 7,\n    VD_AGENT_CLIPBOARD_REQUEST      = 8,\n    VD_AGENT_CLIPBOARD_RELEASE      = 9,\n    VD_AGENT_FILE_XFER_START        =10,\n    VD_AGENT_FILE_XFER_STATUS       =11,\n    VD_AGENT_FILE_XFER_DATA         =12,\n    VD_AGENT_CLIENT_DISCONNECTED    =13,\n    VD_AGENT_MAX_CLIPBOARD          =14;\n\nvar VD_AGENT_CAP_MOUSE_STATE            = 0,\n    VD_AGENT_CAP_MONITORS_CONFIG        = 1,\n    VD_AGENT_CAP_REPLY                  = 2,\n    VD_AGENT_CAP_CLIPBOARD              = 3,\n    VD_AGENT_CAP_DISPLAY_CONFIG         = 4,\n    VD_AGENT_CAP_CLIPBOARD_BY_DEMAND    = 5,\n    VD_AGENT_CAP_CLIPBOARD_SELECTION    = 6,\n    VD_AGENT_CAP_SPARSE_MONITORS_CONFIG = 7,\n    VD_AGENT_CAP_GUEST_LINEEND_LF       = 8,\n    VD_AGENT_CAP_GUEST_LINEEND_CRLF     = 9,\n    VD_AGENT_CAP_MAX_CLIPBOARD          = 10,\n    VD_AGENT_END_CAP                    = 11;\n\nvar VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA = 0,\n    VD_AGENT_FILE_XFER_STATUS_CANCELLED     = 1,\n    VD_AGENT_FILE_XFER_STATUS_ERROR         = 2,\n    VD_AGENT_FILE_XFER_STATUS_SUCCESS       = 3;\n\ndefine(\"spice-enums\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2012 by Aric Stewart <aric@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/*\n * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.\n *\n * Permission to use, copy, modify, distribute, and sell this software and its\n * documentation for any purpose is hereby granted without fee, provided that\n * the above copyright notice appear in all copies and that both that\n * copyright notice and this permission notice appear in supporting\n * documentation, and that the name of Thomas Roell not be used in\n * advertising or publicity pertaining to distribution of the software without\n * specific, written prior permission.  Thomas Roell makes no representations\n * about the suitability of this software for any purpose.  It is provided\n * \"as is\" without express or implied warranty.\n *\n * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,\n * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO\n * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR\n * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,\n * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n *\n */\n/*\n * Copyright (c) 1994-2003 by The XFree86 Project, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL\n * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR\n * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n *\n * Except as contained in this notice, the name of the copyright holder(s)\n * and author(s) shall not be used in advertising or otherwise to promote\n * the sale, use or other dealings in this Software without prior written\n * authorization from the copyright holder(s) and author(s).\n */\n\n/*\n * NOTE: The AT/MF keyboards can generate (via the 8042) two (MF: three)\n *       sets of scancodes. Set3 can only be generated by a MF keyboard.\n *       Set2 sends a makecode for keypress, and the same code prefixed by a\n *       F0 for keyrelease. This is a little bit ugly to handle. Thus we use\n *       here for X386 the PC/XT compatible Set1. This set uses 8bit scancodes.\n *       Bit 7 ist set if the key is released. The code E0 switches to a\n *       different meaning to add the new MF cursorkeys, while not breaking old\n *       applications. E1 is another special prefix. Since I assume that there\n *       will be further versions of PC/XT scancode compatible keyboards, we\n *       may be in trouble one day.\n *\n * IDEA: 1) Use Set2 on AT84 keyboards and translate it to MF Set3.\n *       2) Use the keyboards native set and translate it to common keysyms.\n */\n\n/*\n * definition of the AT84/MF101/MF102 Keyboard:\n * ============================================================\n *       Defined             Key Cap Glyphs       Pressed value\n *      Key Name            Main       Also       (hex)    (dec)\n *      ----------------   ---------- -------    ------    ------\n */\n\nvar KEY_Escape      =/* Escape                0x01  */    1\nvar KEY_1           =/* 1           !         0x02  */    2\nvar KEY_2           =/* 2           @         0x03  */    3\nvar KEY_3           =/* 3           #         0x04  */    4\nvar KEY_4           =/* 4           $         0x05  */    5\nvar KEY_5           =/* 5           %         0x06  */    6\nvar KEY_6           =/* 6           ^         0x07  */    7\nvar KEY_7           =/* 7           &         0x08  */    8\nvar KEY_8           =/* 8           *         0x09  */    9\nvar KEY_9           =/* 9           (         0x0a  */   10\nvar KEY_0           =/* 0           )         0x0b  */   11\nvar KEY_Minus       =/* - (Minus)   _ (Under) 0x0c  */   12\nvar KEY_Equal       =/* = (Equal)   +         0x0d  */   13\nvar KEY_BackSpace   =/* Back Space            0x0e  */   14\nvar KEY_Tab         =/* Tab                   0x0f  */   15\nvar KEY_Q           =/* Q                     0x10  */   16\nvar KEY_W           =/* W                     0x11  */   17\nvar KEY_E           =/* E                     0x12  */   18\nvar KEY_R           =/* R                     0x13  */   19\nvar KEY_T           =/* T                     0x14  */   20\nvar KEY_Y           =/* Y                     0x15  */   21\nvar KEY_U           =/* U                     0x16  */   22\nvar KEY_I           =/* I                     0x17  */   23\nvar KEY_O           =/* O                     0x18  */   24\nvar KEY_P           =/* P                     0x19  */   25\nvar KEY_LBrace      =/* [           {         0x1a  */   26\nvar KEY_RBrace      =/* ]           }         0x1b  */   27\nvar KEY_Enter       =/* Enter                 0x1c  */   28\nvar KEY_LCtrl       =/* Ctrl(left)            0x1d  */   29\nvar KEY_A           =/* A                     0x1e  */   30\nvar KEY_S           =/* S                     0x1f  */   31\nvar KEY_D           =/* D                     0x20  */   32\nvar KEY_F           =/* F                     0x21  */   33\nvar KEY_G           =/* G                     0x22  */   34\nvar KEY_H           =/* H                     0x23  */   35\nvar KEY_J           =/* J                     0x24  */   36\nvar KEY_K           =/* K                     0x25  */   37\nvar KEY_L           =/* L                     0x26  */   38\nvar KEY_SemiColon   =/* ;(SemiColon) :(Colon) 0x27  */   39\nvar KEY_Quote       =/* ' (Apostr)  \" (Quote) 0x28  */   40\nvar KEY_Tilde       =/* ` (Accent)  ~ (Tilde) 0x29  */   41\nvar KEY_ShiftL      =/* Shift(left)           0x2a  */   42\nvar KEY_BSlash      =/* \\(BckSlash) |(VertBar)0x2b  */   43\nvar KEY_Z           =/* Z                     0x2c  */   44\nvar KEY_X           =/* X                     0x2d  */   45\nvar KEY_C           =/* C                     0x2e  */   46\nvar KEY_V           =/* V                     0x2f  */   47\nvar KEY_B           =/* B                     0x30  */   48\nvar KEY_N           =/* N                     0x31  */   49\nvar KEY_M           =/* M                     0x32  */   50\nvar KEY_Comma       =/* , (Comma)   < (Less)  0x33  */   51\nvar KEY_Period      =/* . (Period)  >(Greater)0x34  */   52\nvar KEY_Slash       =/* / (Slash)   ?         0x35  */   53\nvar KEY_ShiftR      =/* Shift(right)          0x36  */   54\nvar KEY_KP_Multiply =/* *                     0x37  */   55\nvar KEY_Alt         =/* Alt(left)             0x38  */   56\nvar KEY_Space       =/*   (SpaceBar)          0x39  */   57\nvar KEY_CapsLock    =/* CapsLock              0x3a  */   58\nvar KEY_F1          =/* F1                    0x3b  */   59\nvar KEY_F2          =/* F2                    0x3c  */   60\nvar KEY_F3          =/* F3                    0x3d  */   61\nvar KEY_F4          =/* F4                    0x3e  */   62\nvar KEY_F5          =/* F5                    0x3f  */   63\nvar KEY_F6          =/* F6                    0x40  */   64\nvar KEY_F7          =/* F7                    0x41  */   65\nvar KEY_F8          =/* F8                    0x42  */   66\nvar KEY_F9          =/* F9                    0x43  */   67\nvar KEY_F10         =/* F10                   0x44  */   68\nvar KEY_NumLock     =/* NumLock               0x45  */   69\nvar KEY_ScrollLock  =/* ScrollLock            0x46  */   70\nvar KEY_KP_7        =/* 7           Home      0x47  */   71\nvar KEY_KP_8        =/* 8           Up        0x48  */   72\nvar KEY_KP_9        =/* 9           PgUp      0x49  */   73\nvar KEY_KP_Minus    =/* - (Minus)             0x4a  */   74\nvar KEY_KP_4        =/* 4           Left      0x4b  */   75\nvar KEY_KP_5        =/* 5                     0x4c  */   76\nvar KEY_KP_6        =/* 6           Right     0x4d  */   77\nvar KEY_KP_Plus     =/* + (Plus)              0x4e  */   78\nvar KEY_KP_1        =/* 1           End       0x4f  */   79\nvar KEY_KP_2        =/* 2           Down      0x50  */   80\nvar KEY_KP_3        =/* 3           PgDown    0x51  */   81\nvar KEY_KP_0        =/* 0           Insert    0x52  */   82\nvar KEY_KP_Decimal  =/* . (Decimal) Delete    0x53  */   83\nvar KEY_SysReqest   =/* SysReqest             0x54  */   84\n                         /* NOTUSED               0x55  */\nvar KEY_Less        =/* < (Less)   >(Greater) 0x56  */   86\nvar KEY_F11         =/* F11                   0x57  */   87\nvar KEY_F12         =/* F12                   0x58  */   88\n\nvar KEY_Prefix0     =/* special               0x60  */   96\nvar KEY_Prefix1     =/* specail               0x61  */   97\n;\ndefine(\"spice-atKeynames\", function(){});\n\n","\"use strict\";\n/*\n   Copyright (C) 2013 by Jeremy P. White <jwhite@codeweavers.com>\n\n   This file is part of spice-html5.\n\n   spice-html5 is free software: you can redistribute it and/or modify\n   it under the terms of the GNU Lesser General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   spice-html5 is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public License\n   along with spice-html5.  If not, see <http://www.gnu.org/licenses/>.\n*/\n\n/*----------------------------------------------------------------------------\n**  SpiceSimulateCursor\n**      Internet Explorer 10 does not support data uri's in cursor assignment.\n**  This file provides a number of gimmicks to compensate.  First, if there\n**  is a preloaded cursor available, we will use that.  Failing that, we will\n**  simulate a cursor using an image that is moved around the screen.\n**--------------------------------------------------------------------------*/\nvar SpiceSimulateCursor = {\n\ncursors : new Array(),\nunknown_cursors : new Array(),\nwarned: false,\n\nadd_cursor: function(sha1, value)\n{\n    SpiceSimulateCursor.cursors[sha1] = value;\n},\n\nunknown_cursor: function(sha1, curdata)\n{\n    if (! SpiceSimulateCursor.warned)\n    {\n        SpiceSimulateCursor.warned = true;\n        alert(\"Internet Explorer does not support dynamic cursors.  \" +\n              \"This page will now simulate cursors with images, \" +\n              \"which will be imperfect.  We recommend using Chrome or Firefox instead.  \" +\n              \"\\n\\nIf you need to use Internet Explorer, you can create a static cursor \" +\n              \"file for each cursor your application uses.  \" +\n              \"View the console log for more information on creating static cursors for your environment.\");\n    }\n\n    if (! SpiceSimulateCursor.unknown_cursors[sha1])\n    {\n        SpiceSimulateCursor.unknown_cursors[sha1] = curdata;\n        console.log('Unknown cursor.  Simulation required.  To avoid simulation for this cursor, create and include a custom javascript file, and add the following line:');\n        console.log('SpiceCursorSimulator.add_cursor(\"' + sha1 + '\"), \"<your filename here>.cur\");');\n        console.log('And then run following command, redirecting output into <your filename here>.cur:');\n        console.log('php -r \"echo urldecode(\\'' + curdata + '\\');\"');\n    }\n},\n\nsimulate_cursor: function (spicecursor, cursor, screen, pngstr)\n{\n    var cursor_sha = hex_sha1(pngstr + ' ' + cursor.header.hot_spot_x + ' ' + cursor.header.hot_spot_y);\n    if (typeof SpiceSimulateCursor.cursors != 'undefined')\n        if (typeof SpiceSimulateCursor.cursors[cursor_sha] != 'undefined')\n        {\n            var curstr = 'url(' + SpiceSimulateCursor.cursors[cursor_sha] + '), default';\n            screen.style.cursor = curstr;\n        }\n\n    if (window.getComputedStyle(screen, null).cursor == 'auto')\n    {\n        SpiceSimulateCursor.unknown_cursor(cursor_sha, \n            SpiceSimulateCursor.create_icondir(cursor.header.width, cursor.header.height,\n            cursor.data.byteLength, cursor.header.hot_spot_x, cursor.header.hot_spot_y) + pngstr);\n\n        document.getElementById(spicecursor.parent.screen_id).style.cursor = 'none';\n        if (! spicecursor.spice_simulated_cursor)\n        {\n            spicecursor.spice_simulated_cursor = document.createElement('img');\n\n            spicecursor.spice_simulated_cursor.style.position = 'absolute';\n            spicecursor.spice_simulated_cursor.style.display = 'none';\n            spicecursor.spice_simulated_cursor.style.overflow = 'hidden';\n\n            spicecursor.spice_simulated_cursor.spice_screen = document.getElementById(spicecursor.parent.screen_id);\n\n            spicecursor.spice_simulated_cursor.addEventListener('mousemove', SpiceSimulateCursor.handle_sim_mousemove);\n\n            spicecursor.spice_simulated_cursor.spice_screen.appendChild(spicecursor.spice_simulated_cursor);\n        }\n\n        spicecursor.spice_simulated_cursor.src = 'data:image/png,' + pngstr;\n\n        spicecursor.spice_simulated_cursor.spice_hot_x = cursor.header.hot_spot_x;\n        spicecursor.spice_simulated_cursor.spice_hot_y = cursor.header.hot_spot_y;\n\n        spicecursor.spice_simulated_cursor.style.pointerEvents = \"none\";\n    }\n    else\n    { \n        if (spicecursor.spice_simulated_cursor)\n        {\n            spicecursor.spice_simulated_cursor.spice_screen.removeChild(spicecursor.spice_simulated_cursor);\n            delete spicecursor.spice_simulated_cursor;\n        }\n    }\n},\n\nhandle_sim_mousemove: function(e)\n{\n    var retval;\n    var f = SpiceSimulateCursor.duplicate_mouse_event(e, this.spice_screen);\n    return this.spice_screen.dispatchEvent(f);\n},\n\nduplicate_mouse_event: function(e, target)\n{\n    var evt = document.createEvent(\"mouseevent\");\n    evt.initMouseEvent(e.type, true, true, e.view, e.detail,\n        e.screenX, e.screenY, e.clientX, e.clientY,\n        e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n    return evt;\n},\n\nICONDIR: function ()\n{\n},\n\nICONDIRENTRY: function(width, height, bytes, hot_x, hot_y)\n{\n    this.width = width;\n    this.height = height;\n    this.bytes = bytes;\n    this.hot_x = hot_x;\n    this.hot_y = hot_y;\n},\n\n\ncreate_icondir: function (width, height, bytes, hot_x, hot_y)\n{\n    var i;\n    var header = new SpiceSimulateCursor.ICONDIR();\n    var entry = new SpiceSimulateCursor.ICONDIRENTRY(width, height, bytes, hot_x, hot_y);\n\n    var mb = new ArrayBuffer(header.buffer_size() + entry.buffer_size());\n    var at = header.to_buffer(mb);\n    at = entry.to_buffer(mb, at);\n\n    var u8 = new Uint8Array(mb);\n    var str = \"\";\n    for (i = 0; i < at; i++)\n    {\n        str += \"%\";\n        if (u8[i] < 16)\n            str += \"0\";\n        str += u8[i].toString(16);\n    }\n    return str;\n},\n\n};\n\nSpiceSimulateCursor.ICONDIR.prototype = \n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint16(at, 0, true); at += 2;\n        dv.setUint16(at, 2, true); at += 2;\n        dv.setUint16(at, 1, true); at += 2;\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 6;\n    }\n};\n\nSpiceSimulateCursor.ICONDIRENTRY.prototype =\n{\n    to_buffer: function(a, at)\n    {\n        at = at || 0;\n        var dv = new SpiceDataView(a);\n        dv.setUint8(at, this.width); at++;\n        dv.setUint8(at, this.height); at++;\n        dv.setUint8(at, 0); at++;  /* color palette count, unused */\n        dv.setUint8(at, 0); at++;  /* reserved */\n        dv.setUint16(at, this.hot_x, true); at += 2;\n        dv.setUint16(at, this.hot_y, true); at += 2;\n        dv.setUint32(at, this.bytes, true); at += 4;\n        dv.setUint32(at, at + 4, true); at += 4;  /* Offset to bytes */\n        return at;\n    },\n    buffer_size: function()\n    {\n        return 16;\n    }\n};\n\ndefine(\"spice-simulatecursor\", function(){});\n\n","define('utils/spice',['require','spice-main','sunstone-config','utils/notifier'],function(require) {\n  require('spice-main');\n  var Config = require('sunstone-config');\n  var Notifier = require('utils/notifier');\n\n  var _lock = false;\n  var _sc;\n\n  return {\n    'lockStatus': lockStatus,\n    'lock': lock,\n    'unlock': unlock,\n    'spiceCallback': spiceCallback,\n    'disconnect': disconnect\n  }\n\n  function lockStatus() {\n    return _lock;\n  }\n\n  function lock() {\n    _lock = true;\n  }\n\n  function unlock() {\n    _lock = false;\n  }\n\n  function spice_error(e) {\n    disconnect();\n  }\n\n  function disconnect() {\n    if (_sc) {\n      _sc.stop();\n    }\n  }\n\n  function agent_connected(sc) {\n    window.addEventListener('resize', handle_resize);\n    window.spice_connection = this;\n\n    resize_helper(this);\n  }\n\n  function spiceCallback(response) {\n    var host, port, password, scheme = \"ws://\", uri, token, vm_name;\n\n    if (Config.vncWSS) {\n      scheme = \"wss://\";\n    }\n\n    host = window.location.hostname;\n    port = Config.vncProxyPort;\n    password = response[\"password\"];\n    token = response[\"token\"];\n    vm_name = response[\"vm_name\"];\n\n    if ((!host) || (!port)) {\n      console.log(\"must specify host and port in URL\");\n      return;\n    }\n\n    if (_sc) {\n      _sc.stop();\n    }\n\n    uri = scheme + host + \":\" + port + \"?token=\" + token;\n\n    try {\n      _sc = new SpiceMainConn({uri: uri, screen_id: \"spice-screen\", dump_id: \"debug-div\",\n                  message_id: \"message-div\", password: password, onerror: spice_error, onagent: agent_connected});\n    }\n    catch (e) {\n      spice_error(e)\n    }\n\n    var url = \"spice?\";\n    url += \"host=\" + host;\n    url += \"&port=\" + port;\n    url += \"&token=\" + token;\n    url += \"&password=\" + password;\n    url += \"&encrypt=\" + config['user_config']['vnc_wss'];\n    url += \"&title=\" + vm_name;\n\n    $(\"#open_in_a_new_window_spice\").attr('href', url);\n  }\n});\n\n","define('tabs/vms-tab/dialogs/deploy/dialogId',['require'],function(require){\n  return 'deployVMDialog';\n});\n","define('tabs/vms-tab/dialogs/migrate/dialogId',['require'],function(require){\n  return 'migrateVMDialog';\n});\n","define('tabs/vms-tab/dialogs/vnc/dialogId',['require'],function(require) {\n  return 'vncVMDialog';\n});\n\n","define('tabs/vms-tab/dialogs/spice/dialogId',['require'],function(require) {\n  return 'spiceVMDialog';\n});\n\n","define('tabs/vms-tab/actions',['require','sunstone','utils/notifier','utils/locale','opennebula/vm','utils/common-actions','utils/vnc','utils/spice','./tabId','./form-panels/create/formPanelId','./dialogs/deploy/dialogId','./dialogs/migrate/dialogId','./dialogs/vnc/dialogId','./dialogs/spice/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var OpenNebulaVM = require('opennebula/vm');\n  var CommonActions = require('utils/common-actions');\n  var Vnc = require('utils/vnc');\n  var Spice = require('utils/spice');\n\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n  var DEPLOY_DIALOG_ID = require('./dialogs/deploy/dialogId');\n  var MIGRATE_DIALOG_ID = require('./dialogs/migrate/dialogId');\n  var VNC_DIALOG_ID = require('./dialogs/vnc/dialogId');\n  var SPICE_DIALOG_ID = require('./dialogs/spice/dialogId');\n  \n  var XML_ROOT = \"VM\";\n  var RESOURCE = \"VM\";\n\n  var _commonActions = new CommonActions(OpenNebulaVM, RESOURCE, TAB_ID);\n\n  var _actions = {\n    \"VM.list\":    _commonActions.list(),\n    \"VM.show\":    _commonActions.show(),\n    \"VM.refresh\": _commonActions.refresh(),\n    \"VM.delete\":  _commonActions.delete(),\n    \"VM.chown\": _commonActions.multipleAction('chown'),\n    \"VM.chgrp\": _commonActions.multipleAction('chgrp'),\n\n    \"VM.hold\":    _commonActions.multipleAction('hold'),\n    \"VM.release\": _commonActions.multipleAction('release'),\n    \"VM.suspend\": _commonActions.multipleAction('suspend'),\n    \"VM.resume\": _commonActions.multipleAction('resume'),\n    \"VM.stop\": _commonActions.multipleAction('stop'),\n    \"VM.reboot_hard\": _commonActions.multipleAction('reset'),\n    \"VM.delete_recreate\": _commonActions.multipleAction('resubmit'),\n    \"VM.reboot\": _commonActions.multipleAction('reboot'),\n    \"VM.poweroff\": _commonActions.multipleAction('poweroff'),\n    \"VM.poweroff_hard\": _commonActions.multipleAction('poweroff_hard'),\n    \"VM.undeploy\": _commonActions.multipleAction('undeploy'),\n    \"VM.undeploy_hard\": _commonActions.multipleAction('undeploy_hard'),\n    \"VM.shutdown\": _commonActions.multipleAction('shutdown'),\n    \"VM.shutdown_hard\": _commonActions.multipleAction('shutdown_hard'),\n    \"VM.recover\": _commonActions.multipleAction('recover'),\n    \"VM.resched\": _commonActions.multipleAction('resched'),\n    \"VM.unresched\": _commonActions.multipleAction('unresched'),\n\n    \"VM.chmod\": _commonActions.singleAction('chmod'),\n    \"VM.rename\": _commonActions.singleAction('rename'),\n    \"VM.update_template\": _commonActions.singleAction('update'),\n    \"VM.deploy_action\": _commonActions.singleAction('deploy'),\n    \"VM.migrate_action\": _commonActions.singleAction('migrate'),\n    \"VM.migrate_live_action\": _commonActions.singleAction('livemigrate'),\n    \"VM.attachdisk\": _commonActions.singleAction('attachdisk'),\n    \"VM.detachdisk\": _commonActions.singleAction('detachdisk'),\n    \"VM.attachnic\": _commonActions.singleAction('attachnic'),\n    \"VM.detachnic\": _commonActions.singleAction('detachnic'),\n    \"VM.resize\": _commonActions.singleAction('resize'),\n    \"VM.snapshot_create\": _commonActions.singleAction('snapshot_create'),\n    \"VM.snapshot_revert\": _commonActions.singleAction('snapshot_revert'),\n    \"VM.snapshot_delete\": _commonActions.singleAction('snapshot_delete'),\n    \n    \"VM.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n    \"VM.create\" : {\n      type: \"custom\",\n      call: function(id, name) {\n        Sunstone.runAction(\"Template.instantiate\", [id], name);\n        Sunstone.runAction(\"VM.refresh\");\n      },\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n      },\n      error: Notifier.onError\n    },\n    \"VM.deploy\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.getDialog(DEPLOY_DIALOG_ID).show();\n      }\n    },\n    \"VM.silent_deploy_action\" : {\n      type: \"single\",\n      call: OpenNebulaVM.deploy,\n      error: Notifier.onError\n    },\n    \"VM.migrate\" : {\n      type: \"custom\",\n      call: function() {\n       var dialog = Sunstone.getDialog(MIGRATE_DIALOG_ID);\n       dialog.setLive(false);\n       dialog.show();\n     }\n    },\n    \"VM.migrate_live\" : {\n      type: \"custom\",\n      call: function() {\n       var dialog = Sunstone.getDialog(MIGRATE_DIALOG_ID);\n       dialog.setLive(true);\n       dialog.show();\n     }\n    },\n    \"VM.startvnc\" : {\n      type: \"custom\",\n      call: function() {\n        $.each(Sunstone.getDataTable(TAB_ID).elements(), function(index, elem) {\n          if (!Vnc.lockStatus()) {\n            Vnc.lock();\n            Sunstone.runAction(\"VM.startvnc_action\", elem);\n          } else {\n            Notifier.notifyError(Locale.tr(\"VNC Connection in progress\"))\n            return false;\n          }\n        });\n      }\n    },\n    \"VM.startvnc_action\" : {\n      type: \"single\",\n      call: OpenNebulaVM.vnc,\n      callback: function(request, response) {\n       var dialog = Sunstone.getDialog(VNC_DIALOG_ID);\n       dialog.setElement(response);\n       dialog.show();\n      },\n      error: function(req, resp) {\n        Notifier.onError(req, resp);\n        Vnc.unlock();\n      },\n      notify: true\n    },\n    \"VM.startspice\" : {\n      type: \"custom\",\n      call: function() {\n        $.each(Sunstone.getDataTable(TAB_ID).elements(), function(index, elem) {\n          if (!Spice.lockStatus()) {\n            Spice.lock();\n            Sunstone.runAction(\"VM.startspice_action\", elem);\n          } else {\n            Notifier.notifyError(Locale.tr(\"VNC Connection in progress\"))\n            return false;\n          }\n        });\n      }\n    },\n    \"VM.startspice_action\" : {\n      type: \"single\",\n      call: OpenNebulaVM.vnc,\n      callback: function(request, response) {\n       var dialog = Sunstone.getDialog(SPICE_DIALOG_ID);\n       dialog.setElement(response);\n       dialog.show();\n      },\n      error: function(req, resp) {\n        Notifier.onError(req, resp);\n        Spice.unlock();\n      },\n      notify: true\n    },\n    //\"VM.startspice\" : {\n    //  type: \"custom\",\n    //  call: function() {\n    //   popUpSPICE();\n    // }\n    //},\n    //\"VM.startspice_action\" : {\n    //  type: \"single\",\n    //  call: OpenNebula.VM.startvnc,\n    //  callback: spiceCallback,\n    //  error: function(req, resp) {\n    //    onError(req, resp);\n    //    spice_lock = false;\n    //  },\n    //  notify: true\n    //},\n    /*\n\n    \"VM.saveas\" : {\n      type: \"single\",\n      call: OpenNebula.VM.saveas,\n      callback: function(request) {\n        Sunstone.runAction(\"VM.show\", request.request.data[0]);\n        OpenNebula.Helper.clear_cache(\"IMAGE\");\n      },\n      error:onError,\n      notify: true\n    },\n \n    \"VM.disk_snapshot_cancel\" : {\n      type: \"single\",\n      call: OpenNebula.VM.disk_snapshot_cancel,\n      callback: function(request) {\n        Sunstone.runAction(\"VM.show\", request.request.data[0]);\n        OpenNebula.Helper.clear_cache(\"IMAGE\");\n      },\n      error:onError,\n      notify: true\n    },\n  \n \n\n */\n  };\n\n  return _actions;\n});\n\n","define('tabs/vms-tab/utils/datatable-common',['require','opennebula/vm','utils/locale','utils/humanize','utils/template-utils'],function(require) {\n\n  var OpenNebulaVM = require('opennebula/vm');\n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var TemplateUtils = require('utils/template-utils');\n\n  var RESOURCE = \"VM\";\n  var XML_ROOT = \"VM\";\n\n  var _columns = [\n    Locale.tr(\"ID\") ,\n    Locale.tr(\"Owner\") ,\n    Locale.tr(\"Group\"),\n    Locale.tr(\"Name\"),\n    Locale.tr(\"Status\"),\n    Locale.tr(\"Used CPU\"),\n    Locale.tr(\"Used Memory\"),\n    Locale.tr(\"Host\"),\n    Locale.tr(\"IPs\"),\n    Locale.tr(\"Start Time\"),\n    Locale.tr(\"\"),\n    Locale.tr(\"Hidden Template\")\n  ];\n\n  return {\n    'elementArray': _elementArray,\n    'emptyElementArray': _emptyElementArray,\n    'columns': _columns\n  };\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n\n    var state = OpenNebulaVM.stateStr(element.STATE);\n\n    // TODO bug: will not work if state is translated\n    if (state == \"ACTIVE\") {\n      state = OpenNebulaVM.shortLcmStateStr(element.LCM_STATE);\n    }\n\n    // VNC icon\n    var vncIcon;\n    if (OpenNebulaVM.isVNCSupported(element)) {\n      vncIcon = '<a class=\"vnc\" href=\"#\" vm_id=\"' + element.ID + '\"><i class=\"fa fa-desktop\"/></a>';\n    } else if (OpenNebulaVM.isSPICESupported(element)) {\n      vncIcon = '<a class=\"spice\" href=\"#\" vm_id=\"' + element.ID + '\"><i class=\"fa fa-desktop\"/></a>';\n    } else {\n      vncIcon = '';\n    }\n\n    return [\n      '<input class=\"check_item\" type=\"checkbox\" id=\"' + RESOURCE.toLowerCase() + '_' +\n                             element.ID + '\" name=\"selected_items\" value=\"' +\n                             element.ID + '\"/>',\n       element.ID,\n       element.UNAME,\n       element.GNAME,\n       element.NAME,\n       state,\n       element.CPU,\n       Humanize.size(element.MEMORY),\n       OpenNebulaVM.hostnameStr(element),\n       OpenNebulaVM.ipsStr(element),\n       Humanize.prettyTime(element.STIME),\n       vncIcon,\n       TemplateUtils.templateToString(element)\n    ];\n  }\n\n  function _emptyElementArray(vmId) {\n    return [\n      '<input class=\"check_item\" type=\"checkbox\" id=\"' + RESOURCE.toLowerCase() + '_' +\n                             vmId + '\" name=\"selected_items\" value=\"' +\n                             vmId + '\"/>',\n       vmId,\n       \"\",\n       \"\",\n       \"\",\n       \"\",\n       \"\",\n       \"\",\n       \"\",\n       \"\",\n       \"\",\n       \"\",\n       \"\"\n    ];\n  }\n});\n\n","define('tabs/vms-tab/utils/state-actions',['require','opennebula/vm'],function(require) {\n  var OpenNebulaVM = require('opennebula/vm');\n\n  var STATE_ACTIONS = {\n    0: //OpenNebulaVM.state.INIT:\n        [\"VM.delete\", \"VM.delete_recreate\", \"VM.resize\"],\n\n    1: //OpenNebulaVM.state.PENDING:\n        [\"VM.delete\", \"VM.delete_recreate\", \"VM.hold\", \"VM.deploy\"],\n\n    2: //OpenNebulaVM.state.HOLD:\n        [\"VM.delete\", \"VM.delete_recreate\", \"VM.release\", \"VM.deploy\"],\n\n    3: //OpenNebulaVM.state.ACTIVE:\n        [\"VM.delete\", \"VM.delete_recreate\", \"VM.recover\"],\n\n    4: //OpenNebulaVM.state.STOPPED:\n        [\"VM.delete\", \"VM.delete_recreate\", \"VM.resume\", \"VM.deploy\"],\n\n    5: //OpenNebulaVM.state.SUSPENDED:\n        [\"VM.delete\", \"VM.resume\", \"VM.saveas\", \"VM.disk_snapshot_cancel\", \"VM.stop\", \"VM.shutdown_hard\"],\n    6: //OpenNebulaVM.state.DONE:\n        [],\n\n    7: //OpenNebulaVM.state.FAILED:\n        [\"VM.delete\", \"VM.delete_recreate\", \"VM.resize\"],\n\n    8: //OpenNebulaVM.state.POWEROFF:\n        [\"VM.delete\", \"VM.resume\", \"VM.resize\", \"VM.attachdisk\", \"VM.detachdisk\", \"VM.attachnic\", \"VM.detachnic\", \"VM.saveas\", \"VM.disk_snapshot_cancel\", \"VM.migrate\", \"VM.undeploy\", \"VM.undeploy_hard\", \"VM.shutdown_hard\"],\n\n    9: //OpenNebulaVM.state.UNDEPLOYED:\n        [\"VM.delete\", \"VM.delete_recreate\", \"VM.resume\", \"VM.resize\", \"VM.deploy\"],\n  }\n\n  var LCM_STATE_ACTIONS = {\n    0: //OpenNebulaVM.lcm_state.LCM_INIT:\n        [],\n    1: //OpenNebulaVM.lcm_state.PROLOG:\n        [],\n    2: //OpenNebulaVM.lcm_state.BOOT:\n        [],\n    3: //OpenNebulaVM.lcm_state.RUNNING:\n        [\"VM.shutdown\", \"VM.shutdown_hard\", \"VM.stop\", \"VM.suspend\", \"VM.reboot\", \"VM.reboot_hard\", \"VM.resched\", \"VM.unresched\", \"VM.poweroff\", \"VM.poweroff_hard\", \"VM.undeploy\", \"VM.undeploy_hard\", \"VM.migrate\", \"VM.migrate_live\", \"VM.attachdisk\", \"VM.detachdisk\", \"VM.attachnic\", \"VM.detachnic\", \"VM.saveas\", \"VM.disk_snapshot_cancel\"],\n    4: //OpenNebulaVM.lcm_state.MIGRATE:\n        [],\n    5: //OpenNebulaVM.lcm_state.SAVE_STOP:\n        [],\n    6: //OpenNebulaVM.lcm_state.SAVE_SUSPEND:\n        [],\n    7: //OpenNebulaVM.lcm_state.SAVE_MIGRATE:\n        [],\n    8: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE:\n        [],\n    9: //OpenNebulaVM.lcm_state.PROLOG_RESUME:\n        [],\n    10: //OpenNebulaVM.lcm_state.EPILOG_STOP:\n        [],\n    11: //OpenNebulaVM.lcm_state.EPILOG:\n        [],\n    12: //OpenNebulaVM.lcm_state.SHUTDOWN:\n        [],\n    13: //OpenNebulaVM.lcm_state.CANCEL:\n        [],\n    14: //OpenNebulaVM.lcm_state.FAILURE:\n        [],\n    15: //OpenNebulaVM.lcm_state.CLEANUP_RESUBMIT:\n        [],\n    16: //OpenNebulaVM.lcm_state.UNKNOWN:\n        [\"VM.shutdown\", \"VM.shutdown_hard\", \"VM.resched\", \"VM.unresched\", \"VM.poweroff\", \"VM.poweroff_hard\", \"VM.undeploy\", \"VM.undeploy_hard\", \"VM.migrate\", \"VM.migrate_live\", \"VM.disk_snapshot_cancel\", \"VM.resume\"],\n    17: //OpenNebulaVM.lcm_state.HOTPLUG:\n        [],\n    18: //OpenNebulaVM.lcm_state.SHUTDOWN_POWEROFF:\n        [],\n    19: //OpenNebulaVM.lcm_state.BOOT_UNKNOWN:\n        [],\n    20: //OpenNebulaVM.lcm_state.BOOT_POWEROFF:\n        [],\n    21: //OpenNebulaVM.lcm_state.BOOT_SUSPENDED:\n        [],\n    22: //OpenNebulaVM.lcm_state.BOOT_STOPPED:\n        [],\n    23: //OpenNebulaVM.lcm_state.CLEANUP_DELETE:\n        [],\n    24: //OpenNebulaVM.lcm_state.HOTPLUG_SNAPSHOT:\n        [],\n    25: //OpenNebulaVM.lcm_state.HOTPLUG_NIC:\n        [],\n    26: //OpenNebulaVM.lcm_state.HOTPLUG_SAVEAS:\n        [],\n    27: //OpenNebulaVM.lcm_state.HOTPLUG_SAVEAS_POWEROFF:\n        [],\n    28: //OpenNebulaVM.lcm_state.HOTPLUG_SAVEAS_SUSPENDED:\n        [],\n    29: //OpenNebulaVM.lcm_state.SHUTDOWN_UNDEPLOY:\n        [],\n    30: //OpenNebulaVM.lcm_state.EPILOG_UNDEPLOY:\n        [],\n    31: //OpenNebulaVM.lcm_state.PROLOG_UNDEPLOY:\n        [],\n    32: //OpenNebulaVM.lcm_state.BOOT_UNDEPLOY:\n        [],\n    33: //OpenNebulaVM.lcm_state.HOTPLUG_PROLOG_POWEROFF:\n        [],\n    34: //OpenNebulaVM.lcm_state.HOTPLUG_EPILOG_POWEROFF:\n        [],\n    35: //OpenNebulaVM.lcm_state.BOOT_MIGRATE:\n        [],\n    36: //OpenNebulaVM.lcm_state.BOOT_FAILURE:\n        [],\n    37: //OpenNebulaVM.lcm_state.BOOT_MIGRATE_FAILURE:\n        [],\n    38: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE_FAILURE:\n        [],\n    39: //OpenNebulaVM.lcm_state.PROLOG_FAILURE:\n        [],\n    40: //OpenNebulaVM.lcm_state.EPILOG_FAILURE:\n        [],\n    41: //OpenNebulaVM.lcm_state.EPILOG_STOP_FAILURE:\n        [],\n    42: //OpenNebulaVM.lcm_state.EPILOG_UNDEPLOY_FAILURE:\n        [],\n    43: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE_POWEROFF:\n        [],\n    44: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE_POWEROFF_FAILURE:\n        [],\n    45: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE_SUSPEND:\n        [],\n    46: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE_SUSPEND_FAILURE:\n        [],\n    47: //OpenNebulaVM.lcm_state.BOOT_UNDEPLOY_FAILURE:\n        [],\n    48: //OpenNebulaVM.lcm_state.BOOT_STOPPED_FAILURE:\n        [],\n    49: //OpenNebulaVM.lcm_state.PROLOG_RESUME_FAILURE:\n        [],\n    50: //OpenNebulaVM.lcm_state.PROLOG_UNDEPLOY_FAILURE:\n        []\n  }\n\n  return {\n    'disableAllStateActions': disableAllStateActions,\n    'resetStateButtons': resetStateButtons,\n    'enableStateButton': enableStateButton,\n    'enableStateActions': enableStateActions,\n    'enabledStateAction': enabledStateAction\n  };\n\n  function disableAllStateActions() {\n    $(\".state-dependent\").prop(\"disabled\", true).\n        removeClass(\"vm-action-enabled\").\n        addClass(\"vm-action-disabled\").\n        on(\"click.stateaction\", function(e) { return false; });\n  }\n\n  function resetStateButtons() {\n    $(\".state-dependent\").\n        addClass(\"vm-action-enabled\").\n        removeClass(\"vm-action-disabled\").\n        off(\"click.stateaction\");\n  }\n\n  function enableStateButton(button_action) {\n    $(\".state-dependent[href='\" + button_action + \"']\").removeAttr(\"disabled\").\n        addClass(\"vm-action-enabled\").\n        removeClass(\"vm-action-disabled\").\n        off(\"click.stateaction\");\n  }\n\n  // state and lcm_state are numeric\n  function enableStateActions(state, lcm_state) {\n    var state = parseInt(state);\n    var lcm_state = parseInt(lcm_state);\n\n    $.each(STATE_ACTIONS[state], function(i, action) {\n      enableStateButton(action);\n    });\n\n    if (state == OpenNebulaVM.state.ACTIVE) {\n      $.each(LCM_STATE_ACTIONS[lcm_state], function(i, action) {\n        enableStateButton(action);\n      });\n    }\n  }\n\n  // Returns true if the action is enabled for the given state\n  // action is \"VM.action\", state and lcm_state are numeric\n  function enabledStateAction(action, state, lcm_state) {\n    var state = parseInt(state);\n    var lcm_state = parseInt(lcm_state);\n\n    return (STATE_ACTIONS[state].indexOf(action) != -1 ||\n             (state == OpenNebulaVM.state.ACTIVE &&\n                LCM_STATE_ACTIONS[lcm_state].indexOf(action) != -1));\n  }\n});\n\n","define('tabs/vms-tab/datatable',['require','utils/tab-datatable','./utils/datatable-common','opennebula/vm','sunstone-config','utils/locale','./utils/state-actions','sunstone','utils/vnc','utils/spice','utils/notifier','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TabDataTable = require('utils/tab-datatable');\n  var VMsTableUtils = require('./utils/datatable-common');\n  var OpenNebulaVM = require('opennebula/vm');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var StateActions = require('./utils/state-actions');\n  var Sunstone = require('sunstone');\n  var Vnc = require('utils/vnc');\n  var Spice = require('utils/spice');\n  var Notifier = require('utils/notifier');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var RESOURCE = \"VM\";\n  var XML_ROOT = \"VM\";\n  var TAB_NAME = require('./tabId');\n\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\", 6, 7, 11]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    }\n\n    this.columns = VMsTableUtils.columns;\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 4,\n      \"select_resource\": Locale.tr(\"Please select a VM from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following VM:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more VMs from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following VMs:\")\n    };\n\n    this.totalVms = 0;\n    this.activeVms = 0;\n    this.pendingVms = 0;\n    this.failedVms = 0;\n    this.offVms = 0;\n\n    TabDataTable.call(this);\n  };\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n  Table.prototype.initialize = _initialize;\n  Table.prototype.preUpdateView = _preUpdateView;\n  Table.prototype.postUpdateView = _postUpdateView;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n    var state = OpenNebulaVM.stateStr(element.STATE);\n\n    this.totalVms++;\n    switch (state) {\n      case \"INIT\":\n      case \"PENDING\":\n      case \"HOLD\":\n        this.pendingVms++;\n        break;\n      case \"FAILED\":\n        this.failedVms++;\n        break;\n      case \"ACTIVE\":\n        this.activeVms++;\n        break;\n      case \"STOPPED\":\n      case \"SUSPENDED\":\n      case \"POWEROFF\":\n        this.offVms++;\n        break;\n      default:\n        break;\n    }\n\n    return VMsTableUtils.elementArray(element_json);\n  }\n\n  function _preUpdateView() {\n    StateActions.resetStateButtons();\n\n    this.totalVms = 0;\n    this.activeVms = 0;\n    this.pendingVms = 0;\n    this.failedVms = 0;\n    this.offVms = 0;\n  }\n\n  function _postUpdateView() {\n    $(\".total_vms\").text(this.totalVms);\n    $(\".active_vms\").text(this.activeVms);\n    $(\".pending_vms\").text(this.pendingVms);\n    $(\".failed_vms\").text(this.failedVms);\n    $(\".off_vms\").text(this.offVms);\n  }\n\n  function _initialize(opts) {\n    TabDataTable.prototype.initialize.call(this, opts);\n\n    $('#' + this.dataTableId).on(\"click\", '.vnc', function() {\n      var vmId = $(this).attr('vm_id');\n\n      if (!Vnc.lockStatus()) {\n        Spice.lock();\n        Sunstone.runAction(\"VM.startvnc_action\", vmId);\n      } else {\n        Notifier.notifyError(tr(\"VNC Connection in progress\"))\n      }\n\n      return false;\n    });\n\n    $('#' + this.dataTableId).on(\"click\", '.spice', function() {\n      var vmId = $(this).attr('vm_id');\n\n      if (!Spice.lockStatus()) {\n        Spice.lock();\n        Sunstone.runAction(\"VM.startspice_action\", vmId);\n      } else {\n        Notifier.notifyError(tr(\"SPICE Connection in progress\"))\n      }\n\n      return false;\n    });\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/dialogs/deploy/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/advancedSection'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <input type=\\\"checkbox\\\" name=\\\"enforce\\\" id=\\\"enforce\\\"/>\\n            <label for=\\\"enforce\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Enforce\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"If it is set to true, the host capacity will be checked. This will only affect oneadmin requests, regular users resize requests will always be enforced\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n          </div>\\n        </div>\\n        <br>\\n        <fieldset>\\n          <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select a datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n          \";\n  stack1 = ((helper = (helper = helpers.datastoresTableHTML || (depth0 != null ? depth0.datastoresTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"datastoresTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n        </fieldset>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h3 id=\\\"deploy_vm_header\\\" class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Deploy Virtual Machine\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n    </div>\\n  </div>\\n  <div class=\\\"reveal-body\\\">\\n    <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\">\\n      <div class=\\\"row\\\">\\n        <fieldset>\\n          <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select a Host\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n          \";\n  stack1 = ((helper = (helper = helpers.hostsTableHTML || (depth0 != null ? depth0.hostsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"hostsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        </fieldset>\\n      </div>\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced Options\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"      <div class=\\\"form_buttons reveal-footer\\\">\\n        <div class=\\\"form_buttons\\\">\\n          <button class=\\\"button radius right success\\\" id=\\\"deploy_vm_proceed\\\" value=\\\"VM.deploy\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Deploy\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n        </div>\\n      </div>\\n      <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n    </form>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/dialogs/deploy/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vms-tab/dialogs/deploy',['require','utils/dialogs/dialog','hbs!./deploy/html','sunstone','tabs/datastores-tab/datatable','tabs/hosts-tab/datatable','utils/notifier','utils/tips','./deploy/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./deploy/html');\n  var Sunstone = require('sunstone');\n  var DatastoresTable = require('tabs/datastores-tab/datatable');\n  var HostsTable = require('tabs/hosts-tab/datatable');\n  var Notifier = require('utils/notifier');\n  var Tips = require('utils/tips');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./deploy/dialogId');\n  var TAB_ID = require('../tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.hostsTable = new HostsTable('deploy_vm', {'select': true});\n    this.datastoresTable = new DatastoresTable('deploy_vm_ds', {\n      'select': true,\n      'selectOptions': {\n        'filter_fn': function(ds) { return ds.TYPE == 1; } // Show system DS only\n      }\n    });\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId,\n      'hostsTableHTML': this.hostsTable.dataTableHTML,\n      'datastoresTableHTML': this.datastoresTable.dataTableHTML\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    that.hostsTable.initialize();\n    that.datastoresTable.initialize();\n\n    Tips.setup(context);\n\n    $('#' + DIALOG_ID + 'Form', context).submit(function() {\n      var extra_info = {};\n\n      if ($(\"#selected_resource_id_deploy_vm\", context).val()) {\n          extra_info['host_id'] = $(\"#selected_resource_id_deploy_vm\", context).val();\n      } else {\n          Notifier.notifyError(tr(\"You have not selected a host\"));\n          return false;\n      }\n\n      extra_info['ds_id'] = $(\"#selected_resource_id_deploy_vm_ds\", context).val() || -1\n      extra_info['enforce'] = $(\"#enforce\", this).is(\":checked\") ? true : false\n\n      $.each(Sunstone.getDataTable(TAB_ID).elements(), function(index, elem) {\n          Sunstone.runAction(\"VM.deploy_action\", elem, extra_info);\n      });\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      return false;\n    });\n\n    return false;\n  }\n\n  function _onShow(dialog) {\n    this.datastoresTable.resetResourceTableSelect();\n    this.hostsTable.resetResourceTableSelect();\n\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/dialogs/migrate/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/advancedSection'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <input type=\\\"checkbox\\\" name=\\\"enforce\\\" id=\\\"enforce\\\"/>\\n            <label for=\\\"vm_id\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Enforce\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"If it is set to true, the host capacity will be checked. This will only affect oneadmin requests, regular users resize requests will always be enforced\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n          </div>\\n        </div>\\n        <br>\\n        <fieldset class=\\\"migrate_vm_ds_selection\\\">\\n          <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select a datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n          \";\n  stack1 = ((helper = (helper = helpers.datastoresTableHTML || (depth0 != null ? depth0.datastoresTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"datastoresTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n        </fieldset>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h3 id=\\\"migrate_vm_header\\\" class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Migrate Virtual Machine\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n    </div>\\n  </div>\\n  <div class=\\\"reveal-body\\\">\\n    <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\">\\n      <div id=\\\"current_hosts_of_vms\\\" class=\\\"row\\\"></div>\\n      <br>\\n      <br>\\n      <div class=\\\"row\\\">\\n        <fieldset>\\n          <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select a Host\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n          \";\n  stack1 = ((helper = (helper = helpers.hostsTableHTML || (depth0 != null ? depth0.hostsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"hostsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        </fieldset>\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced Options\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"        <div class=\\\"form_buttons reveal-footer\\\">\\n          <div class=\\\"form_buttons\\\">\\n            <button class=\\\"button radius right success\\\" id=\\\"migrate_vm_proceed\\\" value=\\\"VM.migrate\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Migrate\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n          </div>\\n        </div>\\n        <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n      </form>\\n    </div>\\n  </div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/dialogs/migrate/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vms-tab/dialogs/migrate',['require','utils/dialogs/dialog','hbs!./migrate/html','sunstone','tabs/datastores-tab/datatable','tabs/hosts-tab/datatable','utils/notifier','utils/tips','utils/locale','opennebula/vm','./migrate/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./migrate/html');\n  var Sunstone = require('sunstone');\n  var DatastoresTable = require('tabs/datastores-tab/datatable');\n  var HostsTable = require('tabs/hosts-tab/datatable');\n  var Notifier = require('utils/notifier');\n  var Tips = require('utils/tips');\n  var Locale = require('utils/locale');\n  var OpenNebulaVM = require('opennebula/vm');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./migrate/dialogId');\n  var TAB_ID = require('../tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.hostsTable = new HostsTable('migrate_vm', {'select': true});\n    this.datastoresTable = new DatastoresTable('migrate_vm_ds', {\n      'select': true,\n      'selectOptions': {\n        'filter_fn': function(ds) { return ds.TYPE == 1; } // Show system DS only\n      }\n    });\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setLive = _setLive;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId,\n      'hostsTableHTML': this.hostsTable.dataTableHTML,\n      'datastoresTableHTML': this.datastoresTable.dataTableHTML\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    that.hostsTable.initialize();\n    that.datastoresTable.initialize();\n\n    Tips.setup(context);\n\n    $('#' + DIALOG_ID + 'Form', context).submit(function() {\n      var extra_info = {};\n\n      if ($(\"#selected_resource_id_migrate_vm\", context).val()) {\n          extra_info['host_id'] = $(\"#selected_resource_id_migrate_vm\", context).val();\n      } else {\n          notifyError(tr(\"You have not selected a host\"));\n          return false;\n      }\n\n      extra_info['ds_id'] = $(\"#selected_resource_id_migrate_vm_ds\", context).val() || -1\n      extra_info['enforce'] = $(\"#enforce\", context).is(\":checked\");\n\n      $.each(Sunstone.getDataTable(TAB_ID).elements(), function(index, elem) {\n        if (that.live) {\n          Sunstone.runAction(\"VM.migrate_live_action\", elem, extra_info);\n        } else {\n          Sunstone.runAction(\"VM.migrate_action\", elem, extra_info);\n        }\n      });\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      return false;\n    });\n\n    return false;\n  }\n\n  function _onShow(context) {\n    this.datastoresTable.resetResourceTableSelect();\n    this.hostsTable.resetResourceTableSelect();\n\n    if (this.live) {\n      $(\".migrate_vm_ds_selection\", context).hide();\n    }\n\n    $.each(Sunstone.getDataTable(TAB_ID).elements(), function() {\n      var vm_id = \"\" + this;\n\n      OpenNebulaVM.show({\n        data : {\n          id: vm_id\n        },\n        timeout: true,\n        success: function (request, vm_json) {\n          var element = vm_json.VM;\n          var hostname = OpenNebulaVM.hostnameStr(element);\n\n          $(\"#current_hosts_of_vms\").append(\n              '<span class=\"radius secondary label\">' +\n              Locale.tr(\"VM\") + ' [' + element.ID + '] ' +\n              Locale.tr(\"is currently running on Host\") +\n              ' [' + hostname + ']</span><br>'\n          );\n        }\n      });\n    });\n    return false;\n  }\n\n  // @param [Boolean] live Set migrate live or migrate\n  function _setLive(live) {\n    this.live = live;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/dialogs/resize/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large\\\" role=\\\"dialog\\\" data-reveal >\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <h3 class=\\\"subheader\\\" id=\\\"\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Resize VM capacity\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n</div>\\n<div class=\\\"reveal-body\\\">\\n  <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\">\\n    <div class=\\\"row centered\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"vm_id\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Machine ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n        <label style=\\\"border-style: inset; background-color: lightgrey\\\" type=\\\"text\\\" name=\\\"vm_id\\\" id=\\\"vm_id\\\" disabled/>\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <input type=\\\"checkbox\\\" name=\\\"enforce\\\" id=\\\"enforce\\\"/>\\n        <label class=\\\"inline\\\" for=\\\"vm_id\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Enforce\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"If it is set to true, the host capacity will be checked. This will only affect oneadmin requests, regular users resize requests will always be enforced\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n      </div>\\n    </div>\\n    \";\n  stack1 = ((helper = (helper = helpers.capacityInputsHTML || (depth0 != null ? depth0.capacityInputsHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"capacityInputsHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    <div class=\\\"reveal-footer\\\">\\n      <div class=\\\"form_buttons\\\">\\n        <button class=\\\"button radius right success\\\" id=\\\"resize_capacity_button\\\" type=\\\"submit\\\" value=\\\"VM.resize\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Resize\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n      </div>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/dialogs/resize/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","(function(d){d.fn.noUiSlider=function(p,r){function s(a,e,c){var f=e.data(\"setup\"),d=f.handles;e=f.settings;f=f.pos;a=0>a?0:100<a?100:a;2==e.handles&&(c.is(\":first-child\")?(c=parseFloat(d[1][0].style[f])-e.margin,a=a>c?c:a):(c=parseFloat(d[0][0].style[f])+e.margin,a=a<c?c:a));e.step&&(c=l.from(e.range,e.step),a=Math.round(a/c)*c);return a}function t(a){return[a.clientX||a.originalEvent.clientX||a.originalEvent.touches[0].clientX,a.clientY||a.originalEvent.clientY||a.originalEvent.touches[0].clientY]}\r\nvar u=jQuery.fn.val;jQuery.fn.val=function(){return this.data(\"_isnS_\")?methods.val.call(this,arguments[0]):u.apply(this,arguments)};var j=window.navigator.msPointerEnabled?2:\"ontouchstart\"in document.documentElement?3:1,l={to:function(a,e){e=0>a[0]?e+Math.abs(a[0]):e-a[0];return 100*e/this._length(a)},from:function(a,e){return 100*e/this._length(a)},is:function(a,e){return e*this._length(a)/100+a[0]},_length:function(a){return a[0]>a[1]?a[0]-a[1]:a[1]-a[0]}},w={handles:2,serialization:{to:[\"\",\"\"],\r\nresolution:0.01}};methods={create:function(){return this.each(function(){var a=d.extend(w,p),e=d(this).data(\"_isnS_\",!0),c=[],f,k,b=\"\",g=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},h=(a.serialization.resolution=a.serialization.resolution||0.01).toString().split(\".\"),q=1==h[0]?0:h[1].length;a.start=g(a.start)?[a.start,0]:a.start;d.each(a,function(b,c){g(c)&&(a[b]=parseFloat(c));var d=!1;switch(b){case \"range\":case \"start\":d=2!=c.length||!g(c[0])||!g(c[1]);break;case \"handles\":d=1>c||2<c||\r\n!g(c);break;case \"connect\":d=\"lower\"!=c&&\"upper\"!=c&&\"boolean\"!=typeof c;break;case \"orientation\":d=\"vertical\"!=c&&\"horizontal\"!=c;break;case \"margin\":case \"step\":d=\"undefined\"!=typeof c&&!g(c);break;case \"serialization\":d=\"object\"!=typeof c||!g(c.resolution)||\"object\"==typeof c.to&&c.to.length<a.handles;break;case \"slide\":d=\"function\"!=typeof c}d&&console&&console.error(\"Bad input for \"+b+\" on slider:\",e)});a.margin=a.margin?l.from(a.range,a.margin):0;if(a.serialization.to instanceof jQuery||\"string\"==\r\ntypeof a.serialization.to||!1===a.serialization.to)a.serialization.to=[a.serialization.to];\"vertical\"==a.orientation?(b+=\"vertical\",f=\"top\",k=1):(b+=\"horizontal\",f=\"left\",k=0);b+=a.connect?\"lower\"==a.connect?\" connect lower\":\" connect\":\"\";e.addClass(b);for(b=0;b<a.handles;b++){c[b]=e.append(\"<a><div></div></a>\").children(\":last\");c[b].css(f,l.to(a.range,a.start[b])+\"%\");var h=(1===j?\"mousedown\":2===j?\"MSPointerDown\":\"touchstart\")+\".noUiSliderX\",r=(1===j?\"mousemove\":2===j?\"MSPointerMove\":\"touchmove\")+\r\n\".noUiSlider\",u=(1===j?\"mouseup\":2===j?\"MSPointerUp\":\"touchend\")+\".noUiSlider\";c[b].find(\"div\").on(h,function(b){d(\"body\").bind(\"selectstart.noUiSlider\",function(){return!1});if(!e.hasClass(\"disabled\")){var n=d(this).addClass(\"active\").parent();d(\"body\").addClass(\"TOUCH\");var g=n.add(d(document)).add(\"body\"),j=parseFloat(n[0].style[f]),h=t(b),v=h,p=!1;d(document).on(r,function(b){b.preventDefault();b=t(b);b[0]-=h[0];b[1]-=h[1];var d=[v[0]!=b[0],v[1]!=b[1]],m=j+100*b[k]/(k?e.height():e.width()),m=\r\ns(m,e,n);if(d[k]&&m!=p){n.css(f,m+\"%\").data(\"input\").val(l.is(a.range,m).toFixed(q));var d=a.slide,g=e.data(\"_n\",!0);\"function\"==typeof d&&d.call(g,void 0);p=m;n.css(\"z-index\",2==c.length&&100==m&&n.is(\":first-child\")?2:1)}v=b});d(document).on(u+\" mouseLeave.noUiSlider\",function(){g.off(\".noUiSlider\");d(\"body\").removeClass(\"TOUCH\");e.find(\".active\").removeClass(\"active\");e.data(\"_n\")&&e.data(\"_n\",!1).change()})}}).on(\"click\",function(a){a.stopPropagation()})}if(1==j)e.on(\"click\",function(b){if(!e.hasClass(\"disabled\")){var d=\r\nt(b);b=100*(d[k]-e.offset()[f])/(k?e.height():e.width());d=1<c.length?d[k]<(c[0].offset()[f]+c[1].offset()[f])/2?c[0]:c[1]:c[0];b=s(b,e,d);d.css(f,b+\"%\").data(\"input\").val(l.is(a.range,b).toFixed(q));b=a.slide;\"function\"==typeof b&&b.call(e,void 0);e.change()}});for(b=0;b<c.length;b++)h=l.is(a.range,parseFloat(c[b][0].style[f])).toFixed(q),\"string\"==typeof a.serialization.to[b]?c[b].data(\"input\",e.append('<input type=\"hidden\" name=\"'+a.serialization.to[b]+'\">').find(\"input:last\").val(h).change(function(a){a.stopPropagation()})):\r\n!1==a.serialization.to[b]?c[b].data(\"input\",{val:function(a){if(\"undefined\"!=typeof a)this.handle.data(\"noUiVal\",a);else return this.handle.data(\"noUiVal\")},handle:c[b]}):c[b].data(\"input\",a.serialization.to[b].data(\"handleNR\",b).val(h).change(function(){var a=[null,null];a[d(this).data(\"handleNR\")]=d(this).val();e.val(a)}));d(this).data(\"setup\",{settings:a,handles:c,pos:f,res:q})})},val:function(a){if(a){var e=\"number\"==typeof a?[a]:a;return this.each(function(){for(var a=d(this).data(\"setup\"),b=\r\n0;b<a.handles.length;b++)if(null!=e[b]){var c=s(l.to(a.settings.range,e[b]),d(this),a.handles[b]);a.handles[b].css(a.pos,c+\"%\").data(\"input\").val(l.is(a.settings.range,c).toFixed(a.res))}})}a=d(this).data(\"setup\").handles;for(var c=[],f=0;f<a.length;f++)c.push(parseFloat(a[f].data(\"input\").val()));return 1==c.length?c[0]:c},disabled:function(){return r?d(this).addClass(\"disabled\"):d(this).removeClass(\"disabled\")}};return\"disabled\"==p?methods.disabled.apply(this):methods.create.apply(this)}})(jQuery);\r\n\ndefine(\"nouislider\", [\"jquery\"], function(){});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/isFeatureEnabled'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"  <div class=\\\"large-2 columns\\\">\\n    <label  for=\\\"MEMORY_COST\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cost\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cost of each MB per hour\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </label>\\n    <input type=\\\"text\\\" wizard_field=\\\"MEMORY_COST\\\" id=\\\"MEMORY_COST\\\" name=\\\"name\\\"/>\\n  </div>\\n  <div class=\\\"large-3 columns\\\"></div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"  <div class=\\\"large-2 columns\\\">\\n    <label  for=\\\"CPU_COST\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cost\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cost of each CPU per hour\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n\\n    </label>\\n    <input type=\\\"text\\\" wizard_field=\\\"CPU_COST\\\" id=\\\"CPU_COST\\\" name=\\\"name\\\"/>\\n  </div>\\n  <div class=\\\"large-3 columns\\\"></div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"\\\">\\n  <input type=\\\"hidden\\\" wizard_field=\\\"MEMORY\\\" id=\\\"MEMORY\\\" name=\\\"memory\\\" />\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-7 columns\\\">\\n    <label class=\\\"\\\" for=\\\"MEMORY\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Memory\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip \\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Amount of RAM required for the VM, in Megabytes.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n\\n    </label>\\n    <div class=\\\"large-8 columns\\\">\\n      <div id=\\\"memory_slider\\\" class=\\\"large-7 columns\\\"></div>\\n    </div>\\n    <div class=\\\"large-2 columns\\\">\\n      <input type=\\\"text\\\" id=\\\"MEMORY_TMP\\\" name=\\\"memory_tmp\\\" size=\\\"4\\\" />\\n    </div>\\n    <div class=\\\"large-2 columns\\\">\\n      <select id=\\\"memory_unit\\\" name=\\\"MEMORY_UNIT\\\">\\n        <option value=\\\"MB\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MB\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"GB\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"GB\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n  </div>\\n\";\n  stack1 = ((helpers.isFeatureEnabled || (depth0 && depth0.isFeatureEnabled) || helperMissing).call(depth0, \"showback\", {\"name\":\"isFeatureEnabled\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-7 columns\\\">\\n    <label class=\\\"\\\" for=\\\"CPU\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Percentage of CPU divided by 100 required for the Virtual Machine. Half a processor is written 0.5.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </span>\\n    </label>\\n    <div class=\\\"large-10 columns\\\">\\n      <div id=\\\"cpu_slider\\\"></div>\\n    </div>\\n    <div class=\\\"large-2 columns\\\">\\n      <input type=\\\"text\\\" wizard_field=\\\"CPU\\\" id=\\\"CPU\\\" name=\\\"cpu\\\"/>\\n    </div>\\n  </div>\\n\";\n  stack1 = ((helpers.isFeatureEnabled || (depth0 && depth0.isFeatureEnabled) || helperMissing).call(depth0, \"showback\", {\"name\":\"isFeatureEnabled\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-7 columns\\\">\\n    <label class=\\\"\\\" for=\\\"VCPU\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VCPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of virtual cpus. This value is optional, the default hypervisor behavior is used, usually one virtual CPU.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </span>\\n    </label>\\n    <div class=\\\"large-10 columns\\\">\\n      <div id=\\\"vcpu_slider\\\"></div>\\n    </div>\\n    <div class=\\\"large-2 columns\\\">\\n      <input type=\\\"text\\\" wizard_field=\\\"VCPU\\\" id=\\\"VCPU\\\" name=\\\"vcpu\\\"/>\\n    </div>\\n  </div>\\n  <div class=\\\"large-5 columns\\\"></div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs',['require','nouislider','utils/locale','utils/tips','hbs!./capacity-inputs/html'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  require('nouislider');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./capacity-inputs/html');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  return {\n    'html': _html,\n    'setup': _setup\n  };\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML();\n  }\n\n  function _setup(context) {\n    Tips.setup(context);\n\n    // Define the cpu slider\n\n    var cpu_input = $(\"#CPU\", context);\n\n    var cpu_slider = $(\"#cpu_slider\", context).noUiSlider({\n      handles: 1,\n      connect: \"lower\",\n      range: [0, 1600],\n      //            start: 100,\n      step: 50,\n      start: 1,\n      slide: function(type) {\n        if (type != \"move\") {\n          var values = $(this).val();\n\n          cpu_input.val(values / 100);\n        }\n      },\n    });\n\n    cpu_slider.addClass(\"noUiSlider\");\n\n    cpu_input.change(function() {\n      cpu_slider.val(this.value * 100)\n    });\n\n    cpu_input.val(1);\n\n    // init::start is ignored for some reason\n    cpu_slider.val(100);\n\n    // Define the memory slider\n\n    var final_memory_input = $(\"#MEMORY\", context);\n    var memory_input = $(\"#MEMORY_TMP\", context);\n    var memory_unit  = $(\"#memory_unit\", context);\n\n    var current_memory_unit = memory_unit.val();\n\n    var update_final_memory_input = function() {\n      if (current_memory_unit == 'MB') {\n        final_memory_input.val(Math.floor(memory_input.val()));\n      } else {\n        final_memory_input.val(Math.floor(memory_input.val() * 1024));\n      }\n    }\n\n    var memory_slider_change = function(type) {\n      if (type != \"move\") {\n        var values = $(this).val();\n\n        memory_input.val(values / 100);\n\n        update_final_memory_input();\n      }\n    };\n\n    var memory_slider = $(\"#memory_slider\", context).noUiSlider({\n      handles: 1,\n      connect: \"lower\",\n      range: [0, 409600],\n      step: 12800,\n      start: 51200,\n      value: 512,\n      slide: memory_slider_change,\n    });\n\n    memory_slider.addClass(\"noUiSlider\");\n\n    memory_input.change(function() {\n      memory_slider.val(this.value * 100)\n\n      update_final_memory_input();\n    });\n\n    final_memory_input.change(function() {\n          memory_slider.val(this.value * 100);\n          memory_input.val(Math.floor(final_memory_input.val()));\n        })\n\n    memory_unit.change(function() {\n      var memory_unit_val = $('#memory_unit :selected', context).val();\n\n      if (current_memory_unit != memory_unit_val) {\n        current_memory_unit = memory_unit_val\n\n        if (memory_unit_val == 'GB') {\n\n          memory_slider.empty().noUiSlider({\n            handles: 1,\n            connect: \"lower\",\n            range: [0, 1600],\n            start: 1,\n            step: 50,\n            value: 51200,\n            slide: memory_slider_change,\n          });\n\n          var new_val = memory_input.val() / 1024;\n\n          memory_input.val(new_val);\n          memory_slider.val(new_val * 100);\n        } else if (memory_unit_val == 'MB') {\n\n          memory_slider.empty().noUiSlider({\n            handles: 1,\n            connect: \"lower\",\n            range: [0, 409600],\n            start: 1,\n            value: 51200,\n            step: 12800,\n            slide: memory_slider_change,\n          });\n\n          var new_val = Math.floor(memory_input.val() * 1024);\n\n          memory_input.val(new_val);\n          memory_slider.val(new_val * 100);\n        }\n\n        update_final_memory_input();\n      }\n    });\n\n    // init::start is ignored for some reason\n    memory_input.val(512).change();\n\n    // Define the vcpu slider\n\n    var vcpu_input = $(\"#VCPU\", context);\n\n    var vcpu_slider = $(\"#vcpu_slider\", context).noUiSlider({\n      handles: 1,\n      connect: \"lower\",\n      range: [1, 16],\n      start: 1,\n      step: 1,\n      slide: function(type) {\n        if (type != \"move\") {\n          var values = $(this).val();\n\n          vcpu_input.val(values);\n        }\n      },\n    });\n\n    vcpu_slider.addClass(\"noUiSlider\");\n\n    vcpu_input.change(function() {\n      vcpu_slider.val(this.value)\n    });\n\n    // init::start is ignored for some reason\n    vcpu_slider.val(0);\n  }\n});\n\n","define('tabs/vms-tab/dialogs/resize',['require','utils/dialogs/dialog','hbs!./resize/html','sunstone','utils/notifier','utils/tips','tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs','utils/wizard-fields','./resize/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./resize/html');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Tips = require('utils/tips');\n  var CapacityInputs = require('tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs');\n  var WizardFields = require('utils/wizard-fields');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./resize/dialogId');\n  var TAB_ID = require('../tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setElement = _setElement;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId,\n      'capacityInputsHTML': CapacityInputs.html()\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n    CapacityInputs.setup();\n\n    Tips.setup(context);\n\n    $('#' + DIALOG_ID + 'Form', context).submit(function() {\n      var templateJSON = WizardFields.retrieve(context);\n\n      if (templateJSON[\"CPU\"] == that.element.TEMPLATE.CPU) {\n        delete templateJSON[\"CPU\"];\n      };\n\n      if (templateJSON[\"MEMORY\"] == that.element.TEMPLATE.MEMORY) {\n        delete templateJSON[\"MEMORY\"];\n      };\n\n      if (templateJSON[\"VCPU\"] == that.element.TEMPLATE.VCPU) {\n        delete templateJSON[\"VCPU\"];\n      };\n\n      var enforce = $(\"#enforce\", this).is(\":checked\");\n\n      var obj = {\n        \"vm_template\": templateJSON,\n        \"enforce\": enforce,\n      }\n\n      Sunstone.runAction('VM.resize', that.element.ID, obj);\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      return false;\n    });\n\n    return false;\n  }\n\n  function _onShow(context) {    \n    var that = this;\n    $('#vm_id', context).text(that.element.ID);\n    $('#CPU', context).val(that.element.TEMPLATE.CPU);\n    $('#MEMORY_TMP', context).val(that.element.TEMPLATE.MEMORY);\n    if (that.element.VCPU) {\n      $('#VCPU', context).val(that.element.TEMPLATE.VCPU);\n    }\n    return false;\n  }\n\n  function _setElement(element) {\n    this.element = element\n  }\n});\n\n","define('tabs/vms-tab/dialogs/resize/dialogId',['require'],function(require) {\n  return 'resizeVMDialog';\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/dialogs/attach-disk/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h3 class=\\\"subheader\\\" id=\\\"\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Attach new disk\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n    </div>\\n  </div>\\n  <div class=\\\"reveal-body\\\">\\n    <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"vm_id\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Machine ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n          <input style=\\\"border-style: inset; background-color: lightgrey\\\" type=\\\"text\\\" name=\\\"vm_id\\\" id=\\\"vm_id\\\" disabled/>\\n        </div>\\n      </div>\\n      \";\n  stack1 = ((helper = (helper = helpers.diskTabHTML || (depth0 != null ? depth0.diskTabHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"diskTabHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      <div class=\\\"reveal-footer\\\">\\n        <div class=\\\"form_buttons\\\">\\n          <button class=\\\"button radius right success\\\" id=\\\"attach_disk_button\\\" type=\\\"submit\\\" value=\\\"VM.attachdisk\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Attach\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n        </div>\\n      </div>\\n      <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n    </form>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/dialogs/attach-disk/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/images-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','utils/humanize','utils/notifier','opennebula/image','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var Notifier = require('utils/notifier');\n  var OpenNebulaImage = require('opennebula/image');\n\n  /*\n    CONSTANTS\n   */\n  \n  var RESOURCE = \"Image\"\n  var XML_ROOT = \"IMAGE\"\n  var TAB_NAME = require('./tabId');\n  var COLUMN_IDS = {\n    \"DATASTORE\": 5\n  }\n  /*\n    CONSTRUCTOR\n   */\n  \n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    }\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Owner\"),\n      Locale.tr(\"Group\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Datastore\"),\n      Locale.tr(\"Size\"),\n      Locale.tr(\"Type\"),\n      Locale.tr(\"Registration time\"),\n      Locale.tr(\"Persistent\"),\n      Locale.tr(\"Status\"),\n      Locale.tr(\"#VMS\"),\n      Locale.tr(\"Target\"),\n    ]\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 4,\n      \"uname_index\": 2,\n      \"select_resource\": Locale.tr(\"Please select an image from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following image:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more images from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following images:\")\n    };\n\n    this.totalImages = 0;\n    this.sizeImages = 0;\n\n    TabDataTable.call(this);\n  };\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n  Table.prototype.preUpdateView = _preUpdateView;\n  Table.prototype.postUpdateView = _postUpdateView;\n  Table.COLUMN_IDS = COLUMN_IDS;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _elementArray(element_json) {\n    var element = element_json.IMAGE;\n\n    // KERNEL || RAMDISK || CONTEXT\n    if (element.TYPE == \"3\" ||  element.TYPE == \"4\" || element.TYPE == \"5\") {\n      return false;\n    }\n\n    this.sizeImages = this.sizeImages + parseInt(element.SIZE);\n    this.totalImages++;\n\n    return [\n      '<input class=\"check_item\" type=\"checkbox\" id=\"image_' + element.ID + '\" name=\"selected_items\" value=\"' + element.ID + '\"/>',\n      element.ID,\n      element.UNAME,\n      element.GNAME,\n      element.NAME,\n      element.DATASTORE,\n      element.SIZE,\n      OpenNebulaImage.typeStr(element.TYPE),\n      Humanize.prettyTime(element.REGTIME),\n      parseInt(element.PERSISTENT) ? \"yes\" : \"no\",\n      OpenNebulaImage.stateStr(element.STATE),\n      element.RUNNING_VMS,\n      element.TEMPLATE.TARGET ? element.TEMPLATE.TARGET : '--'\n    ];\n  }\n\n  function _preUpdateView() {\n    this.totalImages = 0;\n    this.sizeImages = 0;\n  }\n\n  function _postUpdateView() {\n    var size = Humanize.sizeFromMB(this.sizeImages);\n\n    $(\".total_images\").text(this.totalImages);\n    $(\".size_images\").text(size);\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/advancedSection'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Image\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"IMAGE_ID\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Image ID to be used in the Virtual Image disk.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"IMAGE_ID\\\" id=\\\"IMAGE_ID\\\" name=\\\"IMAGE_ID\\\"/>\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"IMAGE\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name of the image to be used in the Virtual Image disk.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"IMAGE\\\" id=\\\"IMAGE\\\" name=\\\"IMAGE\\\"/>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"IMAGE_UID\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Identifier of the user owner of the image to reduce ambiguity.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"IMAGE_UID\\\" id=\\\"IMAGE_UID\\\" name=\\\"IMAGE_UID\\\"/>\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"IMAGE_UNAME\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name of the user owner of the image to reduce ambiguity.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"IMAGE_UNAME\\\" id=\\\"IMAGE_UNAME\\\" name=\\\"IMAGE_UNAME\\\"/>\\n      </div>\\n    </div>\\n  </fieldset>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"TARGET\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Target\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Device to map image disk. If set, it will overwrite the default device mapping\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Xen: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMWare: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <input type=\\\"text\\\" wizard_field=\\\"TARGET\\\" id=\\\"TARGET\\\" name=\\\"target\\\"/>\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_xen only_kvm\\\">\\n      <label for=\\\"DRIVER\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Driver\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Specific image mapping driver\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Xen: Optional (tap:aio:, file:)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM: Optional (raw, qcow2)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMWare: Not supported\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <input type=\\\"text\\\" wizard_field=\\\"DRIVER\\\" id=\\\"DRIVER\\\" name=\\\"driver\\\" />\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"DEV_PREFIX\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Device Prefix\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Prefix for the emulated device this image will be mounted at. For instance, “hd”, “sd”, or “vd” for KVM virtio. If omitted, the dev_prefix attribute of the Image will be used\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Xen: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMWare: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <input type=\\\"text\\\" wizard_field=\\\"DEV_PREFIX\\\" id=\\\"DEV_PREFIX\\\" name=\\\"DEV_PREFIX\\\"/>\\n    </div>\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"READONLY\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Read Only\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Set how the image is exposed by the hypervisor\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Xen: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMWare: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <select wizard_field=\\\"READONLY\\\" id=\\\"READONLY\\\" name=\\\"READONLY\\\">\\n        <option value=\\\"\\\"></option>\\n        <option value=\\\"yes\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"yes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"no\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"no\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n  </div>\\n  <div class=\\\"row vm_param\\\">\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"CACHE\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cache\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Selects the cache mechanism for the disk.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <select wizard_field=\\\"CACHE\\\" id=\\\"CACHE\\\" name=\\\"CACHE\\\">\\n        <option value=\\\"\\\"></option>\\n        <option value=\\\"default\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"default\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"none\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"none\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"writethrough\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"writethrough\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"writeback\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"writeback\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"directsync\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"directsync\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"unsafe\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"unsafe\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"IO\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Set IO policy.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <select wizard_field=\\\"IO\\\" id=\\\"IO\\\" name=\\\"IO\\\">\\n        <option value=\\\"\\\"></option>\\n        <option value=\\\"threads\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"threads\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"native\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"native\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"TOTAL_BYTES_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Total Bytes Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"TOTAL_BYTES_SEC\\\" type=\\\"text\\\" id=\\\"TOTAL_BYTES_SEC\\\" name=\\\"TOTAL_BYTES_SEC\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"READ_BYTES_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Read Bytes Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"READ_BYTES_SEC\\\" type=\\\"text\\\" id=\\\"READ_BYTES_SEC\\\" name=\\\"READ_BYTES_SEC\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"WRITE_BYTES_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write Bytes Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"WRITE_BYTES_SEC\\\" type=\\\"text\\\" id=\\\"WRITE_BYTES_SEC\\\" name=\\\"WRITE_BYTES_SEC\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"TOTAL_IOPS_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Total IOPS Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"TOTAL_IOPS_SEC\\\" type=\\\"text\\\" id=\\\"TOTAL_IOPS_SEC\\\" name=\\\"TOTAL_IOPS_SEC\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"READ_IOPS_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Read IOPS Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"READ_IOPS_SEC\\\" type=\\\"text\\\" id=\\\"READ_IOPS_SEC\\\" name=\\\"READ_IOPS_SEC\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"WRITE_IOPS_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write IOPS Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"WRITE_IOPS_SEC\\\" type=\\\"text\\\" id=\\\"WRITE_IOPS_SEC\\\" name=\\\"WRITE_IOPS_SEC\\\" />\\n    </div>\\n  </div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"  <div class=\\\"row\\\">\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"TARGET\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Target\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Device to map image disk. If set, it will overwrite the default device mapping\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Xen: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMWare: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <input wizard_field=\\\"TARGET\\\" type=\\\"text\\\"  id=\\\"TARGET\\\" name=\\\"target\\\"/>\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_xen only_kvm\\\">\\n      <label for=\\\"DRIVER\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Driver\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Specific image mapping driver\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Xen: Optional (tap:aio:, file:)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM: Optional (raw, qcow2)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMWare: Not supported\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <input wizard_field=\\\"DRIVER\\\" type=\\\"text\\\" id=\\\"DRIVER\\\" name=\\\"driver\\\" />\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"DEV_PREFIX\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Device Prefix\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Prefix for the emulated device this image will be mounted at. For instance, “hd”, “sd”, or “vd” for KVM virtio. If omitted, the dev_prefix attribute of the Image will be used\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Xen: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMWare: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <input wizard_field=\\\"DEV_PREFIX\\\" type=\\\"text\\\" id=\\\"DEV_PREFIX\\\" name=\\\"DEV_PREFIX\\\"/>\\n    </div>\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"READONLY\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Read Only\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Set how the image is exposed by the hypervisor\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Xen: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMWare: Optional\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <select wizard_field=\\\"READONLY\\\" id=\\\"READONLY\\\" name=\\\"READONLY\\\">\\n        <option value=\\\"\\\"></option>\\n        <option value=\\\"yes\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"yes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"no\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"no\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n  </div>\\n  <div class=\\\"row  vm_param\\\">\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"CACHE\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cache\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Selects the cache mechanism for the disk.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <select wizard_field=\\\"CACHE\\\" id=\\\"CACHE\\\" name=\\\"CACHE\\\">\\n        <option value=\\\"\\\"></option>\\n        <option value=\\\"default\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"default\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"none\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"none\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"writethrough\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"writethrough\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"writeback\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"writeback\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"directsync\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"directsync\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"unsafe\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"unsafe\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"IO\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Set IO policy.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <select wizard_field=\\\"IO\\\" id=\\\"IO\\\" name=\\\"IO\\\">\\n        <option value=\\\"\\\"></option>\\n        <option value=\\\"threads\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"threads\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"native\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"native\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"TOTAL_BYTES_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Total Bytes Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"TOTAL_BYTES_SEC\\\" type=\\\"text\\\" id=\\\"TOTAL_BYTES_SEC\\\" name=\\\"TOTAL_BYTES_SEC\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"READ_BYTES_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Read Bytes Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"READ_BYTES_SEC\\\" type=\\\"text\\\" id=\\\"READ_BYTES_SEC\\\" name=\\\"READ_BYTES_SEC\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"WRITE_BYTES_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write Bytes Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"WRITE_BYTES_SEC\\\" type=\\\"text\\\" id=\\\"WRITE_BYTES_SEC\\\" name=\\\"WRITE_BYTES_SEC\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"TOTAL_IOPS_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Total IOPS Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"TOTAL_IOPS_SEC\\\" type=\\\"text\\\" id=\\\"TOTAL_IOPS_SEC\\\" name=\\\"TOTAL_IOPS_SEC\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"READ_IOPS_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Read IOPS Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"READ_IOPS_SEC\\\" type=\\\"text\\\" id=\\\"READ_IOPS_SEC\\\" name=\\\"READ_IOPS_SEC\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns hypervisor only_kvm\\\">\\n      <label for=\\\"WRITE_IOPS_SEC\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write IOPS Sec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IO throttling attributes for the disk. They are specified in bytes or IOPS (IO Operations) and can be specified for the total (read+write) or specific for read or write. Total and read or write can not be used at the same time. By default these parameters are only allowed to be used by oneadmin.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input wizard_field=\\\"WRITE_IOPS_SEC\\\" type=\\\"text\\\" id=\\\"WRITE_IOPS_SEC\\\" name=\\\"WRITE_IOPS_SEC\\\" />\\n    </div>\\n  </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <input id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.diskTabId || (depth0 != null ? depth0.diskTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"diskTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"radioImage\\\" type=\\\"radio\\\" name=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.diskTabId || (depth0 != null ? depth0.diskTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"diskTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" value=\\\"image\\\" checked>\\n    <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.diskTabId || (depth0 != null ? depth0.diskTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"diskTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"radioImage\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Image\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.diskTabId || (depth0 != null ? depth0.diskTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"diskTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"radioVolatile\\\" type=\\\"radio\\\" name=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.diskTabId || (depth0 != null ? depth0.diskTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"diskTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" value=\\\"volatile\\\">\\n    <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.diskTabId || (depth0 != null ? depth0.diskTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"diskTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"radioVolatile\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Volatile Disk\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n  </div>\\n</div>\\n<div id=\\\"disk_type\\\" class=\\\"image\\\">\\n  \";\n  stack1 = ((helper = (helper = helpers.imageTableSelectHTML || (depth0 != null ? depth0.imageTableSelectHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"imageTableSelectHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n  <br>\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced Options\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</div>\\n<div id=\\\"disk_type\\\" class=\\\"volatile\\\" style=\\\"display: none;\\\">\\n  <div>\\n    <input wizard_field=\\\"SIZE\\\" type=\\\"hidden\\\" id=\\\"SIZE\\\" name=\\\"size\\\" />\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-2 columns\\\">\\n      <label class=\\\"inline\\\" for=\\\"SIZE_TMP\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Size\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Size of the new disk\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n    </div>\\n    <div class=\\\"large-6 columns\\\">\\n      <div id=\\\"size_slider\\\" class=\\\"large-7 columns\\\"></div>\\n    </div>\\n    <div class=\\\"large-2 columns\\\">\\n      <input type=\\\"text\\\" id=\\\"SIZE_TMP\\\" name=\\\"size_tmp\\\" size=\\\"4\\\" />\\n    </div>\\n    <div class=\\\"large-2 columns\\\">\\n      <select id=\\\"size_unit\\\" name=\\\"SIZE_UNIT\\\">\\n        <option value=\\\"GB\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"GB\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"MB\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MB\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"TYPE\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Disk type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <select wizard_field=\\\"TYPE\\\" id=\\\"TYPE\\\" name=\\\"type\\\">\\n        <option value=\\\"fs\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"FS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"swap\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Swap\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"FORMAT\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Format\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filesystem type for the fs images\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <input wizard_field=\\\"FORMAT\\\" type=\\\"text\\\" id=\\\"FORMAT\\\" name=\\\"format\\\" />\\n    </div>\\n  </div>\\n  <br>\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced Options\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab',['require','nouislider','sunstone-config','utils/locale','utils/tips','tabs/images-tab/datatable','utils/wizard-fields','hbs!./disk-tab/html'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  require('nouislider');\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var ImageTable = require('tabs/images-tab/datatable')\n  var WizardFields = require('utils/wizard-fields');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./disk-tab/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function DiskTab(diskTabId) {\n    this.diskTabId = 'diskTab' + diskTabId;\n\n    this.imageTable = new ImageTable(this.diskTabId + 'Table', {'select': true});\n  }\n\n  DiskTab.prototype.constructor = DiskTab;\n  DiskTab.prototype.html = _html;\n  DiskTab.prototype.setup = _setup;\n  DiskTab.prototype.onShow = _onShow;\n  DiskTab.prototype.retrieve = _retrieve;\n  DiskTab.prototype.fill = _fill;\n\n  return DiskTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML({\n      'diskTabId': this.diskTabId,\n      'imageTableSelectHTML': this.imageTable.dataTableHTML\n    });\n  }\n\n  function _onShow(context, panelForm) {\n    this.imageTable.refreshResourceTableSelect();\n  }\n\n  function _setup(context) {\n    var that = this;\n    Tips.setup(context);\n    that.imageTable.initialize({\n      'selectOptions': {\n        'select_callback': function(aData, options) {\n          // If the image is selected by Id, avoid overwriting it with name+uname\n          if ($('#IMAGE_ID', context).val() != aData[options.id_index]) {\n            $('#IMAGE_ID', context).val(\"\");\n            $('#IMAGE', context).val(aData[options.name_index]);\n            $('#IMAGE_UNAME', context).val(aData[options.uname_index]);\n            $('#IMAGE_UID', context).val(\"\");\n          }\n        }\n      }\n    });\n    that.imageTable.refreshResourceTableSelect();\n\n    // Select Image or Volatile disk. The div is hidden depending on the selection, and the\n    // vm_param class is included to be computed when the template is generated.\n    var imageContext = $(\"div.image\",  context);\n    var volatileContext = $(\"div.volatile\",  context);\n    $(\"input[name='\" + that.diskTabId + \"']\", context).change(function() {\n      if ($(\"input[name='\" + that.diskTabId + \"']:checked\", context).val() == \"image\") {\n        imageContext.toggle();\n        volatileContext.hide();\n        $(\"[wizard_field]\", imageContext).prop('wizard_field_disabled', false);\n        $(\"[wizard_field]\", volatileContext).prop('wizard_field_disabled', true);\n      } else {\n        imageContext.hide();\n        volatileContext.toggle();\n        $(\"[wizard_field]\", volatileContext).prop('wizard_field_disabled', false);\n        $(\"[wizard_field]\", imageContext).prop('wizard_field_disabled', true);\n      }\n    });\n\n    $(\"[wizard_field]\", imageContext).prop('wizard_field_disabled', false);\n    $(\"[wizard_field]\", volatileContext).prop('wizard_field_disabled', true);\n\n    // Define the size slider\n    var final_size_input = $(\"#SIZE\", context);\n    var size_input = $(\"#SIZE_TMP\", context);\n    var size_unit  = $(\"#size_unit\", context);\n\n    var current_size_unit = size_unit.val();\n\n    var update_final_size_input = function() {\n      if (current_size_unit == 'MB') {\n        final_size_input.val(Math.floor(size_input.val()));\n      } else {\n        final_size_input.val(Math.floor(size_input.val() * 1024));\n      }\n    }\n\n    var size_slider_change = function(type) {\n      if (type != \"move\") {\n        var values = $(this).val();\n\n        size_input.val(values / 100);\n\n        update_final_size_input();\n      }\n    };\n\n    var size_slider = $(\"#size_slider\", context).noUiSlider({\n      handles: 1,\n      connect: \"lower\",\n      range: [0, 5000],\n      start: 1,\n      step: 50,\n      slide: size_slider_change,\n    });\n\n    size_slider.addClass(\"noUiSlider\");\n\n    size_input.change(function() {\n      size_slider.val(this.value * 100)\n\n      update_final_size_input();\n    });\n\n    size_input.val(10);\n    update_final_size_input();\n\n    // init::start is ignored for some reason\n    size_slider.val(1000);\n\n    size_unit.change(function() {\n      var size_unit_val = $('#size_unit :selected', context).val();\n\n      if (current_size_unit != size_unit_val) {\n        current_size_unit = size_unit_val\n\n        if (size_unit_val == 'GB') {\n\n          size_slider.empty().noUiSlider({\n            handles: 1,\n            connect: \"lower\",\n            range: [0, 5000],\n            start: 1,\n            step: 50,\n            slide: size_slider_change,\n          });\n\n          var new_val = size_input.val() / 1024;\n\n          size_input.val(new_val);\n          size_slider.val(new_val * 100);\n        } else if (size_unit_val == 'MB') {\n\n          size_slider.empty().noUiSlider({\n            handles: 1,\n            connect: \"lower\",\n            range: [0, 204800],\n            start: 1,\n            step: 12800,\n            slide: size_slider_change,\n          });\n\n          var new_val = Math.round(size_input.val() * 1024);\n\n          size_input.val(new_val);\n          size_slider.val(new_val * 100);\n        }\n\n        update_final_size_input();\n      }\n    });\n  }\n\n  function _retrieve(context) {\n    return WizardFields.retrieve(context);\n  }\n\n  function _fill(context, templateJSON) {\n    if (templateJSON.IMAGE_ID || templateJSON.IMAGE) {\n      $('input#' + this.diskTabId + 'radioImage', context).click();\n\n      if (templateJSON.IMAGE_ID != undefined) {\n        var selectedResources = {\n          ids : templateJSON.IMAGE_ID\n        }\n\n        this.imageTable.selectResourceTableSelect(selectedResources);\n      } else if (templateJSON.IMAGE != undefined && templateJSON.IMAGE_UNAME != undefined) {\n        var selectedResources = {\n          names : {\n            name: templateJSON.IMAGE, \n            uname: templateJSON.IMAGE_UNAME\n          }\n        }\n\n        this.imageTable.selectResourceTableSelect(selectedResources);\n      }\n\n      WizardFields.fill($(\".image\", context), templateJSON);\n    } else {\n      $('input#' + this.diskTabId + 'radioVolatile', context).click();\n\n      if (templateJSON.SIZE) {\n        $('#SIZE_TMP', context).val(templateJSON.SIZE / 1024)\n      }\n      \n      WizardFields.fill($(\".volatile\", context), templateJSON);\n    }\n\n  }\n});\n\n","define('tabs/vms-tab/dialogs/attach-disk',['require','utils/dialogs/dialog','hbs!./attach-disk/html','sunstone','utils/notifier','utils/tips','tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab','utils/wizard-fields','./attach-disk/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./attach-disk/html');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Tips = require('utils/tips');\n  var DiskTab = require('tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab');\n  var WizardFields = require('utils/wizard-fields');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./attach-disk/dialogId');\n  var TAB_ID = require('../tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.diskTab = new DiskTab(DIALOG_ID + 'DiskTab');\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setElement = _setElement;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId,\n      'diskTabHTML': this.diskTab.html()\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n    that.diskTab.setup();\n\n    Tips.setup(context);\n\n    $('#' + DIALOG_ID + 'Form', context).submit(function() {\n      var templateJSON = that.diskTab.retrieve(context);\n      var obj = {\n        \"DISK\": templateJSON\n      }\n\n      Sunstone.runAction('VM.attachdisk', that.element.ID, obj);\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      return false;\n    });\n\n    return false;\n  }\n\n  function _onShow(context) {  \n    this.diskTab.onShow(context);  \n    $(\"#vm_id\", context).val(this.element.ID);\n    return false;\n  }\n\n  function _setElement(element) {\n    this.element = element\n  }\n});\n\n","define('tabs/vms-tab/dialogs/attach-disk/dialogId',['require'],function(require) {\n  return 'attachDiskVMDialog';\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/dialogs/attach-nic/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h3 class=\\\"subheader\\\" id=\\\"\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Attach new nic\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n    </div>\\n  </div>\\n  <div class=\\\"reveal-body\\\">\\n    <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"vm_id\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Machine ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n          <input style=\\\"border-style: inset; background-color: lightgrey\\\" type=\\\"text\\\" name=\\\"vm_id\\\" id=\\\"vm_id\\\" disabled/>\\n        </div>\\n      </div>\\n      \";\n  stack1 = ((helper = (helper = helpers.nicTabHTML || (depth0 != null ? depth0.nicTabHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"nicTabHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      <div class=\\\"reveal-footer\\\">\\n        <div class=\\\"form_buttons\\\">\\n          <button class=\\\"button radius right success\\\" id=\\\"attach_nic_button\\\" type=\\\"submit\\\" value=\\\"VM.attachdisk\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Attach\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n        </div>\\n      </div>\\n      <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n    </form>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/dialogs/attach-nic/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/secgroups-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n\n  /*\n    CONSTANTS\n   */\n\n  var RESOURCE = \"SecurityGroup\";\n  var XML_ROOT = \"SECURITY_GROUP\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Owner\"),\n      Locale.tr(\"Group\"),\n      Locale.tr(\"Name\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 4,\n      \"select_resource\": Locale.tr(\"Please select a security group from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following security group:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more security groups from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following security groups:\")\n    };\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n\n    return [\n        '<input class=\"check_item\" type=\"checkbox\" id=\"'+RESOURCE.toLowerCase()+'_' +\n                             element.ID + '\" name=\"selected_items\" value=\"' +\n                             element.ID + '\"/>',\n        element.ID,\n        element.UNAME,\n        element.GNAME,\n        element.NAME\n    ];\n  }\n});\n\n","define('tabs/secgroups-tab/tabId',['require'],function(require){\n  return 'secgroups-tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab/html',['hbs','hbs/handlebars','templates/helpers/advancedSection','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Choose Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"NETWORK_ID\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Identifier of the virtual network from which to lease an IP and MAC address to this Virtual Machine network interface.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"NETWORK_ID\\\" id=\\\"NETWORK_ID\\\" name=\\\"NETWORK_ID\\\"/>\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"NETWORK\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name of the virtual network from which to lease an IP and MAC address to this Virtual Machine network interface.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"NETWORK\\\" id=\\\"NETWORK\\\" name=\\\"NETWORK\\\" />\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"NETWORK_UID\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Identifier of the user owner of the virtual network from which to lease an IP and MAC address to this Virtual Machine network interface.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"NETWORK_UID\\\" id=\\\"NETWORK_UID\\\" name=\\\"NETWORK_UID\\\"/>\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"NETWORK_UNAME\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name of the user owner of the virtual network from which to lease an IP and MAC address to this Virtual Machine network interface.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"NETWORK_UNAME\\\" id=\\\"NETWORK_UNAME\\\" name=\\\"NETWORK_UNAME\\\"/>\\n      </div>\\n    </div>\\n  </fieldset>\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Override Network Values IPv4\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"IP\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IP\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Request an specific IP from the Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"IP\\\" id=\\\"IP\\\" name=\\\"IP\\\" size=\\\"3\\\" />\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"MAC\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MAC\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Set a specific MAC to the NIC\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"MAC\\\" id=\\\"MAC\\\" name=\\\"MAC\\\"/>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"NETWORK_MASK\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network Mask\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Override the network mask of the network. For example, 255.255.255.0\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"NETWORK_MASK\\\" id=\\\"NETWORK_MASK\\\" name=\\\"NETWORK_MASK\\\"/>\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"NETWORK_ADDRESS\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network Address\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Override the base network address. For example, 192.168.1.0\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"NETWORK_ADDRESS\\\" id=\\\"NETWORK_ADDRESS\\\" name=\\\"NETWORK_ADDRESS\\\"/>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"GATEWAY\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Gateway\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Override the Router of the network.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"GATEWAY\\\" id=\\\"GATEWAY\\\" name=\\\"GATEWAY\\\"/>\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"DNS\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"DNS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Override the specific DNS for this network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"DNS\\\" id=\\\"DNS\\\" name=\\\"DNS\\\"/>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"SEARCH_DOMAIN\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Search Domain\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Override the Search Domain for this network.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"SEARCH_DOMAIN\\\" id=\\\"SEARCH_DOMAIN\\\" name=\\\"SEARCH_DOMAIN\\\"/>\\n      </div>\\n    </div>\\n  </fieldset>\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Override Network Values IPv6\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"IP6_GLOBAL\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IP6 Global\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Request an specific IP from the IPv6 Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"IP6_GLOBAL\\\" id=\\\"IP6_GLOBAL\\\" name=\\\"IP6_GLOBAL\\\" size=\\\"3\\\" />\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"GATEWAY6\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"GATEWAY6\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Override the Router of the IPv6 network.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"GATEWAY6\\\" id=\\\"GATEWAY6\\\" name=\\\"GATEWAY6\\\"/>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"CONTEXT_FORCE_IPV4\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network Mask\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Override force IPv4 for this IPv6 network. Values: Yes or No.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"CONTEXT_FORCE_IPV4\\\" id=\\\"CONTEXT_FORCE_IPV4\\\" name=\\\"CONTEXT_FORCE_IPV4\\\"/>\\n      </div>\\n    </div>\\n  </fieldset>\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Harware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"MODEL\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Model\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hardware that will emulate this network interface. With Xen this is the type attribute of the vif.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"MODEL\\\" id=\\\"MODEL\\\" name=\\\"MODEL\\\" />\\n      </div>\\n    </div>\\n  </fieldset>\\n  <br>\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Security Groups\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div name=\\\"str_nic_tab_id\\\" str_nic_tab_id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.nicTabId || (depth0 != null ? depth0.nicTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"nicTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n      \";\n  stack1 = ((helper = (helper = helpers.secgroupsTableSelectHTML || (depth0 != null ? depth0.secgroupsTableSelectHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"secgroupsTableSelectHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    </div>\\n  </fieldset>\\n  <div style=\\\"display: none;\\\">\\n    <fieldset>\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"TCP Firewall\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns text-center\\\">\\n          <input type=\\\"radio\\\" class=\\\"tcp_type\\\" name=\\\"tcp_type\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.nicTabId || (depth0 != null ? depth0.nicTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"nicTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"white_tcp_type\\\" value=\\\"WHITE_PORTS_TCP\\\">\\n          <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.nicTabId || (depth0 != null ? depth0.nicTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"nicTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"white_tcp_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Whitelist\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <input type=\\\"radio\\\" class=\\\"tcp_type\\\" name=\\\"tcp_type\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.nicTabId || (depth0 != null ? depth0.nicTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"nicTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"black_tcp_type\\\" value=\\\"BLACK_PORTS_TCP\\\">\\n          <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.nicTabId || (depth0 != null ? depth0.nicTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"nicTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"black_tcp_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Blacklist\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"TCP_PORTS\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PORTS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"A list of ports separated by commas or a ranges separated by semicolons, e.g.: 22,80,5900:6000\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n          <input type=\\\"text\\\" id=\\\"TCP_PORTS\\\" name=\\\"ports\\\" />\\n        </div>\\n      </div>\\n    </fieldset>\\n    <fieldset>\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"UDP Firewall\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns text-center\\\">\\n          <input type=\\\"radio\\\" class=\\\"udp_type\\\" name=\\\"udp_type\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.nicTabId || (depth0 != null ? depth0.nicTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"nicTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"white_udp_type\\\" value=\\\"WHITE_PORTS_UDP\\\">\\n          <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.nicTabId || (depth0 != null ? depth0.nicTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"nicTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"white_udp_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Whitelist\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <input type=\\\"radio\\\" class=\\\"udp_type\\\" name=\\\"udp_type\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.nicTabId || (depth0 != null ? depth0.nicTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"nicTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"black_udp_type\\\" value=\\\"BLACK_PORTS_UDP\\\">\\n          <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.nicTabId || (depth0 != null ? depth0.nicTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"nicTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"black_udp_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Blacklist\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"UDP_PORTS\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PORTS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"A list of ports separated by commas or a ranges separated by semicolons, e.g.: 22,80,5900:6000\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n          <input type=\\\"text\\\" id=\\\"UDP_PORTS\\\" name=\\\"ports\\\" />\\n        </div>\\n      </div>\\n    </fieldset>\\n    <fieldset>\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ICMP\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label>\\n            <input type=\\\"checkbox\\\" name=\\\"icmp_type\\\" value=\\\"ICMP\\\" id=\\\"icmp_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Drop\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        </div>\\n      </div>\\n    </fieldset>\\n  </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, buffer = \"<div class=\\\"row\\\">\\n  \";\n  stack1 = ((helper = (helper = helpers.vnetsTableSelectHTML || (depth0 != null ? depth0.vnetsTableSelectHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"vnetsTableSelectHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n  <br>\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced Options\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab',['require','nouislider','sunstone-config','utils/locale','utils/tips','tabs/vnets-tab/datatable','tabs/secgroups-tab/datatable','utils/wizard-fields','hbs!./nic-tab/html'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  require('nouislider');\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var VNetsTable = require('tabs/vnets-tab/datatable');\n  var SecgroupsTable = require('tabs/secgroups-tab/datatable');\n  var WizardFields = require('utils/wizard-fields');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./nic-tab/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function DiskTab(nicTabId) {\n    this.nicTabId = 'nicTab' + nicTabId;\n\n    this.vnetsTable = new VNetsTable(this.nicTabId + 'Table', {'select': true});\n\n    var secgroupSelectOptions = {\n      'select': true,\n      'selectOptions': {\n        \"multiple_choice\": true\n      }\n    }\n    this.secgroupsTable = new SecgroupsTable(this.nicTabId + 'SGTable', secgroupSelectOptions);\n  }\n\n  DiskTab.prototype.constructor = DiskTab;\n  DiskTab.prototype.html = _html;\n  DiskTab.prototype.setup = _setup;\n  DiskTab.prototype.onShow = _onShow;\n  DiskTab.prototype.retrieve = _retrieve;\n  DiskTab.prototype.fill = _fill;\n\n  return DiskTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML({\n      'nicTabId': this.nicTabId,\n      'vnetsTableSelectHTML': this.vnetsTable.dataTableHTML,\n      'secgroupsTableSelectHTML': this.secgroupsTable.dataTableHTML\n    });\n  }\n\n  function _onShow(context, panelForm) {\n    this.vnetsTable.refreshResourceTableSelect();\n  }\n\n  function _setup(context) {\n    var that = this;\n    Tips.setup(context);\n    that.vnetsTable.initialize({\n      'selectOptions': {\n        'select_callback': function(aData, options) {\n          // If the net is selected by Id, avoid overwriting it with name+uname\n          if ($('#NETWORK_ID', context).val() != aData[options.id_index]) {\n            $('#NETWORK_ID', context).val(\"\");\n            $('#NETWORK', context).val(aData[options.name_index]);\n            $('#NETWORK_UNAME', context).val(aData[options.uname_index]);\n            $('#NETWORK_UID', context).val(\"\");\n          }\n        }\n      }\n    });\n    that.vnetsTable.refreshResourceTableSelect();\n\n    that.secgroupsTable.initialize();\n    that.secgroupsTable.refreshResourceTableSelect();\n  }\n\n  function _retrieve(context) {\n    var nicJSON = WizardFields.retrieve(context);\n\n    var tcp = $(\"input.tcp_type:checked\", context).val();\n    if (tcp) {\n      nicJSON[tcp] = $(\"#TCP_PORTS\", context).val();\n    }\n\n    var udp = $(\"input.udp_type:checked\", context).val();\n    if (udp) {\n      nicJSON[udp] = $(\"#UDP_PORTS\", context).val();\n    }\n\n    if ($(\"#icmp_type\", context).is(\":checked\")) {\n      nicJSON[\"ICMP\"] = \"drop\"\n    }\n\n    var secgroups = this.secgroupsTable.retrieveResourceTableSelect();\n    if (secgroups != undefined && secgroups.length != 0) {\n      nicJSON[\"SECURITY_GROUPS\"] = secgroups.join(\",\");\n    }\n\n    return nicJSON;\n  }\n\n  function _fill(context, templateJSON) {\n    if (templateJSON.NETWORK_ID != undefined) {\n      var selectedResources = {\n          ids : templateJSON.NETWORK_ID\n        }\n\n      this.vnetsTable.selectResourceTableSelect(selectedResources);\n    } else if (templateJSON.NETWORK != undefined && templateJSON.NETWORK_UNAME != undefined) {\n      var selectedResources = {\n          names : {\n            name: templateJSON.NETWORK, \n            uname: templateJSON.NETWORK_UNAME\n          }\n        }\n\n      this.vnetsTable.selectResourceTableSelect(selectedResources);\n    }\n\n    if (templateJSON[\"WHITE_PORTS_TCP\"]) {\n      var field = $(\"input.tcp_type[value='WHITE_PORTS_TCP']\", context);\n      field.click();\n\n      $(\"#TCP_PORTS\", context).val(templateJSON[\"WHITE_PORTS_TCP\"]);\n    } else if (templateJSON[\"BLACK_PORTS_TCP\"]) {\n      var field = $(\"input.tcp_type[value='BLACK_PORTS_TCP']\", context);\n      field.click();\n\n      $(\"#TCP_PORTS\", context).val(templateJSON[\"BLACK_PORTS_TCP\"]);\n    }\n\n    if (templateJSON[\"WHITE_PORTS_UDP\"]) {\n      var field = $(\"input.udp_type[value='WHITE_PORTS_UDP']\", context);\n      field.click();\n\n      $(\"#UDP_PORTS\", context).val(templateJSON[\"WHITE_PORTS_UDP\"]);\n    } else if (templateJSON[\"BLACK_PORTS_UDP\"]) {\n      var field = $(\"input.udp_type[value='BLACK_PORTS_UDP']\", context);\n      field.click();\n\n      $(\"#UDP_PORTS\", context).val(templateJSON[\"BLACK_PORTS_UDP\"]);\n    }\n\n    if (templateJSON[\"ICMP\"]) {\n      var field = $(\"#icmp_type\", context);\n      $(\"#icmp_type\", context).attr('checked', 'checked');\n    }\n\n    if (templateJSON[\"SECURITY_GROUPS\"] != undefined &&\n        templateJSON[\"SECURITY_GROUPS\"].length != 0) {\n\n      var selectedResources = {ids: templateJSON[\"SECURITY_GROUPS\"].split(\",\")};\n      this.secgroupsTable.selectResourceTableSelect(selectedResources);\n    } else {\n      this.secgroupsTable.refreshResourceTableSelect();\n    }\n\n    WizardFields.fill(context, templateJSON);\n  }\n});\n\n","define('tabs/vms-tab/dialogs/attach-nic',['require','utils/dialogs/dialog','hbs!./attach-nic/html','sunstone','utils/notifier','utils/tips','tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab','utils/wizard-fields','./attach-nic/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./attach-nic/html');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Tips = require('utils/tips');\n  var NicTab = require('tabs/templates-tab/form-panels/create/wizard-tabs/network/nic-tab');\n  var WizardFields = require('utils/wizard-fields');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./attach-nic/dialogId');\n  var TAB_ID = require('../tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.nicTab = new NicTab(DIALOG_ID + 'NickTab');\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setElement = _setElement;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId,\n      'nicTabHTML': this.nicTab.html()\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n    that.nicTab.setup();\n\n    Tips.setup(context);\n\n    $('#' + DIALOG_ID + 'Form', context).submit(function() {\n      var templateJSON = that.nicTab.retrieve(context);\n      var obj = {\n        \"NIC\": templateJSON\n      }\n\n      Sunstone.runAction('VM.attachnic', that.element.ID, obj);\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      return false;\n    });\n\n    return false;\n  }\n\n  function _onShow(context) {  \n    this.nicTab.onShow(context);  \n    $(\"#vm_id\", context).val(this.element.ID);\n    return false;\n  }\n\n  function _setElement(element) {\n    this.element = element\n  }\n});\n\n","define('tabs/vms-tab/dialogs/attach-nic/dialogId',['require'],function(require) {\n  return 'attachNICVMDialog';\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/dialogs/snapshot/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal small\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h3 class=\\\"subheader\\\" id=\\\"\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Snapshot\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n    </div>\\n  </div>\\n  <div class=\\\"reveal-body\\\">\\n    <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"vm_id\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Machine ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n          <input style=\\\"border-style: inset; background-color: lightgrey\\\" type=\\\"text\\\" name=\\\"vm_id\\\" id=\\\"vm_id\\\" disabled/>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"snapshot_name\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Snapshot name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n          <input type=\\\"text\\\" name=\\\"snapshot_name\\\" id=\\\"snapshot_name\\\" />\\n        </div>\\n      </div>\\n      <div class=\\\"form_buttons\\\">\\n        <button class=\\\"button radius right success\\\" id=\\\"snapshot_live_button\\\" type=\\\"submit\\\" value=\\\"VM.saveas\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Take snapshot\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n      </div>\\n      <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n    </form>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/dialogs/snapshot/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vms-tab/dialogs/snapshot',['require','utils/dialogs/dialog','hbs!./snapshot/html','sunstone','utils/tips','./snapshot/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./snapshot/html');\n  var Sunstone = require('sunstone');\n  var Tips = require('utils/tips');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./snapshot/dialogId');\n  var TAB_ID = require('../tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setElement = _setElement;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    Tips.setup(context);\n\n    $('#' + DIALOG_ID + 'Form', context).submit(function() {\n      var snapshot_name = $('#snapshot_name', this).val();\n      var obj = {\n        \"snapshot_name\": snapshot_name\n      }\n\n      Sunstone.runAction('VM.snapshot_create', that.element.ID, obj);\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      return false;\n    });\n\n    return false;\n  }\n\n  function _onShow(context) {   \n    $(\"#vm_id\", context).val(this.element.ID);\n    $(\"#snapshot_name\", context).focus();\n    return false;\n  }\n\n  function _setElement(element) {\n    this.element = element\n  }\n});\n\n","define('tabs/vms-tab/dialogs/snapshot/dialogId',['require'],function(require) {\n  return 'snapshotVMDialog';\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/dialogs/vnc/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large max-height\\\" style=\\\"width:auto; max-width:70%\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h3 class=\\\"subheader\\\" id=\\\"vnc_dialog\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VNC\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span id=\\\"VNC_status\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Loading\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        <a id=\\\"open_in_a_new_window\\\" href=\\\"\\\" target=\\\"_blank\\\" title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Open in a new window\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\"> <i class=\\\"fa fa-external-link detach-vnc-icon\\\"/></a>\\n        <span id=\\\"VNC_buttons\\\" class=\\\"right\\\">\\n          <input type=\\\"button\\\" value=\\\"Send CtrlAltDel\\\" id=\\\"sendCtrlAltDelButton\\\"></span>\\n      </h3>\\n    </div>\\n  </div>\\n  <div class=\\\"reveal-body\\\" style=\\\"width:100%; overflow-x:overlay\\\">\\n    <canvas id=\\\"VNC_canvas\\\" width=\\\"640px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Canvas not supported.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</canvas>\\n    <div id=\\\"VNC_status_bar\\\" class=\\\"VNC_status_bar\\\"></div>\\n  </div>\\n  <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/dialogs/vnc/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vms-tab/dialogs/vnc',['require','utils/dialogs/dialog','hbs!./vnc/html','sunstone','utils/vnc','./vnc/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./vnc/html');\n  var Sunstone = require('sunstone');\n  var Vnc = require('utils/vnc');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./vnc/dialogId');\n  var TAB_ID = require('../tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.onClose = _onClose;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setElement = _setElement;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    $(\"#open_in_a_new_window\", context).on(\"click\", function() {\n       var dialog = Sunstone.getDialog(DIALOG_ID);\n       dialog.hide();\n    });\n\n    $('#sendCtrlAltDelButton', context).click(function() {\n      Vnc.sendCtrlAltDel();\n      return false;\n    });\n\n    return false;\n  }\n\n  function _onShow(context) {   \n    Vnc.vncCallback(this.element);\n    return false;\n  }\n\n  function _onClose(context) {   \n    Vnc.disconnect();\n    Vnc.unlock();\n    return false;\n  }\n\n  function _setElement(element) {\n    this.element = element\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/dialogs/spice/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large max-height\\\" style=\\\"width:auto; max-width:70%\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h3 class=\\\"subheader\\\" id=\\\"spice_dialog\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"SPICE\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span id=\\\"vnc_buttons\\\">\\n          <a id=\\\"open_in_a_new_window_spice\\\" href=\\\"\\\" target=\\\"_blank\\\" title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Open in a new window\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\"> <i class=\\\"fa fa-external-link detach-spice-icon\\\"/></a>\\n        </span>\\n      </h3>\\n    </div>\\n  </div>\\n  <div class=\\\"reveal-body\\\" style=\\\"width:100%; overflow-x:overlay\\\">\\n    <div id=\\\"spice-area\\\">\\n      <div id=\\\"spice-screen\\\" class=\\\"spice-screen\\\"></div>\\n    </div>\\n  </div>\\n  <div id=\\\"message-div\\\" class=\\\"spice-message\\\"></div>\\n  <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/dialogs/spice/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vms-tab/dialogs/spice',['require','utils/dialogs/dialog','hbs!./spice/html','sunstone','utils/spice','./spice/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./spice/html');\n  var Sunstone = require('sunstone');\n  var Spice = require('utils/spice');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./spice/dialogId');\n  var TAB_ID = require('../tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.onClose = _onClose;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setElement = _setElement;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    $(\"#open_in_a_new_window_spice\", context).on(\"click\", function() {\n      var dialog = Sunstone.getDialog(DIALOG_ID);\n      dialog.hide();\n    });\n\n    return false;\n  }\n\n  function _onShow(context) {   \n    Spice.spiceCallback(this.element);\n    return false;\n  }\n\n  function _onClose(context) {   \n    Spice.disconnect();\n    Spice.unlock();\n    return false;\n  }\n\n  function _setElement(element) {\n    this.element = element\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/panel/permissions-table/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<table  class=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.resourceType || (depth0 != null ? depth0.resourceType : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"resourceType\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_permissions_table dataTable extended_table\\\">\\n  \";\n  stack1 = ((helper = (helper = helpers.permissionsHTML || (depth0 != null ? depth0.permissionsHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"permissionsHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n  <thead>\\n    <tr>\\n      <th colspan=\\\"4\\\" style=\\\"width:130px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ownership\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n    </tr>\\n  </thead>\\n  \";\n  stack1 = ((helper = (helper = helpers.ownerHTML || (depth0 != null ? depth0.ownerHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"ownerHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n  \";\n  stack1 = ((helper = (helper = helpers.groupHTML || (depth0 != null ? depth0.groupHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"groupHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n</table>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/panel/permissions-table/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/panel/permissions-table/permissions',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<thead>\\n  <tr>\\n    <th style=\\\"width:130px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Permissions\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</th>\\n    <th style=\\\"width:40px;text-align:center;\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Use\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n    <th style=\\\"width:40px;text-align:center;\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Manage\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n    <th style=\\\"width:40px;text-align:center;\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Admin\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n  </tr>\\n</thead>\\n<tr>\\n  <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Owner\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n  <td style=\\\"text-align:center\\\">\\n    <input type=\\\"checkbox\\\" class=\\\"permission_check owner_u\\\" />\\n  </td>\\n  <td style=\\\"text-align:center\\\">\\n    <input type=\\\"checkbox\\\" class=\\\"permission_check owner_m\\\" />\\n  </td>\\n  <td style=\\\"text-align:center\\\">\\n    <input type=\\\"checkbox\\\" class=\\\"permission_check owner_a\\\" />\\n  </td>\\n</tr>\\n<tr>\\n  <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n  <td style=\\\"text-align:center\\\">\\n    <input type=\\\"checkbox\\\" class=\\\"permission_check group_u\\\" />\\n  </td>\\n  <td style=\\\"text-align:center\\\">\\n    <input type=\\\"checkbox\\\" class=\\\"permission_check group_m\\\" />\\n  </td>\\n  <td style=\\\"text-align:center\\\">\\n    <input type=\\\"checkbox\\\" class=\\\"permission_check group_a\\\" />\\n  </td>\\n</tr>\\n<tr>\\n  <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Other\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n  <td style=\\\"text-align:center\\\">\\n    <input type=\\\"checkbox\\\" class=\\\"permission_check other_u\\\" />\\n  </td>\\n  <td style=\\\"text-align:center\\\">\\n    <input type=\\\"checkbox\\\" class=\\\"permission_check other_m\\\" />\\n  </td>\\n  <td style=\\\"text-align:center\\\">\\n    <input type=\\\"checkbox\\\" class=\\\"permission_check other_a\\\" />\\n  </td>\\n</tr>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/panel/permissions-table/permissions', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/panel/permissions-table/owner',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda;\n  return \"<tr>\\n  <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Owner\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n  <td colspan=\\\"2\\\" id=\\\"value_td_owner\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.UNAME : stack1), depth0))\n    + \"</td>\\n  <td>\\n    <div id=\\\"div_edit_chg_owner\\\">\\n      <a id=\\\"div_edit_chg_owner_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n    </div>\\n  </td>\\n</tr>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/panel/permissions-table/owner', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/panel/permissions-table/group',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda;\n  return \"<tr>\\n  <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n  <td colspan=\\\"2\\\" id=\\\"value_td_group\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.GNAME : stack1), depth0))\n    + \"</td>\\n  <td>\\n    <div id=\\\"div_edit_chg_group\\\">\\n      <a id=\\\"div_edit_chg_group_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n    </div>\\n  </td>\\n</tr>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/panel/permissions-table/group', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('utils/panel/permissions-table',['require','hbs!./permissions-table/html','hbs!./permissions-table/permissions','hbs!./permissions-table/owner','hbs!./permissions-table/group','utils/resource-select','sunstone','sunstone-config'],function(require) {\n  /*\n    This module insert a row with the name of the resource.\n    The row can be edited and a rename action will be sent\n   */\n  \n  var TemplatePermissionsTable = require('hbs!./permissions-table/html');\n  var TemplatePermissions = require('hbs!./permissions-table/permissions');\n  var TemplateOwner = require('hbs!./permissions-table/owner');\n  var TemplateGroup = require('hbs!./permissions-table/group');\n  var ResourceSelect = require('utils/resource-select');\n  var Sunstone = require('sunstone');\n  var Config = require('sunstone-config');\n\n  /*\n    Generate the tr HTML with the name of the resource and an edit icon\n    @param {String} tabName\n    @param {String} resourceType Resource type (i.e: Zone, Host, Image...)\n    @param {Object} element OpenNebula object (i.e: element.ID, element.GNAME)\n    @returns {String} HTML row\n   */\n  var _html = function(tabName, resourceType, element) {\n    var permissionsHTML = '';\n    if (Config.isTabActionEnabled(tabName, resourceType + '.chmod')) {\n      permissionsHTML = TemplatePermissions({'element': element})\n    }\n\n    // TODO: bug? if action is not enabled the edit button should be hidden,\n    // but the group/owner info should still be visible\n    var ownerHTML = '';\n    if (Config.isTabActionEnabled(tabName, resourceType + '.chown')) {\n      ownerHTML = TemplateOwner({'element': element});\n    }\n\n    var groupHTML = '';\n    if (Config.isTabActionEnabled(tabName, resourceType + '.chgrp')) {\n      groupHTML = TemplateGroup({'element': element})\n    }\n\n    var permissionsTableHTML = TemplatePermissionsTable({\n      'resourceType': resourceType.toLowerCase(),\n      'permissionsHTML': permissionsHTML,\n      'ownerHTML': ownerHTML,\n      'groupHTML': groupHTML\n    })\n\n    return permissionsTableHTML;\n  };\n\n  /*\n    Initialize the row, clicking the edit icon will add an input to edit the name\n    @param {String} tabName\n    @param {String} resourceType Resource type (i.e: Zone, Host, Image...)\n    @param {Object} element OpenNebula object (i.e: element.ID, element.GNAME)\n    @param {jQuery Object} context Selector including the tr\n   */\n  var _setup = function(tabName, resourceType, element, context) {\n    var resourceId = element.ID\n    if (Config.isTabActionEnabled(tabName, resourceType + '.chmod')) {\n      _setPermissionsTable(element, context);\n\n      context.off('change', \".permission_check\");\n      context.on('change', \".permission_check\", function() {\n        var permissionsOctet = {octet : _buildOctet(context)};\n        Sunstone.runAction(resourceType + \".chmod\", resourceId, permissionsOctet);\n      });\n    }\n\n    if (Config.isTabActionEnabled(tabName, resourceType + '.chown')) {\n      context.off(\"click\", \"#div_edit_chg_owner_link\");\n      context.on(\"click\", \"#div_edit_chg_owner_link\", function() {\n          var tr_context = $(this).parents(\"tr\");\n          ResourceSelect.insert(\"#value_td_owner\", context, \"User\", element.UID, false);\n        });\n\n      context.off(\"change\", \"#value_td_owner .resource_list_select\");\n      context.on(\"change\", \"#value_td_owner .resource_list_select\", function() {\n          var newOwnerId = $(this).val();\n          if (newOwnerId != \"\") {\n            Sunstone.runAction(resourceType + \".chown\", [resourceId], newOwnerId);\n          }\n        });\n    }\n\n    if (Config.isTabActionEnabled(tabName, resourceType + '.chgrp')) {\n      context.off(\"click\", \"#div_edit_chg_group_link\");\n      context.on(\"click\", \"#div_edit_chg_group_link\", function() {\n          ResourceSelect.insert(\"#value_td_group\", context, \"Group\", element.GID, false);\n        });\n\n      context.off(\"change\", \"#value_td_group .resource_list_select\");\n      context.on(\"change\", \"#value_td_group .resource_list_select\", function() {\n          var newGroupId = $(this).val();\n          if (newGroupId != \"\") {\n            Sunstone.runAction(resourceType + \".chgrp\", [resourceId], newGroupId);\n          }\n        });\n    }\n\n    return false;\n  }\n\n  //Returns an octet given a permission table with checkboxes\n  var _buildOctet = function(context) {\n    var owner = 0;\n    var group = 0;\n    var other = 0;\n\n    if ($('.owner_u', context).is(':checked'))\n        owner += 4;\n    if ($('.owner_m', context).is(':checked'))\n        owner += 2;\n    if ($('.owner_a', context).is(':checked'))\n        owner += 1;\n\n    if ($('.group_u', context).is(':checked'))\n        group += 4;\n    if ($('.group_m', context).is(':checked'))\n        group += 2;\n    if ($('.group_a', context).is(':checked'))\n        group += 1;\n\n    if ($('.other_u', context).is(':checked'))\n        other += 4;\n    if ($('.other_m', context).is(':checked'))\n        other += 2;\n    if ($('.other_a', context).is(':checked'))\n        other += 1;\n\n    return \"\" + owner + group + other;\n  };\n\n  var _ownerUse = function(element) {\n    return parseInt(element.PERMISSIONS.OWNER_U);\n  };\n  var _ownerManage = function(element) {\n    return parseInt(element.PERMISSIONS.OWNER_M);\n  };\n  var _ownerAdmin = function(element) {\n    return parseInt(element.PERMISSIONS.OWNER_A);\n  };\n\n  var _groupUse = function(element) {\n    return parseInt(element.PERMISSIONS.GROUP_U);\n  };\n  var _groupManage = function(element) {\n    return parseInt(element.PERMISSIONS.GROUP_M);\n  };\n  var _groupAdmin = function(element) {\n    return parseInt(element.PERMISSIONS.GROUP_A);\n  };\n\n  var _otherUse = function(element) {\n    return parseInt(element.PERMISSIONS.OTHER_U);\n  };\n  var _otherManage = function(element) {\n    return parseInt(element.PERMISSIONS.OTHER_M);\n  };\n  var _otherAdmin = function(element) {\n    return parseInt(element.PERMISSIONS.OTHER_A);\n  };\n\n  var _ownerPermStr = function(element) {\n    var result = \"\";\n    result += _ownerUse(element) ? \"u\" : \"-\";\n    result += _ownerManage(element) ? \"m\" : \"-\";\n    result += _ownerAdmin(element) ? \"a\" : \"-\";\n    return result;\n  };\n\n  var _groupPermStr = function(element) {\n    var result = \"\";\n    result += _groupUse(element) ? \"u\" : \"-\";\n    result += _groupManage(element) ? \"m\" : \"-\";\n    result += _groupAdmin(element) ? \"a\" : \"-\";\n    return result;\n  };\n\n  var _otherPermStr = function(element) {\n    var result = \"\";\n    result += _otherUse(element) ? \"u\" : \"-\";\n    result += _otherManage(element) ? \"m\" : \"-\";\n    result += _otherAdmin(element) ? \"a\" : \"-\";\n    return result;\n  };\n\n  var _setPermissionsTable = function(element, context) {\n    if (_ownerUse(element))\n        $('.owner_u', context).attr('checked', 'checked');\n    if (_ownerManage(element))\n        $('.owner_m', context).attr('checked', 'checked');\n    if (_ownerAdmin(element))\n        $('.owner_a', context).attr('checked', 'checked');\n    if (_groupUse(element))\n        $('.group_u', context).attr('checked', 'checked');\n    if (_groupManage(element))\n        $('.group_m', context).attr('checked', 'checked');\n    if (_groupAdmin(element))\n        $('.group_a', context).attr('checked', 'checked');\n    if (_otherUse(element))\n        $('.other_u', context).attr('checked', 'checked');\n    if (_otherManage(element))\n        $('.other_m', context).attr('checked', 'checked');\n    if (_otherAdmin(element))\n        $('.other_a', context).attr('checked', 'checked');\n  };\n\n  return {\n    'html': _html,\n    'setup': _setup\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"State\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.stateStr || (depth0 != null ? depth0.stateStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"stateStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"LCM State\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.lcmStateStr || (depth0 != null ? depth0.lcmStateStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"lcmStateStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Host\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.hostname || (depth0 != null ? depth0.hostname : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"hostname\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Start time\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.prettyStartTime || (depth0 != null ? depth0.prettyStartTime : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"prettyStartTime\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Deploy ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.deployId || (depth0 != null ? depth0.deployId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"deployId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Reschedule\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.resched || (depth0 != null ? depth0.resched : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"resched\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n      </tr>\\n    </tbody>\\n  </table>\\n</div>\\n<div class=\\\"large-6 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.permissionsTableHTML || (depth0 != null ? depth0.permissionsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"permissionsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</div>\\n</div>\\n<div class=\\\"row\\\">\\n<div class=\\\"large-9 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vms-tab/panels/info',['require','utils/locale','utils/humanize','utils/panel/rename-tr','utils/panel/permissions-table','utils/panel/template-table','opennebula/vm','../utils/state-actions','hbs!./info/html','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var RenameTr = require('utils/panel/rename-tr');\n  var PermissionsTable = require('utils/panel/permissions-table');\n  var TemplateTable = require('utils/panel/template-table');\n  var OpenNebulaVM = require('opennebula/vm');\n  var StateActions = require('../utils/state-actions');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"VM\"\n  var XML_ROOT = \"VM\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);\n    var prettyStartTime = Humanize.prettyTime(this.element.STIME);\n\n    var stateStr = OpenNebulaVM.stateStr(this.element.STATE);\n    var lcmStateStr = OpenNebulaVM.lcmStateStr(this.element.LCM_STATE);\n    var hostname = OpenNebulaVM.hostnameStr(this.element);\n\n    var deployId = (typeof(this.element.DEPLOY_ID) == \"object\" ? \"-\" : this.element.DEPLOY_ID);\n    var resched = (parseInt(this.element.RESCHED) ? Locale.tr(\"yes\") : Locale.tr(\"no\"))\n    var templateTableHTML = TemplateTable.html(this.element.USER_TEMPLATE, RESOURCE, Locale.tr(\"Attributes\"));\n\n    return TemplateInfo({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'stateStr': stateStr,\n      'lcmStateStr': lcmStateStr,\n      'hostname': hostname,\n      'prettyStartTime': prettyStartTime,\n      'deployId': deployId,\n      'resched': resched,\n      'permissionsTableHTML': permissionsTableHTML,\n      'templateTableHTML': templateTableHTML,\n      'renameTrHTML': renameTrHTML\n    });\n  }\n\n  function _setup(context) {\n    // Enable only action buttons for the current state\n    StateActions.disableAllStateActions();\n    StateActions.enableStateActions(this.element.STATE, this.element.LCM_STATE);\n    // Enable / disable vnc button\n    if (OpenNebulaVM.isVNCSupported(this.element)) {\n      $(\".vnc-right-info\").show();\n    } else {\n      $(\".vnc-right-info\").hide();\n    }\n\n    if (OpenNebulaVM.isSPICESupported(this.element)) {\n      $(\".spice-right-info\").show()\n    } else {\n      $(\".spice-right-info\").hide();;\n    }\n\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n    PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);\n\n    // Get rid of the unwanted (for show) SCHED_* keys\n    var that = this;\n    var strippedTemplate = {};\n    var unshownValues = {};\n    $.each(that.element.USER_TEMPLATE, function(key, value) {\n      if (!key.match(/^SCHED_*/)) {\n        strippedTemplate[key] = value;\n      } else {\n        unshownValues[key] = value;\n      }\n    })\n\n    TemplateTable.setup(strippedTemplate, RESOURCE, this.element.ID, context, unshownValues);\n  }\n});\n\n","define('tabs/vms-tab/panels/info/panelId',['require'],function(require){\n  return 'vm_info_tab';\n});\n","define('templates/helpers/humanizeSize',['require','hbs/handlebars','utils/humanize'],function(require) {\n  var Handlebars = require('hbs/handlebars');\n  var Humanize = require('utils/humanize');\n  \n  /**\n   * Returns a human readable size in Kilo, Mega, Giga or Tera bytes\n   * @param  {string} unit    one of MB, KB, B\n   * @param  {integer} value  value\n   * @param  {object} options\n   * @return {string}         human readable size\n   */\n  var humanizeSize = function(unit, value, options) {\n    switch(unit.toUpperCase()){\n      case 'B':\n        return Humanize.sizeFromB(value);\n      case 'K':\n      case 'KB':\n        return Humanize.sizeFromKB(value);\n      case 'M':\n      case 'MB':\n        return Humanize.sizeFromMB(value);\n      default:\n        return value;\n    }\n  };\n\n  Handlebars.registerHelper('humanizeSize', humanizeSize);\n\n  return humanizeSize;\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/panels/capacity/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/valOrDefault','templates/helpers/humanizeSize','templates/helpers/isTabActionEnabled'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.resizeStateEnabled : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(2, data),\"inverse\":this.program(4, data),\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"2\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            <button id=\\\"resize_capacity\\\" class=\\\"button tiny success right radius\\\" >\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Resize\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n\";\n},\"4\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            <button id=\\\"resize_capacity\\\" class=\\\"button tiny success right radius\\\" disabled=\\\"disabled\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Resize\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\\n    <table class=\\\"info_table dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VCPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MEMORY\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cost / CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cost / MByte\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th></th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td id=\\\"cpu_info\\\">\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.CPU : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td id=\\\"vcpu_info\\\">\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.VCPU : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td id=\\\"memory_info\\\">\"\n    + escapeExpression(((helpers.humanizeSize || (depth0 && depth0.humanizeSize) || helperMissing).call(depth0, \"MB\", ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.MEMORY : stack1), {\"name\":\"humanizeSize\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td id=\\\"cpu_cost_info\\\">\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.CPU_COST : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td id=\\\"memory_cost_info\\\" >\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.MEMORY_COST : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td>\\n\";\n  stack1 = ((helpers.isTabActionEnabled || (depth0 && depth0.isTabActionEnabled) || helperMissing).call(depth0, \"vms-tab\", \"VM.resize\", {\"name\":\"isTabActionEnabled\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"          </td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <div class=\\\"row text-center\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <h3 class=\\\"subheader\\\">\\n          <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"REAL CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n        </h3>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <div class=\\\"large-12 columns centered graph vm_cpu_graph text-center\\\" style=\\\"height: 100px;\\\">\\n          <span  id=\\\"provision_dashboard_total\\\" style=\\\"font-size:80px\\\">\\n            <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n          </span>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <div class=\\\"row text-center\\\">\\n      <h3 class=\\\"subheader\\\">\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"REAL MEMORY\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h3>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns centered graph vm_memory_graph text-center\\\" style=\\\"height: 100px;\\\">\\n        <span  id=\\\"provision_dashboard_total\\\" style=\\\"font-size:80px\\\">\\n          <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n        </span>\\n      </div>\\n    </div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/panels/capacity/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vms-tab/panels/capacity',['require','utils/locale','sunstone-config','sunstone','opennebula/vm','utils/notifier','utils/graphs','hbs!./capacity/html','../tabId','./capacity/panelId','../dialogs/resize/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Sunstone = require('sunstone');\n  var OpenNebulaVM = require('opennebula/vm');\n  var Notifier = require('utils/notifier');\n  var Graphs = require('utils/graphs');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateInfo = require('hbs!./capacity/html');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./capacity/panelId');\n  var RESIZE_DIALOG_ID = require('../dialogs/resize/dialogId');\n  var RESOURCE = \"VM\"\n  var XML_ROOT = \"VM\"\n  // If VM is not INIT, PENDING, HOLD, FAILED, POWEROFF, UNDEPLOYED,\n  var RESIZE_STATES = [\"0\", \"1\", \"2\", \"7\", \"8\", \"9\"];\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.panelId = PANEL_ID;\n    this.title = Locale.tr(\"Capacity\");\n    this.icon = \"fa-laptop\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n  Panel.prototype.onShow = _onShow;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var resizeStateEnabled = (RESIZE_STATES.indexOf(this.element.STATE) > -1)\n\n    return TemplateInfo({\n      'element': this.element,\n      'resizeStateEnabled': resizeStateEnabled\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.resize\")) {\n      context.off('click', '#resize_capacity');\n      context.on('click', '#resize_capacity', function() {\n        var dialog = Sunstone.getDialog(RESIZE_DIALOG_ID);\n        dialog.setElement(that.element);\n        dialog.show();\n        return false;\n      });\n    }\n  }\n\n  function _onShow(context) {\n    var that = this;\n    OpenNebulaVM.monitor({\n      data: {\n        id: that.element.ID, \n        monitor: {\n          monitor_resources : \"CPU,MEMORY\"\n        }\n      },\n      success: function(req, response) {\n        var vmGraphs = [\n          {\n            monitor_resources : \"CPU\",\n            labels : Locale.tr(\"Real CPU\"),\n            humanize_figures : false,\n            div_graph : $(\".vm_cpu_graph\")\n          },\n          {\n            monitor_resources : \"MEMORY\",\n            labels : Locale.tr(\"Real MEM\"),\n            humanize_figures : true,\n            div_graph : $(\".vm_memory_graph\")\n          }\n        ];\n\n        for (var i = 0; i < vmGraphs.length; i++) {\n          Graphs.plot(response, vmGraphs[i]);\n        }\n      },\n      error: Notifier.onError\n    });\n  }\n});\n\n","define('tabs/vms-tab/panels/storage',['require','utils/locale','sunstone-config','sunstone','utils/humanize','../utils/state-actions','../tabId','./storage/panelId','../dialogs/attach-disk/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Sunstone = require('sunstone');\n  var Humanize = require('utils/humanize');\n  var StateActions = require('../utils/state-actions');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./storage/panelId');\n  var ATTACH_DISK_DIALOG_ID = require('../dialogs/attach-disk/dialogId');\n  var RESOURCE = \"VM\"\n  var XML_ROOT = \"VM\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.panelId = PANEL_ID;\n    this.title = Locale.tr(\"Storage\");\n    this.icon = \"fa-tasks\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var that = this;\n    var html = '<form id=\"hotplugging_form\" vmid=\"' + that.element.ID + '\" >\\\n       <div class=\"row\">\\\n       <div class=\"large-12 columns\">\\\n          <table class=\"info_table dataTable extended_table\">\\\n            <thead>\\\n              <tr>\\\n                 <th>' + Locale.tr(\"ID\") + '</th>\\\n                 <th>' + Locale.tr(\"Target\") + '</th>\\\n                 <th>' + Locale.tr(\"Image / Format-Size\") + '</th>\\\n                 <th>' + Locale.tr(\"Persistent\") + '</th>\\\n                 <th>' + Locale.tr(\"Save as\") + '</th>\\\n                 <th colspan=\"\">' + Locale.tr(\"Actions\") + '</th>\\\n                 <th>';\n\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.attachdisk\")) {\n      if (StateActions.enabledStateAction(\"VM.attachdisk\", that.element.STATE, that.element.LCM_STATE)) {\n        html += '\\\n            <button id=\"attach_disk\" class=\"button tiny success right radius\" >' + Locale.tr(\"Attach disk\") + '</button>'\n      } else {\n        html += '\\\n            <button id=\"attach_disk\" class=\"button tiny success right radius\" disabled=\"disabled\">' + Locale.tr(\"Attach disk\") + '</button>'\n      }\n    }\n\n    html += '</th>\\\n               </tr>\\\n            </thead>\\\n            <tbody>';\n\n    var disks = []\n    if ($.isArray(that.element.TEMPLATE.DISK))\n        disks = that.element.TEMPLATE.DISK\n    else if (!$.isEmptyObject(that.element.TEMPLATE.DISK))\n        disks = [that.element.TEMPLATE.DISK]\n\n    if (!$.isEmptyObject(that.element.TEMPLATE.CONTEXT)) {\n      var context_disk = that.element.TEMPLATE.CONTEXT;\n\n      context_disk[\"IMAGE\"] = Locale.tr(\"Context\");\n      context_disk[\"CONTEXT\"] = true;\n\n      disks.push(context_disk);\n    }\n\n    if (!disks.length) {\n      html += '\\\n           <tr id=\"no_disks_tr\">\\\n             <td colspan=\"6\">' + Locale.tr(\"No disks to show\") + '</td>\\\n           </tr>';\n    } else {\n\n      for (var i = 0; i < disks.length; i++) {\n        var disk = disks[i];\n\n        var save_as;\n        // Snapshot deferred\n        if (\n           (// ACTIVE\n            that.element.STATE == \"3\") &&\n           (// HOTPLUG_SAVEAS HOTPLUG_SAVEAS_POWEROFF HOTPLUG_SAVEAS_SUSPENDED\n            that.element.LCM_STATE == \"26\" || that.element.LCM_STATE == \"27\" || that.element.LCM_STATE == \"28\") &&\n           (//\n            disk.SAVE_AS_ACTIVE == \"YES\")\n           ) {\n          save_as = Locale.tr(\"in progress\");\n          actions = Locale.tr('deferred snapshot in progress');\n        }\n        // Snapshot Hot\n        else if (\n           (// ACTIVE\n            that.element.STATE == \"3\") &&\n           (// HOTPLUG_SAVEAS HOTPLUG_SAVEAS_POWEROFF HOTPLUG_SAVEAS_SUSPENDED\n            that.element.LCM_STATE == \"26\" || that.element.LCM_STATE == \"27\" || that.element.LCM_STATE == \"28\") &&\n           (//\n            disk.HOTPLUG_SAVE_AS_ACTIVE == \"YES\")\n           ) {\n          save_as = (disk.SAVE_AS ? disk.SAVE_AS : '-');\n          actions = Locale.tr('hot snapshot in progress');\n        }\n        // Attach / Detach\n        else if (\n           (// ACTIVE\n            that.element.STATE == \"3\") &&\n           (// HOTPLUG_SAVEAS HOTPLUG_SAVEAS_POWEROFF HOTPLUG_SAVEAS_SUSPENDED\n            that.element.LCM_STATE == \"17\") &&\n           (//\n            disk.ATTACH = \"YES\")\n           ) {\n          save_as = (disk.SAVE_AS ? disk.SAVE_AS : '-');\n          actions = Locale.tr('attach/detach in progress');\n        } else {\n          save_as = (disk.SAVE_AS ? disk.SAVE_AS : '-');\n\n          actions = '';\n\n          if (disk.SAVE == \"YES\") {\n            /* TODO if (Config.isTabActionEnabled(\"vms-tab\", \"VM.disk_snapshot_cancel\")) {\n              if (StateActions.enabledStateAction(\"VM.disk_snapshot_cancel\", that.element.STATE, that.element.LCM_STATE)) {\n                actions += '<a href=\"VM.disk_snapshot_cancel\" class=\"disk_snapshot_cancel\" >\\\n                       <i class=\"fa fa-times\"/></span>' + Locale.tr(\"Cancel Snapshot\") + '</a> &emsp;'\n              }\n            } */\n          } else {\n            /* TODO if (Config.isTabActionEnabled(\"vms-tab\", \"VM.saveas\")) {\n              // Check if it's volatile\n              if (disk.IMAGE_ID &&\n                   StateActions.enabledStateAction(\"VM.saveas\", that.element.STATE, that.element.LCM_STATE)) {\n                actions += '<a href=\"VM.saveas\" class=\"saveas\" ><i class=\"fa fa-save\"/>' + Locale.tr(\"Snapshot\") + '</a> &emsp;'\n              }\n            } */\n          }\n\n          if (Config.isTabActionEnabled(\"vms-tab\", \"VM.detachdisk\")) {\n            if (StateActions.enabledStateAction(\"VM.detachdisk\", that.element.STATE, that.element.LCM_STATE) && !disk.CONTEXT) {\n              actions += '<a href=\"VM.detachdisk\" class=\"detachdisk\" ><i class=\"fa fa-times\"/>' + Locale.tr(\"Detach\") + '</a>'\n            }\n          }\n        }\n\n        html += '\\\n               <tr disk_id=\"' + (disk.DISK_ID) + '\">\\\n                 <td>' + disk.DISK_ID + '</td>\\\n                 <td>' + disk.TARGET + '</td>\\\n                 <td>' + (disk.IMAGE ? disk.IMAGE : (Humanize.sizeFromMB(disk.SIZE) + (disk.FORMAT ? (' - ' + disk.FORMAT) : ''))) + '</td>\\\n                 <td>' + ((disk.SAVE && disk.SAVE == 'YES') ? Locale.tr('YES') : Locale.tr('NO')) + '</td>\\\n                 <td>' + save_as + '</td>\\\n                 <td>' + actions + '</td>\\\n             </tr>';\n      }\n    }\n\n    html += '\\\n               </tbody>\\\n             </table>\\\n           </div>\\\n         </div>\\\n       </form>';\n\n    return html;\n  }\n\n  function _setup(context) {\n    var that = this;\n    /* TODO if (Config.isTabActionEnabled(\"vms-tab\", \"VM.saveas\")) {\n      setupSaveAsDialog();\n\n      $('a.saveas').live('click', function(){\n          var b = $(this);\n          var vm_id = b.parents('form').attr('vmid');\n          var disk_id = b.parents('tr').attr('disk_id');\n\n          popUpSaveAsDialog(vm_id, disk_id);\n\n          //b.html(spinner);\n          return false;\n      });\n    } */\n\n    /* TODO if (Config.isTabActionEnabled(\"vms-tab\", \"VM.disk_snapshot_cancel\")) {\n      $('a.disk_snapshot_cancel').live('click', function(){\n          var b = $(this);\n          var vm_id = b.parents('form').attr('vmid');\n          var disk_id = b.parents('tr').attr('disk_id');\n\n          Sunstone.runAction('VM.disk_snapshot_cancel', vm_id, disk_id);\n\n          return false;\n      });\n    } */\n\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.attachdisk\")) {\n      context.off('click', '#attach_disk');\n      context.on('click', '#attach_disk', function() {\n        var dialog = Sunstone.getDialog(ATTACH_DISK_DIALOG_ID);\n        dialog.setElement(that.element);\n        dialog.show();\n        return false;\n      });\n    }\n\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.detachdisk\")) {\n      context.off('click', '.detachdisk');\n      context.on('click', '.detachdisk', function() {\n        var disk_id = $(this).parents('tr').attr('disk_id');\n        Sunstone.runAction('VM.detachdisk', that.element.ID, disk_id);\n        return false;\n      });\n    }\n  }\n});\n\n","define('tabs/secgroups-tab/utils/common',['require','utils/locale'],function(require) {\n  /*\n    Common functions for Security Groups\n   */\n\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n\n  /*\n  @param {Object} rule Object representing the rule as returned by OpenNebula\n  Returns an object with the human readable attributes of the rule. List of attributes:\n    PROTOCOL\n    RULE_TYPE\n    ICMP_TYPE\n    RANGE\n    NETWORK\n  */\n  function _sgRuleToSt(rule){\n    var text = {};\n\n    if(rule.PROTOCOL != undefined){\n      switch(rule.PROTOCOL.toUpperCase()){\n      case \"TCP\":\n        text[\"PROTOCOL\"] = Locale.tr(\"TCP\");\n        break;\n      case \"UDP\":\n        text[\"PROTOCOL\"] = Locale.tr(\"UDP\");\n        break;\n      case \"ICMP\":\n        text[\"PROTOCOL\"] = Locale.tr(\"ICMP\");\n        break;\n      case \"IPSEC\":\n        text[\"PROTOCOL\"] = Locale.tr(\"IPsec\");\n        break;\n      case \"ALL\":\n        text[\"PROTOCOL\"] = Locale.tr(\"All\");\n        break;\n      default:\n        text[\"PROTOCOL\"] = \"\";\n      }\n    } else {\n      text[\"PROTOCOL\"] = \"\";\n    }\n\n    if(rule.RULE_TYPE != undefined){\n      switch(rule.RULE_TYPE.toUpperCase()){\n      case \"OUTBOUND\":\n        text[\"RULE_TYPE\"] = Locale.tr(\"Outbound\");\n        break;\n      case \"INBOUND\":\n        text[\"RULE_TYPE\"] = Locale.tr(\"Inbound\");\n        break;\n      default:\n        text[\"RULE_TYPE\"] = \"\";\n      }\n    } else {\n      text[\"RULE_TYPE\"] = \"\";\n    }\n\n    if(rule.ICMP_TYPE != undefined){\n      text[\"ICMP_TYPE\"] = _icmpToSt(rule.ICMP_TYPE);\n    } else {\n      text[\"ICMP_TYPE\"] = \"\";\n    }\n\n    if(rule.RANGE != undefined && rule.RANGE != \"\"){\n      text[\"RANGE\"] = rule.RANGE;\n    } else {\n      text[\"RANGE\"] = Locale.tr(\"All\");\n    }\n\n    var network = \"\";\n\n    if(rule.NETWORK_ID != undefined && rule.NETWORK_ID != \"\"){\n      network += (Locale.tr(\"Virtual Network\") + \" \" + rule.NETWORK_ID);\n    }\n\n    if(rule.SIZE != undefined && rule.SIZE != \"\"){\n      if(network != \"\"){\n        network += \":<br>\";\n      }\n\n      if(rule.IP != undefined && rule.IP != \"\"){\n        network += Locale.tr(\"Start\") + \": \" + rule.IP + \", \";\n      } else if(rule.MAC != undefined && rule.MAC != \"\"){\n        network += Locale.tr(\"Start\") + \": \" + rule.MAC + \", \";\n      }\n\n      network += Locale.tr(\"Size\") + \": \" + rule.SIZE;\n    }\n\n    if(network == \"\"){\n      network = Locale.tr(\"Any\");\n    }\n\n    text[\"NETWORK\"] = network;\n\n    return text;\n  }\n\n  function _icmpToSt(icmp_type){\n    switch( icmp_type ){\n      case \"\":    return tr(\"All\");\n      case \"0\":   return \"0: Echo Reply\";\n      case \"3\":   return \"3: Destination Unreachable\";\n      case \"4\":   return \"4: Source Quench\";\n      case \"5\":   return \"5: Redirect\";\n      case \"6\":   return \"6: Alternate Host Address\";\n      case \"8\":   return \"8: Echo\";\n      case \"9\":   return \"9: Router Advertisement\";\n      case \"10\":  return \"10: Router Solicitation\";\n      case \"11\":  return \"11: Time Exceeded\";\n      case \"12\":  return \"12: Parameter Problem\";\n      case \"13\":  return \"13: Timestamp\";\n      case \"14\":  return \"14: Timestamp Reply\";\n      case \"15\":  return \"15: Information Request\";\n      case \"16\":  return \"16: Information Reply\";\n      case \"17\":  return \"17: Address Mask Request\";\n      case \"18\":  return \"18: Address Mask Reply\";\n      case \"30\":  return \"30: Traceroute\";\n      case \"31\":  return \"31: Datagram Conversion Error\";\n      case \"32\":  return \"32: Mobile Host Redirect\";\n      case \"33\":  return \"33: IPv6 Where-Are-You\";\n      case \"34\":  return \"34: IPv6 I-Am-Here\";\n      case \"35\":  return \"35: Mobile Registration Request\";\n      case \"36\":  return \"36: Mobile Registration Reply\";\n      case \"37\":  return \"37: Domain Name Request\";\n      case \"38\":  return \"38: Domain Name Reply\";\n      case \"39\":  return \"39: SKIP\";\n      case \"40\":  return \"40: Photuris\";\n      case \"41\":  return \"41: ICMP messages utilized by experimental mobility protocols such as Seamoby\";\n      case \"253\": return \"253: RFC3692-style Experiment 1\";\n      case \"254\": return \"254: RFC3692-style Experiment 2\";\n      default:  return \"\" + icmp_type;\n    }\n  }\n\n  /*\n    @param {Object} info Object representing the Security Group as returned by OpenNebula\n   */\n  function _getRules(info){\n    var rules = info.TEMPLATE.RULE;\n\n    if (!rules){ //empty\n      rules = [];\n    } else if (rules.constructor != Array) { //>1 rule\n      rules = [rules];\n    }\n\n    return rules;\n  }\n\n  return {\n    'sgRuleToSt': _sgRuleToSt,\n    'getRules': _getRules\n  };\n});\n\n","define('tabs/vms-tab/panels/network',['require','utils/locale','sunstone-config','sunstone','utils/humanize','utils/notifier','utils/graphs','../utils/state-actions','opennebula/vm','tabs/secgroups-tab/utils/common','../tabId','./network/panelId','../dialogs/attach-nic/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Sunstone = require('sunstone');\n  var Humanize = require('utils/humanize');\n  var Notifier = require('utils/notifier');\n  var Graphs = require('utils/graphs');\n  var StateActions = require('../utils/state-actions');\n  var OpenNebulaVM = require('opennebula/vm');\n  var SecGroupsCommon = require('tabs/secgroups-tab/utils/common');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./network/panelId');\n  var ATTACH_NIC_DIALOG_ID = require('../dialogs/attach-nic/dialogId');\n  var RESOURCE = \"VM\"\n  var XML_ROOT = \"VM\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.panelId = PANEL_ID;\n    this.title = Locale.tr(\"Network\");\n    this.icon = \"fa-globe\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n  Panel.prototype.onShow = _onShow;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var that = this;\n    var html = '<form id=\"tab_network_form\" vmid=\"' + that.element.ID + '\" >\\\n        <div class=\"row\">\\\n        <div class=\"large-12 columns\">\\\n           <table class=\"nics_table no-hover info_table dataTable extended_table\">\\\n             <thead>\\\n               <tr>\\\n                  <th></th>\\\n                  <th>' + Locale.tr(\"ID\") + '</th>\\\n                  <th>' + Locale.tr(\"Network\") + '</th>\\\n                  <th>' + Locale.tr(\"IP\") + '</th>\\\n                  <th>' + Locale.tr(\"MAC\") + '</th>\\\n                  <th>' + Locale.tr(\"IPv6 ULA\") + '</th>\\\n                  <th>' + Locale.tr(\"IPv6 Global\") + '</th>\\\n                  <th colspan=\"\">' + Locale.tr(\"Actions\") + '</th>\\\n                  <th>'                 ;\n\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.attachnic\")) {\n      if (StateActions.enabledStateAction(\"VM.attachnic\", \n            that.element.STATE, \n            that.element.LCM_STATE) && \n          OpenNebulaVM.isNICAttachSupported(that.element)) {\n        html += '\\\n             <button id=\"attach_nic\" class=\"button tiny success right radius\" >' + Locale.tr(\"Attach nic\") + '</button>'\n      } else {\n        html += '\\\n             <button id=\"attach_nic\" class=\"button tiny success right radius\" disabled=\"disabled\">' + Locale.tr(\"Attach nic\") + '</button>'\n      }\n    }\n\n    html += '</th>\\\n                </tr>\\\n             </thead>\\\n             <tbody>\\\n             </tbody>\\\n            </table>\\\n          </div>\\\n        </div>'      ;\n\n    var externalNetworkAttrs = OpenNebulaVM.retrieveExternalNetworkAttrs(that.element);\n    if (!$.isEmptyObject(externalNetworkAttrs)) {\n      html += '<div class=\"row\">' +\n        '<div class=\"large-12 columns\">' +\n         '<table class=\"dataTable extended_table\">' +\n            '<thead>' +\n              '<tr>' +\n                 '<th colspan=2>' + Locale.tr(\"Network Monitoring Attributes\") + '</th>' +\n              '</tr>' +\n            '</thead>' +\n            '<tbody>';\n\n      $.each(externalNetworkAttrs, function(key, value) {\n        html += '<tr>' +\n           '<td>' + key + '</td>' +\n           '<td>' + value + '</td>' +\n          '</tr>';\n      });\n\n      html += '</tbody>' +\n            '</table>' +\n          '</div>' +\n        '</div>';\n    }\n\n    // Do not show statistics for not hypervisors that do not gather net data\n    if (OpenNebulaVM.isNICGraphsSupported(that.element)) {\n      html += '\\\n          <div class=\"row\">\\\n              <div class=\"large-6 columns\">\\\n                <div class=\"row text-center\">\\\n                  <h3 class=\"subheader\"><small>' + Locale.tr(\"NET RX\") + '</small></h3>\\\n                </div>\\\n                <div class=\"row\">\\\n                  <div class=\"large-12 columns centered graph text-center\" id=\"vm_net_rx_graph\" style=\"height: 100px;\">\\\n                    <span  id=\"provision_dashboard_total\" style=\"font-size:80px\">\\\n                      <i class=\"fa fa-spinner fa-spin\"></i>\\\n                    </span>\\\n                  </div>\\\n                </div>\\\n                <div class=\"row graph_legend\">\\\n                  <div class=\"large-12 columns centered\" id=\"vm_net_rx_legend\">\\\n                  </div>\\\n                </div>\\\n              </div>\\\n              <div class=\"large-6 columns\">\\\n                <div class=\"row text-center\">\\\n                  <h3 class=\"subheader\"><small>' + Locale.tr(\"NET TX\") + '</small></h3>\\\n                </div>\\\n                <div class=\"row\">\\\n                  <div class=\"large-12 columns centered graph text-center\" id=\"vm_net_tx_graph\" style=\"height: 100px;\">\\\n                    <span  id=\"provision_dashboard_total\" style=\"font-size:80px\">\\\n                      <i class=\"fa fa-spinner fa-spin\"></i>\\\n                    </span>\\\n                  </div>\\\n                </div>\\\n                <div class=\"row graph_legend\">\\\n                  <div class=\"large-12 columns centered\" id=\"vm_net_tx_legend\">\\\n                  </div>\\\n                </div>\\\n              </div>\\\n              <div class=\"large-6 columns\">\\\n                <div class=\"row text-center\">\\\n                  <h3 class=\"subheader\"><small>' + Locale.tr(\"NET DOWNLOAD SPEED\") + '</small></h3>\\\n                </div>\\\n                <div class=\"row\">\\\n                  <div class=\"large-12 columns centered graph text-center\" id=\"vm_net_rx_speed_graph\" style=\"height: 100px;\">\\\n                    <span  id=\"provision_dashboard_total\" style=\"font-size:80px\">\\\n                      <i class=\"fa fa-spinner fa-spin\"></i>\\\n                    </span>\\\n                  </div>\\\n                </div>\\\n                <div class=\"row graph_legend\">\\\n                  <div class=\"large-12 columns centered\" id=\"vm_net_rx_speed_legend\">\\\n                  </div>\\\n                </div>\\\n              </div>\\\n              <div class=\"large-6 columns\">\\\n                <div class=\"row text-center\">\\\n                  <h3 class=\"subheader\"><small>' + Locale.tr(\"NET UPLOAD SPEED\") + '</small></h3>\\\n                </div>\\\n                <div class=\"row\">\\\n                  <div class=\"large-12 columns centered graph text-center\" id=\"vm_net_tx_speed_graph\" style=\"height: 100px;\">\\\n                    <span  id=\"provision_dashboard_total\" style=\"font-size:80px\">\\\n                      <i class=\"fa fa-spinner fa-spin\"></i>\\\n                    </span>\\\n                  </div>\\\n                </div>\\\n                <div class=\"row graph_legend\">\\\n                  <div class=\"large-12 columns centered\" id=\"vm_net_tx_speed_legend\">\\\n                  </div>\\\n                </div>\\\n              </div>\\\n          </div>\\\n        </form>';\n    }\n\n    return html;\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    var nics = []\n\n    if ($.isArray(that.element.TEMPLATE.NIC))\n        nics = that.element.TEMPLATE.NIC\n    else if (!$.isEmptyObject(that.element.TEMPLATE.NIC))\n        nics = [that.element.TEMPLATE.NIC]\n\n    var nic_dt_data = [];\n    if (nics.length) {\n      var nic_dt_data = [];\n\n      for (var i = 0; i < nics.length; i++) {\n        var nic = nics[i];\n\n        var actions;\n        // Attach / Detach\n        if (\n           (// ACTIVE\n            that.element.STATE == \"3\") &&\n           (// HOTPLUG_NIC\n            that.element.LCM_STATE == \"25\") &&\n           (//\n            nic.ATTACH == \"YES\")\n           ) {\n          actions = Locale.tr(\"attach/detach in progress\")\n        } else {\n          actions = '';\n\n          if (Config.isTabActionEnabled(\"vms-tab\", \"VM.detachnic\")) {\n            if (StateActions.enabledStateAction(\"VM.detachnic\", that.element.STATE, that.element.LCM_STATE)) {\n              actions += '<a href=\"VM.detachnic\" class=\"detachnic\" ><i class=\"fa fa-times\"/>' + Locale.tr(\"Detach\") + '</a>'\n            }\n          }\n        }\n\n        var secgroups = [];\n\n        var nic_secgroups = {};\n        if (nic.SECURITY_GROUPS != undefined) {\n          $.each(nic.SECURITY_GROUPS.split(\",\"), function() {\n            nic_secgroups[this] = true;\n          });\n        }\n\n        if (that.element.TEMPLATE.SECURITY_GROUP_RULE != undefined) {\n          $.each(that.element.TEMPLATE.SECURITY_GROUP_RULE, function() {\n            if (nic_secgroups[this.SECURITY_GROUP_ID]) {\n              secgroups.push(this);\n            }\n          });\n        }\n\n        nic_dt_data.push({\n          NIC_ID : nic.NIC_ID,\n          NETWORK : nic.NETWORK,\n          IP : (nic.IP ? nic.IP : \"--\"),\n          MAC : nic.MAC,\n          IP6_ULA : (nic.IP6_ULA ? nic.IP6_ULA : \"--\"),\n          IP6_GLOBAL : (nic.IP6_GLOBAL ? nic.IP6_GLOBAL : \"--\"),\n          ACTIONS : actions,\n          SECURITY_GROUP_RULES : secgroups\n        });\n      }\n    }\n\n    var nics_table = $(\"#tab_network_form .nics_table\", context).DataTable({\n      \"bDeferRender\": true,\n      \"data\": nic_dt_data,\n      \"columns\": [\n        {\n          \"class\":          'open-control',\n          \"orderable\":      false,\n          \"data\":           null,\n          \"defaultContent\": '<span class=\"fa fa-fw fa-chevron-down\"></span>'\n        },\n        {\"data\": \"NIC_ID\",     \"defaultContent\": \"\"},\n        {\"data\": \"NETWORK\",    \"defaultContent\": \"\"},\n        {\"data\": \"IP\",         \"defaultContent\": \"\"},\n        {\"data\": \"MAC\",        \"defaultContent\": \"\"},\n        {\"data\": \"IP6_ULA\",    \"defaultContent\": \"\"},\n        {\"data\": \"IP6_GLOBAL\", \"defaultContent\": \"\"},\n        {\"data\": \"ACTIONS\",    \"defaultContent\": \"\"},\n        {\"defaultContent\": \"\"}\n      ],\n\n      \"fnRowCallback\": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {\n\n        if (aData.SECURITY_GROUP_RULES == undefined ||\n            aData.SECURITY_GROUP_RULES.length == 0) {\n\n          $(\"td.open-control\", nRow).html(\"\").removeClass('open-control');\n        }\n\n        $(nRow).attr(\"nic_id\", aData.NIC_ID);\n      }\n    });\n\n    $(\"#tab_network_form .nics_table\", context).dataTable().fnSort([[1, 'asc']]);\n\n    // Add event listener for opening and closing each NIC row details\n    context.off('click', '#tab_network_form .nics_table td.open-control')\n    context.on('click', '#tab_network_form .nics_table td.open-control', function () {\n      var row = $(this).closest('table').DataTable().row($(this).closest('tr'));\n    \n      if (row.child.isShown()) {\n        row.child.hide();\n        $(this).children(\"span\").addClass('fa-chevron-down');\n        $(this).children(\"span\").removeClass('fa-chevron-up');\n      } else {\n        var html = '<div style=\"padding-left: 30px;\">\\\n              <table class=\"extended_table dataTable\">\\\n                <thead>\\\n                  <tr>\\\n                    <th colspan=\"2\">' + Locale.tr(\"Security Group\") + '</th>\\\n                    <th>' + Locale.tr(\"Protocol\") + '</th>\\\n                    <th>' + Locale.tr(\"Type\") + '</th>\\\n                    <th>' + Locale.tr(\"Range\") + '</th>\\\n                    <th>' + Locale.tr(\"Network\") + '</th>\\\n                    <th>' + Locale.tr(\"ICMP Type\") + '</th>\\\n                  </tr>\\\n                <thead>\\\n                <tbody>'            ;\n\n        $.each(row.data().SECURITY_GROUP_RULES, function(index, elem) {\n          var rule_st = SecGroupsCommon.sgRuleToSt(this);\n\n          var new_tr = '<tr>\\\n                  <td>' + this.SECURITY_GROUP_ID + '</td>\\\n                  <td>' + this.SECURITY_GROUP_NAME + '</td>\\\n                  <td>' + rule_st.PROTOCOL + '</td>\\\n                  <td>' + rule_st.RULE_TYPE + '</td>\\\n                  <td>' + rule_st.RANGE + '</td>\\\n                  <td>' + rule_st.NETWORK + '</td>\\\n                  <td>' + rule_st.ICMP_TYPE + '</td>\\\n                </tr>'\n          \n          html += new_tr;\n        });\n\n        row.child(html).show();\n        $(this).children(\"span\").removeClass('fa-chevron-down');\n        $(this).children(\"span\").addClass('fa-chevron-up');\n      }\n    });\n\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.attachnic\")) {\n      context.off('click', '#attach_nic');\n      context.on('click', '#attach_nic', function() {\n        var dialog = Sunstone.getDialog(ATTACH_NIC_DIALOG_ID);\n        dialog.setElement(that.element);\n        dialog.show();\n        return false;\n      });\n    }\n\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.detachnic\")) {\n      context.off('click', '.detachnic');\n      context.on('click', '.detachnic', function() {\n        var nic_id = $(this).parents('tr').attr('nic_id');\n        Sunstone.runAction('VM.detachnic', that.element.ID, nic_id);\n        return false;\n      });\n    }\n  }\n\n  function _onShow(context) {\n    var that = this;\n    if (OpenNebulaVM.isNICGraphsSupported(that.element)) {\n      OpenNebulaVM.monitor({\n        data: {\n          id: that.element.ID, \n          monitor: {\n            monitor_resources : \"NET_TX,NET_RX\"\n          }\n        },\n        success: function(req, response) {\n          var vmGraphs = [\n            {\n              labels : Locale.tr(\"Network reception\"),\n              monitor_resources : \"NET_RX\",\n              humanize_figures : true,\n              convert_from_bytes : true,\n              div_graph : $(\"#vm_net_rx_graph\")\n            },\n            {\n              labels : Locale.tr(\"Network transmission\"),\n              monitor_resources : \"NET_TX\",\n              humanize_figures : true,\n              convert_from_bytes : true,\n              div_graph : $(\"#vm_net_tx_graph\")\n            },\n            {\n              labels : Locale.tr(\"Network reception speed\"),\n              monitor_resources : \"NET_RX\",\n              humanize_figures : true,\n              convert_from_bytes : true,\n              y_sufix : \"B/s\",\n              derivative : true,\n              div_graph : $(\"#vm_net_rx_speed_graph\")\n            },\n            {\n              labels : Locale.tr(\"Network transmission speed\"),\n              monitor_resources : \"NET_TX\",\n              humanize_figures : true,\n              convert_from_bytes : true,\n              y_sufix : \"B/s\",\n              derivative : true,\n              div_graph : $(\"#vm_net_tx_speed_graph\")\n            }\n          ];\n\n          for (var i = 0; i < vmGraphs.length; i++) {\n            Graphs.plot(response, vmGraphs[i]);\n          }\n        },\n        error: Notifier.onError\n      });\n    }\n  }\n});\n\n","define('tabs/vms-tab/panels/network/panelId',['require'],function(require) {\n  return 'vm_network_tab';\n});\n\n","define('tabs/vms-tab/panels/snapshots',['require','utils/locale','sunstone-config','sunstone','utils/humanize','utils/notifier','../tabId','./snapshots/panelId','../dialogs/snapshot/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Sunstone = require('sunstone');\n  var Humanize = require('utils/humanize');\n  var Notifier = require('utils/notifier');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./snapshots/panelId');\n  var SNAPSHOT_DIALOG_ID = require('../dialogs/snapshot/dialogId');\n  var RESOURCE = \"VM\"\n  var XML_ROOT = \"VM\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.panelId = PANEL_ID;\n    this.title = Locale.tr(\"Snapshots\");\n    this.icon = \"fa-laptop\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var that = this;   \n    var html = '<form id=\"snapshot_form\" vmid=\"' + that.element.ID + '\" >\\\n      <div class=\"row\">\\\n      <div class=\"large-12 columns\">\\\n         <table class=\"info_table dataTable extended_table\">\\\n           <thead>\\\n             <tr>\\\n                <th>' + Locale.tr(\"ID\") + '</th>\\\n                <th>' + Locale.tr(\"Name\") + '</th>\\\n                <th>' + Locale.tr(\"Timestamp\") + '</th>\\\n                <th>' + Locale.tr(\"Actions\") + '</th>\\\n                <th>'\n\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.snapshot_create\")) {\n      // If VM is not RUNNING, then we forget about the attach disk form.\n      if (that.element.STATE == \"3\" && that.element.LCM_STATE == \"3\") {\n        html += '\\\n           <button id=\"take_snapshot\" class=\"button tiny success right radius\" >' + Locale.tr(\"Take snapshot\") + '</button>'\n      } else {\n        html += '\\\n           <button id=\"take_snapshot\" class=\"button tiny success right radius\" disabled=\"disabled\">' + Locale.tr(\"Take snapshot\") + '</button>'\n      }\n    }\n\n    html +=  '</th>\\\n              </tr>\\\n           </thead>\\\n           <tbody>';\n\n    var snapshots = []\n    if ($.isArray(that.element.TEMPLATE.SNAPSHOT))\n        snapshots = that.element.TEMPLATE.SNAPSHOT\n    else if (!$.isEmptyObject(that.element.TEMPLATE.SNAPSHOT))\n        snapshots = [that.element.TEMPLATE.SNAPSHOT]\n\n    if (!snapshots.length) {\n      html += '\\\n          <tr id=\"no_snapshots_tr\">\\\n            <td colspan=\"6\">'          + Locale.tr(\"No snapshots to show\") + '</td>\\\n          </tr>'        ;\n    } else {\n\n      for (var i = 0; i < snapshots.length; i++) {\n        var snapshot = snapshots[i];\n\n        if (\n           (// ACTIVE\n            that.element.STATE == \"3\") &&\n           (// HOTPLUG_SNAPSHOT\n            that.element.LCM_STATE == \"24\")) {\n          actions = 'snapshot in progress'\n        } else {\n          actions = '';\n\n          if ((that.element.STATE == \"3\" && that.element.LCM_STATE == \"3\")) {\n            if (Config.isTabActionEnabled(\"vms-tab\", \"VM.snapshot_revert\")) {\n              actions += '<a href=\"VM.snapshot_revert\" class=\"snapshot_revert\" ><i class=\"fa fa-reply\"/>' + Locale.tr(\"Revert\") + '</a> &emsp;'\n            }\n\n            if (Config.isTabActionEnabled(\"vms-tab\", \"VM.snapshot_delete\")) {\n              actions += '<a href=\"VM.snapshot_delete\" class=\"snapshot_delete\" ><i class=\"fa fa-times\"/>' + Locale.tr(\"Delete\") + '</a>'\n            }\n          }\n        }\n\n        html += '\\\n              <tr snapshot_id=\"' + (snapshot.SNAPSHOT_ID) + '\">\\\n                <td>'            + snapshot.SNAPSHOT_ID + '</td>\\\n                <td>'            + snapshot.NAME + '</td>\\\n                <td>'            + Humanize.prettyTime(snapshot.TIME) + '</td>\\\n                <td>'            + actions + '</td>\\\n            </tr>'        ;\n      }\n    }\n\n    html += '\\\n            </tbody>\\\n          </table>\\\n        </div>\\\n        </div>\\\n      </form>';\n\n    return html;\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.snapshot_create\")) {\n      context.off('click', '#take_snapshot');\n      context.on('click', '#take_snapshot', function() {\n        var dialog = Sunstone.getDialog(SNAPSHOT_DIALOG_ID);\n        dialog.setElement(that.element);\n        dialog.show();\n        return false;\n      });\n    }\n\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.snapshot_revert\")) {\n      context.off('click', '.snapshot_revert');\n      context.on('click', '.snapshot_revert', function() {\n        var snapshot_id = $(this).parents('tr').attr('snapshot_id');\n        Sunstone.runAction('VM.snapshot_revert', that.element.ID,  {\"snapshot_id\": snapshot_id});\n        return false;\n      });\n    }\n\n    if (Config.isTabActionEnabled(\"vms-tab\", \"VM.snapshot_delete\")) {\n      context.off('click', '.snapshot_delete');\n      context.on('click', '.snapshot_delete', function() {\n        var snapshot_id = $(this).parents('tr').attr('snapshot_id');\n        Sunstone.runAction('VM.snapshot_delete', that.element.ID,  {\"snapshot_id\": snapshot_id});\n        return false;\n      });\n    }\n  }\n});\n\n","define('tabs/vms-tab/panels/placement',['require','utils/locale','utils/humanize','opennebula/vm','../tabId','./placement/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var OpenNebulaVM = require('opennebula/vm');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./placement/panelId');\n  var RESOURCE = \"VM\";\n  var XML_ROOT = \"VM\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.panelId = PANEL_ID;\n    this.title = Locale.tr(\"Placement\");\n    this.icon = \"fa-sitemap\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var that = this;   \n    var html = '<div class=\"row\"><div class=\"large-12 columns\">\\\n           <table id=\"vm_history_table\" class=\"extended_table dataTable\">\\\n                    <thead>\\\n                      <tr>\\\n                          <th>' + Locale.tr(\"#\") + '</th>\\\n                          <th>' + Locale.tr(\"Host\") + '</th>\\\n                          <th>' + Locale.tr(\"Datastore\") + '</th>\\\n                          <th>' + Locale.tr(\"Action\") + '</th>\\\n                          <th>' + Locale.tr(\"Reason\") + '</th>\\\n                          <th>' + Locale.tr(\"Chg time\") + '</th>\\\n                          <th>' + Locale.tr(\"Total time\") + '</th>\\\n                          <th colspan=\"2\">' + Locale.tr(\"Prolog time\") + '</th>\\\n                      </tr>\\\n                    </thead>\\\n                    <tbody>'                   ;\n\n    var history = [];\n    if (that.element.HISTORY_RECORDS.HISTORY) {\n      if ($.isArray(that.element.HISTORY_RECORDS.HISTORY))\n          history = that.element.HISTORY_RECORDS.HISTORY;\n      else if (that.element.HISTORY_RECORDS.HISTORY.SEQ)\n          history = [that.element.HISTORY_RECORDS.HISTORY];\n    } else {\n      html += '     <tr>\\\n                <td colspan=\"8\" style=\"width:5%\">' + Locale.tr(\"No data available in table\") + '</td>\\\n               </tr>'\n    }\n\n    var now = Math.round(new Date().getTime() / 1000);\n\n    for (var i = 0; i < history.length; i++) {\n      // :TIME time calculations copied from onevm_helper.rb\n      var stime = parseInt(history[i].STIME, 10);\n\n      var etime = parseInt(history[i].ETIME, 10)\n      etime = etime == 0 ? now : etime;\n\n      var dtime = etime - stime;\n      // end :TIME\n\n      //:PTIME\n      var stime2 = parseInt(history[i].PSTIME, 10);\n      var etime2;\n      var ptime2 = parseInt(history[i].PETIME, 10);\n      if (stime2 == 0)\n          etime2 = 0;\n      else\n          etime2 = ptime2 == 0 ? now : ptime2;\n      var dtime2 = etime2 - stime2;\n\n      //end :PTIME\n\n      html += '     <tr>\\\n                        <td style=\"width:5%\">' + history[i].SEQ + '</td>\\\n                        <td style=\"width:15%\">' + history[i].HOSTNAME + '</td>\\\n                        <td style=\"width:5%\">' + history[i].DS_ID + '</td>\\\n                        <td style=\"width:16%\">' + OpenNebulaVM.migrateActionStr(parseInt(history[i].ACTION, 10)) + '</td>\\\n                        <td style=\"width:10%\">' + OpenNebulaVM.migrateReasonStr(parseInt(history[i].REASON, 10)) + '</td>\\\n                        <td style=\"width:16%\">' + Humanize.prettyTime(history[i].STIME) + '</td>\\\n                        <td style=\"width:16%\">' + Humanize.prettyDuration(dtime) + '</td>\\\n                        <td style=\"width:16%\">' + Humanize.prettyDuration(dtime2) + '</td>\\\n                        <td></td>\\\n                       </tr>'\n    };\n    html += '</tbody>\\\n                 </table>\\\n           </div>\\\n         </div>'        ;\n\n    if (that.element.USER_TEMPLATE.SCHED_MESSAGE) {\n      html += '<div class=\"row\">\\\n         <div class=\"large-12 columns\">\\\n           <table id=\"vm_ds_placement_table\" class=\"extended_table dataTable\">\\\n                    <thead>\\\n                      <tr>\\\n                          <th align=\"center\">' + Locale.tr(\"Sched Message\") + '</th>\\\n                      </tr>\\\n                    </thead>\\\n                    <tbody>\\\n                       <tr>\\\n                        <td>' + that.element.USER_TEMPLATE.SCHED_MESSAGE + '</td>\\\n                      </tr>\\\n                    </tbody>\\\n           </table>\\\n           </div>\\\n         </div>'      ;\n    }\n\n    var requirements_str = that.element.USER_TEMPLATE.SCHED_REQUIREMENTS ? that.element.USER_TEMPLATE.SCHED_REQUIREMENTS : \"-\";\n    var rank_str = that.element.USER_TEMPLATE.SCHED_RANK ? that.element.USER_TEMPLATE.SCHED_RANK : \"-\";\n    var ds_requirements_str = that.element.USER_TEMPLATE.SCHED_DS_REQUIREMENTS ? that.element.USER_TEMPLATE.SCHED_DS_REQUIREMENTS : \"-\";\n    var ds_rank_str = that.element.USER_TEMPLATE.SCHED_DS_RANK ? that.element.USER_TEMPLATE.SCHED_DS_RANK : \"-\";\n\n    html += '<div class=\"row\">\\\n       <div class=\"large-9 columns\">\\\n           <table id=\"vm_placement_table\" class=\"extended_table dataTable\">\\\n                    <thead>\\\n                      <tr>\\\n                          <th colspan=\"2\" align=\"center\">' + Locale.tr(\"Placement - Host\") + '</th>\\\n                      </tr>\\\n                    </thead>\\\n                    <tbody>\\\n                       <tr>\\\n                        <td>' + Locale.tr(\"Requirements\") + '</td>\\\n                        <td>' + requirements_str + '</td>\\\n                      </tr>\\\n                       <tr>\\\n                        <td>' + Locale.tr(\"Rank\") + '</td>\\\n                        <td>' + rank_str + '</td>\\\n                      </tr>\\\n                    </tbody>\\\n           </table>\\\n           <table id=\"vm_ds_placement_table\" class=\"extended_table dataTable\">\\\n                    <thead>\\\n                      <tr>\\\n                          <th colspan=\"2\" align=\"center\">' + Locale.tr(\"Placement - Datastore\") + '</th>\\\n                      </tr>\\\n                    </thead>\\\n                    <tbody>\\\n                       <tr>\\\n                        <td>' + Locale.tr(\"DS Requirements\") + '</td>\\\n                        <td>' + ds_requirements_str + '</td>\\\n                      </tr>\\\n                       <tr>\\\n                        <td>' + Locale.tr(\"DS Rank\") + '</td>\\\n                        <td>' + ds_rank_str + '</td>\\\n                      </tr>\\\n                    </tbody>\\\n           </table>\\\n           </div>\\\n         </div>'        ;\n\n    return html;\n  }\n\n  function _setup(context) {\n  }\n});\n\n","define('tabs/vms-tab/panels/placement/panelId',['require'],function(require) {\n  return 'vm_placement_tab';\n});\n\n","define('tabs/vms-tab/panels/actions',['require','utils/locale','sunstone','utils/humanize','utils/template-utils','../tabId','./actions/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Sunstone = require('sunstone');\n  var Humanize = require('utils/humanize');\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./actions/panelId');\n  var RESOURCE = \"VM\";\n  var XML_ROOT = \"VM\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.panelId = PANEL_ID;\n    this.title = Locale.tr(\"Actions\");\n    this.icon = \"fa-calendar\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var that = this;   \n    var html = '<div class=\"row\">\\\n      <div class=\"large-12 columns\">\\\n        <table id=\"scheduling_actions_table\" class=\"info_table dataTable extended_table\">\\\n         <thead>\\\n           <tr>\\\n              <th>' + Locale.tr(\"ID\") + '</th>\\\n              <th>' + Locale.tr(\"ACTION\") + '</th>\\\n              <th>' + Locale.tr(\"TIME\") + '</th>\\\n              <th>' + Locale.tr(\"DONE\") + '</th>\\\n              <th>' + Locale.tr(\"MESSAGE\") + '</th>\\\n              <th colspan=\"\">' + Locale.tr(\"Actions\") + '</th>\\\n              <th><button id=\"add_scheduling_action\" class=\"button tiny success right radius\" >' + Locale.tr(\"Add action\") + '</button></th>\\\n           </tr>\\\n          </thead>' +\n            fromJSONtoActionsTable(that.element.USER_TEMPLATE.SCHED_ACTION) +\n         '</table>\\\n        </div>\\\n      </div>';\n\n    return html;\n  }\n\n  function _setup(context) {\n    var that = this;   \n    context.off('click', '#add_scheduling_action');\n    context.on('click', '#add_scheduling_action', function() {\n      $(\"#add_scheduling_action\", context).attr(\"disabled\", \"disabled\");\n      $(\"#scheduling_actions_table\").append('<tr>\\\n          <td></td>\\\n          <td class=\"columns\">\\\n            <select id=\"select_new_action\" class=\"select_new_action\" name=\"select_action\">\\\n              <option value=\"shutdown\">' + Locale.tr(\"shutdown\") + '</option>\\\n              <option value=\"shutdown-hard\">' + Locale.tr(\"shutdown-hard\") + '</option>\\\n              <option value=\"hold\">' + Locale.tr(\"hold\") + '</option>\\\n              <option value=\"release\">' + Locale.tr(\"release\") + '</option>\\\n              <option value=\"stop\">' + Locale.tr(\"stop\") + '</option>\\\n              <option value=\"suspend\">' + Locale.tr(\"suspend\") + '</option>\\\n              <option value=\"resume\">' + Locale.tr(\"resume\") + '</option>\\\n              <option value=\"delete\">' + Locale.tr(\"delete\") + '</option>\\\n              <option value=\"delete-recreate\">' + Locale.tr(\"delete-recreate\") + '</option>\\\n              <option value=\"reboot\">' + Locale.tr(\"reboot\") + '</option>\\\n              <option value=\"reboot-hard\">' + Locale.tr(\"reboot-hard\") + '</option>\\\n              <option value=\"poweroff\">' + Locale.tr(\"poweroff\") + '</option>\\\n              <option value=\"poweroff-hard\">' + Locale.tr(\"poweroff-hard\") + '</option>\\\n              <option value=\"undeploy\">' + Locale.tr(\"undeploy\") + '</option>\\\n              <option value=\"undeploy-hard\">' + Locale.tr(\"undeploy-hard\") + '</option>\\\n              <option value=\"snapshot-create\">' + Locale.tr(\"snapshot-create\") + '</option>\\\n            </select>\\\n          </td>\\\n         <td>\\\n            <input id=\"date_input\" type=\"date\" placeholder=\"2013/12/30\"/>\\\n            <input id=\"time_input\" type=\"time\" placeholder=\"12:30\"/>\\\n         </td>\\\n         <td>\\\n            <button id=\"submit_scheduling_action\" class=\"button small secondary radius\" >'              + Locale.tr(\"Add\") + '</button>\\\n         </td>\\\n         <td colspan=2></td>\\\n       </tr>');\n\n      return false;\n    });\n\n    context.off(\"click\", \"#submit_scheduling_action\");\n    context.on(\"click\", \"#submit_scheduling_action\", function() {\n      var date_input_value = $(\"#date_input\", context).val();\n      var time_input_value = $(\"#time_input\", context).val();\n\n      if (date_input_value == \"\" || time_input_value == \"\")\n        return false;\n\n      var time_value = date_input_value + ' ' + time_input_value\n\n      // Calculate MAX_ID\n      var max_id = -1;\n\n      if (that.element.USER_TEMPLATE.SCHED_ACTION) {\n        if (!that.element.USER_TEMPLATE.SCHED_ACTION.length) {\n          var tmp_element = that.element.USER_TEMPLATE.SCHED_ACTION;\n          that.element.USER_TEMPLATE.SCHED_ACTION = new Array();\n          that.element.USER_TEMPLATE.SCHED_ACTION.push(tmp_element);\n        }\n\n        $.each(that.element.USER_TEMPLATE.SCHED_ACTION, function(i, element) {\n          if (max_id < element.ID)\n            max_id = element.ID\n        })\n      } else {\n        that.element.USER_TEMPLATE.SCHED_ACTION = new Array();\n      }\n\n      var new_action = {};\n      new_action.ID  = parseInt(max_id) + 1;\n      new_action.ACTION = $(\"#select_new_action\", context).val();\n      var epoch_str   = new Date(time_value);\n\n      new_action.TIME = parseInt(epoch_str.getTime()) / 1000;\n\n      that.element.USER_TEMPLATE.SCHED_ACTION.push(new_action);\n\n      // Let OpenNebula know\n      var template_str = TemplateUtils.templateToString(that.element.USER_TEMPLATE);\n      Sunstone.runAction(\"VM.update_template\", that.element.ID, template_str);\n\n      $(\"#add_scheduling_action\", context).removeAttr(\"disabled\");\n      return false;\n    });\n\n    // Listener for key,value pair remove action\n    context.off(\"click\", \".remove_action_x\");\n    context.on(\"click\", \".remove_action_x\", function() {\n      var index = this.id.substring(6, this.id.length);\n      var tmp_tmpl = new Array();\n\n      $.each(that.element.USER_TEMPLATE.SCHED_ACTION, function(i, element) {\n        if (element.ID != index)\n          tmp_tmpl[i] = element\n      })\n\n      that.element.USER_TEMPLATE.SCHED_ACTION = tmp_tmpl;\n      var template_str = TemplateUtils.templateToString(that.element.USER_TEMPLATE);\n\n      // Let OpenNebula know\n      Sunstone.runAction(\"VM.update_template\", that.element.ID, template_str);\n    });\n\n  }\n\n  // Returns an HTML string with the json keys and values\n  function fromJSONtoActionsTable(actions_array) {\n    var str = \"\"\n    var empty = '\\\n      <tr id=\"no_actions_tr\">\\\n          <td colspan=\"6\">' + Locale.tr(\"No actions to show\") + '</td>\\\n      </tr>'    ;\n\n    if (!actions_array) {\n      return empty;\n    }\n\n    if (!$.isArray(actions_array)) {\n      var tmp_array = new Array();\n      tmp_array[0]  = actions_array;\n      actions_array = tmp_array;\n    }\n\n    if (!actions_array.length) {\n      return empty;\n    }\n\n    $.each(actions_array, function(index, scheduling_action) {\n      str += fromJSONtoActionRow(scheduling_action);\n    });\n\n    return str;\n  }\n\n  // Helper for fromJSONtoHTMLTable function\n  function fromJSONtoActionRow(scheduling_action) {\n    var done_str    = scheduling_action.DONE ? (Humanize.prettyTime(scheduling_action.DONE)) : \"\";\n    var message_str = scheduling_action.MESSAGE ? scheduling_action.MESSAGE : \"\";\n    var time_str    = Humanize.prettyTime(scheduling_action.TIME);\n\n    var str = \"\";\n    str += '<tr class=\"tr_action_' + scheduling_action.ID + '\">\\\n       <td class=\"id_row\">' + scheduling_action.ID + '</td>\\\n       <td class=\"action_row\">' + scheduling_action.ACTION + '</td>\\\n       <td nowrap class=\"time_row\">' + time_str + '</td>\\\n       <td class=\"done_row\">' + done_str + '</td>\\\n       <td class=\"message_row\">' + message_str + '</td>\\\n       <td>\\\n         <div>\\\n           <a id=\"minus_' + scheduling_action.ID + '\" class=\"remove_action_x\" href=\"#\"><i class=\"fa fa-trash-o\"/></a>\\\n         </div>\\\n       </td>\\\n     </tr>';\n\n    return str;\n  }\n});\n\n","define('tabs/vms-tab/panels/actions/panelId',['require'],function(require){\n  return 'vm_actions_tab';\n});\n","define('tabs/vms-tab/panels/template',['require','utils/locale','utils/humanize','../tabId','./template/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./template/panelId');\n  var RESOURCE = \"VM\"\n  var XML_ROOT = \"VM\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Template\");\n    this.icon = \"fa-file-o\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return '<div class=\"row\">\\\n      <div class=\"large-12 columns\">\\\n        <table id=\"vm_template_table\" class=\"info_table dataTable\">' +\n            Humanize.prettyPrintJSON(this.element.TEMPLATE) +\n        '</table>\\\n      </div>\\\n    </div>'\n  }\n\n  function _setup(context) {\n  }\n});\n\n","define('tabs/vms-tab/panels/template/panelId',['require'],function(require){\n  return 'vm_template_tab';\n});\n","define('tabs/vms-tab/panels/log',['require','utils/locale','utils/notifier','opennebula/vm','../tabId','./log/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Notifier = require('utils/notifier');\n  var OpenNebulaVM = require('opennebula/vm');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./log/panelId');\n  var RESOURCE = \"VM\"\n  var XML_ROOT = \"VM\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.panelId = PANEL_ID;\n    this.title = Locale.tr(\"Log\");\n    this.icon = \"fa-file-text\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n  Panel.prototype.onShow = _onShow;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return '<div class=\"row\">' +\n      '<div class=\"large-12 columns vm_log_container\">' +\n        '<div class=\"text-center\" style=\"height: 100px;\">' +\n          '<span id=\"provision_dashboard_total\" style=\"font-size:80px\">' +\n            '<i class=\"fa fa-spinner fa-spin\"></i>' +\n          '</span>' +\n        '</div>' +\n      '</div>' +\n    '</div>';\n  }\n\n  function _setup(context) {\n  }\n\n  function _onShow(context) {\n    var that = this;\n    OpenNebulaVM.log({\n      data: {id: that.element.ID},\n      success: function(req, response) {\n        var log_lines = response['vm_log'].split(\"\\n\");\n        var colored_log = '';\n        for (var i = 0; i < log_lines.length; i++) {\n          var line = log_lines[i];\n          if (line.match(/\\[E\\]/)) {\n            line = '<span class=\"vm_log_error\">' + line + '</span>';\n          }\n          colored_log += line + \"<br>\";\n        }\n        \n        $('.vm_log_container', context).html(\n          '<div class=\"row\">' +\n            '<div class=\"large-11 small-centered columns log-tab\">' + \n              colored_log + \n            '</div>' + \n          '</div>')\n        \n      },\n      error: function(request, error_json) {\n        $('.vm_log_container', context).html('');\n        Notifier.onError(request, error_json);\n      }\n    });\n  }\n});\n\n","define('tabs/vms-tab/panels/log/panelId',['require'],function(require){\n  return 'vm_log_tab';\n});\n","define('utils/user-inputs',['require','utils/locale','utils/template-utils','tabs/vnets-tab/datatable'],function(require) {\n  var Locale = require('utils/locale');\n  var TemplateUtils = require('utils/template-utils');\n  var VNetsTable = require('tabs/vnets-tab/datatable');\n\n  //==============================================================================\n  // VM & Service user inputs\n  //==============================================================================\n\n  return {\n    'vmTemplateInsert': _generateVMTemplateUserInputs,\n    'serviceTemplateInsert': _generateServiceTemplateUserInputs\n  }\n\n  // It will replace the div's html with a row for each USER_INPUTS\n  // opts.text_header: header text for the text & password inputs\n  // opts.network_header: header text for the network inputs\n  // returns true if at least one input was inserted\n  function _generateVMTemplateUserInputs(div, template_json, opts) {\n    return _generateInstantiateUserInputs(\n        div, template_json.VMTEMPLATE.TEMPLATE.USER_INPUTS, opts);\n  }\n\n  // It will replace the div's html with a row for each USER_INPUTS\n  // opts.text_header: header text for the text & password inputs\n  // opts.network_header: header text for the network inputs\n  // returns true if at least one input was inserted\n  function _generateServiceTemplateUserInputs(div, template_json, opts) {\n    return _generateInstantiateUserInputs(\n        div, template_json.DOCUMENT.TEMPLATE.BODY.custom_attrs, opts);\n  }\n\n  // It will replace the div's html with a row for each USER_INPUTS\n  // opts.text_header: header text for the text & password inputs\n  // opts.network_header: header text for the network inputs\n  // returns true if at least one input was inserted\n  function _generateInstantiateUserInputs(div, user_inputs, opts) {\n    div.empty();\n\n    if (user_inputs == undefined) {\n      return false;\n    }\n\n    if (opts == undefined) {\n      opts = {};\n    }\n\n    if (opts.text_header == undefined) {\n      opts.text_header = Locale.tr(\"Custom Attributes\");\n    }\n\n    if (opts.network_header == undefined) {\n      opts.network_header = Locale.tr(\"Network\");\n    }\n\n    var network_attrs = [];\n    var text_attrs = [];\n\n    $.each(user_inputs, function(key, value) {\n      var parts = value.split(\"|\");\n      // 0 mandatory; 1 type; 2 desc;\n      var attrs = {\n        \"name\": key,\n        \"mandatory\": parts[0],\n        \"type\": parts[1],\n        \"description\": parts[2],\n      }\n\n      switch (parts[1]) {\n        case \"vnet_id\":\n          network_attrs.push(attrs)\n          break;\n        case \"text\":\n          text_attrs.push(attrs)\n          break;\n        case \"password\":\n          text_attrs.push(attrs)\n          break;\n      }\n    });\n\n    if (network_attrs.length > 0) {\n      if (opts.network_header.length > 0) {\n        div.append(\n        '<br>' +\n        '<div class=\"row\">' +\n          '<div class=\"large-12 large-centered columns\">' +\n            '<h3 class=\"subheader\">' +\n              opts.network_header +\n            '</h3>' +\n          '</div>' +\n        '</div>');\n      }\n\n      div.append('<div class=\"instantiate_user_inputs\"/>');\n\n      var separator = \"\";\n\n      var vnetsTable;\n      $.each(network_attrs, function(index, vnet_attr) {\n        var unique_id = \"user_input_\" + (vnet_attr.name.replace(/ /g, \"_\"));\n        vnetsTable = new VNetsTable(unique_id, {'select': true});\n\n        $(\".instantiate_user_inputs\", div).append(\n          '<div class=\"row\">' +\n            '<div class=\"large-12 large-centered columns\">' +\n              separator +\n              '<h5>' +\n                TemplateUtils.htmlDecode(vnet_attr.description) +\n              '</h5>' +\n              vnetsTable.dataTableHTML +\n            '</div>' +\n          '</div>');\n\n        separator = \"<hr/>\";\n\n        vnetsTable.initialize();\n\n        $('#refresh_button_' + unique_id).click();\n\n        $(\"input#selected_resource_id_\" + unique_id, div).attr(\n            \"wizard_field\", vnet_attr.name);\n\n        $(\"input#selected_resource_id_\" + unique_id, div).attr(\"required\", \"\")\n      });\n    }\n\n    if (text_attrs.length > 0) {\n      if (opts.text_header.length > 0) {\n        div.append(\n        '<br>' +\n        '<div class=\"row\">' +\n          '<div class=\"large-12 large-centered columns\">' +\n            '<h3 class=\"subheader\">' +\n              opts.text_header +\n            '</h3>' +\n          '</div>' +\n        '</div>');\n      }\n\n      div.append('<div class=\"instantiate_user_inputs\"/>');\n\n      $.each(text_attrs, function(index, custom_attr) {\n            $(\".instantiate_user_inputs\", div).append(\n              '<div class=\"row\">' +\n                '<div class=\"large-12 large-centered columns\">' +\n                  '<label>' +\n                    TemplateUtils.htmlDecode(custom_attr.description) +\n                    '<input type=\"' + custom_attr.type + '\" wizard_field=\"' + custom_attr.name + '\" required/>' +\n                  '</label>' +\n                '</div>' +\n              '</div>');\n          });\n    }\n\n    return (network_attrs.length > 0 || text_attrs.length > 0);\n  }\n})\n;\n","define('tabs/templates-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','utils/humanize','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var RESOURCE = \"Template\";\n  var XML_ROOT = \"VMTEMPLATE\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    }\n\n    this.columns = [\n      Locale.tr(\"ID\") ,\n      Locale.tr(\"Owner\") ,\n      Locale.tr(\"Group\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Registration time\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 4,\n      \"select_resource\": Locale.tr(\"Please select a Template from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following Template:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more Templates from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following Templates:\")\n    };\n\n    TabDataTable.call(this);\n  };\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n\n    return [\n        '<input class=\"check_item\" type=\"checkbox\" id=\"' + RESOURCE.toLowerCase() + '_' +\n                             element.ID + '\" name=\"selected_items\" value=\"' +\n                             element.ID + '\"/>',\n        element.ID,\n        element.UNAME,\n        element.GNAME,\n        element.NAME,\n        Humanize.prettyTime(element.REGTIME)\n    ];\n  }\n});\n\n","define('tabs/templates-tab/tabId',['require'],function(require){\n  return 'templates-tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vms-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Step 1: Specify a name and the number of instances\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-5 columns\\\">\\n        <label for=\\\"create_vm_name\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VM Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Defaults to template name when emtpy. You can use the wildcard &#37;i. When creating several VMs, &#37;i will be replaced with a different number starting from 0 in each of them\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" name=\\\"create_vm_name\\\" id=\\\"create_vm_name\\\" />\\n      </div>\\n      <div class=\\\"large-4 columns\\\">\\n        <label for=\\\"create_vm_n_times\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of instances\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of Virtual Machines that will be created using this template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" name=\\\"create_vm_n_times\\\" id=\\\"create_vm_n_times\\\" value=\\\"1\\\"></div>\\n      <div class=\\\"large-3 columns\\\">\\n        <input type=\\\"checkbox\\\" name=\\\"create_vm_hold\\\" id=\\\"create_vm_hold\\\"/>\\n        <label for=\\\"create_vm_hold\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hold\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Sets the new VM to hold state, instead of pending. The scheduler will not deploy VMs in this state. It can be released later, or deployed manually.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n      </div>\\n    </div>\\n  </fieldset>\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Step 2: Select a template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    \";\n  stack1 = ((helper = (helper = helpers.templatesTableHTML || (depth0 != null ? depth0.templatesTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templatesTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n  </fieldset>\\n  <div id=\\\"create_vm_inputs_step\\\">\\n    <fieldset>\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Step 3: Fill the required inputs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div id=\\\"create_vm_user_inputs\\\"></div>\\n    </fieldset>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vms-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vms-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','utils/tips','utils/notifier','utils/wizard-fields','utils/user-inputs','opennebula/template','tabs/templates-tab/datatable','hbs!./create/wizard','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var Notifier = require('utils/notifier');\n  var WizardFields = require('utils/wizard-fields');\n  var UserInputs = require('utils/user-inputs');\n  var OpenNebulaTemplate = require('opennebula/template');\n  var TemplatesTable = require('tabs/templates-tab/datatable');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n  \n  /*\n    CONSTANTS\n   */\n\n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create Virtual Machine\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      }\n    };\n\n    this.templatesTable = new TemplatesTable('vm_create', {'select': true});\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.setup = _setup;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.submitWizard = _submitWizard;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _htmlWizard() {\n\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId,\n      'templatesTableHTML': this.templatesTable.dataTableHTML\n    });\n  }\n\n  function _setup(context) {\n    $(\"#create_vm_template_proceed\", context).attr(\"disabled\", \"disabled\");\n    $(\"#create_vm_inputs_step\", context).hide();\n\n    this.templatesTable.initialize();\n\n    $(\"#selected_resource_id_vm_create\", context).on(\"change\", function(){\n        var template_id = $(this).val();\n\n        $(\"#create_vm_inputs_step\", context).hide();\n        $(\"#create_vm_user_inputs\", context).empty();\n\n        OpenNebulaTemplate.show({\n            data : {\n                id: template_id\n            },\n            timeout: true,\n            success: function (request, template_json){\n                $(\"#create_vm_inputs_step\", context).hide();\n                $(\"#create_vm_user_inputs\", context).empty();\n\n                var has_inputs = UserInputs.vmTemplateInsert(\n                    $(\"#create_vm_user_inputs\", context),\n                    template_json,\n                    {text_header: \"\"});\n\n                if(has_inputs){\n                    $(\"#create_vm_inputs_step\", context).show();\n                }\n\n                $(\"#create_vm_template_proceed\", context).removeAttr(\"disabled\");\n            },\n            error: function(request,error_json, container){\n                Notifier.onError(request,error_json, container);\n            }\n        });\n    });\n\n    Tips.setup(context);\n  }\n\n  function _onShow(context) {\n    $(\"input#vm_name\", context).focus();\n    this.templatesTable.resetResourceTableSelect();\n  }\n\n  function _submitWizard(context) {\n    var vm_name = $('#create_vm_name', context).val();\n    var template_id = $(\"#selected_resource_id_vm_create\", context).val();\n    var n_times = $('#create_vm_n_times', context).val();\n    var n_times_int = 1;\n    var hold = $('#create_vm_hold', context).prop(\"checked\");\n\n    if (!template_id.length) {\n      Notifier.notifyError(tr(\"You have not selected a template\"));\n      return false;\n    }\n\n    if (n_times.length) {\n      n_times_int = parseInt(n_times, 10);\n    }\n\n    var extra_msg = \"\";\n    if (n_times_int > 1) {\n      extra_msg = n_times_int + \" times\";\n    }\n\n    Notifier.notifySubmit(\"Template.instantiate\", template_id, extra_msg);\n\n    var extra_info = {\n      'hold': hold\n    };\n\n    var tmp_json = WizardFields.retrieve(context);\n\n    extra_info['template'] = tmp_json;\n\n    if (!vm_name.length) { //empty name use OpenNebula core default\n      for (var i = 0; i < n_times_int; i++) {\n        extra_info['vm_name'] = \"\";\n        Sunstone.runAction(\"Template.instantiate_quiet\", template_id, extra_info);\n      }\n    } else {\n      if (vm_name.indexOf(\"%i\") == -1) {//no wildcard, all with the same name\n        for (var i = 0; i < n_times_int; i++) {\n          extra_info['vm_name'] = vm_name;\n          Sunstone.runAction(\"Template.instantiate_quiet\", template_id, extra_info);\n        }\n      } else { //wildcard present: replace wildcard\n        for (var i = 0; i < n_times_int; i++) {\n          extra_info['vm_name'] = vm_name.replace(/%i/gi, i);\n          Sunstone.runAction(\"Template.instantiate_quiet\", template_id, extra_info);\n        }\n      }\n    }\n\n    setTimeout(function() {\n      Sunstone.resetFormPanel(TAB_ID, FORM_PANEL_ID);\n      Sunstone.hideFormPanel(TAB_ID);\n      Sunstone.runAction(\"VM.list\");\n    }, 1500);\n\n    return false;\n  }\n});\n\n","define('tabs/vms-tab',['require','utils/locale','./vms-tab/buttons','./vms-tab/actions','./vms-tab/datatable','utils/vnc','./vms-tab/tabId','./vms-tab/dialogs/deploy','./vms-tab/dialogs/migrate','./vms-tab/dialogs/resize','./vms-tab/dialogs/attach-disk','./vms-tab/dialogs/attach-nic','./vms-tab/dialogs/snapshot','./vms-tab/dialogs/vnc','./vms-tab/dialogs/spice','./vms-tab/panels/info','./vms-tab/panels/capacity','./vms-tab/panels/storage','./vms-tab/panels/network','./vms-tab/panels/snapshots','./vms-tab/panels/placement','./vms-tab/panels/actions','./vms-tab/panels/template','./vms-tab/panels/log','./vms-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./vms-tab/buttons');\n  var Actions = require('./vms-tab/actions');\n  var Table = require('./vms-tab/datatable');\n  require('utils/vnc');\n  var TAB_ID = require('./vms-tab/tabId');\n  var DATATABLE_ID = \"dataTableVms\";\n\n  var _dialogs = [\n    require('./vms-tab/dialogs/deploy'),\n    require('./vms-tab/dialogs/migrate'),\n    require('./vms-tab/dialogs/resize'),\n    require('./vms-tab/dialogs/attach-disk'),\n    require('./vms-tab/dialogs/attach-nic'),\n    require('./vms-tab/dialogs/snapshot'),\n    require('./vms-tab/dialogs/vnc'),\n    require('./vms-tab/dialogs/spice')\n  ];\n\n  var _panels = [\n    require('./vms-tab/panels/info'),\n    require('./vms-tab/panels/capacity'),\n    require('./vms-tab/panels/storage'),\n    require('./vms-tab/panels/network'),\n    require('./vms-tab/panels/snapshots'),\n    require('./vms-tab/panels/placement'),\n    require('./vms-tab/panels/actions'),\n    require('./vms-tab/panels/template'),\n    require('./vms-tab/panels/log')\n  ];\n\n  var _formPanels = [\n    require('./vms-tab/form-panels/create')\n  ]\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Virtual Machines\"),\n    tabClass: \"subTab\",\n    parentTab: \"vresources-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-th\"></i>&emsp;' + Locale.tr(\"Virtual Machines\"),\n    infoHeader: '<i class=\"fa fa-fw fa-th\"></i>&emsp;' + Locale.tr(\"VM\"),\n    subheader: '<span class=\"total_vms\"/> <small>' + Locale.tr(\"TOTAL\") + '</small>&emsp;\\\n        <span class=\"active_vms\"/> <small>' + Locale.tr(\"ACTIVE\") + '</small>&emsp;\\\n        <span class=\"off_vms\"/> <small>' + Locale.tr(\"OFF\") + '</small>&emsp;\\\n        <span class=\"pending_vms\"/> <small>' + Locale.tr(\"PENDING\") + '</small>&emsp;\\\n        <span class=\"failed_vms\"/> <small>' + Locale.tr(\"FAILED\") + '</small>',\n    resource: 'VM',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/templates-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Template.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Template.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"Template.import_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\",\n      text:  Locale.tr(\"Import\"),\n      icon: '<i class=\"fa fa-download\">',\n      alwaysActive: true\n    },\n    \"Template.update_dialog\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Update\")\n    },\n    \"Template.instantiate_vms\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Instantiate\")\n    },\n    \"Template.chown\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change owner\"),\n      layout: \"user_select\",\n      select: \"User\",\n      tip: Locale.tr(\"Select the new owner\") + \":\",\n    },\n    \"Template.chgrp\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change group\"),\n      layout: \"user_select\",\n      select: \"Group\",\n      tip: Locale.tr(\"Select the new group\") + \":\",\n    },\n    \"Template.clone_dialog\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Clone\")\n    },\n    \"Template.delete\" : {\n      type: \"confirm\",\n      layout: \"del\"\n    }\n  }\n\n  return Buttons;\n})\n;\n","define('tabs/templates-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createVMTemplateForm';\n});\n","define('tabs/templates-tab/dialogs/clone/dialogId',['require'],function(require){\n  return 'cloneTemplateDialog';\n});\n","define('tabs/templates-tab/dialogs/instantiate/dialogId',['require'],function(require){\n  return 'instantiateTemplateDialog';\n});\n","define('tabs/templates-tab/actions',['require','sunstone','utils/notifier','utils/locale','opennebula/template','utils/common-actions','opennebula/action','./tabId','./form-panels/create/formPanelId','./dialogs/clone/dialogId','./dialogs/instantiate/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var OpenNebulaTemplate = require('opennebula/template');\n  var CommonActions = require('utils/common-actions');\n  var OpenNebulaAction = require('opennebula/action');\n\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n  var CLONE_DIALOG_ID = require('./dialogs/clone/dialogId');\n  var INSTANTIATE_DIALOG_ID = require('./dialogs/instantiate/dialogId');\n  var XML_ROOT = \"VMTEMPLATE\"\n  var RESOURCE = \"Template\"\n\n  var _commonActions = new CommonActions(OpenNebulaTemplate, RESOURCE, TAB_ID);\n\n  var _actions = {\n    \"Template.list\" : _commonActions.list(),\n    \"Template.show\" : _commonActions.show(),\n    \"Template.refresh\" : _commonActions.refresh(),\n    \"Template.delete\" : _commonActions.delete(),\n    \"Template.create\" : {\n      type: \"create\",\n      call: OpenNebulaTemplate.create,\n      callback: function(request, response) {\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      },\n      notify: true\n    },\n    \"Template.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n    \"Template.import_dialog\" : {\n      type: \"create\",\n      call: function() {\n          // TODO popUpTemplateImportDialog();\n        }\n    },\n    \"Template.update_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n        if (selected_nodes.length != 1) {\n          Notifier.notifyMessage(\"Please select one (and just one) Virtual Template to update.\");\n          return false;\n        }\n\n        var resource_id = \"\" + selected_nodes[0];\n        Sunstone.runAction(\"Template.show_to_update\", resource_id);\n      }\n    },\n    \"Template.show_to_update\" : {\n      type: \"single\",\n      call: OpenNebulaTemplate.show,\n      callback: function(request, response) {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"update\", \n          function(formPanelInstance, context) {\n            formPanelInstance.fill(context, response[XML_ROOT])\n          });\n      },\n      error: Notifier.onError\n    },\n    \"Template.update\" : {\n      type: \"single\",\n      call: OpenNebulaTemplate.update,\n      callback: function(request, response) {\n        Sunstone.hideFormPanel(TAB_ID);\n        Notifier.notifyMessage(Locale.tr(\"Virtual Template updated correctly\"));\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      }\n    },\n    \"Template.rename\" : {\n      type: \"single\",\n      call: OpenNebulaTemplate.rename,\n      callback: function(request) {\n        Sunstone.runAction('Template.show', request.request.data[0][0]);\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n    \"Template.instantiate\" : {\n      type: \"multiple\",\n      call: OpenNebulaTemplate.instantiate,\n      callback: function(req) {\n        OpenNebulaAction.clear_cache(\"VM\");\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n    \"Template.instantiate_quiet\" : {\n      type: \"single\",\n      call: OpenNebulaTemplate.instantiate,\n      callback: function(req) {\n        OpenNebulaAction.clear_cache(\"VM\");\n      },\n      error: Notifier.onError\n    },\n    \"Template.instantiate_vms\" : {\n      type: \"custom\",\n      call: function(){\n        Sunstone.getDialog(INSTANTIATE_DIALOG_ID).show();\n      }\n    },\n    \"Template.clone_dialog\" : {\n      type: \"custom\",\n      call: function(){\n        Sunstone.getDialog(CLONE_DIALOG_ID).show();\n      }\n    },\n    \"Template.clone\" : {\n      type: \"single\",\n      call: OpenNebulaTemplate.clone,\n      error: Notifier.onError,\n      notify: true\n    },\n    \"Template.chown\" : {\n      type: \"multiple\",\n      call: OpenNebulaTemplate.chown,\n      callback:  function (req) {\n        Sunstone.runAction(\"Template.show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n    \"Template.chgrp\" : {\n      type: \"multiple\",\n      call: OpenNebulaTemplate.chgrp,\n      callback:  function (req) {\n        Sunstone.runAction(\"Template.show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n    \"Template.chmod\" : {\n      type: \"single\",\n      call: OpenNebulaTemplate.chmod,\n      callback:  function (req) {\n        Sunstone.runAction(\"Template.show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    }\n  };\n\n  return _actions;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/dialogs/clone/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 id=\\\"create_vnet_header\\\" class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Clone Template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n  <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\" class=\\\"custom creation\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <div class=\\\"clone_one\\\"></div>\\n        <div class=\\\"clone_several\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Several templates are selected, please choose prefix to name the new copies\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br></div>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label class=\\\"clone_one\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        <label class=\\\"clone_several\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Prefix\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        <input type=\\\"text\\\" name=\\\"name\\\"/>\\n      </div>\\n    </div>\\n    <div class=\\\"form_buttons row\\\">\\n      <button class=\\\"button radius right\\\" id=\\\"template_clone_button\\\" value=\\\"Template.clone\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Clone\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/dialogs/clone/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/dialogs/clone',['require','utils/dialogs/dialog','hbs!./clone/html','sunstone','utils/notifier','opennebula/template','./clone/dialogId','tabs/templates-tab/tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./clone/html');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var OpenNebulaTemplate = require('opennebula/template');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./clone/dialogId');\n  var TEMPLATES_TAB_ID = require('tabs/templates-tab/tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    $('#' + DIALOG_ID + 'Form', context).submit(function() {\n      var extra_info;\n      var name = $('input[name=\"name\"]', this).val();\n      var sel_elems = Sunstone.getDataTable(TEMPLATES_TAB_ID).elements();\n\n      if (!name || !sel_elems.length)\n        Notifier.notifyError('A name or prefix is needed!');\n\n      if (sel_elems.length > 1) {\n        for (var i = 0; i < sel_elems.length; i++) {\n          //If we are cloning several images we\n          //use the name as prefix\n          extra_info = name + OpenNebulaTemplate.getName(sel_elems[i]);\n          Sunstone.runAction('Template.clone', sel_elems[i], extra_info);\n        }\n      } else {\n        extra_info = name;\n        Sunstone.runAction('Template.clone', sel_elems[0], extra_info)\n      }\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      setTimeout(function() {\n        Sunstone.runAction('Template.refresh');\n      }, 1500);\n      return false;\n    });\n\n    return false;\n  }\n\n  function _onShow(context) {\n    var sel_elems = Sunstone.getDataTable(TEMPLATES_TAB_ID).elements();\n    //show different text depending on how many elements are selected\n    if (sel_elems.length > 1) {\n      $('.clone_one', context).hide();\n      $('.clone_several', context).show();\n      $('input[name=\"name\"]',context).val('Copy of ');\n    } else {\n      $('.clone_one', context).show();\n      $('.clone_several', context).hide();\n      $('input[name=\"name\"]', context).val('Copy of ' + OpenNebulaTemplate.getName(sel_elems[0]));\n    };\n\n    $(\"input[name='name']\", context).focus();\n\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/dialogs/instantiate/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 id=\\\"create_vnet_header\\\" class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Instantiate VM Template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n  <form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\" class=\\\"custom creation\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label for=\\\"vm_name\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VM Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Defaults to template name when emtpy. You can use the wildcard &#37;i. When creating several VMs, &#37;i will be replaced with a different number starting from 0 in each of them\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" name=\\\"vm_name\\\" id=\\\"vm_name\\\" />\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label for=\\\"vm_n_times\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of instances\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of Virtual Machines that will be created using this template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" name=\\\"vm_n_times\\\" id=\\\"vm_n_times\\\" value=\\\"1\\\"></div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <input type=\\\"checkbox\\\" name=\\\"hold\\\" id=\\\"hold\\\"/>\\n        <label for=\\\"hold\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hold\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Sets the new VM to hold state, instead of pending. The scheduler will not deploy VMs in this state. It can be released later, or deployed manually.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n      </div>\\n    </div>\\n    <div id=\\\"instantiate_vm_user_inputs\\\"> <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n    </div>\\n    <div class=\\\"form_buttons\\\">\\n      <button class=\\\"button radius right success\\\" id=\\\"instantiate_vm_template_proceed\\\" value=\\\"Template.instantiate_vms\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Instantiate\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/dialogs/instantiate/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/dialogs/instantiate',['require','utils/dialogs/dialog','hbs!./instantiate/html','sunstone','utils/notifier','opennebula/template','utils/locale','utils/tips','utils/user-inputs','utils/wizard-fields','./instantiate/dialogId','tabs/templates-tab/tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./instantiate/html');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var OpenNebulaTemplate = require('opennebula/template');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var UserInputs = require('utils/user-inputs');\n  var WizardFields = require('utils/wizard-fields');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./instantiate/dialogId');\n  var TEMPLATES_TAB_ID = require('tabs/templates-tab/tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n    \n    context.off('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n    context.off('valid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n    context.on('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; };\n      Notifier.notifyError(Locale.tr(\"One or more required fields are missing or malformed.\"));\n      return false;\n    }).on('valid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; };\n      var vm_name = $('#vm_name', this).val();\n      var n_times = $('#vm_n_times', this).val();\n      var n_times_int = 1;\n\n      var hold = $('#hold', this).prop(\"checked\");\n\n      var selected_nodes = Sunstone.getDataTable(TEMPLATES_TAB_ID).elements();\n\n      $.each(selected_nodes, function(index, template_id) {\n        if (n_times.length) {\n          n_times_int = parseInt(n_times, 10);\n        };\n\n        var extra_msg = \"\";\n        if (n_times_int > 1) {\n          extra_msg = n_times_int + \" times\";\n        }\n\n        Notifier.notifySubmit(\"Template.instantiate\", template_id, extra_msg);\n\n        var extra_info = {\n          'hold': hold\n        };\n\n        var tmp_json = WizardFields.retrieve($(\".template_user_inputs\" + template_id, context));\n\n        extra_info['template'] = tmp_json;\n\n        if (!vm_name.length) { //empty name use OpenNebula core default\n          for (var i = 0; i < n_times_int; i++) {\n            extra_info['vm_name'] = \"\";\n            Sunstone.runAction(\"Template.instantiate_quiet\", template_id, extra_info);\n          }\n        } else {\n          if (vm_name.indexOf(\"%i\") == -1) {//no wildcard, all with the same name\n            extra_info['vm_name'] = vm_name;\n\n            for (var i = 0; i < n_times_int; i++) {\n              Sunstone.runAction(\n                  \"Template.instantiate_quiet\",\n                  template_id,\n                  extra_info);\n            }\n          } else { //wildcard present: replace wildcard\n            for (var i = 0; i < n_times_int; i++) {\n              extra_info['vm_name'] = vm_name.replace(/%i/gi, i);\n\n              Sunstone.runAction(\n                  \"Template.instantiate_quiet\",\n                  template_id,\n                  extra_info);\n            }\n          }\n        }\n      })\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      return false;\n    });\n  }\n\n  function _onShow(context) {\n    $(\"#instantiate_vm_template_proceed\", context).attr(\"disabled\", \"disabled\");\n    var selected_nodes = Sunstone.getDataTable(TEMPLATES_TAB_ID).elements();\n\n    $(\"#instantiate_vm_user_inputs\", context).html(\n      '<br>' +\n      '<div class=\"row\">' +\n        '<div class=\"large-12 large-centered columns\">' +\n          '<div class=\"subheader\">' +\n            Locale.tr(\"Templates to be instantiated\") +\n          '</div>' +\n          '<ul class=\"disc list_of_templates\">' +\n          '</ul>' +\n        '</div>' +\n      '</div>');\n\n    $.each(selected_nodes, function(index, template_id) {\n      OpenNebulaTemplate.show({\n        data : {\n          id: template_id\n        },\n        timeout: true,\n        success: function (request, template_json) {\n          $(\".list_of_templates\", context).append(\"<li>\" + template_json.VMTEMPLATE.NAME + '</li>')\n\n          var inputs_div = $(\"<div class='template_user_inputs\" + template_json.VMTEMPLATE.ID + \"'></div>\").appendTo(\n            $(\"#instantiate_vm_user_inputs\", context));\n\n          UserInputs.vmTemplateInsert(\n              inputs_div,\n              template_json,\n              {text_header: template_json.VMTEMPLATE.NAME});\n\n          inputs_div.data(\"opennebula_id\", template_json.VMTEMPLATE.ID)\n        },\n        error: function(request, error_json, container) {\n          Notifier.onError(request, error_json, container);\n          $(\"#instantiate_vm_user_inputs\", context).empty();\n        }\n      });\n    })\n\n    $(\"#instantiate_vm_template_proceed\", context).removeAttr(\"disabled\");\n\n    Tips.setup(context);\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Register time\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.prettyRegTime || (depth0 != null ? depth0.prettyRegTime : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"prettyRegTime\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.permissionsTableHTML || (depth0 != null ? depth0.permissionsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"permissionsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/panels/info',['require','utils/locale','utils/humanize','utils/panel/rename-tr','utils/panel/permissions-table','hbs!./info/html','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var RenameTr = require('utils/panel/rename-tr');\n  var PermissionsTable = require('utils/panel/permissions-table');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Template\"\n  var XML_ROOT = \"VMTEMPLATE\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);\n    var prettyRegTime = Humanize.prettyTime(this.element.REGTIME);\n\n    return TemplateInfo({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'permissionsTableHTML': permissionsTableHTML,\n      'prettyRegTime': prettyRegTime,\n    });\n  }\n\n  function _setup(context) {\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n    PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);\n  }\n});\n\n","define('tabs/templates-tab/panels/info/panelId',['require'],function(require){\n  return 'template_info_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/panels/template/html',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <table  class=\\\"info_table dataTable\\\" style=\\\"width:80%\\\">\";\n  stack1 = ((helper = (helper = helpers.prettyTemplateHTML || (depth0 != null ? depth0.prettyTemplateHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"prettyTemplateHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</table>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/panels/template/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/panels/template',['require','utils/locale','utils/humanize','hbs!./template/html','../tabId','./template/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateInfo = require('hbs!./template/html');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./template/panelId');\n  var RESOURCE = \"Template\"\n  var XML_ROOT = \"VMTEMPLATE\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Template\");\n    this.icon = \"fa-file-o\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var prettyTemplateHTML = Humanize.prettyPrintJSON(this.element.TEMPLATE);\n\n    return TemplateInfo({\n      'element': this.element,\n      'prettyTemplateHTML': prettyTemplateHTML\n    });\n  }\n\n  function _setup(context) {\n  }\n});\n\n","define('tabs/templates-tab/panels/template/panelId',['require'],function(require){\n  return 'template_template_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"      <dd class='\"\n    + escapeExpression(((helper = (helper = helpers.classes || (depth0 != null ? depth0.classes : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"classes\",\"hash\":{},\"data\":data}) : helper)))\n    + \"'>\\n        <a href='#\"\n    + escapeExpression(((helper = (helper = helpers.wizardTabId || (depth0 != null ? depth0.wizardTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"wizardTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"'> <i class='fa \"\n    + escapeExpression(((helper = (helper = helpers.icon || (depth0 != null ? depth0.icon : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"icon\",\"hash\":{},\"data\":data}) : helper)))\n    + \"'></i>\\n          <br>\"\n    + escapeExpression(((helper = (helper = helpers.title || (depth0 != null ? depth0.title : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"title\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</a>\\n      </dd>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"        <div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.wizardTabId || (depth0 != null ? depth0.wizardTabId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"wizardTabId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"wizard_tab content\\\">\\n          \";\n  stack1 = ((helper = (helper = helpers.contentHTML || (depth0 != null ? depth0.contentHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"contentHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n        </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"bordered-tabs\\\">\\n    <dl id=\\\"template_create_tabs\\\" class=\\\"tabs right-info-tabs text-center\\\" data-tab>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.wizardTabs : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"    </dl>\\n    <div id=\\\"template_create_tabs_content\\\" class=\\\"tabs-content\\\" style=\\\"min-height: 300px\\\">\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.wizardTabs : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/advanced',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Advanced\\\" class=\\\"custom creation\\\">\\n   <div class=\\\"row\\\">\\n     <div class=\\\"large-12 columns\\\">\\n       <p>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write the Virtual Machine template here\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</p>\\n     </div>\\n   </div>\\n   <div class=\\\"row\\\">\\n     <div class=\\\"large-12 columns\\\">\\n       <textarea id=\\\"template\\\" rows=\\\"15\\\" required></textarea>\\n     </div>\\n   </div>\\n </form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/advanced', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/general/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"          <option value=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.path || (depth0 != null ? depth0.path : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"path\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + escapeExpression(((helper = (helper = helpers.title || (depth0 != null ? depth0.title : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"title\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</option>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div id=\\\"template_name_form\\\"  class=\\\"large-6 columns\\\">\\n    <label  for=\\\"NAME\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name that the VM will get for description purposes.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      <input type=\\\"text\\\" wizard_field=\\\"NAME\\\" id=\\\"NAME\\\" name=\\\"name\\\" required/>\\n    </label>\\n  </div>\\n  <div  id=\\\"template_hypervisor_form\\\" class=\\\"large-6 columns\\\">\\n    <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hypervisor\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input type=\\\"radio\\\" wizard_field=\\\"HYPERVISOR\\\" name=\\\"hypervisor\\\" value=\\\"kvm\\\" id=\\\"kvmRadio\\\">\\n    <label for=\\\"kvmRadio\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input type=\\\"radio\\\" wizard_field=\\\"HYPERVISOR\\\" name=\\\"hypervisor\\\" value=\\\"vmware\\\" id=\\\"vmwareRadio\\\">\\n    <label for=\\\"vmwareRadio\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input type=\\\"radio\\\" wizard_field=\\\"HYPERVISOR\\\" name=\\\"hypervisor\\\" value=\\\"xen\\\" id=\\\"xenRadio\\\">\\n    <label for=\\\"xenRadio\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Xen\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input type=\\\"radio\\\" wizard_field=\\\"HYPERVISOR\\\" name=\\\"hypervisor\\\" value=\\\"vcenter\\\" id=\\\"vcenterRadio\\\">\\n    <label for=\\\"vcenterRadio\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"vCenter\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <label  for=\\\"DESCRIPTION\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description of the template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </label>\\n    <textarea type=\\\"text\\\" wizard_field=\\\"DESCRIPTION\\\" id=\\\"DESCRIPTION\\\" name=\\\"DESCRIPTION\\\" style=\\\"height: 70px;\\\"/>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label  for=\\\"LOGO\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Logo\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Logo for the template.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <select wizard_field=\\\"LOGO\\\" id=\\\"LOGO\\\" name=\\\"LOGO\\\">\\n          <option value=\\\"\\\"></option>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.logos : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"        </select>\\n      </div>\\n      <div id=\\\"template_create_logo\\\" class=\\\"text-center large-6 columns\\\" style=\\\"margin-bottom: 15px\\\"></div>\\n      <br></div>\\n  </div>\\n</div>\\n<div class=\\\"row hypervisor only_vcenter\\\" style=\\\"display: none;\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <label  for=\\\"vcenter_template_uuid\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"vCenter Template UUID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\"></span>\\n    </label>\\n    <input type=\\\"text\\\" id=\\\"vcenter_template_uuid\\\" name=\\\"name\\\"/>\\n  </div>\\n</div>\\n\";\n  stack1 = ((helper = (helper = helpers.capacityInputsHTML || (depth0 != null ? depth0.capacityInputsHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"capacityInputsHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <input type=\\\"checkbox\\\" id=\\\"sunstone_capacity_select\\\" name=\\\"name\\\"/>\\n    <label  for=\\\"sunstone_capacity_select\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Do not allow to change capacity\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Users using the cloud view will not be able to select a new capacity for this template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </span>\\n    </label>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <input type=\\\"checkbox\\\" id=\\\"sunstone_network_select\\\" name=\\\"name\\\"/>\\n    <label  for=\\\"sunstone_network_select\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Do not allow to modify network configuration\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Users using the cloud view will not be able to remove or add new NICs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </span>\\n    </label>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/general/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/general',['require','utils/locale','utils/tips','./general/capacity-inputs','utils/wizard-fields','hbs!./general/html','./general/wizardTabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var CapacityInputs = require('./general/capacity-inputs');\n  var WizardFields = require('utils/wizard-fields');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./general/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var WIZARD_TAB_ID = require('./general/wizardTabId');\n  var LOGOS = [\n    {'path': \"images/logos/arch.png\",       'title': Locale.tr(\"Arch Linux\")},\n    {'path': \"images/logos/centos.png\",     'title': Locale.tr(\"CentOS\")},\n    {'path': \"images/logos/debian.png\",     'title': Locale.tr(\"Debian\")},\n    {'path': \"images/logos/fedora.png\",     'title': Locale.tr(\"Fedora\")},\n    {'path': \"images/logos/linux.png\",      'title': Locale.tr(\"Linux\")},\n    {'path': \"images/logos/redhat.png\",     'title': Locale.tr(\"Redhat\")},\n    {'path': \"images/logos/ubuntu.png\",     'title': Locale.tr(\"Ubuntu\")},\n    {'path': \"images/logos/windowsxp.png\",  'title': Locale.tr(\"Windows XP/2003\")},\n    {'path': \"images/logos/windows8.png\",   'title': Locale.tr(\"Windows 8\")}\n  ]\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function WizardTab() {\n    this.wizardTabId = WIZARD_TAB_ID;\n    this.icon = 'fa-laptop';\n    this.title = Locale.tr(\"General\");\n  }\n\n  WizardTab.prototype.constructor = WizardTab;\n  WizardTab.prototype.html = _html;\n  WizardTab.prototype.setup = _setup;\n  WizardTab.prototype.onShow = _onShow;\n  WizardTab.prototype.retrieve = _retrieve;\n  WizardTab.prototype.fill = _fill;\n\n  return WizardTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML({\n      'capacityInputsHTML': CapacityInputs.html(),\n      'logos': LOGOS\n    });\n  }\n\n  function _onShow(context, panelForm) {\n    if (panelForm.action == 'create') {\n      $('#template_name_form', context).show();\n      $('#template_hypervisor_form', context).removeClass(\"left\");\n      $('#NAME', context).removeAttr('disabled');\n      $('#NAME', context).attr(\"required\", \"\");\n    } else if (panelForm.action == 'update') {\n      $('#template_name_form', context).hide();\n      $('#template_hypervisor_form', context).addClass(\"left\");\n      $('#NAME', context).attr(\"disabled\", \"disabled\");\n      $('#NAME', context).removeAttr(\"required\");\n    }\n  }\n\n  function _setup(context) {\n    Tips.setup(context);\n\n    context.on(\"change\", \"#LOGO\", function() {\n      $(\"#template_create_logo\", context).show();\n      $(\"#template_create_logo\", context).html('<span  class=\"\">' +\n          '<img src=\"' + $(this).val() + '\">' +\n        '</span>');\n    });\n\n    context.on(\"change\", \"input[name='hypervisor']\", function() {\n      // TODO define context (for example: this.closest('form'))\n      $(\".hypervisor\").hide();\n      $(\".only_\" + this.value).show();\n    });\n\n    CapacityInputs.setup(context);\n  }\n\n  function _retrieve(context) {\n    var templateJSON = WizardFields.retrieve(context);\n\n    if (templateJSON[\"HYPERVISOR\"] == 'vcenter') {\n      templateJSON[\"PUBLIC_CLOUD\"] = {\n        'TYPE': 'vcenter',\n        'VM_TEMPLATE': $(\"#vcenter_template_uuid\", context).val()\n      }\n    }\n\n    if ($('#sunstone_capacity_select:checked', context).length > 0) {\n      templateJSON[\"SUNSTONE_CAPACITY_SELECT\"] = \"NO\"\n    }\n\n    if ($('#sunstone_network_select:checked', context).length > 0) {\n      templateJSON[\"SUNSTONE_NETWORK_SELECT\"] = \"NO\"\n    }\n\n    return templateJSON;\n  }\n\n  function _fill(context, templateJSON) {\n    if (templateJSON[\"SUNSTONE_CAPACITY_SELECT\"] && \n          (templateJSON[\"SUNSTONE_CAPACITY_SELECT\"].toUpperCase() == \"NO\")) {\n      $(\"#sunstone_capacity_select\", context).attr(\"checked\", \"checked\");\n      delete templateJSON[\"SUNSTONE_CAPACITY_SELECT\"]\n    }\n\n    if (templateJSON[\"SUNSTONE_NETWORK_SELECT\"] && \n          (templateJSON[\"SUNSTONE_NETWORK_SELECT\"].toUpperCase() == \"NO\")) {\n      $(\"#sunstone_network_select\", context).attr(\"checked\", \"checked\");\n      delete templateJSON[\"SUNSTONE_NETWORK_SELECT\"]\n    }\n\n    if (templateJSON[\"HYPERVISOR\"]) {\n      $(\"input[name='hypervisor'][value='\"+templateJSON[\"HYPERVISOR\"]+\"']\", context).trigger(\"click\")\n      delete templateJSON[\"HYPERVISOR\"];\n    }\n    \n    WizardFields.fill(context, templateJSON);\n  }\n});\n\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/general/wizardTabId',['require'],function(require){\n  return 'generalTab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/storage/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<dl class=\\\"tabs vertical\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.linksContainerId || (depth0 != null ? depth0.linksContainerId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"linksContainerId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-tab>\\n  <dt class=\\\"text-center\\\">\\n    <button href=\\\"#\\\" class=\\\"button tiny radius\\\" id=\\\"tf_btn_disks\\\">\\n      <span class=\\\"fa fa-plus\\\"></span>\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add another disk\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n    </button>\\n  </dt>\\n</dl>\\n<div class=\\\"tabs-content vertical\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.contentsContainerId || (depth0 != null ? depth0.contentsContainerId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"contentsContainerId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/storage/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/storage',['require','foundation.tab','sunstone-config','utils/locale','utils/tips','utils/wizard-fields','./storage/disk-tab','hbs!./storage/html','./storage/wizardTabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  require('foundation.tab');\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var WizardFields = require('utils/wizard-fields');\n  var DiskTab = require('./storage/disk-tab');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./storage/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var WIZARD_TAB_ID = require('./storage/wizardTabId');\n  var LINKS_CONTAINER_ID = 'template_create_storage_tabs';\n  var CONTENTS_CONTAINER_ID = 'template_create_storage_tabs_content';\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function WizardTab() {\n    if (!Config.isTemplateCreationTabEnabled('storage')) {\n      throw \"Wizard Tab not enabled\";\n    }\n\n    this.wizardTabId = WIZARD_TAB_ID;\n    this.icon = 'fa-tasks';\n    this.title = Locale.tr(\"Storage\");\n    this.classes = \"hypervisor only_kvm only_vmware only_xen\"\n  }\n\n  WizardTab.prototype.constructor = WizardTab;\n  WizardTab.prototype.html = _html;\n  WizardTab.prototype.setup = _setup;\n  WizardTab.prototype.onShow = _onShow;\n  WizardTab.prototype.retrieve = _retrieve;\n  WizardTab.prototype.fill = _fill;\n  WizardTab.prototype.renameTabLinks = _renameTabLinks;\n  WizardTab.prototype.addDiskTab = _addDiskTab;\n\n  return WizardTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML({\n      'linksContainerId': LINKS_CONTAINER_ID,\n      'contentsContainerId': CONTENTS_CONTAINER_ID\n    });\n  }\n\n  function _onShow(context, panelForm) {\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    that.numberOfDisks = 0;\n    that.diskTabObjects = {};\n\n    Tips.setup(context);\n    context.foundation('reflow', 'tab');\n\n    // close icon: removing the tab on click\n    context.on(\"click\", \"i.remove-tab\", function() {\n      var target = $(this).parent().attr(\"href\");\n      var dd = $(this).closest('dd');\n      var dl = $(this).closest('dl');\n      var content = $(target);\n\n      dd.remove();\n      content.remove();\n\n      var diskId = content.attr(\"diskId\");\n      delete that.diskTabObjects[diskId];\n\n      if (dd.attr(\"class\") == 'active') {\n        $('a', dl.children('dd').last()).click();\n      }\n\n      that.renameTabLinks(context);\n    });\n\n    context.on(\"click\", \"#tf_btn_disks\", function() {\n      that.addDiskTab(context);\n      return false;\n    });\n\n    that.addDiskTab(context);\n  }\n\n  function _retrieve(context) {\n    var templateJSON = {};\n    var disksJSON = [];\n    var diskJSON;\n    $.each(this.diskTabObjects, function(id, diskTab) {\n      diskJSON = diskTab.retrieve($('#' + diskTab.diskTabId, context))\n      if (!$.isEmptyObject(diskJSON)) {disksJSON.push(diskJSON)};\n    })\n\n    if (!$.isEmptyObject(disksJSON)) { templateJSON['DISK'] = disksJSON; };\n\n    return templateJSON;\n  }\n\n  function _fill(context, templateJSON) {\n    var that = this;\n    var disks = templateJSON.DISK\n    if (disks instanceof Array) {\n      $.each(disks, function(diskId, diskJSON) {\n        if (diskId > 0) {\n          that.addDiskTab(context);\n        }\n\n        var diskTab = that.diskTabObjects[that.numberOfDisks];\n        var diskContext = $('#' + diskTab.diskTabId, context);\n        diskTab.fill(diskContext, diskJSON);\n      });\n    } else if (disks instanceof Object) {\n      var diskTab = that.diskTabObjects[that.numberOfDisks];\n      var diskContext = $('#' + diskTab.diskTabId, context);\n      diskTab.fill(diskContext, disks);\n    }\n  }\n\n  function _addDiskTab(context) {\n    this.numberOfDisks++;\n    var diskTab = new DiskTab(this.numberOfDisks);\n\n    var content = $('<div id=\"' + diskTab.diskTabId + '\" class=\"active disk wizard_internal_tab content\">' +\n        diskTab.html() +\n      '</div>').appendTo($(\"#\" + CONTENTS_CONTAINER_ID, context));\n\n    var a = $(\"<dd class='active'>\" +\n       \"<a href='#\" + diskTab.diskTabId + \"'>\" + Locale.tr(\"DISK\") + \"</a>\" +\n      \"</dd>\").appendTo($(\"#\" + LINKS_CONTAINER_ID, context));\n\n    $(\"a\", a).trigger(\"click\");\n\n    diskTab.setup(content);\n    content.attr(\"diskId\", this.numberOfDisks);\n\n    this.renameTabLinks(context);\n    this.diskTabObjects[this.numberOfDisks] = diskTab;\n  }\n\n  function _renameTabLinks(context) {\n    $(\"#\" + LINKS_CONTAINER_ID + \" dd\", context).each(function(index) {\n      $(\"a\", this).html(Locale.tr(\"Disk\") + ' ' + index + \" <i class='fa fa-times-circle remove-tab'></i>\");\n    })\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/network/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<dl class=\\\"tabs vertical\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.linksContainerId || (depth0 != null ? depth0.linksContainerId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"linksContainerId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-tab>\\n  <dt class=\\\"text-center\\\">\\n    <button href=\\\"#\\\" class=\\\"button tiny radius\\\" id=\\\"tf_btn_nics\\\">\\n      <span class=\\\"fa fa-plus\\\"></span>\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add another interface\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n    </button>\\n  </dt>\\n</dl>\\n<div class=\\\"tabs-content vertical\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.contentsContainerId || (depth0 != null ? depth0.contentsContainerId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"contentsContainerId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <label for=\\\"DEFAULT_MODEL\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default model\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default value for all NICs. Hardware that will emulate the network interface. With Xen this is the type attribute of the vif.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </span>\\n    </label>\\n    <input type=\\\"text\\\" id=\\\"DEFAULT_MODEL\\\" name=\\\"DEFAULT_MODEL\\\"/>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/network/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/network',['require','foundation.tab','sunstone-config','utils/locale','utils/tips','utils/wizard-fields','./network/nic-tab','hbs!./network/html','./network/wizardTabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  require('foundation.tab');\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var WizardFields = require('utils/wizard-fields');\n  var NicTab = require('./network/nic-tab');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./network/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var WIZARD_TAB_ID = require('./network/wizardTabId');\n  var LINKS_CONTAINER_ID = 'template_create_network_tabs';\n  var CONTENTS_CONTAINER_ID = 'template_create_network_tabs_content';\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function WizardTab() {\n    if (!Config.isTemplateCreationTabEnabled('network')) {\n      throw \"Wizard Tab not enabled\";\n    }\n\n    this.wizardTabId = WIZARD_TAB_ID;\n    this.icon = 'fa-globe';\n    this.title = Locale.tr(\"Network\");\n    this.classes = \"hypervisor only_kvm only_vmware only_xen only_vcenter\"\n  }\n\n  WizardTab.prototype.constructor = WizardTab;\n  WizardTab.prototype.html = _html;\n  WizardTab.prototype.setup = _setup;\n  WizardTab.prototype.onShow = _onShow;\n  WizardTab.prototype.retrieve = _retrieve;\n  WizardTab.prototype.fill = _fill;\n  WizardTab.prototype.renameTabLinks = _renameTabLinks;\n  WizardTab.prototype.addNicTab = _addNicTab;\n\n  return WizardTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML({\n      'linksContainerId': LINKS_CONTAINER_ID,\n      'contentsContainerId': CONTENTS_CONTAINER_ID\n    });\n  }\n\n  function _onShow(context, panelForm) {\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    that.numberOfNics = 0;\n    that.nicTabObjects = {};\n\n    Tips.setup(context);\n    context.foundation('reflow', 'tab');\n\n    // close icon: removing the tab on click\n    context.on(\"click\", \"i.remove-tab\", function() {\n      var target = $(this).parent().attr(\"href\");\n      var dd = $(this).closest('dd');\n      var dl = $(this).closest('dl');\n      var content = $(target);\n\n      dd.remove();\n      content.remove();\n\n      var nicId = content.attr(\"nicId\");\n      delete that.nicTabObjects[nicId];\n\n      if (dd.attr(\"class\") == 'active') {\n        $('a', dl.children('dd').last()).click();\n      }\n\n      that.renameTabLinks(context);\n    });\n\n    context.on(\"click\", \"#tf_btn_nics\", function() {\n      that.addNicTab(context);\n      return false;\n    });\n\n    that.addNicTab(context);\n  }\n\n  function _retrieve(context) {\n    var templateJSON = {}\n    var nicsJSON = [];\n    var nicJSON;\n    $.each(this.nicTabObjects, function(id, nicTab) {\n      nicJSON = nicTab.retrieve($('#' + nicTab.nicTabId, context))\n      if (!$.isEmptyObject(nicJSON)) {nicsJSON.push(nicJSON)};\n    })\n\n    if (!$.isEmptyObject(nicsJSON)) { templateJSON['NIC'] = nicsJSON; };\n\n    var nicDefault = $('#DEFAULT_MODEL', context).val();\n    if (nicDefault) {\n      templateJSON['NIC_DEFAULT'] = {\n        'MODEL': nicDefault\n      }\n    }\n\n    return templateJSON;\n  }\n\n  function _fill(context, templateJSON) {\n    var that = this;\n    var nics = templateJSON.NIC\n    if (nics instanceof Array) {\n      $.each(nics, function(nicId, nicJSON) {\n        if (nicId > 0) {\n          that.addNicTab(context);\n        }\n\n        var nicTab = that.nicTabObjects[that.numberOfNics];\n        var nicContext = $('#' + nicTab.nicTabId, context);\n        nicTab.fill(nicContext, nicJSON);\n      });\n    } else if (nics instanceof Object) {\n      var nicTab = that.nicTabObjects[that.numberOfNics];\n      var nicContext = $('#' + nicTab.nicTabId, context);\n      nicTab.fill(nicContext, nics);\n    }\n\n    var nicDefault = templateJSON.NIC_DEFAULT\n    if (nicDefault != undefined) {\n      if (nicDefault.MODEL) {\n        $('#DEFAULT_MODEL', context).val(nicDefault.MODEL);\n      }\n\n      delete template.NIC_DEFAULT;\n    }\n  }\n\n  function _addNicTab(context) {\n    this.numberOfNics++;\n    var nicTab = new NicTab(this.numberOfNics);\n\n    var content = $('<div id=\"' + nicTab.nicTabId + '\" class=\"active nic wizard_internal_tab content\">' +\n        nicTab.html() +\n      '</div>').appendTo($(\"#\" + CONTENTS_CONTAINER_ID, context));\n\n    var a = $(\"<dd class='active'>\" +\n       \"<a href='#\" + nicTab.nicTabId + \"'>\" + Locale.tr(\"NIC\") + \"</a>\" +\n      \"</dd>\").appendTo($(\"#\" + LINKS_CONTAINER_ID, context));\n\n    $(\"a\", a).trigger(\"click\");\n\n    nicTab.setup(content);\n    content.attr(\"nicId\", this.numberOfNics);\n\n    this.renameTabLinks(context);\n    this.nicTabObjects[this.numberOfNics] = nicTab;\n  }\n\n  function _renameTabLinks(context) {\n    $(\"#\" + LINKS_CONTAINER_ID + \" dd\", context).each(function(index) {\n      $(\"a\", this).html(Locale.tr(\"NIC\") + ' ' + index + \" <i class='fa fa-times-circle remove-tab'></i>\");\n    })\n  }\n});\n\n","define('tabs/files-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','utils/humanize','utils/notifier','opennebula/image','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var Notifier = require('utils/notifier');\n  var OpenNebulaImage = require('opennebula/image');\n\n  /*\n    CONSTANTS\n   */\n  \n  var RESOURCE = \"File\";\n  var XML_ROOT = \"IMAGE\";\n  var TAB_NAME = require('./tabId');\n  var COLUMN_IDS = {\n    \"DATASTORE\": 5,\n    \"TYPE\": 7\n  };\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Owner\"),\n      Locale.tr(\"Group\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Datastore\"),\n      Locale.tr(\"Size\"),\n      Locale.tr(\"Type\"),\n      Locale.tr(\"Registration time\"),\n      Locale.tr(\"Persistent\"),\n      Locale.tr(\"Status\"),\n      Locale.tr(\"#VMS\"),\n      Locale.tr(\"Target\"),\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 4,\n      \"uname_index\": 2,\n      \"select_resource\": Locale.tr(\"Please select an file from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following file:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more files from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following files:\")\n    };\n\n    TabDataTable.call(this);\n  };\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n  Table.COLUMN_IDS = COLUMN_IDS;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _elementArray(element_json) {\n    var element = element_json.IMAGE;\n\n    // OS || CDROM || DATABLOCK\n    if (element.TYPE == \"0\" ||  element.TYPE == \"1\" || element.TYPE == \"2\") {\n      return false;\n    }\n\n    return [\n      '<input class=\"check_item\" type=\"checkbox\" id=\"'+RESOURCE.toLowerCase()+'_' +\n                           element.ID + '\" name=\"selected_items\" value=\"' +\n                           element.ID + '\"/>',\n      element.ID,\n      element.UNAME,\n      element.GNAME,\n      element.NAME,\n      element.DATASTORE,\n      element.SIZE,\n      OpenNebulaImage.typeStr(element.TYPE),\n      Humanize.prettyTime(element.REGTIME),\n      parseInt(element.PERSISTENT) ? \"yes\" : \"no\",\n      OpenNebulaImage.stateStr(element.STATE),\n      element.RUNNING_VMS,\n      element.TEMPLATE.TARGET ? element.TEMPLATE.TARGET : '--'\n    ];\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/os/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var lambda=this.lambda, escapeExpression=this.escapeExpression;\n  return \"            <option value=\\\"\"\n    + escapeExpression(lambda(depth0, depth0))\n    + \"\\\">\"\n    + escapeExpression(lambda(depth0, depth0))\n    + \"</option>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"<div id=\\\"tabs-bootos\\\">\\n  <dl class=\\\"tabs vertical\\\" data-tab>\\n    <dd class=\\\"active\\\">\\n      <a href=\\\"#bootTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Boot\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n    </dd>\\n    <dd>\\n      <a href=\\\"#kernelTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Kernel\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n    </dd>\\n    <dd>\\n      <a href=\\\"#ramdiskTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ramdisk\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n    </dd>\\n    <dd>\\n      <a href=\\\"#featuresTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Features\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n    </dd>\\n  </dl>\\n  <div class=\\\"tabs-content vertical\\\">\\n    <div class=\\\"wizard_internal_tab active content\\\" id=\\\"bootTab\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-4 columns\\\">\\n          <label for=\\\"ARCH\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Arch\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU architecture to virtualization\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select wizard_field=\\\"ARCH\\\" id=\\\"ARCH\\\" name=\\\"arch\\\">\\n            <option id=\\\"no_arch\\\" name=\\\"no_arch\\\" value=\\\"\\\"></option>\\n            <option value=\\\"i686\\\">i686</option>\\n            <option value=\\\"x86_64\\\">x86_64</option>\\n          </select>\\n        </div>\\n        <div class=\\\"large-8 columns hypervisor only_kvm\\\">\\n          <label for=\\\"MACHINE\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Machine type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"libvirt machine type, only for KVM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"MACHINE\\\" id=\\\"MACHINE\\\" name=\\\"machine\\\" />\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-4 columns\\\">\\n          <label for=\\\"ROOT\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Root\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Device to be mounted as root\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"ROOT\\\" id=\\\"ROOT\\\" name=\\\"root\\\"/>\\n        </div>\\n        <div class=\\\"large-8 columns hypervisor only_vmware\\\">\\n          <label for=\\\"GUESTOS\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Guest OS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Set the OS of the VM, only for VMware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select wizard_field=\\\"GUESTOS\\\" id=\\\"GUESTOS\\\" name=\\\"GUESTOS\\\">\\n            <option id=\\\"no_guestos\\\" name=\\\"no_guestos\\\" value=\\\"\\\"></option>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.guestOS : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"          </select>\\n        </div>\\n      </div>\\n      <br>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-4 columns\\\">\\n          <label for=\\\"BOOT_0\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"1st Boot\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"1st Boot device type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select id=\\\"BOOT_0\\\" name=\\\"boot\\\">\\n            <option id=\\\"no_boot\\\" name=\\\"no_boot\\\" value=\\\"\\\"></option>\\n            <option value=\\\"hd\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"HD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"fd\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"FD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"cdrom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CDROM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"network\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"NETWORK\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"large-4 columns\\\">\\n          <label for=\\\"BOOT_1\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"2nd Boot\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"2nd Boot device type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select id=\\\"BOOT_1\\\" name=\\\"boot\\\">\\n            <option id=\\\"no_boot\\\" name=\\\"no_boot\\\" value=\\\"\\\"></option>\\n            <option value=\\\"hd\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"HD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"fd\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"FD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"cdrom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CDROM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"network\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"NETWORK\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"large-4 columns\\\">\\n          <label for=\\\"BOOT_2\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"3rd Boot\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"3rd Boot device type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select id=\\\"BOOT_2\\\" name=\\\"boot\\\">\\n            <option id=\\\"no_boot\\\" name=\\\"no_boot\\\" value=\\\"\\\"></option>\\n            <option value=\\\"hd\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"HD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"fd\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"FD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"cdrom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CDROM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"network\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"NETWORK\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"KERNEL_CMD\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Kernel cmd\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Arguments for the booting kernel\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"KERNEL_CMD\\\" id=\\\"KERNEL_CMD\\\" name=\\\"kernel_cmd\\\" />\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"BOOTLOADER\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Bootloader\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Path to the bootloader executable\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"BOOTLOADER\\\" id=\\\"BOOTLOADER\\\" name=\\\"bootloader\\\" />\\n        </div>\\n      </div>\\n    </div>\\n    <div id=\\\"kernelTab\\\" class=\\\"wizard_internal_tab content\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns text-center\\\">\\n          <input id=\\\"radioKernelDs\\\" type=\\\"radio\\\" name=\\\"kernel_type\\\" value=\\\"kernel_ds\\\" checked/>\\n          <label for=\\\"radioKernelDs\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Registered Image\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <input id=\\\"radioKernelPath\\\" type=\\\"radio\\\" name=\\\"kernel_type\\\" value=\\\"kernel_path\\\"/>\\n          <label for=\\\"radioKernelPath\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Remote PATH\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        </div>\\n      </div>\\n      <br>\\n      <div class=\\\"kernel_ds\\\">\\n        \";\n  stack1 = ((helper = (helper = helpers.kernelFilesTableHTML || (depth0 != null ? depth0.kernelFilesTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"kernelFilesTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        <div id=\\\"kernel_ds_inputs\\\" class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label for=\\\"KERNEL_DS\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KERNEL_DS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n            <input type=\\\"text\\\" wizard_field=\\\"KERNEL_DS\\\" id=\\\"KERNEL_DS\\\" name=\\\"KERNEL_DS\\\"/>\\n          </div>\\n        </div>\\n      </div>\\n      <div id=\\\"kernel_path_inputs\\\" class=\\\"kernel_path hidden row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"KERNEL\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PATH\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Path to the OS kernel to boot the image\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"KERNEL\\\" id=\\\"KERNEL\\\" name=\\\"kernel\\\" />\\n        </div>\\n      </div>\\n    </div>\\n    <div id=\\\"ramdiskTab\\\" class=\\\"wizard_internal_tab content\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns text-center\\\">\\n          <input id=\\\"radioInintrdDs\\\" type=\\\"radio\\\" name=\\\"initrd_type\\\" value=\\\"initrd_ds\\\" checked>\\n          <label for=\\\"radioInintrdDs\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Registered Image \", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <input id=\\\"radioInitrdPath\\\" type=\\\"radio\\\" name=\\\"initrd_type\\\" value=\\\"initrd_path\\\">\\n          <label for=\\\"radioInitrdPath\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Remote PATH\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        </div>\\n      </div>\\n      <br>\\n      <div class=\\\"initrd_ds\\\">\\n        \";\n  stack1 = ((helper = (helper = helpers.initrdFilesTableHTML || (depth0 != null ? depth0.initrdFilesTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"initrdFilesTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label for=\\\"INITRD_DS\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"INITRD_DS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n            <input type=\\\"text\\\" wizard_field=\\\"INITRD_DS\\\" id=\\\"INITRD_DS\\\" name=\\\"initrd_id\\\"/>\\n          </div>\\n        </div>\\n      </div>\\n      <div id=\\\"initrd_path_inputs\\\" class=\\\"initrd_path hidden\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label for=\\\"INITRD\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PATH\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Path to the initrd image\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n            <input type=\\\"text\\\" wizard_field=\\\"INITRD\\\" id=\\\"INITRD\\\" name=\\\"initrd\\\"/>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <div class=\\\"wizard_internal_tab content\\\" id=\\\"featuresTab\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"ACPI\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ACPI\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add support in the VM for Advanced Configuration and Power Interface (ACPI)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n          <select wizard_field=\\\"ACPI\\\" id=\\\"ACPI\\\" name=\\\"acpi\\\">\\n            <option id=\\\"no_apci\\\" name=\\\"no_apci\\\" value=\\\"\\\"></option>\\n            <option value=\\\"yes\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Yes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"no\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"No\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"PAE\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PAE\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add support in the VM for Physical Address Extension (PAE)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n          <select wizard_field=\\\"PAE\\\" id=\\\"PAE\\\" name=\\\"pae\\\">\\n            <option id=\\\"no_pae\\\" name=\\\"no_pae\\\" value=\\\"\\\"></option>\\n            <option value=\\\"yes\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Yes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"no\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"No\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"APIC\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"APIC\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Enables the advanced programmable IRQ management.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select wizard_field=\\\"APIC\\\" id=\\\"APIC\\\" name=\\\"apic\\\">\\n            <option id=\\\"no_apic\\\" name=\\\"no_apic\\\" value=\\\"\\\"></option>\\n            <option value=\\\"yes\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Yes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"no\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"No\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"HYPERV\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"HYPERV\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add support in the VM for hyper-v features (HYPERV)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select wizard_field=\\\"HYPERV\\\" id=\\\"HYPERV\\\" name=\\\"hyperv\\\">\\n            <option id=\\\"no_hyperv\\\" name=\\\"no_hyperv\\\" value=\\\"\\\"></option>\\n            <option value=\\\"yes\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Yes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"no\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"No\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"LOCALTIME\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Localtime\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"The guest clock will be synchronized to the hosts configured timezone when booted.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n          <select wizard_field=\\\"LOCALTIME\\\" id=\\\"LOCALTIME\\\" name=\\\"localtime\\\">\\n            <option id=\\\"no_localtime\\\" name=\\\"no_localtime\\\" value=\\\"\\\"></option>\\n            <option value=\\\"yes\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Yes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"no\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"No\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"large-6 columns hypervisor only_xen\\\">\\n          <label for=\\\"DEVICE_MODEL\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Device model\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Used to change the IO emulator in Xen HVM. Only XEN.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"DEVICE_MODEL\\\" id=\\\"DEVICE_MODEL\\\" name=\\\"device_model\\\"/>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns hypervisor only_vmware\\\">\\n          <label for=\\\"PCIBRIDGE\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PCI BRIDGE\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \" Adds a PCI Controller that provides bridge-to-bridge capability, only for VMware.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n          <select wizard_field=\\\"PCIBRIDGE\\\" id=\\\"PCIBRIDGE\\\" name=\\\"PCIBRIDGE\\\">\\n            <option id=\\\"no_pcibridge\\\" name=\\\"no_pcibridge\\\" value=\\\"\\\"></option>\\n            <option value=\\\"0\\\">0</option>\\n            <option value=\\\"1\\\">1</option>\\n            <option value=\\\"2\\\">2</option>\\n            <option value=\\\"3\\\">3</option>\\n            <option value=\\\"4\\\">4</option>\\n            <option value=\\\"5\\\">5</option>\\n            <option value=\\\"6\\\">6</option>\\n            <option value=\\\"7\\\">7</option>\\n            <option value=\\\"8\\\">8</option>\\n            <option value=\\\"9\\\">9</option>\\n            <option value=\\\"10\\\">10</option>\\n          </select>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/os/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/os',['require','foundation.tab','sunstone-config','utils/locale','utils/tips','utils/wizard-fields','tabs/files-tab/datatable','hbs!./os/html','./os/wizardTabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  require('foundation.tab');\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var WizardFields = require('utils/wizard-fields');\n  var FilesTable = require('tabs/files-tab/datatable');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./os/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var WIZARD_TAB_ID = require('./os/wizardTabId');\n  var GUESTOS = [\n    'asianux3_64Guest',\n    'asianux3Guest',\n    'asianux4_64Guest',\n    'asianux4Guest',\n    'centos64Guest',\n    'centosGuest',\n    'darwin64Guest',\n    'darwinGuest',\n    'debian4_64Guest',\n    'debian4Guest',\n    'debian5_64Guest',\n    'debian5Guest',\n    'dosGuest',\n    'eComStationGuest',\n    'freebsd64Guest',\n    'freebsdGuest',\n    'mandriva64Guest',\n    'mandrivaGuest',\n    'netware4Guest',\n    'netware5Guest',\n    'netware6Guest',\n    'nld9Guest',\n    'oesGuest',\n    'openServer5Guest',\n    'openServer6Guest',\n    'oracleLinux64Guest',\n    'oracleLinuxGuest',\n    'os2Guest',\n    'other24xLinux64Guest',\n    'other24xLinuxGuest',\n    'other26xLinux64Guest',\n    'other26xLinuxGuest',\n    'otherGuest',\n    'otherGuest64',\n    'otherLinux64Guest',\n    'otherLinuxGuest',\n    'redhatGuest',\n    'rhel2Guest',\n    'rhel3_64Guest',\n    'rhel3Guest',\n    'rhel4_64Guest',\n    'rhel4Guest',\n    'rhel5_64Guest',\n    'rhel5Guest',\n    'rhel6_64Guest',\n    'rhel6Guest',\n    'sjdsGuest',\n    'sles10_64Guest',\n    'sles10Guest',\n    'sles11_64Guest',\n    'sles11Guest',\n    'sles64Guest',\n    'slesGuest',\n    'solaris10_64Guest',\n    'solaris10Guest',\n    'solaris6Guest',\n    'solaris7Guest',\n    'solaris8Guest',\n    'solaris9Guest',\n    'suse64Guest',\n    'suseGuest',\n    'turboLinux64Guest',\n    'turboLinuxGuest',\n    'ubuntu64Guest',\n    'ubuntuGuest',\n    'unixWare7Guest',\n    'win2000AdvServGuest',\n    'win2000ProGuest',\n    'win2000ServGuest',\n    'win31Guest',\n    'win95Guest',\n    'win98Guest',\n    'windows7_64Guest',\n    'windows7Guest',\n    'windows7Server64Guest',\n    'winLonghorn64Guest',\n    'winLonghornGuest',\n    'winMeGuest',\n    'winNetBusinessGuest',\n    'winNetDatacenter64Guest',\n    'winNetDatacenterGuest',\n    'winNetEnterprise64Guest',\n    'winNetEnterpriseGuest',\n    'winNetStandard64Guest',\n    'winNetStandardGuest',\n    'winNetWebGuest',\n    'winNTGuest',\n    'winVista64Guest',\n    'winVistaGuest',\n    'winXPHomeGuest',\n    'winXPPro64Guest',\n    'winXPProGues'\n  ]\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function WizardTab() {\n    if (!Config.isTemplateCreationTabEnabled('os_booting')) {\n      throw \"Wizard Tab not enabled\";\n    }\n\n    this.wizardTabId = WIZARD_TAB_ID;\n    this.icon = 'fa-power-off';\n    this.title = Locale.tr(\"OS Booting\");\n    this.classes = \"hypervisor only_kvm only_vmware only_xen\"\n\n    this.kernelFilesTable = new FilesTable(this.wizardTabId + 'KernelTable', {\n      'select': true,\n      'selectOptions': {\n        \"filter_fn\": function(file) { return file.TYPE == 3; } // KERNEL\n      }\n    });\n    this.initrdFilesTable = new FilesTable(this.wizardTabId + 'InitrdTable', {\n      'select': true,\n      'selectOptions': {\n        \"filter_fn\": function(file) { return file.TYPE == 4; } // RAMDISK\n      }\n    });\n  }\n\n  WizardTab.prototype.constructor = WizardTab;\n  WizardTab.prototype.html = _html;\n  WizardTab.prototype.setup = _setup;\n  WizardTab.prototype.onShow = _onShow;\n  WizardTab.prototype.retrieve = _retrieve;\n  WizardTab.prototype.fill = _fill;\n\n  return WizardTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML({\n      'guestOS': GUESTOS,\n      'kernelFilesTableHTML': this.kernelFilesTable.dataTableHTML,\n      'initrdFilesTableHTML': this.initrdFilesTable.dataTableHTML\n    });\n  }\n\n  function _onShow(context, panelForm) {\n  }\n\n  function _setup(context) {\n    var that = this;\n    Tips.setup(context);\n    context.foundation('reflow', 'tab');\n\n    var kernelDSContext = $(\".kernel_ds\",  context);\n    var kernelDSInputsContext = $(\"#kernel_path_inputs\",  context);\n    $(\"input[name='kernel_type']\", context).change(function() {\n      if ($(\"input[name='kernel_type']:checked\", context).val() == \"kernel_ds\") {\n        kernelDSContext.toggle();\n        kernelDSInputsContext.hide();\n        $(\"[wizard_field]\", kernelDSContext).prop('wizard_field_disabled', false);\n        $(\"[wizard_field]\", kernelDSInputsContext).prop('wizard_field_disabled', true);\n      } else {\n        kernelDSContext.hide();\n        kernelDSInputsContext.toggle();\n        $(\"[wizard_field]\", kernelDSInputsContext).prop('wizard_field_disabled', false);\n        $(\"[wizard_field]\", kernelDSContext).prop('wizard_field_disabled', true);\n      }\n    });\n\n    var initrdDSContext = $(\".initrd_ds\",  context);\n    var initrdDSInputsContext = $(\"#initrd_path_inputs\",  context);\n    $(\"input[name='initrd_type']\", context).change(function() {\n      if ($(\"input[name='initrd_type']:checked\", context).val() == \"initrd_ds\") {\n        initrdDSContext.toggle();\n        initrdDSInputsContext.hide();\n        $(\"[wizard_field]\", initrdDSContext).prop('wizard_field_disabled', false);\n        $(\"[wizard_field]\", initrdDSInputsContext).prop('wizard_field_disabled', true);\n      } else {\n        initrdDSContext.hide();\n        initrdDSInputsContext.toggle();\n        $(\"[wizard_field]\", initrdDSInputsContext).prop('wizard_field_disabled', false);\n        $(\"[wizard_field]\", initrdDSContext).prop('wizard_field_disabled', true);\n      }\n    });\n\n    that.kernelFilesTable.initialize({\n      'selectOptions': {\n        'select_callback': function(aData, options) {\n          $('#KERNEL_DS', context).val(\"$FILE[IMAGE_ID=\"+ aData[options.id_index] +\"]\");\n        }\n      }\n    });\n    that.kernelFilesTable.refreshResourceTableSelect();\n\n\n    that.initrdFilesTable.initialize({\n      'selectOptions': {\n        'select_callback': function(aData, options) {\n          $('#INITRD_DS', context).val(\"$FILE[IMAGE_ID=\"+ aData[options.id_index] +\"]\");\n        }\n      }\n    });\n    that.initrdFilesTable.refreshResourceTableSelect();\n  }\n\n  function _retrieve(context) {\n    var templateJSON = {};\n    var osJSON = {}\n    $.extend(osJSON, WizardFields.retrieve('#bootTab', context));\n    $.extend(osJSON, WizardFields.retrieve('#kernelTab', context));\n    $.extend(osJSON, WizardFields.retrieve('#ramdiskTab', context));\n\n    var boot = \"\";\n    var val;\n    for (var i = 0; i < 3; i++) {\n      val = $('#BOOT_' + i, context).val();\n      if (val != undefined && val.length > 0) {\n        if (boot.length > 0) {boot += \",\"}\n        boot += val;\n      }\n    }\n\n    if (boot.length > 0) {\n      osJSON[\"BOOT\"] = boot;\n    }\n\n    if (!$.isEmptyObject(osJSON)) { templateJSON['OS'] = osJSON; };\n\n    var featuresJSON = WizardFields.retrieve('#featuresTab', context)\n    if (!$.isEmptyObject(featuresJSON)) { templateJSON['FEATURES'] = featuresJSON; };\n\n    return templateJSON;\n  }\n\n  function _fill(context, templateJSON) {\n    var osJSON = templateJSON['OS'];\n    if (osJSON) {\n      WizardFields.fill(context, osJSON);\n      \n      if (osJSON && osJSON['BOOT']) {\n        var boot_vals = osJSON['BOOT'].split(\",\");\n\n        for (var i = 0; i < 3 && i < boot_vals.length; i++) {\n          $('#BOOT_' + i, context).val(boot_vals[i]);\n        }\n      }\n\n      delete templateJSON['OS'];\n    }\n\n    var featuresJSON = templateJSON['FEATURES'];\n    if (featuresJSON) {\n      WizardFields.fill(context, featuresJSON);\n      delete templateJSON['FEATURES'];\n    }\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/io/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns graphics\\\">\\n    <fieldset>\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Graphics\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns text-center\\\">\\n          <input type=\\\"radio\\\" name=\\\"graphics_type\\\" ID=\\\"radioVncType\\\" value=\\\"VNC\\\">\\n          <label for=\\\"radioVncType\\\">VNC</label>\\n          <input type=\\\"radio\\\" name=\\\"graphics_type\\\" ID=\\\"radioSdlType\\\" value=\\\"SDL\\\" class=\\\"hypervisor only_kvm only_vmware only_xen\\\" >\\n          <label class=\\\"hypervisor only_kvm only_vmware only_xen\\\"  for=\\\"radioSdlType\\\">SDL</label>\\n          <input type=\\\"radio\\\" name=\\\"graphics_type\\\" ID=\\\"radioSpiceType\\\" value=\\\"SPICE\\\" class=\\\"hypervisor only_kvm only_vmware only_xen\\\" >\\n          <label  class=\\\"hypervisor only_kvm only_vmware only_xen\\\" for=\\\"radioSpiceType\\\">SPICE</label>\\n        </div>\\n      </div>\\n      <br>\\n      <div class=\\\"row\\\">\\n        <input type=\\\"hidden\\\" wizard_field=\\\"TYPE\\\" name=\\\"graphics_type\\\" ID=\\\"TYPE\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"LISTEN\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Listen IP\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IP to listen on\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"LISTEN\\\" id=\\\"LISTEN\\\" name=\\\"graphics_ip\\\" />\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"PORT\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Port\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Port for the VNC/SPICE server\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"PORT\\\" id=\\\"PORT\\\" name=\\\"port\\\" />\\n        </div>\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"KEYMAP\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Keymap\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Keyboard configuration locale to use in the VNC/SPICE display\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"KEYMAP\\\" id=\\\"KEYMAP\\\" name=\\\"keymap\\\" />\\n        </div>\\n      </div>\\n      <div class=\\\"row hypervisor only_kvm only_vmware only_xen\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"PASSWD\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Password for the VNC/SPICE server\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"PASSWD\\\" id=\\\"PASSWD\\\" name=\\\"graphics_pw\\\" />\\n        </div>\\n      </div>\\n      <div class=\\\"row hypervisor only_kvm only_vmware only_xen\\\">\\n        <div class=\\\"columns large-12\\\">\\n          <input type=\\\"checkbox\\\" name=\\\"RANDOM_PASSWD\\\" id=\\\"RANDOM_PASSWD\\\">\\n          <label for=\\\"RANDOM_PASSWD\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Generate Random Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"A random password will be generated for each VM, and will be included in the VM information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n        </div>\\n      </div>\\n    </fieldset>\\n  </div>\\n  <div class=\\\"large-6 columns inputs hypervisor only_kvm only_vmware only_xen\\\">\\n    <fieldset>\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Inputs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-5 columns\\\">\\n          <select id=\\\"INPUT_TYPE\\\" name=\\\"input_type\\\">\\n            <option id=\\\"no_type\\\" name=\\\"no_type\\\" value=\\\"\\\"></option>\\n            <option value=\\\"mouse\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Mouse\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"tablet\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Tablet\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"large-4 columns\\\">\\n          <select id=\\\"INPUT_BUS\\\" name=\\\"input_bus\\\">\\n            <option id=\\\"no_input\\\" name=\\\"no_input\\\" value=\\\"\\\"></option>\\n            <option value=\\\"usb\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"USB\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"ps2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PS2\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"xen\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"XEN\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"large-3 columns\\\">\\n          <a href=\\\"#\\\" class=\\\"button small radius secondary\\\" id=\\\"add_input\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <table id=\\\"input_table\\\" class=\\\"dataTable policies_table\\\">\\n            <thead>\\n              <tr>\\n                <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"TYPE\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"BUS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n                <th></th>\\n              </tr>\\n            </thead>\\n            <tbody id=\\\"tbodyinput\\\">\\n              <tr></tr>\\n              <tr></tr>\\n            </tbody>\\n          </table>\\n        </div>\\n      </div>\\n    </fieldset>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/io/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/io',['require','sunstone-config','utils/locale','utils/tips','utils/wizard-fields','utils/template-utils','hbs!./io/html','./io/wizardTabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var WizardFields = require('utils/wizard-fields');\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./io/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var WIZARD_TAB_ID = require('./io/wizardTabId');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function WizardTab() {\n    if (!Config.isTemplateCreationTabEnabled('input_output')) {\n      throw \"Wizard Tab not enabled\";\n    }\n\n    this.wizardTabId = WIZARD_TAB_ID;\n    this.icon = 'fa-exchange';\n    this.title = Locale.tr(\"Input/Output\");\n  }\n\n  WizardTab.prototype.constructor = WizardTab;\n  WizardTab.prototype.html = _html;\n  WizardTab.prototype.setup = _setup;\n  WizardTab.prototype.onShow = _onShow;\n  WizardTab.prototype.retrieve = _retrieve;\n  WizardTab.prototype.fill = _fill;\n\n  return WizardTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML();\n  }\n\n  function _onShow(context, panelForm) {\n  }\n\n  function _setup(context) {\n    Tips.setup(context);\n\n    $(\"input[name='graphics_type']\", context).change(function() {\n      $(\"#TYPE\", context).val($(this).attr(\"value\"))\n      $(\"#LISTEN\", context).val(\"0.0.0.0\")\n    });\n\n    context.off(\"click\", '#add_input');\n    context.on(\"click\", '#add_input', function() {\n      var table = $('#input_table', context)[0];\n      var rowCount = table.rows.length;\n      var row = table.insertRow(-1);\n      $(row).addClass(\"vm_param\");\n\n      var cell1 = row.insertCell(0);\n      var element1 = document.createElement(\"input\");\n      element1.id = \"INPUT_TYPE\"\n      element1.type = \"text\";\n      element1.value = $('select#INPUT_TYPE', context).val()\n      cell1.appendChild(element1);\n\n      var cell2 = row.insertCell(1);\n      var element2 = document.createElement(\"input\");\n      element2.id = \"INPUT_BUS\"\n      element2.type = \"text\";\n      element2.value = $('select#INPUT_BUS', context).val()\n      cell2.appendChild(element2);\n\n      var cell3 = row.insertCell(2);\n      cell3.innerHTML = \"<i class='fa fa-times-circle fa fa-lg remove-tab'></i>\";\n    });\n\n    context.off('click', \"i.remove-tab\");\n    context.on('click', \"i.remove-tab\", function() {\n      $(this).closest(\"tr\").remove()\n    });\n  }\n\n  function _retrieve(context) {\n    var templateJSON = {};\n    var graphicsJSON = WizardFields.retrieve(context);\n\n    if (!$.isEmptyObject(graphicsJSON) && $(\"#RANDOM_PASSWD:checked\", context).length > 0) {\n      graphicsJSON[\"RANDOM_PASSWD\"] = \"YES\";\n    }\n\n    if (!$.isEmptyObject(graphicsJSON)) { templateJSON['GRAPHICS'] = graphicsJSON; };\n\n    var inputsJSON = [];\n    $('#input_table tr', context).each(function() {\n      if ($('#INPUT_TYPE', $(this)).val()) {\n        inputsJSON.push({\n          'TYPE': $('#INPUT_TYPE', $(this)).val(),\n          'BUS': $('#INPUT_BUS', $(this)).val()\n        });\n      }\n    });\n\n    if (!$.isEmptyObject(inputsJSON)) { templateJSON['INPUTS'] = inputsJSON; };\n\n    return templateJSON;\n  }\n\n  function _fill(context, templateJSON) {\n    var graphicsJSON = templateJSON['GRAPHICS'];\n    if (graphicsJSON) {\n      var type = graphicsJSON.TYPE;\n      if (type) {\n        $(\"input[value='\" + type.toUpperCase() + \"']\").click();\n      }\n\n      if (graphicsJSON[\"RANDOM_PASSWD\"] == \"YES\") {\n        $(\"#RANDOM_PASSWD\", context).attr(\"checked\", \"checked\");\n      }\n\n      WizardFields.fill(context, graphicsJSON);\n      delete templateJSON['GRAPHICS']\n    }\n    \n    var inputsJSON = templateJSON['INPUTS'];\n    if (inputsJSON) {\n      if (!(inputsJSON instanceof Array)) {\n        inputsJSON = [inputsJSON];\n      }\n\n      $.each(inputsJSON, function() {\n        var table = $('#input_table', context)[0];\n        var rowCount = table.rows.length;\n        var row = table.insertRow(rowCount);\n\n        var cell1 = row.insertCell(0);\n        var element1 = document.createElement(\"input\");\n        element1.id = \"INPUT_TYPE\";\n        element1.type = \"text\";\n        element1.value = TemplateUtils.htmlDecode(this.TYPE);\n        cell1.appendChild(element1);\n\n        var cell2 = row.insertCell(1);\n        var element2 = document.createElement(\"input\");\n        element2.id = \"INPUT_BUS\";\n        element2.type = \"text\";\n        element2.value = TemplateUtils.htmlDecode(this.BUS);\n        cell2.appendChild(element2);\n\n        var cell3 = row.insertCell(2);\n        cell3.innerHTML = \"<i class='fa fa-times-circle fa fa-lg remove-tab'></i>\";\n      });\n\n      delete templateJSON['INPUTS']\n    }\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/context/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"<dl id=\\\"context_tabs\\\" class=\\\"tabs vertical\\\" data-tab>\\n  <dd class=\\\"active\\\">\\n    <a href=\\\"#netsshTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network & SSH\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n  </dd>\\n  <dd>\\n    <a href=\\\"#filesTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Files\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n  </dd>\\n  <dd>\\n    <a href=\\\"#userinputsTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User Inputs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n  </dd>\\n  <dd>\\n    <a href=\\\"#zcustomTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom vars\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n  </dd>\\n</dl>\\n<div class=\\\"tabs-content vertical\\\">\\n  <div class=\\\"wizard_internal_tab active content\\\" id=\\\"netsshTab\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"columns large-12\\\">\\n        <input type=\\\"checkbox\\\" name=\\\"ssh_context\\\" id=\\\"ssh_context\\\" checked>\\n        <label for=\\\"ssh_context\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"  Add SSH contextualization\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add an ssh public key to the context. If the Public Key textarea is empty then the user variable SSH_PUBLIC_KEY will be used.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label for=\\\"ssh_public_key\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Public Key\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n        <textarea rows=\\\"4\\\" type=\\\"text\\\" id=\\\"ssh_public_key\\\" name=\\\"ssh_public_key\\\" />\\n      </div>\\n    </div>\\n    <br>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"columns large-12\\\">\\n        <input type=\\\"checkbox\\\" name=\\\"network_context\\\" id=\\\"network_context\\\" checked>\\n        <label class=\\\"inline\\\" for=\\\"network_context\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"  Add Network contextualization\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add network contextualization parameters. For each NIC defined in the NETWORK section, ETH$i_IP, ETH$i_NETWORK... parameters will be included in the CONTEXT section and will be available in the Virtual Machine\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"columns large-12\\\">\\n        <input type=\\\"checkbox\\\" name=\\\"token_context\\\" id=\\\"token_context\\\">\\n        <label class=\\\"inline\\\" for=\\\"token_context\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"  Add OneGate token\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add a file (token.txt) to the context contaning the token to push custom metrics to the VirtualMachine through OneGate\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"wizard_internal_tab content\\\" id=\\\"filesTab\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.contextFilesTableHTML || (depth0 != null ? depth0.contextFilesTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"contextFilesTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label for=\\\"FILES_DS\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"FILES_DS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Raw String for the FILE_DS attribute of the VM template, representing files that will be included in the contextualization image. Each file must be stored in a FILE_DS Datastore and must be of type CONTEXT\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"FILES_DS\\\" id=\\\"FILES_DS\\\" name=\\\"FILES_DS\\\" />\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label for=\\\"INIT_SCRIPTS\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Init scripts\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"If the VM uses the OpenNebula contextualization package the init.sh file is executed by default. When the init script added is not called init.sh or more than one init script is added, this list contains the scripts to run and the order. Ex. “init.sh users.sh mysql.sh”\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" wizard_field=\\\"FILES_DS\\\" id=\\\"INIT_SCRIPTS\\\" name=\\\"INIT_SCRIPTS\\\" />\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"wizard_internal_tab content\\\" id=\\\"zcustomTab\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.customTagsTableHTML || (depth0 != null ? depth0.customTagsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customTagsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n  </div>\\n  <div class=\\\"wizard_internal_tab content\\\" id=\\\"userinputsTab\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <table class=\\\"service_custom_attrs policies_table dataTable\\\">\\n          <thead>\\n            <tr>\\n              <th colspan=\\\"4\\\" style=\\\"font-size: 16px !important\\\"> <i class=\\\"fa fa-lg fa-fw fa-cogs off-color\\\"/>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User Inputs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"These attributes must be provided by the user when a new VM is intantatiated using each template. They will be included in the VM context\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </th>\\n            </tr>\\n          </thead>\\n          <thead>\\n            <tr>\\n              <th style=\\\"width:30%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th style=\\\"width:20%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th style=\\\"width:50%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th style=\\\"width:3%\\\"></th>\\n            </tr>\\n          </thead>\\n          <tbody></tbody>\\n          <tfoot>\\n            <tr>\\n              <td colspan=\\\"4\\\">\\n                <a href=\\\"#\\\" class=\\\"add_service_custom_attr button small large-12 secondary radius\\\">\\n                  <i class=\\\"fa fa-plus\\\"></i>\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add another attribute\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </a>\\n              </td>\\n            </tr>\\n          </tfoot>\\n        </table>\\n      </div>\\n    </div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/context/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/context',['require','sunstone-config','utils/locale','utils/tips','utils/wizard-fields','utils/template-utils','utils/custom-tags-table','tabs/files-tab/datatable','hbs!./context/html','./context/wizardTabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var WizardFields = require('utils/wizard-fields');\n  var TemplateUtils = require('utils/template-utils');\n  var CustomTagsTable = require('utils/custom-tags-table');\n  var FilesTable = require('tabs/files-tab/datatable')\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./context/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var WIZARD_TAB_ID = require('./context/wizardTabId');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function WizardTab() {\n    if (!Config.isTemplateCreationTabEnabled('context')) {\n      throw \"Wizard Tab not enabled\";\n    }\n\n    this.wizardTabId = WIZARD_TAB_ID;\n    this.icon = 'fa-folder';\n    this.title = Locale.tr(\"Context\");\n    this.classes = \"hypervisor only_kvm only_vmware only_xen only_vcenter\";\n\n    this.contextFilesTable = new FilesTable(this.wizardTabId + 'ContextTable', {\n      'select': true,\n      'selectOptions': {\n        'multiple_choice': true,\n        \"filter_fn\": function(file) { return file.TYPE == 5; } // CONTEXT\n      }});\n  }\n\n  WizardTab.prototype.constructor = WizardTab;\n  WizardTab.prototype.html = _html;\n  WizardTab.prototype.setup = _setup;\n  WizardTab.prototype.onShow = _onShow;\n  WizardTab.prototype.retrieve = _retrieve;\n  WizardTab.prototype.fill = _fill;\n  WizardTab.prototype.generateContextFiles = _generateContextFiles;\n\n  return WizardTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML({\n      'customTagsTableHTML': CustomTagsTable.html(),\n      'contextFilesTableHTML': this.contextFilesTable.dataTableHTML\n    });\n  }\n\n  function _onShow(context, panelForm) {\n  }\n\n  function _setup(context) {\n    var that = this;\n    Tips.setup(context);\n\n    CustomTagsTable.setup(context);\n\n    var selectOptions = {\n      'selectOptions': {\n        'select_callback': function(aData, options) {\n          that.generateContextFiles(context)\n        },\n        'unselect_callback': function(aData, options) {\n          that.generateContextFiles(context)\n        }\n      }\n    }\n\n    that.contextFilesTable.initialize(selectOptions);\n    that.contextFilesTable.refreshResourceTableSelect();\n\n    context.on(\"click\", \".add_service_custom_attr\", function() {\n      $(\".service_custom_attrs tbody\").append(\n        '<tr>' +\n          '<td>' +\n            '<input class=\"user_input_name\" type=\"text\" pattern=\"[\\\\w]+\"/>' +\n            '<small class=\"error\">' + Locale.tr(\"Only word characters are allowed\") + '</small>' +\n          '</td>' +\n          '<td>' +\n            '<select class=\"user_input_type\" >' +\n              '<option value=\"text\">' + Locale.tr(\"text\") + '</option>' +\n              '<option value=\"password\">' + Locale.tr(\"password\") + '</option>' +\n            '</select>' +\n          '</td>' +\n          '<td>' +\n            '<textarea class=\"user_input_description\"/>' +\n          '</td>' +\n          '<td>' +\n            '<a href=\"#\"><i class=\"fa fa-times-circle remove-tab\"></i></a>' +\n          '</td>' +\n        '</tr>');\n    })\n\n    context.on(\"click\", \".service_custom_attrs i.remove-tab\", function() {\n      var tr = $(this).closest('tr');\n      tr.remove();\n    });\n  }\n\n  function _retrieve(context) {\n    var templateJSON = {};\n    var contextJSON = WizardFields.retrieve(context);\n    $.extend(contextJSON, CustomTagsTable.retrieve(context));\n\n    if ($(\"#ssh_context\", context).is(\":checked\")) {\n      var public_key = $(\"#ssh_public_key\", context).val();\n      if (public_key) {\n        contextJSON[\"SSH_PUBLIC_KEY\"] = public_key;\n      } else {\n        contextJSON[\"SSH_PUBLIC_KEY\"] = '$USER[SSH_PUBLIC_KEY]';\n      }\n    };\n\n    if ($(\"#network_context\", context).is(\":checked\")) {\n      contextJSON[\"NETWORK\"] = \"YES\";\n    };\n\n    if ($(\"#token_context\", context).is(\":checked\")) {\n      contextJSON[\"TOKEN\"] = \"YES\";\n    };\n\n    var userInputsJSON = {};\n    $(\".service_custom_attrs tbody tr\", context).each(function() {\n      if ($(\".user_input_name\", $(this)).val()) {\n        var attr_name = $(\".user_input_name\", $(this)).val();\n        var attr_type = $(\".user_input_type\", $(this)).val();\n        var attr_desc = $(\".user_input_description\", $(this)).val();\n        userInputsJSON[attr_name] = \"M|\" + attr_type + \"|\" + attr_desc;\n        contextJSON[attr_name] = \"$\" + attr_name.toUpperCase();\n      }\n    });\n\n    if (!$.isEmptyObject(contextJSON)) { templateJSON['CONTEXT'] = contextJSON; };\n    if (!$.isEmptyObject(userInputsJSON)) { templateJSON['USER_INPUTS'] = userInputsJSON; };\n\n    return templateJSON;\n  }\n\n  function _fill(context, templateJSON) {\n    var that = this;\n    $(\"#ssh_context\", context).removeAttr('checked');\n    $(\"#network_context\", context).removeAttr('checked');\n\n    var contextJSON = templateJSON['CONTEXT'];\n    var userInputsJSON = templateJSON['USER_INPUTS'];\n    if (userInputsJSON) {\n      $.each(userInputsJSON, function(key, value) {\n        $(\".add_service_custom_attr\", context).trigger(\"click\");\n\n        var context = $(\".service_custom_attrs tbody tr\", context).last();\n        var parts = value.split(\"|\");\n        $(\".user_input_name\", context).val(key);\n        $(\".user_input_type\", context).val(parts[1]);\n        $(\".user_input_description\", context).val(TemplateUtils.escapeDoubleQuotes(TemplateUtils.htmlDecode(parts[2])));\n\n        if (contextJSON) {\n          delete contextJSON[key];\n        }\n      });\n\n      delete templateJSON['USER_INPUTS'];\n    }\n\n    if (contextJSON) {\n      var file_ds_regexp = /\\$FILE\\[IMAGE_ID=([0-9]+)+/g;\n      var net_regexp = /^NETWORK$/;;\n      var ssh_regexp = /^SSH_PUBLIC_KEY$/;\n      var token_regexp = /^TOKEN$/;\n      var publickey_regexp = /\\$USER\\[SSH_PUBLIC_KEY\\]/;\n\n      var net_flag = false;\n      var files = [];\n\n      var customTagsJSON = {};\n      $.each(contextJSON, function(key, value) {\n        if (ssh_regexp.test(key)) {\n          $(\"#ssh_context\", context).prop('checked', 'checked');\n\n          if (!publickey_regexp.test(value)) {\n            $(\"#ssh_public_key\", context).val(TemplateUtils.htmlDecode(value));\n          }\n        } else if (token_regexp.test(key)) {\n          $(\"#token_context\", context).prop('checked', 'checked');\n        } else if (net_regexp.test(key)) {\n          $(\"#network_context\", context).prop('checked', 'checked');\n        } else if (\"INIT_SCRIPTS\" == key) {\n          $(\"input#INIT_SCRIPTS\").val(TemplateUtils.htmlDecode(value));\n        } else if (\"FILES_DS\" == key) {\n          $('#FILES_DS', context).val(TemplateUtils.escapeDoubleQuotes(TemplateUtils.htmlDecode(contextJSON[\"FILES_DS\"])))\n          var files = [];\n          while (match = file_ds_regexp.exec(value)) {\n            files.push(match[1])\n          }\n\n          var selectedResources = {\n              ids : files\n            }\n          that.contextFilesTable.selectResourceTableSelect(selectedResources);\n        } else {\n          customTagsJSON[key] = value;\n        }\n      });\n\n      CustomTagsTable.fill(context, customTagsJSON);\n      \n      delete templateJSON['CONTEXT'];\n    }\n  }\n\n  function _generateContextFiles(context) {\n    var req_string=[];\n    var selected_files = this.contextFilesTable.retrieveResourceTableSelect();\n\n    $.each(selected_files, function(index, fileId) {\n      req_string.push(\"$FILE[IMAGE_ID=\"+ fileId +\"]\");\n    });\n\n    $('#FILES_DS', context).val(req_string.join(\" \"));\n  };\n});\n\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/context/wizardTabId',['require'],function(require){\n  return 'contextTab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/scheduling/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"<dl class=\\\"tabs vertical\\\" data-tab>\\n  <dd class=\\\"active\\\">\\n    <a href=\\\"#placementTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Placement\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n  </dd>\\n  <dd>\\n    <a href=\\\"#policyTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Policy\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n  </dd>\\n</dl>\\n<div class=\\\"tabs-content vertical\\\">\\n  <div class=\\\"requirements wizard_internal_tab active content\\\" id=\\\"placementTab\\\">\\n    <fieldset>\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Host Requirements\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns text-center\\\">\\n          <input type=\\\"radio\\\" id=\\\"hosts_req\\\" name=\\\"req_select\\\" value=\\\"host_select\\\">\\n          <label for=\\\"hosts_req\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select Hosts \", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <input type=\\\"radio\\\" id=\\\"clusters_req\\\"  name=\\\"req_select\\\" value=\\\"cluster_select\\\">\\n          <label for=\\\"clusters_req\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select Clusters \", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        </div>\\n      </div>\\n      <br>\\n      <div id=\\\"req_type\\\" class=\\\"host_select\\\" hidden>\\n      \";\n  stack1 = ((helper = (helper = helpers.hostsTableSelectHTML || (depth0 != null ? depth0.hostsTableSelectHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"hostsTableSelectHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n      </div>\\n      <div id=\\\"req_type\\\" class=\\\"cluster_select hidden\\\">\\n      \";\n  stack1 = ((helper = (helper = helpers.clustersTableSelectHTML || (depth0 != null ? depth0.clustersTableSelectHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"clustersTableSelectHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      </div>\\n      <br>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"SCHED_REQUIREMENTS\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Expression\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Boolean expression that rules out provisioning hosts from list of machines suitable to run this VM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".\\n            </span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"SCHED_REQUIREMENTS\\\" id=\\\"SCHED_REQUIREMENTS\\\" name=\\\"requirements\\\" />\\n        </div>\\n      </div>\\n    </fieldset>\\n    <fieldset class=\\\"hypervisor only_kvm only_vmware only_xen\\\">\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastore Requirements\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"SCHED_DS_REQUIREMENTS\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Expression\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Boolean expression that rules out entries from the pool of datastores suitable to run this VM.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".\\n            </span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"SCHED_DS_REQUIREMENTS\\\" id=\\\"SCHED_DS_REQUIREMENTS\\\" name=\\\"requirements\\\" />\\n        </div>\\n      </div>\\n    </fieldset>\\n  </div>\\n  <div id=\\\"policyTab\\\" class=\\\"wizard_internal_tab content\\\">\\n    <fieldset class=\\\"host_rank\\\">\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Host Rank\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns text-center\\\">\\n          <input type=\\\"radio\\\" id=\\\"packingRadio\\\" name=\\\"rank_select\\\" value=\\\"RUNNING_VMS\\\">\\n          <label for=\\\"packingRadio\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Packing\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Pack the VMs in the cluster nodes to reduce VM fragmentation\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n          <input type=\\\"radio\\\"  id=\\\"stripingRadio\\\" name=\\\"rank_select\\\" value=\\\"-RUNNING_VMS\\\">\\n          <label for=\\\"stripingRadio\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Stripping\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Spread the VMs in the cluster nodes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input type=\\\"radio\\\"  id=\\\"loadawareRadio\\\" name=\\\"rank_select\\\" value=\\\"FREE_CPU\\\">\\n          <label for=\\\"loadawareRadio\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Load-aware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Maximize the resources available to VMs in a node\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n        </div>\\n      </div>\\n      <br>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"SCHED_RANK\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Expression\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"This field sets which attribute will be used to sort the suitable hosts for this VM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".\\n            </span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"SCHED_RANK\\\" id=\\\"SCHED_RANK\\\" name=\\\"RANK\\\" />\\n        </div>\\n      </div>\\n    </fieldset>\\n    <fieldset class=\\\"ds_rank hypervisor only_kvm only_vmware only_xen\\\">\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastore Rank\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns text-center\\\">\\n          <input type=\\\"radio\\\" id=\\\"packingDSRadio\\\" name=\\\"ds_rank_select\\\" value=\\\"-FREE_MB\\\">\\n          <label for=\\\"packingDSRadio\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Packing\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Tries to optimize storage usage by selecting the DS with less free space\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n          <input type=\\\"radio\\\"  id=\\\"stripingDSRadio\\\" name=\\\"ds_rank_select\\\" value=\\\"FREE_MB\\\">\\n          <label for=\\\"stripingDSRadio\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Stripping\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Striping. Tries to optimize I/O by distributing the VMs across datastores.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </label>\\n        </div>\\n      </div>\\n      <br>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"SCHED_DS_RANK\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Expression\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"This field sets which attribute will be used to sort the suitable datastores for this VM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".\\n            </span>\\n          </label>\\n          <input type=\\\"text\\\" wizard_field=\\\"SCHED_DS_RANK\\\" id=\\\"SCHED_DS_RANK\\\" name=\\\"RANK\\\" />\\n        </div>\\n      </div>\\n    </fieldset>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/scheduling/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/scheduling',['require','foundation.tab','sunstone-config','utils/locale','utils/tips','utils/wizard-fields','utils/template-utils','tabs/hosts-tab/datatable','tabs/clusters-tab/datatable','hbs!./scheduling/html','./scheduling/wizardTabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  require('foundation.tab');\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var WizardFields = require('utils/wizard-fields');\n  var TemplateUtils = require('utils/template-utils');\n  var HostsTable = require('tabs/hosts-tab/datatable');\n  var ClustersTable = require('tabs/clusters-tab/datatable');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./scheduling/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var WIZARD_TAB_ID = require('./scheduling/wizardTabId');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function WizardTab() {\n    if (!Config.isTemplateCreationTabEnabled('scheduling')) {\n      throw \"Wizard Tab not enabled\";\n    }\n\n    this.wizardTabId = WIZARD_TAB_ID;\n    this.icon = 'fa-sitemap';\n    this.title = Locale.tr(\"Scheduling\");\n\n    var options = {\n      'select': true,\n      'selectOptions': {\n        'multiple_choice': true\n      }\n    }\n    this.hostsTable = new HostsTable(this.wizardTabId + 'HostsTable', options);\n    this.clustersTable = new ClustersTable(this.wizardTabId + 'ClustersTable', options);\n  }\n\n  WizardTab.prototype.constructor = WizardTab;\n  WizardTab.prototype.html = _html;\n  WizardTab.prototype.setup = _setup;\n  WizardTab.prototype.onShow = _onShow;\n  WizardTab.prototype.retrieve = _retrieve;\n  WizardTab.prototype.fill = _fill;\n  WizardTab.prototype.generateRequirements = _generateRequirements;\n\n  return WizardTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML({\n      'hostsTableSelectHTML': this.hostsTable.dataTableHTML,\n      'clustersTableSelectHTML': this.clustersTable.dataTableHTML\n    });\n  }\n\n  function _onShow(context, panelForm) {\n  }\n\n  function _setup(context) {\n    var  that = this;\n    Tips.setup(context);\n    context.foundation('reflow', 'tab');\n\n    context.on(\"change\", \"input[name='req_select']\", function() {\n      if ($(\"input[name='req_select']:checked\").val() == \"host_select\") {\n        $(\"div.host_select\",    context).toggle();\n        $(\"div.cluster_select\", context).hide();\n      } else {\n        $(\"div.host_select\",    context).hide();\n        $(\"div.cluster_select\", context).toggle();\n      }\n    });\n\n    context.on(\"change\", \"input[name='rank_select']\", function() {\n      $(\"#SCHED_RANK\", context).val(this.value);\n    });\n\n    context.on(\"change\", \"input[name='ds_rank_select']\", function() {\n      $(\"#SCHED_DS_RANK\", context).val(this.value);\n    });\n\n    var selectOptions = {\n      'selectOptions': {\n        'select_callback': function(aData, options) {\n          that.generateRequirements(context)\n        },\n        'unselect_callback': function(aData, options) {\n          that.generateRequirements(context)\n        }\n      }\n    }\n\n    that.hostsTable.initialize(selectOptions);\n    that.hostsTable.refreshResourceTableSelect();\n    that.clustersTable.initialize(selectOptions);\n    that.clustersTable.refreshResourceTableSelect();\n  }\n\n  function _retrieve(context) {\n    return WizardFields.retrieve(context);\n  }\n\n  function _fill(context, templateJSON) {\n    var reqJSON = templateJSON['SCHED_REQUIREMENTS'];\n    if (reqJSON) {\n      var req = TemplateUtils.escapeDoubleQuotes(reqJSON);\n\n      var host_id_regexp = /(\\s|\\||\\b)ID=\\\\\"([0-9]+)\\\\\"/g;\n      var cluster_id_regexp = /CLUSTER_ID=\\\\\"([0-9]+)\\\\\"/g;\n\n      var hosts = [];\n      while (match = host_id_regexp.exec(req)) {\n          hosts.push(match[2])\n      }\n\n      var clusters = [];\n      while (match = cluster_id_regexp.exec(req)) {\n          clusters.push(match[1])\n      }\n\n      var selectedResources = {\n          ids : hosts\n        }\n\n      this.hostsTable.selectResourceTableSelect(selectedResources);\n\n\n      var selectedResources = {\n          ids : clusters\n        }\n\n      this.clustersTable.selectResourceTableSelect(selectedResources);\n\n      $('input#SCHED_REQUIREMENTS', context).val(TemplateUtils.htmlDecode(req));\n      delete templateJSON['SCHED_REQUIREMENTS'];\n    }\n\n    var dsReqJSON = templateJSON['SCHED_DS_REQUIREMENTS'];\n    if (dsReqJSON) {\n      var dsReq = TemplateUtils.escapeDoubleQuotes(dsReqJSON);\n      $('input#SCHED_DS_REQUIREMENTS', context).val(TemplateUtils.htmlDecode(dsReq));\n      delete templateJSON['SCHED_DS_REQUIREMENTS'];\n    }\n\n\n    var rankJSON = templateJSON[\"SCHED_RANK\"];\n    if (rankJSON) {\n        var striping_regexp = /^-RUNNING_VMS$/;\n        var packing_regexp = /^RUNNING_VMS$/;\n        var loadaware_regexp = /^FREE_CPU$/;\n\n        if (striping_regexp.test(rankJSON)) {\n            $('input[name=\"rank_select\"]#stripingRadio', context).click()\n        }\n        else if (packing_regexp.test(rankJSON)) {\n            $('input[name=\"rank_select\"]#packingRadio', context).click()\n        }\n        else if (loadaware_regexp.test(rankJSON)) {\n            $('input[name=\"rank_select\"]#loadawareRadio', context).click()\n        }\n\n        $('input#SCHED_RANK', context).val(TemplateUtils.htmlDecode(rankJSON));\n\n        delete templateJSON[\"SCHED_RANK\"];\n    }\n\n    var dsRankJSON = templateJSON[\"SCHED_DS_RANK\"];\n    if (dsRankJSON) {\n        var striping_regexp = /^FREE_MB$/;\n        var packing_regexp = /^-FREE_MB$/;\n\n        if (striping_regexp.test(dsRankJSON)) {\n            $('input[name=\"ds_rank_select\"]#stripingDSRadio', context).click()\n        }\n        else if (packing_regexp.test(dsRankJSON)) {\n            $('input[name=\"ds_rank_select\"]#packingDSRadio', context).click()\n        }\n\n        $('input#SCHED_DS_RANK', context).val(TemplateUtils.htmlDecode(dsRankJSON));\n\n        delete templateJSON[\"SCHED_DS_RANK\"];\n    }\n  }\n\n  function _generateRequirements(context) {\n      var req_string=[];\n      var selected_hosts = this.hostsTable.retrieveResourceTableSelect();\n      var selected_clusters = this.clustersTable.retrieveResourceTableSelect();\n\n      $.each(selected_hosts, function(index, hostId) {\n        req_string.push('ID=\\\\\"'+hostId+'\\\\\"');\n      });\n\n      $.each(selected_clusters, function(index, clusterId) {\n        req_string.push('CLUSTER_ID=\\\\\"'+clusterId+'\\\\\"');\n      });\n\n      $('#SCHED_REQUIREMENTS', context).val(req_string.join(\" | \"));\n  };\n});\n\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/scheduling/wizardTabId',['require'],function(require){\n  return 'schedulingTab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/hybrid/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<dl class=\\\"tabs vertical\\\" id=\\\"template_create_hybrid_tabs\\\" data-tab>\\n  <dt class=\\\"text-center\\\">\\n    <a href=\\\"\\\" class=\\\"button tiny radius\\\" id=\\\"tf_btn_hybrid\\\">\\n      <span class=\\\"fa fa-plus\\\"></span>\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add another provider\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n    </a>\\n  </dt>\\n</dl>\\n<div class=\\\"tabs-content vertical\\\" id=\\\"template_create_hybrid_tabs_content\\\"></div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/hybrid/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/hybrid',['require','foundation.tab','sunstone-config','utils/locale','utils/tips','utils/wizard-fields','hbs!./hybrid/html','./hybrid/wizardTabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  require('foundation.tab');\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var WizardFields = require('utils/wizard-fields');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./hybrid/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var WIZARD_TAB_ID = require('./hybrid/wizardTabId');\n  var HYBRID_INPUTS = {\n    ec2 : [\n      {\n        name: \"AKI\",\n        label: Locale.tr(\"AKI\"),\n        tooltip: Locale.tr(\"The ID of the kernel with which to launch the instance.\")\n      },\n      {\n        name: \"AMI\",\n        label: Locale.tr(\"AMI\"),\n        tooltip: Locale.tr(\"Unique ID of a machine image, returned by a call to ec2-describe-images.\"),\n        required: true\n      },\n      {\n        name: \"AVAILABILITYZONE\",\n        label: Locale.tr(\"Availability Zone\"),\n        tooltip: Locale.tr(\"The Availability Zone in which to run the instance.\")\n      },\n      {\n        name: \"BLOCKDEVICEMAPPING\",\n        label: Locale.tr(\"Block Device Mapping\"),\n        tooltip: Locale.tr(\"The block device mapping for the instance. More than one can be specified in a space-separated list. Check the –block-device-mapping option of the EC2 CLI Reference for the syntax\")\n      },\n      {\n        name: \"CLIENTTOKEN\",\n        label: Locale.tr(\"Client Token\"),\n        tooltip: Locale.tr(\"Unique, case-sensitive identifier you provide to ensure idempotency of the request.\")\n      },\n      {\n        name: \"EBS_OPTIMIZED\",\n        label: Locale.tr(\"EBS Optimized\"),\n        tooltip: Locale.tr(\"Obtain a better I/O throughput for VMs with EBS provisioned volumes\")\n      },\n      {\n        name: \"ELASTICIP\",\n        label: Locale.tr(\"Elastic IP\"),\n        tooltip: Locale.tr(\"EC2 Elastic IP address to assign to the instance. This parameter is passed to the command ec2-associate-address -i i-0041230 elasticip.\")\n      },\n      {\n        name: \"HOST\",\n        label: Locale.tr(\"OpenNebula Host\"),\n        tooltip: Locale.tr(\"Defines which OpenNebula host will use this template\")\n      },\n      {\n        name: \"INSTANCETYPE\",\n        label: Locale.tr(\"Instance Type\"),\n        tooltip: Locale.tr(\"Specifies the instance type.\"),\n        required: true\n      },\n      {\n        name: \"KEYPAIR\",\n        label: Locale.tr(\"Keypair\"),\n        tooltip: Locale.tr(\"The name of the key pair, later will be used to execute commands like ssh -i id_keypair or scp -i id_keypair\")\n      },\n      {\n        name: \"LICENSEPOOL\",\n        label: Locale.tr(\"License Pool\"),\n        tooltip: Locale.tr(\"Name of the license pool.\")\n      },\n      {\n        name: \"PLACEMENTGROUP\",\n        label: Locale.tr(\"Placement Group\"),\n        tooltip: Locale.tr(\"Name of the placement group.\")\n      },\n      {\n        name: \"PRIVATEIP\",\n        label: Locale.tr(\"Private IP\"),\n        tooltip: Locale.tr(\"If you’re using Amazon Virtual Private Cloud, you can optionally use this parameter to assign the instance a specific available IP address from the subnet.\")\n      },\n      {\n        name: \"RAMDISK\",\n        label: Locale.tr(\"Ramdisk\"),\n        tooltip: Locale.tr(\"The ID of the RAM disk to select.\")\n      },\n      {\n        name: \"SECURITYGROUPS\",\n        label: Locale.tr(\"Security Groups\"),\n        tooltip: Locale.tr(\"Name of the security group. You can specify more than one security group (comma separated).\")\n      },\n      {\n        name: \"SUBNETID\",\n        label: Locale.tr(\"Subnet ID\"),\n        tooltip: Locale.tr(\"If you’re using Amazon Virtual Private Cloud, this specifies the ID of the subnet you want to launch the instance into. This parameter is also passed to the command ec2-associate-address -i i-0041230 -a elasticip.\")\n      },\n      {\n        name: \"TAGS\",\n        label: Locale.tr(\"Tags\"),\n        tooltip: Locale.tr(\"Key and optional value of the tag, separated by an equals sign ( = ).You can specify more than one tag (comma separated).\")\n      },\n      {\n        name: \"TENANCY\",\n        label: Locale.tr(\"Tenancy\"),\n        tooltip: Locale.tr(\"The tenancy of the instance you want to launch.\")\n      },\n      {\n        name: \"USERDATA\",\n        label: Locale.tr(\"User Data\"),\n        tooltip: Locale.tr(\"Specifies Base64-encoded MIME user data to be made available to the instance(s) in this reservation.\")\n      }\n    ],\n    softlayer: [\n      {\n        name: \"BLOCKDEVICETEMPLATE\",\n        label: Locale.tr(\"Block Device Template\"),\n        tooltip: Locale.tr(\"A global identifier for the template to be used to provision the computing instance\")\n      },\n      {\n        name: \"BLOCKDEVICE\",\n        label: Locale.tr(\"Block Device Size\"),\n        tooltip: Locale.tr(\"Size of the block device size to be presented to the VM\")\n      },\n      {\n        name: \"DATACENTER\",\n        label: Locale.tr(\"Datacenter\"),\n        tooltip: Locale.tr(\"Specifies which datacenter the instance is to be provisioned in\")\n      },\n      {\n        name: \"DEDICATEDHOST\",\n        label: Locale.tr(\"Dedicated Host\"),\n        tooltip: Locale.tr(\"Specifies whether or not the instance must only run on hosts with instances from the same account\")\n      },\n      {\n        name: \"DOMAIN\",\n        label: Locale.tr(\"Domain\"),\n        tooltip: Locale.tr(\"Domain for the computing instance\"),\n        required: true\n      },\n      {\n        name: \"HOSTNAME\",\n        label: Locale.tr(\"Hostname\"),\n        tooltip: Locale.tr(\"Hostname for the computing instance\"),\n        required: true\n      },\n      {\n        name: \"HOURLYBILLING\",\n        label: Locale.tr(\"Hourly Billing\"),\n        tooltip: Locale.tr(\"Specifies the billing type for the instance . When true the computing instance will be billed on hourly usage, otherwise it will be billed on a monthly basis\"),\n        required: true\n      },\n      {\n        name: \"INSTANCE_TYPE\",\n        label: Locale.tr(\"Instance Type\"),\n        tooltip: Locale.tr(\"Specifies the capacity of the VM in terms of CPU and memory. If both STARTCPUS and MAXMEMORY are used, then this parameter is disregarded\"),\n        required: true\n      },\n      {\n        name: \"LOCALDISK\",\n        label: Locale.tr(\"Local Disk\"),\n        tooltip: Locale.tr(\"Name of the placement group. When true the disks for the computing instance will be provisioned on the host which it runs, otherwise SAN disks will be provisioned\"),\n        required: true\n      },\n      {\n        name: \"MAXMEMORY\",\n        label: Locale.tr(\"Max Memory\"),\n        tooltip: Locale.tr(\"The amount of memory to allocate in megabytes\")\n      },\n      {\n        name: \"NETWORKCOMPONENTSMAXSPEED\",\n        label: Locale.tr(\"Network Components Max Speed\"),\n        tooltip: Locale.tr(\"Specifies the connection speed for the instance's network components\")\n      },\n      {\n        name: \"OPERATINGSYSTEM\",\n        label: Locale.tr(\"Operating System\"),\n        tooltip: Locale.tr(\"An identifier for the operating system to provision the computing instance with. A non exhaustive list of identifiers can be found here\"),\n        required: true\n      },\n      {\n        name: \"POSTSCRIPT\",\n        label: Locale.tr(\"Postscript\"),\n        tooltip: Locale.tr(\"Specifies the uri location of the script to be downloaded and run after installation is complete\")\n      },\n      {\n        name: \"PRIVATENETWORKONLY\",\n        label: Locale.tr(\"Private Netwrok Only\"),\n        tooltip: Locale.tr(\"Specifies whether or not the instance only has access to the private network  (ie, if it is going to have a public IP interface or not)\")\n      },\n      {\n        name: \"PRIMARYNETWORKVLAN\",\n        label: Locale.tr(\"Primary Network VLAN\"),\n        tooltip: Locale.tr(\"Specifies the network vlan which is to be used for the frontend interface of the computing instance\")\n      },\n      {\n        name: \"PRIMARYBACKENDNETWORKVLAN\",\n        label: Locale.tr(\"Primary Backed Network VLAN\"),\n        tooltip: Locale.tr(\"Specifies the network vlan which is to be used for the backend interface of the computing instance\")\n      },\n      {\n        name: \"SSHKEYS\",\n        label: Locale.tr(\"SSH Keys\"),\n        tooltip: Locale.tr(\"SSH keys to install on the computing instance upon provisioning\")\n      },\n      {\n        name: \"STARTCPUS\",\n        label: Locale.tr(\"Start CPUs\"),\n        tooltip: Locale.tr(\"The number of CPU cores to allocate to the VM\")\n      },\n      {\n        name: \"USERDATA\",\n        label: Locale.tr(\"User Data\"),\n        tooltip: Locale.tr(\"Arbitrary data to be made available to the computing instance\")\n      }\n    ],\n    azure: [\n      {\n        name: \"AFFINITY_GROUP\",\n        label: Locale.tr(\"Affinity Group\"),\n        tooltip: Locale.tr(\"Affinity groups allow you to group your Azure services to optimize performance. All services and VMs within an affinity group will be located in the same region\") \n      },\n      {\n        name: \"AVAILABILITY_SET\",\n        label: Locale.tr(\"Availability Set\"),\n        tooltip: Locale.tr(\"Name of the availability set to which this VM will belong\")\n      },\n      {\n        name: \"CLOUD_SERVICE\",\n        label: Locale.tr(\"Cloud Service\"),\n        tooltip: Locale.tr(\"Specifies the name of the cloud service where this VM will be linked. Defaults to 'OpennebulaDefaultCloudServiceName'\")\n      },\n      {\n        name: \"IMAGE\",\n        label: Locale.tr(\"Image\"),\n        tooltip: Locale.tr(\"Specifies the base OS of the VM.\"),\n        required: true\n      },\n      {\n        name: \"INSTANCE_TYPE\",\n        label: Locale.tr(\"Instance Type\"),\n        tooltip: Locale.tr(\"Specifies the capacity of the VM in terms of CPU and memory\"),\n        required: true\n      },\n      {\n        name: \"LOCATION\",\n        label: Locale.tr(\"Location\"),\n        tooltip: Locale.tr(\"Azure datacenter where the VM will be sent. See /etc/one/az_driver.conf for possible values (under region_name)\"),\n        required: true\n      },\n      {\n        name: \"SSHPORT\",\n        label: Locale.tr(\"SSH Port\"),\n        tooltip: Locale.tr(\"Port where the VMs ssh server will listen on\")\n      },\n      {\n        name: \"STORAGE_ACCOUNT\",\n        label: Locale.tr(\"Storage Account\"),\n        tooltip: Locale.tr(\"Specify the storage account where this VM will belong\")\n      },\n      {\n        name: \"SUBNET\",\n        label: Locale.tr(\"Subnet\"),\n        tooltip: Locale.tr(\"Name of the particular Subnet where this VM will be connected to\")\n      },\n      {\n        name: \"TCP_ENDPOINTS\",\n        label: Locale.tr(\"TCP Endpoints\"),\n        tooltip: Locale.tr(\"Comma-separated list of TCP ports to be accesible from the public internet to this VM\")\n      },\n      {\n        name: \"VIRTUAL_NETWORK_NAME\",\n        label: Locale.tr(\"Virtual Network Name\"),\n        tooltip: Locale.tr(\"Name of the virtual network to which this VM will be connected\")\n      },\n      {\n        name: \"VM_USER\",\n        label: Locale.tr(\"VM User\"),\n        tooltip: Locale.tr(\"If the selected IMAGE is prepared for Azure provisioning, a username can be specified here to access the VM once booted\"),\n        required: true\n      },\n      {\n        name: \"VM_PASSWORD\",\n        label: Locale.tr(\"VM Password\"),\n        tooltip: Locale.tr(\"Password for VM_USER\"),\n        required: true\n      },\n      {\n        name: \"WIN_RM\",\n        label: Locale.tr(\"Win RM\"),\n        tooltip: Locale.tr(\"Comma-separated list of possible protocols to access this Windows VM\")\n      }\n    ]\n  }\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function WizardTab() {\n    if (!Config.isTemplateCreationTabEnabled('hybrid')) {\n      throw \"Wizard Tab not enabled\";\n    }\n\n    this.wizardTabId = WIZARD_TAB_ID;\n    this.icon = 'fa-cloud';\n    this.title = Locale.tr(\"Hybrid\");\n  }\n\n  WizardTab.prototype.constructor = WizardTab;\n  WizardTab.prototype.html = _html;\n  WizardTab.prototype.setup = _setup;\n  WizardTab.prototype.onShow = _onShow;\n  WizardTab.prototype.retrieve = _retrieve;\n  WizardTab.prototype.fill = _fill;\n  WizardTab.prototype.addProviderTab = _addProviderTab;\n  WizardTab.prototype.fillProviderTab = _fillProviderTab;\n\n  return WizardTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML();\n  }\n\n  function _onShow(context, panelForm) {\n  }\n\n  function _setup(context) {\n    var that = this;\n    context.foundation('reflow', 'tab');\n    that.numberOfProviders = 0;\n\n    // close icon: removing the tab on click\n    context.on(\"click\", \"i.remove-tab\", function() {\n      var target = $(this).parent().attr(\"href\");\n      var dd = $(this).closest('dd');\n      var dl = $(this).closest('dl');\n      var content = $(target);\n\n      dd.remove();\n      content.remove();\n\n      if (dd.attr(\"class\") == 'active') {\n        $('a', dl.children('dd').last()).click();\n      }\n\n      $(\"dl#template_create_hybrid_tabs dd\", context).each(function(index) {\n          $(\"a\", this).html(Locale.tr(\"Provider\") + ' ' + index + \" <i class='fa fa-times-circle remove-tab'></i>\");\n        })\n    });\n\n    context.on(\"click\", \"#tf_btn_hybrid\", function() {\n      that.addProviderTab(that.numberOfProviders, context);\n      that.numberOfProviders++;\n      return false;\n    });\n\n    $(\"#tf_btn_hybrid\", context).trigger(\"click\");\n  }\n\n  function _retrieve(context) {\n    var templateJSON = {};\n    var publicCloudJSON = [];\n    var ec2JSON = [];\n\n    /* TODO Check if vCenter is defined\n    if ($.isEmptyObject(vm_json[\"PUBLIC_CLOUD\"])) {\n      vm_json[\"PUBLIC_CLOUD\"] = [];\n    }*/\n\n    if ($(\"[wizard_field='HYPERVISOR']:checked\").val() == 'vcenter') {\n      publicCloudJSON.push({\n        'TYPE': 'vcenter',\n        'VM_TEMPLATE': $(\"#vcenter_template_uuid\").val()\n      });\n    }\n\n    $('.provider', context).each(function() {\n      var hash  = WizardFields.retrieve(this);\n      if (!$.isEmptyObject(hash)) {\n        var hybrid = $(\"input.hybridRadio:checked\", this).val();\n        switch (hybrid) {\n          case 'ec2':\n            ec2JSON.push(hash);\n            break;\n          case 'softlayer':\n            hash[\"TYPE\"] = hybrid.toUpperCase();\n            publicCloudJSON.push(hash);\n            break;\n          case 'azure':\n            hash[\"TYPE\"] = hybrid.toUpperCase();\n            publicCloudJSON.push(hash);\n            break;\n        }\n      };\n    });\n\n    if (!$.isEmptyObject(publicCloudJSON)) { templateJSON['PUBLIC_CLOUD'] = publicCloudJSON; };\n    if (!$.isEmptyObject(ec2JSON)) { templateJSON['EC2'] = ec2JSON; };\n\n    return templateJSON;\n  }\n\n  function _fill(context, templateJSON) {\n    var that = this;\n    var clickButton = false;\n    if (templateJSON.PUBLIC_CLOUD) {\n      var providers = templateJSON.PUBLIC_CLOUD\n\n      if (providers instanceof Array) {\n        $.each(providers, function(index, provider) {\n          clickButton = index > 0;\n          that.fillProviderTab(context, provider, provider.TYPE.toLowerCase(), clickButton);\n        });\n      } else if (providers instanceof Object) {\n        that.fillProviderTab(context, providers, providers.TYPE.toLowerCase(), clickButton);\n        clickButton = true;\n      }\n\n      delete templateJSON.PUBLIC_CLOUD\n    }\n\n    if (templateJSON.EC2) {\n      var providers = templateJSON.EC2\n\n      if (providers instanceof Array) {\n        $.each(providers, function(index, provider) {\n          clickButton = clickButton || index > 0;\n          that.fillProviderTab(context, provider, \"ec2\", clickButton);\n        });\n      } else if (providers instanceof Object) {\n        that.fillProviderTab(context, providers, \"ec2\", clickButton);\n      }\n\n      delete templateJSON.EC2\n    }\n  }\n\n  function _addProviderTab(provider_id, context) {\n    var htmlId  = 'provider' + provider_id;\n\n    // Append the new div containing the tab and add the tab to the list\n    var html_tab_content = '<div id=\"' + htmlId + 'Tab\" class=\"provider wizard_internal_tab content\">' +\n      '<div class=\"row\">' +\n        '<div class=\"large-12 columns\">' +\n          '<label>' + Locale.tr(\"Hybrid Cloud\") + '</label>' +\n          '<input type=\"radio\" class=\"hybridRadio\" name=\"hybrid' + htmlId + '\" value=\"ec2\" id=\"amazonRadio' + htmlId + '\"><label for=\"amazonRadio' + htmlId + '\">Amazon EC2</label>' +\n          '<input type=\"radio\" class=\"hybridRadio\" name=\"hybrid' + htmlId + '\" value=\"softlayer\" id=\"softlayerRadio' + htmlId + '\"><label for=\"softlayerRadio' + htmlId + '\">IBM Softlayer</label>' +\n          '<input type=\"radio\" class=\"hybridRadio\" name=\"hybrid' + htmlId + '\" value=\"azure\" id=\"azureRadio' + htmlId + '\"><label for=\"azureRadio' + htmlId + '\">Microsoft Azure</label>' +\n        '</div>' +\n      '</div>' +\n      '<div class=\"row hybrid_inputs vm_param\">' +\n      '</div>' +\n    '</div>'\n    $(html_tab_content).appendTo($(\"#template_create_hybrid_tabs_content\", context));\n\n    var a = $(\"<dd>\\\n        <a id='provider_tab\" + htmlId + \"' href='#\" + htmlId + \"Tab'>\" + Locale.tr(\"PROVIDER\") + \"</a>\\\n      </dd>\").appendTo($(\"dl#template_create_hybrid_tabs\", context));\n\n    $(\"dl#template_create_hybrid_tabs dd\", context).each(function(index) {\n        $(\"a\", this).html(Locale.tr(\"Provider\") + ' ' + index + \" <i class='fa fa-times-circle remove-tab'></i>\");\n      })\n\n    $(\"a\", a).trigger(\"click\");\n\n    var providerSection = $('#' + htmlId + 'Tab', context);\n\n    providerSection.on(\"change\", \"input.hybridRadio\", function() {\n        $(\".hybrid_inputs\", providerSection).html(\"\");\n\n        var required_str = \"\";\n        var not_required_str = \"\";\n\n        $.each(HYBRID_INPUTS[this.value], function(index, obj) {\n          if (obj.required) {\n            required_str += '<div class=\"large-6 columns\">' +\n              '<label>' +\n                obj.label +\n                '<span class=\"tip\">' +\n                  obj.tooltip +\n                '</span>' +\n              '</label>' +\n              '<input wizard_field=\"' + obj.name + '\" type=\"text\" id=\"' + obj.name + '\">' +\n            '</div>'\n          } else {\n            not_required_str += '<div class=\"large-6 columns\">' +\n              '<label>' +\n                obj.label +\n                '<span class=\"tip\">' +\n                  obj.tooltip +\n                '</span>' +\n              '</label>' +\n              '<input wizard_field=\"' + obj.name + '\" type=\"text\" id=\"' + obj.name + '\">' +\n            '</div>'\n          }\n        });\n\n        $(\".hybrid_inputs\", providerSection).append(\n          required_str +\n          '<br><hr><br>' +\n          not_required_str)\n\n        Tips.setup($(\".hybrid_inputs\", providerSection));\n      })\n  }\n\n  function _fillProviderTab(context, provider, providerType, clickButton) {\n    var that = this;\n    if (providerType == \"vcenter\") {\n      $(\"#vcenter_template_uuid\").val(provider[\"VM_TEMPLATE\"])\n    } else {\n      if (clickButton) {\n        $(\"#tf_btn_hybrid\", context).trigger(\"click\");\n      }\n\n      var providerContext = $(\".provider\", context).last();\n      $(\"input.hybridRadio[value='\" + providerType + \"']\", providerContext).trigger(\"click\");\n      WizardFields.fill(providerContext, provider);\n    }\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/templates-tab/form-panels/create/wizard-tabs/other/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <fieldset class=\\\"hypervisor only_xen only_kvm only_vmware\\\">\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"RAW data\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-4 columns\\\">\\n          <label for=\\\"raw_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"TYPE\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <select id=\\\"raw_type\\\" name=\\\"raw_type\\\">\\n            <option value=\\\"\\\"></option>\\n            <option value=\\\"kvm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"kvm\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"xen\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"xen\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"vmware\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"vmware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"large-8 columns\\\">\\n          <label class=\\\"\\\" for=\\\"raw_data\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"DATA\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Raw data to be passed directly to the hypervisor\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".</span>\\n          </label>\\n          <textarea rows=\\\"2\\\" type=\\\"text\\\" id=\\\"raw_data\\\" name=\\\"raw_data\\\" />\\n        </div>\\n      </div>\\n      <div id=\\\"data_vmx_div\\\" class=\\\"row hidden\\\">\\n        <div class=\\\"large-4 columns\\\"></div>\\n        <div class=\\\"large-8 columns\\\">\\n          <label class=\\\"\\\" for=\\\"raw_data_vmx\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"DATA_VMX\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Raw data to be added directly to the .vmx file.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".</span>\\n          </label>\\n          <textarea rows=\\\"2\\\" type=\\\"text\\\" id=\\\"raw_data_vmx\\\" name=\\\"raw_data_vmx\\\" />\\n        </div>\\n      </div>\\n    </fieldset>\\n    <fieldset>\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom Tags\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      \";\n  stack1 = ((helper = (helper = helpers.customTagsTableHTML || (depth0 != null ? depth0.customTagsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customTagsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    </fieldset>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/templates-tab/form-panels/create/wizard-tabs/other/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/templates-tab/form-panels/create/wizard-tabs/other',['require','sunstone-config','utils/locale','utils/tips','utils/wizard-fields','utils/template-utils','utils/custom-tags-table','hbs!./other/html','./other/wizardTabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Config = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var WizardFields = require('utils/wizard-fields');\n  var TemplateUtils = require('utils/template-utils');\n  var CustomTagsTable = require('utils/custom-tags-table');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./other/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var WIZARD_TAB_ID = require('./other/wizardTabId');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function WizardTab() {\n    if (!Config.isTemplateCreationTabEnabled('other')) {\n      throw \"Wizard Tab not enabled\";\n    }\n\n    this.wizardTabId = WIZARD_TAB_ID;\n    this.icon = 'fa-ellipsis-h';\n    this.title = Locale.tr(\"Other\");\n  }\n\n  WizardTab.prototype.constructor = WizardTab;\n  WizardTab.prototype.html = _html;\n  WizardTab.prototype.setup = _setup;\n  WizardTab.prototype.onShow = _onShow;\n  WizardTab.prototype.retrieve = _retrieve;\n  WizardTab.prototype.fill = _fill;\n\n  return WizardTab;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML({\n      'customTagsTableHTML': CustomTagsTable.html()\n    });\n  }\n\n  function _onShow(context, panelForm) {\n  }\n\n  function _setup(context) {\n    Tips.setup(context);\n\n    CustomTagsTable.setup(context);\n\n    context.on(\"change\", \"#raw_type\", function() {\n      var choice_str = $(this).val();\n      switch (choice_str) {\n      case 'vmware':\n        $(\"#data_vmx_div\", context).show();\n        break;\n      default:\n        $(\"#data_vmx_div\", context).hide();\n      }\n    });\n  }\n\n  function _retrieve(context) {\n    var templateJSON = CustomTagsTable.retrieve(context);\n\n    var rawJSON = {}\n    t = $('#raw_type', context).val();\n    if (t) { rawJSON['TYPE'] = t; }\n    t = TemplateUtils.escapeDoubleQuotes($('#raw_data', context).val());\n    if (t) { rawJSON['DATA'] = t; }\n    t = TemplateUtils.escapeDoubleQuotes($('#raw_data_vmx', context).val());\n    if (t) { rawJSON['DATA_VMX'] = t; }\n\n    if (!$.isEmptyObject(rawJSON)) { templateJSON['RAW'] = rawJSON; };\n\n    return templateJSON;\n  }\n\n  function _fill(context, templateJSON) {\n    var rawJSON = templateJSON.RAW;\n    if (rawJSON) {\n      $('#raw_type', context).val(rawJSON['TYPE']);\n      $('#raw_type', context).change();\n      $('#raw_data', context).val(TemplateUtils.htmlDecode(rawJSON['DATA']));\n      $('#raw_data_vmx', context).val(TemplateUtils.htmlDecode(rawJSON['DATA_VMX']));\n\n      delete templateJSON.RAW\n    }\n\n    CustomTagsTable.fill(context, templateJSON);\n  }\n});\n\n","define('tabs/templates-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','utils/tips','utils/template-utils','hbs!./create/wizard','hbs!./create/advanced','./create/formPanelId','../tabId','./create/wizard-tabs/general','./create/wizard-tabs/storage','./create/wizard-tabs/network','./create/wizard-tabs/os','./create/wizard-tabs/io','./create/wizard-tabs/context','./create/wizard-tabs/scheduling','./create/wizard-tabs/hybrid','./create/wizard-tabs/other'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n  var TemplateAdvancedHTML = require('hbs!./create/advanced');\n  \n  /*\n    CONSTANTS\n   */\n\n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n  var WIZARD_TABS = [\n    require('./create/wizard-tabs/general'),\n    require('./create/wizard-tabs/storage'),\n    require('./create/wizard-tabs/network'),\n    require('./create/wizard-tabs/os'),\n    require('./create/wizard-tabs/io'),\n    require('./create/wizard-tabs/context'),\n    require('./create/wizard-tabs/scheduling'),\n    require('./create/wizard-tabs/hybrid'),\n    require('./create/wizard-tabs/other')\n  ]\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create VM Template\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      },\n      'update': {\n        'title': Locale.tr(\"Update VM Template\"),\n        'buttonText': Locale.tr(\"Update\"),\n        'resetButton': false\n      }\n    };\n\n    var that = this;\n    that.wizardTabs = [];\n    var wizardTabInstance;\n    $.each(WIZARD_TABS, function(index, wizardTab) {\n      try {\n        wizardTabInstance = new wizardTab();\n        wizardTabInstance.contentHTML = wizardTabInstance.html();\n        that.wizardTabs.push(wizardTabInstance); \n      } catch (err) {\n        console.log(err);\n      }\n    })\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.htmlAdvanced = _htmlAdvanced;\n  FormPanel.prototype.setup = _setup;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.submitAdvanced = _submitAdvanced;\n  FormPanel.prototype.fill = _fill;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _htmlWizard() {\n\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId,\n      'wizardTabs': this.wizardTabs\n    });\n  }\n\n  function _htmlAdvanced() {\n    return TemplateAdvancedHTML({formPanelId: this.formPanelId});\n  }\n\n  function _setup(context) {\n    $.each(this.wizardTabs, function(index, wizardTab) {\n      wizardTab.setup($('#' + wizardTab.wizardTabId, context));\n    });\n\n    context.foundation('reflow', 'tab');\n  }\n\n  function _onShow(context) {\n    var that = this;\n    $('a[href=\"#'+ that.wizardTabs[0].wizardTabId +'\"]', context).trigger(\"click\");\n\n    $.each(that.wizardTabs, function(index, wizardTab) {\n      wizardTab.onShow($('#' + wizardTab.wizardTabId, context), that);\n    });\n  }\n\n  function _submitWizard(context) {\n    var templateJSON = {}\n    $.each(this.wizardTabs, function(index, wizardTab) {\n      $.extend(true, templateJSON, wizardTab.retrieve($('#' + wizardTab.wizardTabId, context)));\n    });\n\n    if (this.action == \"create\") {\n      Sunstone.runAction(\"Template.create\", \n                          {'vmtemplate': templateJSON});\n      return false;\n    } else if (this.action == \"update\") {\n      Sunstone.runAction(\"Template.update\", \n                          this.resourceId, \n                          JSON.stringify({'vmtemplate': templateJSON}));\n      return false;\n    }\n  }\n\n  function _submitAdvanced(context) {\n    var template = $('textarea#template', context).val();\n    if (this.action == \"create\") {\n      Sunstone.runAction(\"Template.create\",  \n                          {\"vmtemplate\": {\"template_raw\": template}});\n      return false;\n\n    } else if (this.action == \"update\") {\n      Sunstone.runAction(\"Template.update\", \n                          this.resourceId, \n                          JSON.stringify({\"vmtemplate\": {\"template_raw\": template}}));\n      return false;\n    }\n  }\n\n  function _fill(context, element) {\n    if (this.action != \"update\") {return;}\n    this.resourceId = element.ID;\n\n    var templateJSON = element.TEMPLATE;\n\n    // Populates the Avanced mode Tab\n    $('#template', context).val(\n      TemplateUtils.templateToString(templateJSON).replace(/^[\\r\\n]+$/g, \"\"));\n\n    $.each(this.wizardTabs, function(index, wizardTab) {\n      wizardTab.fill($('#' + wizardTab.wizardTabId, context), templateJSON);\n    });\n  }\n});\n\n","define('tabs/templates-tab',['require','utils/locale','./templates-tab/buttons','./templates-tab/actions','./templates-tab/datatable','./templates-tab/tabId','./templates-tab/dialogs/clone','./templates-tab/dialogs/instantiate','./templates-tab/panels/info','./templates-tab/panels/template','./templates-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./templates-tab/buttons');\n  var Actions = require('./templates-tab/actions');\n  var Table = require('./templates-tab/datatable');\n\n  var TAB_ID = require('./templates-tab/tabId');\n  var DATATABLE_ID = \"dataTableTemplates\";\n\n  var _dialogs = [\n    require('./templates-tab/dialogs/clone'),\n    require('./templates-tab/dialogs/instantiate')\n  ];\n\n  var _panels = [\n    require('./templates-tab/panels/info'),\n    require('./templates-tab/panels/template')\n  ];\n\n  var _formPanels = [\n    require('./templates-tab/form-panels/create')\n  ]\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Templates\"),\n    tabClass: \"subTab\",\n    parentTab: \"vresources-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-file-o\"></i>&emsp;' + Locale.tr(\"Templates\"),\n    infoHeader: '<i class=\"fa fa-fw fa-file-o\"></i>&emsp;' + Locale.tr(\"Template\"),\n    subheader: '',\n    resource: 'Template',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/images-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Image.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Image.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"Image.chown\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change owner\"),\n      layout: \"user_select\",\n      select: \"User\",\n      tip: Locale.tr(\"Select the new owner\") + \":\"\n    },\n    \"Image.chgrp\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change group\"),\n      layout: \"user_select\",\n      select: \"Group\",\n      tip: Locale.tr(\"Select the new group\") + \":\"\n    },\n    \"Image.enable\" : {\n      type: \"action\",\n      layout: \"more_select\",\n      text: Locale.tr(\"Enable\")\n    },\n    \"Image.disable\" : {\n      type: \"action\",\n      layout: \"more_select\",\n      text: Locale.tr(\"Disable\")\n    },\n    \"Image.persistent\" : {\n      type: \"action\",\n      layout: \"more_select\",\n      text: Locale.tr(\"Make persistent\")\n    },\n    \"Image.nonpersistent\" : {\n      type: \"action\",\n      layout: \"more_select\",\n      text: Locale.tr(\"Make non persistent\")\n    },\n    \"Image.clone_dialog\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Clone\")\n    },\n    \"Image.delete\" : {\n      type: \"confirm\",\n      layout: \"del\",\n      text: Locale.tr(\"Delete\")\n    },\n  }\n\n  return Buttons;\n});\n\n","define('tabs/images-tab/dialogs/clone/dialogId',['require'],function(require){\n  return 'cloneImageDialog';\n});\n","define('tabs/images-tab/actions',['require','sunstone','utils/notifier','utils/locale','opennebula/image','./tabId','./form-panels/create/formPanelId','./dialogs/clone/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var OpenNebulaImage = require('opennebula/image');\n\n  var RESOURCE = \"Image\";\n  var XML_ROOT = \"IMAGE\";\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n  var CLONE_DIALOG_ID = require('./dialogs/clone/dialogId');\n\n  var _actions = {\n    \"Image.create\" : {\n      type: \"create\",\n      call: OpenNebulaImage.create,\n      callback: function(request, response) {\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n        Notifier.notifyCustom(Locale.tr(\"Image created\"), \" ID: \" + response[XML_ROOT].ID, false);\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      },\n    },\n\n    \"Image.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    \"Image.list\" : {\n      type: \"list\",\n      call: OpenNebulaImage.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"Image.show\" : {\n      type : \"single\",\n      call: OpenNebulaImage.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Image.refresh\" : {\n      type: \"custom\",\n      call: function () {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(RESOURCE+\".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(RESOURCE+\".list\", {force: true});\n        }\n      }\n    },\n\n    \"Image.update_template\" : {\n      type: \"single\",\n      call: OpenNebulaImage.update,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+\".show\", request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Image.enable\" : {\n      type: \"multiple\",\n      call: OpenNebulaImage.enable,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Image.disable\" : {\n      type: \"multiple\",\n      call: OpenNebulaImage.disable,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Image.persistent\" : {\n      type: \"multiple\",\n      call: OpenNebulaImage.persistent,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Image.nonpersistent\" : {\n      type: \"multiple\",\n      call: OpenNebulaImage.nonpersistent,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Image.delete\" : {\n      type: \"multiple\",\n      call: OpenNebulaImage.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Image.chown\" : {\n      type: \"multiple\",\n      call: OpenNebulaImage.chown,\n      callback:  function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Image.chgrp\" : {\n      type: \"multiple\",\n      call: OpenNebulaImage.chgrp,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Image.chmod\" : {\n      type: \"single\",\n      call: OpenNebulaImage.chmod,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Image.chtype\" : {\n      type: \"single\",\n      call: OpenNebulaImage.chtype,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0][0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n    \"Image.clone_dialog\" : {\n      type: \"custom\",\n      call: function(){\n        Sunstone.getDialog(CLONE_DIALOG_ID).show();\n      }\n    },\n    \"Image.clone\" : {\n      type: \"single\",\n      call: OpenNebulaImage.clone,\n      error: Notifier.onError,\n      notify: true\n    },\n    \"Image.rename\" : {\n      type: \"single\",\n      call: OpenNebulaImage.rename,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+\".show\", request.request.data[0][0]);\n      },\n      error: Notifier.onError,\n      notify: true\n    }\n  };\n\n  return _actions;\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/images-tab/dialogs/clone/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Clone Image\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n  <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\" class=\\\"custom creation\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"columns large-12\\\">\\n        <label class=\\\"clone_one\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n        <label class=\\\"clone_several\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Several images are selected, please choose a prefix to name the new copies\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n        </label>\\n        <input type=\\\"text\\\" name=\\\"image_clone_name\\\"/>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <dl class=\\\"accordion\\\" id=\\\"image_clone_advanced_toggle\\\" data-accordion>\\n          <dd class=\\\"accordion-navigation\\\">\\n            <a href=\\\"#image_clone_advanced\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced options\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n          </dd>\\n        </dl>\\n        <div id=\\\"image_clone_advanced\\\" class=\\\"row collapse content\\\">\\n          <br>\\n          <div class=\\\"large-12 columns\\\">\\n            <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"You can select a different target datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            <br/>\\n            <br/>\\n          </div>\\n          \";\n  stack1 = ((helper = (helper = helpers.datastoreTableSelectHTML || (depth0 != null ? depth0.datastoreTableSelectHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"datastoreTableSelectHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n        </div>\\n      </div>\\n    </div>\\n    <div class=\\\"form_buttons row\\\">\\n      <button class=\\\"button radius right\\\" id=\\\"image_clone_button\\\" value=\\\"Image.clone\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Clone\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/images-tab/dialogs/clone/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/images-tab/dialogs/clone',['require','utils/dialogs/dialog','hbs!./clone/html','sunstone','tabs/datastores-tab/datatable','utils/notifier','opennebula/image','./clone/dialogId','tabs/images-tab/tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./clone/html');\n  var Sunstone = require('sunstone');\n  var DatastoreTable = require('tabs/datastores-tab/datatable')\n  var Notifier = require('utils/notifier');\n  var OpenNebulaImage = require('opennebula/image');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./clone/dialogId');\n  var IMAGES_TAB_ID = require('tabs/images-tab/tabId')\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.datastoreTable = new DatastoreTable('image_clone', {\n      'select': true,\n      'selectOptions': {\n        'filter_fn': function(ds) { return ds.TYPE == 0; }\n      }\n    });\n\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId,\n      'datastoreTableSelectHTML': this.datastoreTable.dataTableHTML\n    });\n  }\n\n  function _setup(dialog) {\n    var that = this;\n    // TODO: Show DS with the same ds mad only\n    that.datastoreTable.initialize();\n\n    $('#image_clone_advanced_toggle', dialog).click(function() {\n      $('#image_clone_advanced', dialog).toggle();\n      return false;\n    });\n\n    $('#' + DIALOG_ID + 'Form', dialog).submit(function() {\n      var name = $('input[name=\"image_clone_name\"]', this).val();\n      var sel_elems = Sunstone.getDataTable(IMAGES_TAB_ID).elements();\n\n      if (!name || !sel_elems.length)\n        Notifier.notifyError('A name or prefix is needed!');\n\n      var extra_info = {};\n\n      var targeDS = that.datastoreTable.retrieveResourceTableSelect();\n      if (targeDS) {\n        extra_info['target_ds'] = targeDS;\n      }\n\n      if (sel_elems.length > 1) {\n        for (var i = 0; i < sel_elems.length; i++) {\n          //If we are cloning several images we\n          //use the name as prefix\n          extra_info['name'] = name + OpenNebulaImage.getName(sel_elems[i]);\n          Sunstone.runAction('Image.clone', sel_elems[i], extra_info);\n        }\n      } else {\n        extra_info['name'] = name;\n        Sunstone.runAction('Image.clone', sel_elems[0], extra_info)\n      }\n\n      Sunstone.getDialog(DIALOG_ID).hide();\n      Sunstone.getDialog(DIALOG_ID).reset();\n      setTimeout(function() {\n        Sunstone.runAction('Image.refresh');\n      }, 1500);\n      return false;\n    });\n\n    return false;\n  }\n\n  function _onShow(dialog) {\n    var sel_elems = Sunstone.getDataTable(IMAGES_TAB_ID).elements();\n    //show different text depending on how many elements are selected\n    if (sel_elems.length > 1) {\n      $('.clone_one', dialog).hide();\n      $('.clone_several', dialog).show();\n      $('input[name=\"image_clone_name\"]', dialog).val('Copy of ');\n    } else {\n      $('.clone_one', dialog).show();\n      $('.clone_several', dialog).hide();\n      $('input[name=\"image_clone_name\"]', dialog).val('Copy of ' + OpenNebulaImage.getName(sel_elems[0]));\n    };\n\n    $('#image_clone_advanced', dialog).hide();\n    this.datastoreTable.resetResourceTableSelect();\n\n    $(\"input[name='image_clone_name']\", dialog).focus();\n\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/images-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  return \"              <a id=\\\"div_edit_persistency_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n\";\n  },\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.DATASTORE : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Register time\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.prettyRegTime || (depth0 != null ? depth0.prettyRegTime : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"prettyRegTime\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td_type\\\">\"\n    + escapeExpression(((helper = (helper = helpers.typeStr || (depth0 != null ? depth0.typeStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"typeStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td>\\n            <div id=\\\"div_edit_chg_type\\\">\\n              <a id=\\\"div_edit_chg_type_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n            </div>\\n          </td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Persistent\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td_persistency\\\">\"\n    + escapeExpression(((helper = (helper = helpers.persistentStr || (depth0 != null ? depth0.persistentStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"persistentStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td>\\n            <div id=\\\"div_edit_persistency\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.persistentActionEnabled : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"            </div>\\n          </td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filesystem type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.fsTypeStr || (depth0 != null ? depth0.fsTypeStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"fsTypeStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Size\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.sizeStr || (depth0 != null ? depth0.sizeStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"sizeStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"State\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.stateStr || (depth0 != null ? depth0.stateStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"stateStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Running VMS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.RUNNING_VMS : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.permissionsTableHTML || (depth0 != null ? depth0.permissionsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"permissionsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/images-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/images-tab/panels/info',['require','utils/locale','utils/humanize','utils/panel/rename-tr','utils/panel/template-table','utils/panel/permissions-table','opennebula/image','sunstone-config','sunstone','hbs!./info/html','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var RenameTr = require('utils/panel/rename-tr');\n  var TemplateTable = require('utils/panel/template-table');\n  var PermissionsTable = require('utils/panel/permissions-table');\n  var OpenNebulaImage = require('opennebula/image');\n  var Config = require('sunstone-config');\n  var Sunstone = require('sunstone');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Image\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[RESOURCE.toUpperCase()];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var templateTableHTML = TemplateTable.html(this.element.TEMPLATE, RESOURCE, Locale.tr(\"Attributes\"));\n    var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);\n    var stateStr = Locale.tr(OpenNebulaImage.stateStr(this.element.STATE));\n    var prettyRegTime = Humanize.prettyTime(this.element.REGTIME);\n    var fsTypeStr = this.element.FS_TYPE != undefined ? this.element.FS_TYPE : '-';\n    var sizeStr = Humanize.sizeFromMB(this.element.SIZE);\n    var persistentStr = parseInt(this.element.PERSISTENT) ? Locale.tr(\"yes\") : Locale.tr(\"no\");\n    var typeStr = Locale.tr(OpenNebulaImage.typeStr(this.element.TYPE));\n\n    return TemplateInfo({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'templateTableHTML': templateTableHTML,\n      'permissionsTableHTML': permissionsTableHTML,\n      'stateStr': stateStr,\n      'prettyRegTime': prettyRegTime,\n      'fsTypeStr': fsTypeStr,\n      'persistentActionEnabled': Config.isTabActionEnabled('images-tab', \"Image.persistent\"),\n      'persistentStr': persistentStr,\n      'typeStr': typeStr,\n      'sizeStr': sizeStr\n    });\n  }\n\n  function _setup(context) {\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n    TemplateTable.setup(this.element.TEMPLATE, RESOURCE, this.element.ID, context);\n    PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);\n\n    // Listener for edit link for type change\n    var that = this;\n    context.off(\"click\", \"#div_edit_chg_type_link\")\n    context.on(\"click\", \"#div_edit_chg_type_link\", function() {\n      $(\".value_td_type\", context).html(\n                '<select id=\"chg_type_select\">\\\n                      <option value=\"OS\">OS</option>\\\n                      <option value=\"CDROM\">CDROM</option>\\\n                      <option value=\"DATABLOCK\">DATABLOCK</option>\\\n                  </select>');\n\n      $('#chg_type_select', context).val(OpenNebulaImage.typeStr(that.element.TYPE));\n    });\n\n    context.off(\"change\", \"#chg_type_select\");\n    context.on(\"change\", \"#chg_type_select\", function() {\n      var new_value = $(this).val();\n      Sunstone.runAction(\"Image.chtype\", that.element.ID, new_value);\n    });\n\n    // Listener for edit link for persistency change\n    context.off(\"click\", \"#div_edit_persistency\")\n    context.on(\"click\", \"#div_edit_persistency\", function() {\n      $(\".value_td_persistency\", context).html(\n                '<select id=\"persistency_select\">\\\n                      <option value=\"yes\">' + Locale.tr(\"yes\") + '</option>\\\n                      <option value=\"no\">' + Locale.tr(\"no\") + '</option>\\\n                  </select>');\n\n      $('#persistency_select', context).val(parseInt(that.element.PERSISTENT) ? \"yes\" : \"no\");\n    });\n\n    context.off(\"change\", \"#persistency_select\")\n    context.on(\"change\", \"#persistency_select\", function() {\n      var new_value = $(this).val();\n\n      if (new_value == \"yes\")\n          Sunstone.runAction(\"Image.persistent\", [that.element.ID]);\n      else\n          Sunstone.runAction(\"Image.nonpersistent\", [that.element.ID]);\n\n    });\n\n    return false;\n  }\n});\n\n","define('tabs/images-tab/panels/info/panelId',['require'],function(require){\n  return 'image_info_tab';\n});\n","define('tabs/images-tab/panels/vms',['require','utils/locale','tabs/vms-tab/datatable','./vms/panelId'],function(require){\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var VMsTable = require('tabs/vms-tab/datatable');\n  \n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./vms/panelId');\n  var VMS_TABLE_ID = PANEL_ID + \"VMsTable\";\n  var RESOURCE = \"Image\";\n  var XML_ROOT = \"IMAGE\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"VMs\");\n    this.icon = \"fa-cloud\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var vms = [];\n\n    if (this.element.VMS.ID != undefined){\n      vms = this.element.VMS.ID;\n\n      if (!$.isArray(vms)){\n        vms = [vms];\n      }\n    }\n\n    var opts = {\n      info: true,\n      select: true,\n      selectOptions: {\n        read_only: true,\n        fixed_ids: vms\n      }\n    };\n\n    this.vmsTable = new VMsTable(VMS_TABLE_ID, opts);\n\n    return this.vmsTable.dataTableHTML;\n  }\n\n  function _setup(context) {\n    this.vmsTable.initialize();\n    this.vmsTable.refreshResourceTableSelect();\n\n    return false;\n  }\n});\n","define('tabs/images-tab/panels/vms/panelId',['require'],function(require){\n  return 'image_vms_tab';\n});\n","/*\n* MIT Licensed\n* http://www.23developer.com/opensource\n* http://github.com/23/resumable.js\n* Steffen Tiedemann Christensen, steffen@23company.com\n*/\n\n(function(){\n\"use strict\";\n\n  var Resumable = function(opts){\n    if ( !(this instanceof Resumable) ) {\n      return new Resumable(opts);\n    }\n    this.version = 1.0;\n    // SUPPORTED BY BROWSER?\n    // Check if these features are support by the browser:\n    // - File object type\n    // - Blob object type\n    // - FileList object type\n    // - slicing files\n    this.support = (\n                   (typeof(File)!=='undefined')\n                   &&\n                   (typeof(Blob)!=='undefined')\n                   &&\n                   (typeof(FileList)!=='undefined')\n                   &&\n                   (!!Blob.prototype.webkitSlice||!!Blob.prototype.mozSlice||!!Blob.prototype.slice||false)\n                   );\n    if(!this.support) return(false);\n\n\n    // PROPERTIES\n    var $ = this;\n    $.files = [];\n    $.defaults = {\n      chunkSize:1*1024*1024,\n      forceChunkSize:false,\n      simultaneousUploads:3,\n      fileParameterName:'file',\n      throttleProgressCallbacks:0.5,\n      query:{},\n      headers:{},\n      preprocess:null,\n      method:'multipart',\n      prioritizeFirstAndLastChunk:false,\n      target:'/',\n      testChunks:true,\n      generateUniqueIdentifier:null,\n      maxChunkRetries:undefined,\n      chunkRetryInterval:undefined,\n      permanentErrors:[400, 404, 415, 500, 501],\n      maxFiles:undefined,\n      withCredentials:false,\n      xhrTimeout:0,\n      maxFilesErrorCallback:function (files, errorCount) {\n        var maxFiles = $.getOpt('maxFiles');\n        alert('Please upload ' + maxFiles + ' file' + (maxFiles === 1 ? '' : 's') + ' at a time.');\n      },\n      minFileSize:1,\n      minFileSizeErrorCallback:function(file, errorCount) {\n        alert(file.fileName||file.name +' is too small, please upload files larger than ' + $h.formatSize($.getOpt('minFileSize')) + '.');\n      },\n      maxFileSize:undefined,\n      maxFileSizeErrorCallback:function(file, errorCount) {\n        alert(file.fileName||file.name +' is too large, please upload files less than ' + $h.formatSize($.getOpt('maxFileSize')) + '.');\n      },\n      fileType: [],\n      fileTypeErrorCallback: function(file, errorCount) {\n        alert(file.fileName||file.name +' has type not allowed, please upload files of type ' + $.getOpt('fileType') + '.');\n      }\n    };\n    $.opts = opts||{};\n    $.getOpt = function(o) {\n      var $opt = this;\n      // Get multiple option if passed an array\n      if(o instanceof Array) {\n        var options = {};\n        $h.each(o, function(option){\n          options[option] = $opt.getOpt(option);\n        });\n        return options;\n      }\n      // Otherwise, just return a simple option\n      if ($opt instanceof ResumableChunk) {\n        if (typeof $opt.opts[o] !== 'undefined') { return $opt.opts[o]; }\n        else { $opt = $opt.fileObj; }\n      }\n      if ($opt instanceof ResumableFile) {\n        if (typeof $opt.opts[o] !== 'undefined') { return $opt.opts[o]; }\n        else { $opt = $opt.resumableObj; }\n      }\n      if ($opt instanceof Resumable) {\n        if (typeof $opt.opts[o] !== 'undefined') { return $opt.opts[o]; }\n        else { return $opt.defaults[o]; }\n      }\n    };\n    \n    // EVENTS\n    // catchAll(event, ...)\n    // fileSuccess(file), fileProgress(file), fileAdded(file, event), fileRetry(file), fileError(file, message),\n    // complete(), progress(), error(message, file), pause()\n    $.events = [];\n    $.on = function(event,callback){\n      $.events.push(event.toLowerCase(), callback);\n    };\n    $.fire = function(){\n      // `arguments` is an object, not array, in FF, so:\n      var args = [];\n      for (var i=0; i<arguments.length; i++) args.push(arguments[i]);\n      // Find event listeners, and support pseudo-event `catchAll`\n      var event = args[0].toLowerCase();\n      for (var i=0; i<=$.events.length; i+=2) {\n        if($.events[i]==event) $.events[i+1].apply($,args.slice(1));\n        if($.events[i]=='catchall') $.events[i+1].apply(null,args);\n      }\n      if(event=='fileerror') $.fire('error', args[2], args[1]);\n      if(event=='fileprogress') $.fire('progress');\n    };\n    \n    \n    // INTERNAL HELPER METHODS (handy, but ultimately not part of uploading)\n    var $h = {\n      stopEvent: function(e){\n        e.stopPropagation();\n        e.preventDefault();\n      },\n      each: function(o,callback){\n        if(typeof(o.length)!=='undefined') {\n          for (var i=0; i<o.length; i++) {\n            // Array or FileList\n            if(callback(o[i])===false) return;\n          }\n        } else {\n          for (i in o) {\n            // Object\n            if(callback(i,o[i])===false) return;\n          }\n        }\n      },\n      generateUniqueIdentifier:function(file){\n        var custom = $.getOpt('generateUniqueIdentifier');\n        if(typeof custom === 'function') {\n          return custom(file);\n        }\n        var relativePath = file.webkitRelativePath||file.fileName||file.name; // Some confusion in different versions of Firefox\n        var size = file.size;\n        return(size + '-' + relativePath.replace(/[^0-9a-zA-Z_-]/img, ''));\n      },\n      contains:function(array,test) {\n        var result = false;\n\n        $h.each(array, function(value) {\n          if (value == test) {\n            result = true;\n            return false;\n          }\n          return true;\n        });\n\n        return result;\n      },\n      formatSize:function(size){\n        if(size<1024) {\n          return size + ' bytes';\n        } else if(size<1024*1024) {\n          return (size/1024.0).toFixed(0) + ' KB';\n        } else if(size<1024*1024*1024) {\n          return (size/1024.0/1024.0).toFixed(1) + ' MB';\n        } else {\n          return (size/1024.0/1024.0/1024.0).toFixed(1) + ' GB';\n        }\n      },\n      getTarget:function(params){\n        var target = $.getOpt('target');\n        if(target.indexOf('?') < 0) {\n          target += '?';\n        } else {\n          target += '&';\n        }\n        return target + params.join('&');\n      }\n    };\n\n    var onDrop = function(event){\n      $h.stopEvent(event);\n\n      //handle dropped things as items if we can (this lets us deal with folders nicer in some cases)\n      if (event.dataTransfer && event.dataTransfer.items) {\n        loadFiles(event.dataTransfer.items, event);\n      }\n      //else handle them as files\n      else if (event.dataTransfer && event.dataTransfer.files) {\n        loadFiles(event.dataTransfer.files, event);\n      }\n    };\n    var onDragOver = function(e) {\n      e.preventDefault();\n    };\n\n    // INTERNAL METHODS (both handy and responsible for the heavy load)\n    /**\n     * @summary This function loops over the files passed in from a drag and drop operation and gets them ready for appendFilesFromFileList\n     *            It attempts to use FileSystem API calls to extract files and subfolders if the dropped items include folders\n     *            That capability is only currently available in Chrome, but if it isn't available it will just pass the items along to \n     *            appendFilesFromFileList (via enqueueFileAddition to help with asynchronous processing.)\n     * @param files {Array} - the File or Entry objects to be processed depending on your browser support\n     * @param event {Object} - the drop event object\n     * @param [queue] {Object} - an object to keep track of our progress processing the dropped items\n     * @param [path] {String} - the relative path from the originally selected folder to the current files if extracting files from subfolders\n     */\n    var loadFiles = function (files, event, queue, path){\n      //initialize the queue object if it doesn't exist\n      if (!queue) {\n        queue = {\n          total: 0,\n          files: [],\n          event: event\n        };\n      }\n\n      //update the total number of things we plan to process\n      updateQueueTotal(files.length, queue);\n\n      //loop over all the passed in objects checking if they are files or folders\n      for (var i = 0; i < files.length; i++) {\n        var file = files[i];\n        var entry, reader;\n\n        if (file.isFile || file.isDirectory) {\n          //this is an object we can handle below with no extra work needed up front\n          entry = file;\n        }\n        else if (file.getAsEntry) {\n          //get the file as an entry object if we can using the proposed HTML5 api (unlikely to get implemented by anyone)\n          entry = file.getAsEntry();\n        }\n        else if (file.webkitGetAsEntry) {\n          //get the file as an entry object if we can using the Chrome specific webkit implementation\n          entry = file.webkitGetAsEntry();\n        }\n        else if (typeof file.getAsFile === 'function') {\n          //if this is still a DataTransferItem object, get it as a file object\n          enqueueFileAddition(file.getAsFile(), queue, path);\n          //we just added this file object to the queue so we can go to the next object in the loop and skip the processing below\n          continue;\n        }\n        else if (File && file instanceof File) {\n          //this is already a file object so just queue it up and move on\n          enqueueFileAddition(file, queue, path);\n          //we just added this file object to the queue so we can go to the next object in the loop and skip the processing below\n          continue;\n        }\n        else {\n          //we can't do anything with this object, decrement the expected total and skip the processing below\n          updateQueueTotal(-1, queue);\n          continue;\n        }\n\n        if (!entry) {\n          //there isn't anything we can do with this so decrement the total expected\n          updateQueueTotal(-1, queue);\n        }\n        else if (entry.isFile) {\n          //this is handling to read an entry object representing a file, parsing the file object is asynchronous which is why we need the queue\n          //currently entry objects will only exist in this flow for Chrome\n          entry.file(function(file) {\n            enqueueFileAddition(file, queue, path);\n          }, function(err) {\n            console.warn(err);\n          });\n        }\n        else if (entry.isDirectory) {\n          //this is handling to read an entry object representing a folder, parsing the directory object is asynchronous which is why we need the queue\n          //currently entry objects will only exist in this flow for Chrome\n          reader = entry.createReader();\n\n          //wrap the callback in another function so we can store the path in a closure\n          var readDir = function(path){\n            return function(entries){\n              //process each thing in this directory recursively\n              loadFiles(entries, event, queue, path);\n              //this was a directory rather than a file so decrement the expected file count\n              updateQueueTotal(-1, queue);\n            }\n          };\n\n          reader.readEntries(readDir(entry.fullPath), function(err) {\n            console.warn(err);\n          });\n        }\n      }\n    };\n\n    /**\n     * @summary Adjust the total number of files we are expecting to process\n     *          if decrementing and the new expected total is equal to the number processed, flush the queue\n     * @param addition {Number} - the number of additional files we expect to process (may be negative)\n     * @param queue {Object} - an object to keep track of our progress processing the dropped items\n     */\n    var updateQueueTotal = function(addition, queue){\n      queue.total += addition;\n      \n      // If all the files we expect have shown up, then flush the queue.\n      if (queue.files.length === queue.total) {\n        appendFilesFromFileList(queue.files, queue.event);\n      }\n    };\n\n    /**\n     * @summary Add a file to the queue of processed files, if it brings the total up to the expected total, flush the queue\n     * @param file {Object} - File object to be passed along to appendFilesFromFileList eventually\n     * @param queue {Object} - an object to keep track of our progress processing the dropped items\n     * @param [path] {String} - the file's relative path from the originally dropped folder if we are parsing folder content (Chrome only for now)\n     */\n    var enqueueFileAddition = function(file, queue, path) {\n      //store the path to this file if it came in as part of a folder\n      if (path) file.relativePath = path + '/' + file.name;\n      queue.files.push(file);\n\n      // If all the files we expect have shown up, then flush the queue.\n      if (queue.files.length === queue.total) {\n        appendFilesFromFileList(queue.files, queue.event);\n      }\n    };\n\n    var appendFilesFromFileList = function(fileList, event){\n      // check for uploading too many files\n      var errorCount = 0;\n      var o = $.getOpt(['maxFiles', 'minFileSize', 'maxFileSize', 'maxFilesErrorCallback', 'minFileSizeErrorCallback', 'maxFileSizeErrorCallback', 'fileType', 'fileTypeErrorCallback']);\n      if (typeof(o.maxFiles)!=='undefined' && o.maxFiles<(fileList.length+$.files.length)) {\n        // if single-file upload, file is already added, and trying to add 1 new file, simply replace the already-added file \n        if (o.maxFiles===1 && $.files.length===1 && fileList.length===1) {\n          $.removeFile($.files[0]);\n        } else {\n          o.maxFilesErrorCallback(fileList, errorCount++);\n          return false;\n        }\n      }\n      var files = [];\n      $h.each(fileList, function(file){\n        var fileName = file.name.split('.');\n        var fileType = fileName[fileName.length-1].toLowerCase();\n        \n        if (o.fileType.length > 0 && !$h.contains(o.fileType, fileType)) {\n          o.fileTypeErrorCallback(file, errorCount++);\n          return false;\n        }\n\n        if (typeof(o.minFileSize)!=='undefined' && file.size<o.minFileSize) {\n          o.minFileSizeErrorCallback(file, errorCount++);\n          return false;\n        }\n        if (typeof(o.maxFileSize)!=='undefined' && file.size>o.maxFileSize) {\n          o.maxFileSizeErrorCallback(file, errorCount++);\n          return false;\n        }\n\n        // directories have size == 0\n        if (!$.getFromUniqueIdentifier($h.generateUniqueIdentifier(file))) {(function(){\n          var f = new ResumableFile($, file);\n          window.setTimeout(function(){\n            $.files.push(f);\n            files.push(f);\n            f.container = (typeof event != 'undefined' ? event.srcElement : null);\n            $.fire('fileAdded', f, event)\n          },0);\n        })()};\n      });\n      window.setTimeout(function(){\n        $.fire('filesAdded', files)\n      },0);\n    };\n\n    // INTERNAL OBJECT TYPES\n    function ResumableFile(resumableObj, file){\n      var $ = this;\n      $.opts = {};\n      $.getOpt = resumableObj.getOpt;\n      $._prevProgress = 0;\n      $.resumableObj = resumableObj;\n      $.file = file;\n      $.fileName = file.fileName||file.name; // Some confusion in different versions of Firefox\n      $.size = file.size;\n      $.relativePath = file.webkitRelativePath || file.relativePath || $.fileName;\n      $.uniqueIdentifier = $h.generateUniqueIdentifier(file);\n      $._pause = false;\n      $.container = '';\n      var _error = false;\n\n      // Callback when something happens within the chunk\n      var chunkEvent = function(event, message){\n        // event can be 'progress', 'success', 'error' or 'retry'\n        switch(event){\n        case 'progress':\n          $.resumableObj.fire('fileProgress', $);\n          break;\n        case 'error':\n          $.abort();\n          _error = true;\n          $.chunks = [];\n          $.resumableObj.fire('fileError', $, message);\n          break;\n        case 'success':\n          if(_error) return;\n          $.resumableObj.fire('fileProgress', $); // it's at least progress\n          if($.isComplete()) {\n            $.resumableObj.fire('fileSuccess', $, message);\n          }\n          break;\n        case 'retry':\n          $.resumableObj.fire('fileRetry', $);\n          break;\n        }\n      };\n\n      // Main code to set up a file object with chunks,\n      // packaged to be able to handle retries if needed.\n      $.chunks = [];\n      $.abort = function(){\n        // Stop current uploads\n        var abortCount = 0;\n        $h.each($.chunks, function(c){\n          if(c.status()=='uploading') {\n            c.abort();\n            abortCount++;\n          }\n        });\n        if(abortCount>0) $.resumableObj.fire('fileProgress', $);\n      };\n      $.cancel = function(){\n        // Reset this file to be void\n        var _chunks = $.chunks;\n        $.chunks = [];\n        // Stop current uploads\n        $h.each(_chunks, function(c){\n          if(c.status()=='uploading')  {\n            c.abort();\n            $.resumableObj.uploadNextChunk();\n          }\n        });\n        $.resumableObj.removeFile($);\n        $.resumableObj.fire('fileProgress', $);\n      };\n      $.retry = function(){\n        $.bootstrap();\n        var firedRetry = false;\n        $.resumableObj.on('chunkingComplete', function(){\n          if(!firedRetry) $.resumableObj.upload();\n          firedRetry = true;\n        });\n      };\n      $.bootstrap = function(){\n        $.abort();\n        _error = false;\n        // Rebuild stack of chunks from file\n        $.chunks = [];\n        $._prevProgress = 0;\n        var round = $.getOpt('forceChunkSize') ? Math.ceil : Math.floor;\n        var maxOffset = Math.max(round($.file.size/$.getOpt('chunkSize')),1);\n        for (var offset=0; offset<maxOffset; offset++) {(function(offset){\n            window.setTimeout(function(){\n                $.chunks.push(new ResumableChunk($.resumableObj, $, offset, chunkEvent));\n                $.resumableObj.fire('chunkingProgress',$,offset/maxOffset);\n            },0);\n        })(offset)}\n        window.setTimeout(function(){\n            $.resumableObj.fire('chunkingComplete',$);\n        },0);\n      };\n      $.progress = function(){\n        if(_error) return(1);\n        // Sum up progress across everything\n        var ret = 0;\n        var error = false;\n        $h.each($.chunks, function(c){\n          if(c.status()=='error') error = true;\n          ret += c.progress(true); // get chunk progress relative to entire file\n        });\n        ret = (error ? 1 : (ret>0.99999 ? 1 : ret));\n        ret = Math.max($._prevProgress, ret); // We don't want to lose percentages when an upload is paused\n        $._prevProgress = ret;\n        return(ret);\n      };\n      $.isUploading = function(){\n        var uploading = false;\n        $h.each($.chunks, function(chunk){\n          if(chunk.status()=='uploading') {\n            uploading = true;\n            return(false);\n          }\n        });\n        return(uploading);\n      };    \n      $.isComplete = function(){\n        var outstanding = false;\n        $h.each($.chunks, function(chunk){\n          var status = chunk.status();\n          if(status=='pending' || status=='uploading' || chunk.preprocessState === 1) {\n            outstanding = true;\n            return(false);\n          }\n        });\n        return(!outstanding);\n      };\n      $.pause = function(pause){\n          if(typeof(pause)==='undefined'){\n              $._pause = ($._pause ? false : true);\n          }else{\n              $._pause = pause;\n          }\n      };\n      $.isPaused = function() {\n        return $._pause;\n      };\n\n\n      // Bootstrap and return\n      $.resumableObj.fire('chunkingStart', $);\n      $.bootstrap();\n      return(this);\n    }\n\n    function ResumableChunk(resumableObj, fileObj, offset, callback){\n      var $ = this;\n      $.opts = {};\n      $.getOpt = resumableObj.getOpt;\n      $.resumableObj = resumableObj;\n      $.fileObj = fileObj;\n      $.fileObjSize = fileObj.size;\n      $.fileObjType = fileObj.file.type;\n      $.offset = offset;\n      $.callback = callback;\n      $.lastProgressCallback = (new Date);\n      $.tested = false;\n      $.retries = 0;\n      $.pendingRetry = false;\n      $.preprocessState = 0; // 0 = unprocessed, 1 = processing, 2 = finished\n\n      // Computed properties\n      var chunkSize = $.getOpt('chunkSize');\n      $.loaded = 0;\n      $.startByte = $.offset*chunkSize;\n      $.endByte = Math.min($.fileObjSize, ($.offset+1)*chunkSize);\n      if ($.fileObjSize-$.endByte < chunkSize && !$.getOpt('forceChunkSize')) {\n        // The last chunk will be bigger than the chunk size, but less than 2*chunkSize\n        $.endByte = $.fileObjSize;\n      }\n      $.xhr = null;\n\n      // test() makes a GET request without any data to see if the chunk has already been uploaded in a previous session\n      $.test = function(){\n        // Set up request and listen for event\n        $.xhr = new XMLHttpRequest();\n\n        var testHandler = function(e){\n          $.tested = true;\n          var status = $.status();\n          if(status=='success') {\n            $.callback(status, $.message());\n            $.resumableObj.uploadNextChunk();\n          } else {\n            $.send();\n          }\n        };\n        $.xhr.addEventListener('load', testHandler, false);\n        $.xhr.addEventListener('error', testHandler, false);\n        $.xhr.addEventListener('timeout', testHandler, false);\n\n        // Add data from the query options\n        var params = [];\n        var customQuery = $.getOpt('query'); \n        if(typeof customQuery == 'function') customQuery = customQuery($.fileObj, $);\n        $h.each(customQuery, function(k,v){\n          params.push([encodeURIComponent(k), encodeURIComponent(v)].join('='));\n        });\n        // Add extra data to identify chunk\n        params.push(['resumableChunkNumber', encodeURIComponent($.offset+1)].join('='));\n        params.push(['resumableChunkSize', encodeURIComponent($.getOpt('chunkSize'))].join('='));\n        params.push(['resumableCurrentChunkSize', encodeURIComponent($.endByte - $.startByte)].join('='));\n        params.push(['resumableTotalSize', encodeURIComponent($.fileObjSize)].join('='));\n        params.push(['resumableType', encodeURIComponent($.fileObjType)].join('='));\n        params.push(['resumableIdentifier', encodeURIComponent($.fileObj.uniqueIdentifier)].join('='));\n        params.push(['resumableFilename', encodeURIComponent($.fileObj.fileName)].join('='));\n        params.push(['resumableRelativePath', encodeURIComponent($.fileObj.relativePath)].join('='));\n        params.push(['resumableTotalChunks', encodeURIComponent($.fileObj.chunks.length)].join('='));\n        // Append the relevant chunk and send it\n        $.xhr.open('GET', $h.getTarget(params));\n        $.xhr.timeout = $.getOpt('xhrTimeout');\n        $.xhr.withCredentials = $.getOpt('withCredentials');\n        // Add data from header options\n        $h.each($.getOpt('headers'), function(k,v) {\n          $.xhr.setRequestHeader(k, v);\n        });\n        $.xhr.send(null);\n      };\n\n      $.preprocessFinished = function(){\n        $.preprocessState = 2;\n        $.send();\n      };\n\n      // send() uploads the actual data in a POST call\n      $.send = function(){\n        var preprocess = $.getOpt('preprocess');\n        if(typeof preprocess === 'function') {\n          switch($.preprocessState) {\n          case 0: preprocess($); $.preprocessState = 1; return;\n          case 1: return;\n          case 2: break;\n          }\n        }\n        if($.getOpt('testChunks') && !$.tested) {\n          $.test();\n          return;\n        }\n\n        // Set up request and listen for event\n        $.xhr = new XMLHttpRequest();\n\n        // Progress\n        $.xhr.upload.addEventListener('progress', function(e){\n          if( (new Date) - $.lastProgressCallback > $.getOpt('throttleProgressCallbacks') * 1000 ) {\n            $.callback('progress');\n            $.lastProgressCallback = (new Date);\n          }\n          $.loaded=e.loaded||0;\n        }, false);\n        $.loaded = 0;\n        $.pendingRetry = false;\n        $.callback('progress');\n\n        // Done (either done, failed or retry)\n        var doneHandler = function(e){\n          var status = $.status();\n          if(status=='success'||status=='error') {\n            $.callback(status, $.message());\n            $.resumableObj.uploadNextChunk();\n          } else {\n            $.callback('retry', $.message());\n            $.abort();\n            $.retries++;\n            var retryInterval = $.getOpt('chunkRetryInterval');          \n            if(retryInterval !== undefined) {\n              $.pendingRetry = true;\n              setTimeout($.send, retryInterval);\n            } else {\n              $.send();\n            }\n          }\n        };\n        $.xhr.addEventListener('load', doneHandler, false);\n        $.xhr.addEventListener('error', doneHandler, false);\n        $.xhr.addEventListener('timeout', doneHandler, false);\n\n        // Set up the basic query data from Resumable\n        var query = {\n          resumableChunkNumber: $.offset+1,\n          resumableChunkSize: $.getOpt('chunkSize'),\n          resumableCurrentChunkSize: $.endByte - $.startByte,\n          resumableTotalSize: $.fileObjSize,\n          resumableType: $.fileObjType,\n          resumableIdentifier: $.fileObj.uniqueIdentifier,\n          resumableFilename: $.fileObj.fileName,\n          resumableRelativePath: $.fileObj.relativePath,\n          resumableTotalChunks: $.fileObj.chunks.length\n        };\n        // Mix in custom data\n        var customQuery = $.getOpt('query');\n        if(typeof customQuery == 'function') customQuery = customQuery($.fileObj, $);\n        $h.each(customQuery, function(k,v){\n          query[k] = v;\n        });\n\n        var func   = ($.fileObj.file.slice ? 'slice' : ($.fileObj.file.mozSlice ? 'mozSlice' : ($.fileObj.file.webkitSlice ? 'webkitSlice' : 'slice'))),\n        bytes  = $.fileObj.file[func]($.startByte,$.endByte), \n        data   = null,\n        target = $.getOpt('target');\n        \n        if ($.getOpt('method') === 'octet') {\n          // Add data from the query options\n          data = bytes;\n          var params = [];\n          $h.each(query, function(k,v){\n            params.push([encodeURIComponent(k), encodeURIComponent(v)].join('='));\n          });\n          target = $h.getTarget(params);\n        } else {\n          // Add data from the query options\n          data = new FormData();\n          $h.each(query, function(k,v){\n            data.append(k,v);\n          });\n          data.append($.getOpt('fileParameterName'), bytes);\n        }\n        \n        $.xhr.open('POST', target);\n        $.xhr.timeout = $.getOpt('xhrTimeout');\n        $.xhr.withCredentials = $.getOpt('withCredentials');\n        // Add data from header options\n        $h.each($.getOpt('headers'), function(k,v) {\n          $.xhr.setRequestHeader(k, v);\n        });\n        $.xhr.send(data);\n      };\n      $.abort = function(){\n        // Abort and reset\n        if($.xhr) $.xhr.abort();\n        $.xhr = null;\n      };\n      $.status = function(){\n        // Returns: 'pending', 'uploading', 'success', 'error'\n        if($.pendingRetry) {\n          // if pending retry then that's effectively the same as actively uploading,\n          // there might just be a slight delay before the retry starts\n          return('uploading');\n        } else if(!$.xhr) {\n          return('pending');\n        } else if($.xhr.readyState<4) {\n          // Status is really 'OPENED', 'HEADERS_RECEIVED' or 'LOADING' - meaning that stuff is happening\n          return('uploading');\n        } else {\n          if($.xhr.status==200) {\n            // HTTP 200, perfect\n            return('success');\n          } else if($h.contains($.getOpt('permanentErrors'), $.xhr.status) || $.retries >= $.getOpt('maxChunkRetries')) {\n            // HTTP 415/500/501, permanent error\n            return('error');\n          } else {\n            // this should never happen, but we'll reset and queue a retry\n            // a likely case for this would be 503 service unavailable\n            $.abort();\n            return('pending');\n          }\n        }\n      };\n      $.message = function(){\n        return($.xhr ? $.xhr.responseText : '');\n      };\n      $.progress = function(relative){\n        if(typeof(relative)==='undefined') relative = false;\n        var factor = (relative ? ($.endByte-$.startByte)/$.fileObjSize : 1);\n        if($.pendingRetry) return(0);\n        var s = $.status();\n        switch(s){\n        case 'success':\n        case 'error':\n          return(1*factor);\n        case 'pending':\n          return(0*factor);\n        default:\n          return($.loaded/($.endByte-$.startByte)*factor);\n        }\n      };\n      return(this);\n    }\n\n    // QUEUE\n    $.uploadNextChunk = function(){\n      var found = false;\n\n      // In some cases (such as videos) it's really handy to upload the first\n      // and last chunk of a file quickly; this let's the server check the file's\n      // metadata and determine if there's even a point in continuing.\n      if ($.getOpt('prioritizeFirstAndLastChunk')) {\n        $h.each($.files, function(file){\n          if(file.chunks.length && file.chunks[0].status()=='pending' && file.chunks[0].preprocessState === 0) {\n            file.chunks[0].send();\n            found = true;\n            return(false);\n          }\n          if(file.chunks.length>1 && file.chunks[file.chunks.length-1].status()=='pending' && file.chunks[file.chunks.length-1].preprocessState === 0) {\n            file.chunks[file.chunks.length-1].send();\n            found = true;\n            return(false);\n          }\n        });\n        if(found) return(true);\n      }\n\n      // Now, simply look for the next, best thing to upload\n      $h.each($.files, function(file){\n        if(file.isPaused()===false){\n         $h.each(file.chunks, function(chunk){\n           if(chunk.status()=='pending' && chunk.preprocessState === 0) {\n             chunk.send();\n             found = true;\n             return(false);\n           }\n          });\n        }\n        if(found) return(false);\n      });\n      if(found) return(true);\n\n      // The are no more outstanding chunks to upload, check is everything is done\n      var outstanding = false;\n      $h.each($.files, function(file){\n        if(!file.isComplete()) {\n          outstanding = true;\n          return(false);\n        }\n      });\n      if(!outstanding) {\n        // All chunks have been uploaded, complete\n        $.fire('complete');\n      }\n      return(false);\n    };\n\n\n    // PUBLIC METHODS FOR RESUMABLE.JS\n    $.assignBrowse = function(domNodes, isDirectory){\n      if(typeof(domNodes.length)=='undefined') domNodes = [domNodes];\n\n      $h.each(domNodes, function(domNode) {\n        var input;\n        if(domNode.tagName==='INPUT' && domNode.type==='file'){\n          input = domNode;\n        } else {\n          input = document.createElement('input');\n          input.setAttribute('type', 'file');\n          input.style.display = 'none';\n          domNode.addEventListener('click', function(){\n            input.style.opacity = 0;\n            input.style.display='block';\n            input.focus();\n            input.click();\n            input.style.display='none';\n          }, false);\n          domNode.appendChild(input);\n        }\n        var maxFiles = $.getOpt('maxFiles');\n        if (typeof(maxFiles)==='undefined'||maxFiles!=1){\n          input.setAttribute('multiple', 'multiple');\n        } else {\n          input.removeAttribute('multiple');\n        }\n        if(isDirectory){\n          input.setAttribute('webkitdirectory', 'webkitdirectory');\n        } else {\n          input.removeAttribute('webkitdirectory');\n        }\n        // When new files are added, simply append them to the overall list\n        input.addEventListener('change', function(e){\n          appendFilesFromFileList(e.target.files,e);\n          e.target.value = '';\n        }, false);\n      });\n    };\n    $.assignDrop = function(domNodes){\n      if(typeof(domNodes.length)=='undefined') domNodes = [domNodes];\n\n      $h.each(domNodes, function(domNode) {\n        domNode.addEventListener('dragover', onDragOver, false);\n        domNode.addEventListener('drop', onDrop, false);\n      });\n    };\n    $.unAssignDrop = function(domNodes) {\n      if (typeof(domNodes.length) == 'undefined') domNodes = [domNodes];\n\n      $h.each(domNodes, function(domNode) {\n        domNode.removeEventListener('dragover', onDragOver);\n        domNode.removeEventListener('drop', onDrop);\n      });\n    };\n    $.isUploading = function(){\n      var uploading = false;\n      $h.each($.files, function(file){\n        if (file.isUploading()) {\n          uploading = true;\n          return(false);\n        }\n      });\n      return(uploading);\n    };\n    $.upload = function(){\n      // Make sure we don't start too many uploads at once\n      if($.isUploading()) return;\n      // Kick off the queue\n      $.fire('uploadStart');\n      for (var num=1; num<=$.getOpt('simultaneousUploads'); num++) {\n        $.uploadNextChunk();\n      }\n    };\n    $.pause = function(){\n      // Resume all chunks currently being uploaded\n      $h.each($.files, function(file){\n        file.abort();\n      });\n      $.fire('pause');\n    };\n    $.cancel = function(){\n      for(var i = $.files.length - 1; i >= 0; i--) {\n        $.files[i].cancel();\n      }\n      $.fire('cancel');\n    };\n    $.progress = function(){\n      var totalDone = 0;\n      var totalSize = 0;\n      // Resume all chunks currently being uploaded\n      $h.each($.files, function(file){\n        totalDone += file.progress()*file.size;\n        totalSize += file.size;\n      });\n      return(totalSize>0 ? totalDone/totalSize : 0);\n    };\n    $.addFile = function(file, event){\n      appendFilesFromFileList([file], event);\n    };\n    $.removeFile = function(file){\n      for(var i = $.files.length - 1; i >= 0; i--) {\n        if($.files[i] === file) {\n          $.files.splice(i, 1);\n        }\n      }\n    };\n    $.getFromUniqueIdentifier = function(uniqueIdentifier){\n      var ret = false;\n      $h.each($.files, function(f){\n        if(f.uniqueIdentifier==uniqueIdentifier) ret = f;\n      });\n      return(ret);\n    };\n    $.getSize = function(){\n      var totalSize = 0;\n      $h.each($.files, function(file){\n        totalSize += file.size;\n      });\n      return(totalSize);\n    };\n\n    return(this);\n  };\n\n\n  // Node.js-style export for Node and Component\n  if (typeof module != 'undefined') {\n    module.exports = Resumable;\n  } else if (typeof define === \"function\" && define.amd) {\n    // AMD/requirejs: Define the module\n    define('resumable',[],function(){\n      return Resumable;\n    });\n  } else {\n    // Browser: Expose to window\n    window.Resumable = Resumable;\n  }\n\n})();\n\n","define('utils/browser-info',['require'],function(require) {\n\n  /**\n   * Returns the version of Internet Explorer or a -1\n   * (indicating the use of another browser).\n   * @return {integer} version\n   */\n  function _getInternetExplorerVersion() {\n    var rv = -1; // Return value assumes failure.\n    if (navigator.appName == 'Microsoft Internet Explorer') {\n      var ua = navigator.userAgent;\n      var re  = new RegExp(\"MSIE ([0-9]{1,}[\\.0-9]{0,})\");\n      if (re.exec(ua) != null)\n          rv = parseFloat(RegExp.$1);\n    }\n    return rv;\n  }\n\n  return {\n    'getInternetExplorerVersion': _getInternetExplorerVersion\n  };\n});\n\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/images-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/isTabActionEnabled','templates/helpers/advancedSection'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"    <div class=\\\"row\\\">\\n      <div class=\\\"large-4 columns\\\">\\n        <input type=\\\"checkbox\\\" id=\\\"img_persistent\\\" name=\\\"img_persistent\\\" value=\\\"YES\\\" />\\n        <label for=\\\"img_persistent\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Persistent\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Persistence of the image\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n      </div>\\n    </div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"    <div class=\\\"row\\\">\\n      <div class=\\\"medium-6 columns\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label for=\\\"img_dev_prefix\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Device prefix\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Prefix for the emulated device this image will be mounted at. For instance, “hd”, “sd”. If omitted, the default value is the one defined in oned.conf (installation default is “hd”).\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n            <input type=\\\"text\\\" name=\\\"img_dev_prefix\\\" id=\\\"img_dev_prefix\\\" />\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label for=\\\"img_driver\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Driver\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Specific image mapping driver. KVM: raw, qcow2. XEN: tap:aio, file:\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n            <input type=\\\"text\\\" name=\\\"img_driver\\\" id=\\\"img_driver\\\" />\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"medium-6 columns\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <label for=\\\"img_target\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Target\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Target on which the image will be mounted at. For example: hda, sdb...\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n            <input type=\\\"text\\\" name=\\\"img_target\\\" id=\\\"img_target\\\" />\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <br>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom attributes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        <br>\\n        <br>\\n      </div>\\n    </div>\\n    \";\n  stack1 = ((helper = (helper = helpers.customTagsHTML || (depth0 != null ? depth0.customTagsHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customTagsHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"medium-4 columns\\\">\\n      <label for=\\\"img_name\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name that the Image will get. Every image must have a unique name.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input required type=\\\"text\\\" name=\\\"img_name\\\" id=\\\"img_name\\\" />\\n    </div>\\n    <div class=\\\"medium-8 columns\\\">\\n      <label for=\\\"img_desc\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Human readable description of the image for other users.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <textarea name=\\\"img_desc\\\" id=\\\"img_desc\\\" rows=\\\"4\\\"></textarea>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-4 columns\\\">\\n      <label for=\\\"img_type\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type of the image.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br/>\\n          <br/>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"OS images contain a working operative system.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br/>\\n          <br/>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CDROM images are readonly data.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br/>\\n          <br/>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"DATABLOCK images are a storage for data. They can be created from previous existing data, or as an empty drive.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <select name=\\\"img_type\\\" id=\\\"img_type\\\">\\n        <option value=\\\"OS\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"OS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"CDROM\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CDROM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"DATABLOCK\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"DATABLOCK\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n    <div class=\\\"large-8 columns\\\">\\n      <label for=\\\"img_datastore\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select the datastore for this image\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <div id=\\\"img_datastore\\\" name=\\\"img_datastore\\\"></div>\\n    </div>\\n  </div>\\n\";\n  stack1 = ((helpers.isTabActionEnabled || (depth0 && depth0.isTabActionEnabled) || helperMissing).call(depth0, \"images-tab\", \"Image.persistent\", {\"name\":\"isTabActionEnabled\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  <br>\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Image location\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</legend>\\n    <div class=\\\"row\\\" id=\\\"src_path_select\\\">\\n      <div class=\\\"large-12 columns text-center\\\">\\n        <input type=\\\"radio\\\" name=\\\"src_path\\\" id=\\\"path_image\\\" value=\\\"path\\\">\\n        <label for=\\\"path_image\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Provide a path\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        <input type=\\\"radio\\\" name=\\\"src_path\\\" id=\\\"upload_image\\\" value=\\\"upload\\\">\\n        <label for=\\\"upload_image\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Upload\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        <input type=\\\"radio\\\" name=\\\"src_path\\\" id=\\\"datablock_img\\\" value=\\\"datablock\\\" disabled>\\n        <label for=\\\"datablock_img\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Empty datablock\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      </div>\\n    </div>\\n    <br>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label for=\\\"img_path\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Path\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Path to the original file that will be copied to the image repository. If not specified for a DATABLOCK type image, an empty image will be created.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" name=\\\"img_path\\\" id=\\\"img_path\\\" />\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div id=\\\"file-uploader\\\" class=\\\"large-12 columns text-center\\\">\\n        <label id=\\\"file-uploader-label\\\" for=\\\"file-uploader-input\\\"></label>\\n        <input id=\\\"file-uploader-input\\\" type=\\\"file\\\"/>\\n      </div>\\n    </div>\\n    <div class=\\\"img_size row\\\">\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"img_size\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Size\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Size of the datablock in MB.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" name=\\\"img_size\\\" id=\\\"img_size\\\" />\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n        <label for=\\\"img_fstype\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"FS type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type of file system to be built.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <br>\\n            <br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Plain. When the disk image is used directly by the hypervisor we can format the image, and so it is ready to be used by the guest OS. Values: ext2, ext3, ext4, ntfs, reiserfs, jfs, swap. Any other fs supported by mkfs will work if no special option is needed.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <br>\\n            <br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Formatted. The disk image is stored in a hypervisor specific format VMDK or Qcow2. Then we cannot really make a filesystem on the image, just create the device and let the guest OS format the disk. Use raw to not to format the new image. Values: raw, qcow2, vmdk_*.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" name=\\\"img_fstype\\\" id=\\\"img_fstype\\\" />\\n      </div>\\n    </div>\\n  </fieldset>\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced Options\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/images-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/images-tab/form-panels/create/advanced',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Advanced\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"columns large-12\\\">\\n      <label for=\\\"img_datastores_raw\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n      <div id=\\\"img_datastore_raw\\\" name=\\\"img_datastore_raw\\\"></div>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <p>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write the Image template here\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</p>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <textarea id=\\\"template\\\" rows=\\\"15\\\" required></textarea>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/images-tab/form-panels/create/advanced', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/images-tab/form-panels/create',['require','utils/form-panels/form-panel','resumable','sunstone','opennebula/error','utils/notifier','utils/locale','utils/tips','utils/resource-select','utils/custom-tags-table','utils/browser-info','hbs!./create/wizard','hbs!./create/advanced','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Resumable = require('resumable');\n  var Sunstone = require('sunstone');\n  var OpenNebulaError = require('opennebula/error');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var ResourceSelect = require('utils/resource-select');\n  var CustomTagsTable = require('utils/custom-tags-table');\n  var BrowserInfo = require('utils/browser-info');\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n  var TemplateAdvancedHTML = require('hbs!./create/advanced');\n\n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create Image\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      }\n    };\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.htmlAdvanced = _htmlAdvanced;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.submitAdvanced = _submitAdvanced;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId,\n      'customTagsHTML': CustomTagsTable.html(),\n    });\n  }\n\n  function _htmlAdvanced() {\n    return TemplateAdvancedHTML({formPanelId: this.formPanelId});\n  }\n\n  function _onShow(context) {\n    $(\"#img_name\", context).focus();\n\n    var ds_id = $('#img_datastore .resource_list_select', context).val();\n    var ds_id_raw = $('#img_datastore_raw .resource_list_select', context).val();\n\n    // Filter out DS with type system (1) or file (2)\n    var filter_att = [\"TYPE\", \"TYPE\"];\n    var filter_val = [\"1\", \"2\"];\n\n    ResourceSelect.insert('div#img_datastore', context, \"Datastore\",\n                        ds_id, false, null, filter_att, filter_val);\n\n    ResourceSelect.insert('div#img_datastore_raw', context, \"Datastore\",\n                        ds_id_raw, false, null, filter_att, filter_val);\n\n    return false;\n  }\n\n  function _setup(context) {\n    var that = this;\n    Tips.setup(context);\n\n    $('select#img_type', context).change(function() {\n      var value = $(this).val();\n      switch (value){\n      case \"DATABLOCK\":\n        $('#datablock_img', context).removeAttr(\"disabled\");\n        break;\n      default:\n        $('#datablock_img', context).attr('disabled', 'disabled');\n        $('#path_image', context).click();\n\n      }\n    });\n\n    $('#img_path,#img_fstype,#img_size,#file-uploader', context).closest('.row').hide();\n\n    $(\"input[name='src_path']\", context).change(function() {\n      var value = $(this).val();\n      switch (value){\n      case \"path\":\n        $('#img_fstype,#img_size,#file-uploader', context).closest('.row').hide();\n        $('#img_path', context).closest('.row').show();\n\n        $('#img_path', context).attr('required', '');\n        $('#img_size', context).removeAttr('required');\n        break;\n      case \"datablock\":\n        $('#img_path,#file-uploader', context).closest('.row').hide();\n        $('#img_fstype,#img_size', context).closest('.row').show();\n\n        $('#img_path', context).removeAttr('required');\n        $('#img_size', context).attr('required', '');\n        break;\n      case \"upload\":\n        $('#img_path,#img_fstype,#img_size', context).closest('.row').hide();\n        $('#file-uploader', context).closest('.row').show();\n\n        $('#img_path', context).removeAttr('required');\n        $('#img_size', context).removeAttr('required');\n        break;\n      }\n    });\n\n    $('#path_image', context).click();\n\n    CustomTagsTable.setup(context);\n\n    if (BrowserInfo.getInternetExplorerVersion() > -1) {\n      $(\"#upload_image\").attr(\"disabled\", \"disabled\");\n    } else {\n      that.uploader = new Resumable({\n        target: 'upload_chunk',\n        chunkSize: 10 * 1024 * 1024,\n        maxFiles: 1,\n        testChunks: false,\n        query: {\n          csrftoken: \"\"//TODO csrftoken\n        }\n      });\n\n      that.uploader.assignBrowse($('#file-uploader-input', context));\n\n      var fileName = '';\n      var file_input = false;\n\n      that.uploader.on('fileAdded', function(file) {\n        fileName = file.fileName;\n        file_input = fileName;\n\n        $('#file-uploader-input', context).hide()\n        $(\"#file-uploader-label\", context).html(file.fileName);\n      });\n\n      that.uploader.on('uploadStart', function() {\n        $('#upload_progress_bars').append('<div id=\"' + fileName + 'progressBar\" class=\"row\" style=\"margin-bottom:10px\">\\\n            <div id=\"' + fileName + '-info\" class=\"large-2 columns dataTables_info\">\\\n              ' + Locale.tr(\"Uploading...\") + '\\\n            </div>\\\n            <div class=\"large-10 columns\">\\\n              <div id=\"upload_progress_container\" class=\"progress nine radius\" style=\"height:25px !important\">\\\n                <span class=\"meter\" style=\"width:0%\"></span>\\\n              </div>\\\n              <div class=\"progress-text\" style=\"margin-left:15px\">' + fileName + '</div>\\\n            </div>\\\n          </div>');\n      });\n\n      that.uploader.on('progress', function() {\n        $('span.meter', $('div[id=\"' + fileName + 'progressBar\"]')).css('width', that.uploader.progress() * 100.0 + '%')\n      });\n    }\n\n    return false;\n  }\n\n  function _submitWizard(context) {\n    var that = this;\n    var upload = false;\n\n    var ds_id = $('#img_datastore .resource_list_select', context).val();\n    if (!ds_id) {\n      Sunstone.hideFormPanelLoading(TAB_ID);\n      Notifier.notifyError(Locale.tr(\"Please select a datastore for this image\"));\n      return false;\n    }\n\n    var img_json = {};\n\n    var name = $('#img_name', context).val();\n    img_json[\"NAME\"] = name;\n\n    var desc = $('#img_desc', context).val();\n    if (desc.length) {\n      img_json[\"DESCRIPTION\"] = desc;\n    }\n\n    var type = $('#img_type', context).val();\n    img_json[\"TYPE\"] = type;\n\n    img_json[\"PERSISTENT\"] = $('#img_persistent:checked', context).length ? \"YES\" : \"NO\";\n\n    var dev_prefix = $('#img_dev_prefix', context).val();\n    if (dev_prefix.length) {\n      img_json[\"DEV_PREFIX\"] = dev_prefix;\n    }\n\n    var driver = $('#img_driver', context).val();\n    if (driver.length)\n        img_json[\"DRIVER\"] = driver;\n\n    var target = $('#img_target', context).val();\n    if (target)\n        img_json[\"TARGET\"] = target;\n\n    switch ($('#src_path_select input:checked', context).val()){\n    case \"path\":\n      path = $('#img_path', context).val();\n      if (path) img_json[\"PATH\"] = path;\n      break;\n    case \"datablock\":\n      size = $('#img_size', context).val();\n      fstype = $('#img_fstype', context).val();\n      if (size) img_json[\"SIZE\"] = size;\n      if (fstype) img_json[\"FSTYPE\"] = fstype;\n      break;\n    case \"upload\":\n      upload = true;\n      break;\n    }\n\n    $.extend(img_json, CustomTagsTable.retrieve(context));\n\n    var img_obj = {\n      \"image\" : img_json,\n      \"ds_id\" : ds_id\n    };\n\n    //this is an image upload we trigger FileUploader\n    //to start the upload\n    if (upload) {\n      if (that.uploader.files.length == 0) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.notifyError(Locale.tr(\"Please select a file to upload\"));\n        return false;\n      }\n\n      Sunstone.resetFormPanel(that.tabId, that.formPanelId);\n      Sunstone.hideFormPanel(that.tabId);\n\n      that.uploader.on('fileSuccess', function(file) {\n        $('div[id=\"' + file.fileName + '-info\"]').text(Locale.tr(\"Registering in OpenNebula\"));\n        $.ajax({\n          url: 'upload',\n          type: \"POST\",\n          data: {\n            csrftoken: csrftoken,\n            img : JSON.stringify(img_obj),\n            file: file.fileName,\n            tempfile: file.uniqueIdentifier\n          },\n          success: function() {\n            Notifier.notifyMessage(\"Image uploaded correctly\");\n            $('div[id=\"' + file.fileName + 'progressBar\"]').remove();\n            Sunstone.runAction(\"Image.refresh\");\n          },\n          error: function(response) {\n            Notifier.onError({}, OpenNebulaError(response));\n            $('div[id=\"' + file.fileName + 'progressBar\"]').remove();\n          }\n        });\n      });\n\n      that.uploader.upload();\n    } else {\n      Sunstone.runAction(\"Image.create\", img_obj);\n    }\n\n    return false;\n  }\n\n  function _submitAdvanced(context) {\n    var template = $('#template', context).val();\n    var ds_id = $('#img_datastore_raw .resource_list_select', context).val();\n\n    if (!ds_id) {\n      Notifier.notifyError(Locale.tr(\"Please select a datastore for this image\"));\n      return false;\n    }\n\n    var img_obj = {\n      \"image\" : {\n        \"image_raw\" : template\n      },\n      \"ds_id\" : ds_id\n    };\n\n    Sunstone.runAction(\"Image.create\", img_obj);\n\n    return false;\n  }\n});\n\n","define('tabs/images-tab',['require','utils/locale','./images-tab/buttons','./images-tab/actions','./images-tab/datatable','./images-tab/tabId','./images-tab/dialogs/clone','./images-tab/panels/info','./images-tab/panels/vms','./images-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./images-tab/buttons');\n  var Actions = require('./images-tab/actions');\n  var Table = require('./images-tab/datatable');\n\n  var TAB_ID = require('./images-tab/tabId');\n  var DATATABLE_ID = \"dataTableImages\";\n\n  var _dialogs = [\n    require('./images-tab/dialogs/clone')\n  ];\n\n  var _panels = [\n    require('./images-tab/panels/info'),\n    require('./images-tab/panels/vms')\n  ];\n\n  var _formPanels = [\n    require('./images-tab/form-panels/create')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Images\"),\n    tabClass: \"subTab\",\n    parentTab: \"vresources-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-upload\"></i>&emsp;' + Locale.tr(\"Images\"),\n    infoHeader: '<i class=\"fa fa-fw fa-upload\"></i>&emsp;' + Locale.tr(\"Image\"),\n    subheader: '',\n    resource: 'Image',\n    content: '<div id=\"upload_progress_bars\" class=\"large-12 columns\"></div>',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/files-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"File.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"File.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"File.chown\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change owner\"),\n      layout: \"user_select\",\n      select: \"User\",\n      tip: Locale.tr(\"Select the new owner\") + \":\"\n    },\n    \"File.chgrp\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change group\"),\n      layout: \"user_select\",\n      select: \"Group\",\n      tip: Locale.tr(\"Select the new group\") + \":\"\n    },\n    \"File.enable\" : {\n      type: \"action\",\n      layout: \"more_select\",\n      text: Locale.tr(\"Enable\")\n    },\n    \"File.disable\" : {\n      type: \"action\",\n      layout: \"more_select\",\n      text: Locale.tr(\"Disable\")\n    },\n    \"File.delete\" : {\n      type: \"confirm\",\n      layout: \"del\",\n      text: Locale.tr(\"Delete\")\n    },\n  };\n\n  return Buttons;\n});\n\n","define('tabs/files-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createFileForm';\n});\n","define('tabs/files-tab/actions',['require','sunstone','utils/notifier','utils/locale','opennebula/image','./tabId','./form-panels/create/formPanelId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var OpenNebulaResource = require('opennebula/image');\n\n  var RESOURCE = \"File\";\n  var XML_ROOT = \"IMAGE\";\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n\n  var _actions = {\n    \"File.create\" : {\n      type: \"create\",\n      call: OpenNebulaResource.create,\n      callback: function(request, response) {\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n        Notifier.notifyCustom(Locale.tr(\"File created\"), \" ID: \" + response[XML_ROOT].ID, false);\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      },\n    },\n\n    \"File.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    \"File.list\" : {\n      type: \"list\",\n      call: OpenNebulaResource.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"File.show\" : {\n      type : \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"File.refresh\" : {\n      type: \"custom\",\n      call: function () {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(RESOURCE+\".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(RESOURCE+\".list\", {force: true});\n        }\n      }\n    },\n\n    \"File.update_template\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+\".show\", request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"File.enable\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.enable,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"File.disable\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.disable,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"File.delete\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"File.chown\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.chown,\n      callback:  function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"File.chgrp\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.chgrp,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"File.chmod\" : {\n      type: \"single\",\n      call: OpenNebulaResource.chmod,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"File.chtype\" : {\n      type: \"single\",\n      call: OpenNebulaResource.chtype,\n      callback: function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0][0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"File.rename\" : {\n      type: \"single\",\n      call: OpenNebulaResource.rename,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+\".show\", request.request.data[0][0]);\n      },\n      error: Notifier.onError,\n      notify: true\n    }\n  };\n\n  return _actions;\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/files-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.DATASTORE : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Register time\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.prettyRegTime || (depth0 != null ? depth0.prettyRegTime : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"prettyRegTime\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td_type\\\">\"\n    + escapeExpression(((helper = (helper = helpers.typeStr || (depth0 != null ? depth0.typeStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"typeStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td>\\n            <div id=\\\"div_edit_chg_type\\\">\\n              <a id=\\\"div_edit_chg_type_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n            </div>\\n          </td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filesystem type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.fsTypeStr || (depth0 != null ? depth0.fsTypeStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"fsTypeStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Size\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.sizeStr || (depth0 != null ? depth0.sizeStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"sizeStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"State\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.stateStr || (depth0 != null ? depth0.stateStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"stateStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Running VMS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.RUNNING_VMS : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.permissionsTableHTML || (depth0 != null ? depth0.permissionsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"permissionsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/files-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/files-tab/panels/info',['require','utils/locale','utils/humanize','utils/panel/rename-tr','utils/panel/template-table','utils/panel/permissions-table','opennebula/image','sunstone-config','sunstone','hbs!./info/html','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var RenameTr = require('utils/panel/rename-tr');\n  var TemplateTable = require('utils/panel/template-table');\n  var PermissionsTable = require('utils/panel/permissions-table');\n  var OpenNebulaImage = require('opennebula/image');\n  var Config = require('sunstone-config');\n  var Sunstone = require('sunstone');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"File\";\n  var XML_ROOT = \"IMAGE\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var templateTableHTML = TemplateTable.html(this.element.TEMPLATE, RESOURCE, Locale.tr(\"Attributes\"));\n    var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);\n    var stateStr = Locale.tr(OpenNebulaImage.stateStr(this.element.STATE));\n    var prettyRegTime = Humanize.prettyTime(this.element.REGTIME);\n    var fsTypeStr = this.element.FS_TYPE != undefined ? this.element.FS_TYPE : '-';\n    var sizeStr = Humanize.sizeFromMB(this.element.SIZE);\n    var typeStr = Locale.tr(OpenNebulaImage.typeStr(this.element.TYPE));\n\n    return TemplateInfo({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'templateTableHTML': templateTableHTML,\n      'permissionsTableHTML': permissionsTableHTML,\n      'stateStr': stateStr,\n      'prettyRegTime': prettyRegTime,\n      'fsTypeStr': fsTypeStr,\n      'typeStr': typeStr,\n      'sizeStr': sizeStr\n    });\n  }\n\n  function _setup(context) {\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n    TemplateTable.setup(this.element.TEMPLATE, RESOURCE, this.element.ID, context);\n    PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);\n\n    // Listener for edit link for type change\n    var that = this;\n    context.off(\"click\", \"#div_edit_chg_type_link\")\n    context.on(\"click\", \"#div_edit_chg_type_link\", function() {\n      $(\".value_td_type\", context).html(\n                '<select id=\"chg_type_select\">\\\n                      <option value=\"KERNEL\">KERNEL</option>\\\n                      <option value=\"RAMDISK\">RAMDISK</option>\\\n                      <option value=\"CONTEXT\">CONTEXT</option>\\\n                  </select>');\n\n      $('#chg_type_select', context).val(OpenNebulaImage.typeStr(that.element.TYPE));\n    });\n\n    context.off(\"change\", \"#chg_type_select\");\n    context.on(\"change\", \"#chg_type_select\", function() {\n      var new_value = $(this).val();\n      Sunstone.runAction(\"File.chtype\", that.element.ID, new_value);\n    });\n\n    return false;\n  }\n});\n\n","define('tabs/files-tab/panels/info/panelId',['require'],function(require){\n  return 'file_info_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/files-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"medium-4 columns\\\">\\n      <label for=\\\"file_name\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name that the File will get. Every file must have a unique name.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <input required type=\\\"text\\\" name=\\\"file_name\\\" id=\\\"file_name\\\" />\\n    </div>\\n    <div class=\\\"medium-8 columns\\\">\\n      <label for=\\\"file_desc\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Human readable description of the file for other users.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <textarea name=\\\"file_desc\\\" id=\\\"file_desc\\\" rows=\\\"4\\\"></textarea>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-4 columns\\\">\\n      <label for=\\\"file_type\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type of the file.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br/>\\n          <br/>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \" KERNEL & RAMDISK files can be used in the OS Booting section of the Template wizard.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br/>\\n          <br/>\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \" CONTEXT files can be included in the context CD-ROM, from the Context/Files section of the Template wizard.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </label>\\n      <select name=\\\"file_type\\\" id=\\\"file_type\\\">\\n        <option value=\\\"CONTEXT\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Context\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"KERNEL\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Kernel\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"RAMDISK\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ramdisk\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n    <div class=\\\"large-8 columns\\\">\\n      <label for=\\\"file_datastore\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select the datastore for this file\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <div id=\\\"file_datastore\\\" name=\\\"file_datastore\\\"></div>\\n    </div>\\n  </div>\\n  <br>\\n  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Image location\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</legend>\\n    <div class=\\\"row\\\" id=\\\"src_path_select\\\">\\n      <div class=\\\"large-12 columns text-center\\\">\\n        <input type=\\\"radio\\\" name=\\\"src_path\\\" id=\\\"path_file\\\" value=\\\"path\\\">\\n          <label for=\\\"path_file\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Provide a path\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        </input>\\n        <input type=\\\"radio\\\" name=\\\"src_path\\\" id=\\\"upload_file\\\" value=\\\"upload\\\">\\n          <label for=\\\"upload_file\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Upload\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        </input>\\n      </div>\\n    </div>\\n    <br>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label for=\\\"file_path\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Path\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Path to the original file that will be copied to the file repository.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </span>\\n        </label>\\n        <input type=\\\"text\\\" name=\\\"file_path\\\" id=\\\"file_path\\\" />\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div id=\\\"files_file-uploader\\\" class=\\\"large-12 columns text-center\\\">\\n        <label id=\\\"files_file-uploader-label\\\" for=\\\"files_file-uploader-input\\\"></label>\\n        <input id=\\\"files_file-uploader-input\\\" type=\\\"file\\\"/>\\n      </div>\\n    </div>\\n  </fieldset>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/files-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/files-tab/form-panels/create/advanced',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Advanced\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"columns large-12\\\">\\n      <label for=\\\"file_datastores_raw\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n      <div id=\\\"file_datastore_raw\\\" name=\\\"file_datastore_raw\\\"></div>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <p>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write the Image template here\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</p>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <textarea id=\\\"template\\\" rows=\\\"15\\\" required></textarea>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/files-tab/form-panels/create/advanced', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/files-tab/form-panels/create',['require','utils/form-panels/form-panel','resumable','sunstone','opennebula/error','utils/notifier','utils/locale','utils/tips','utils/resource-select','utils/browser-info','hbs!./create/wizard','hbs!./create/advanced','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Resumable = require('resumable');\n  var Sunstone = require('sunstone');\n  var OpenNebulaError = require('opennebula/error');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var ResourceSelect = require('utils/resource-select');\n  var BrowserInfo = require('utils/browser-info');\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n  var TemplateAdvancedHTML = require('hbs!./create/advanced');\n\n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create File\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      }\n    };\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.htmlAdvanced = _htmlAdvanced;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.submitAdvanced = _submitAdvanced;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId\n    });\n  }\n\n  function _htmlAdvanced() {\n    return TemplateAdvancedHTML({\n      'formPanelId': this.formPanelId\n    });\n  }\n\n  function _onShow(context) {\n    $(\"#file_name\", context).focus();\n\n    var ds_id = $('#file_datastore .resource_list_select', context).val();\n    var ds_id_raw = $('#file_datastore_raw .resource_list_select', context).val();\n\n    // Filter out DS with type image (0) or system (1)\n    var filter_att = [\"TYPE\", \"TYPE\"];\n    var filter_val = [\"0\", \"1\"];\n\n    ResourceSelect.insert('div#file_datastore', context, \"Datastore\",\n                        ds_id, false, null, filter_att, filter_val);\n\n    ResourceSelect.insert('div#file_datastore_raw', context, \"Datastore\",\n                        ds_id_raw, false, null, filter_att, filter_val);\n\n    return false;\n  }\n\n  function _setup(context) {\n    var that = this;\n    Tips.setup(context);\n\n    $('#file_path,#files_file-uploader', context).closest('.row').hide();\n\n    $(\"input[name='src_path']\", context).change(function() {\n      var value = $(this).val();\n      switch (value){\n      case \"path\":\n        $('#files_file-uploader', context).closest('.row').hide();\n        $('#file_path', context).closest('.row').show();\n\n        $('#file_path', context).attr('required', '');\n        break;\n      case \"upload\":\n        $('#file_path', context).closest('.row').hide();\n        $('#files_file-uploader', context).closest('.row').show();\n\n        $('#file_path', context).removeAttr('required');\n        break;\n      }\n    });\n\n    $('#path_file', context).click();\n\n    if (BrowserInfo.getInternetExplorerVersion() > -1) {\n      $(\"#upload_file\").attr(\"disabled\", \"disabled\");\n    } else {\n      that.uploader = new Resumable({\n        target: 'upload_chunk',\n        chunkSize: 10 * 1024 * 1024,\n        maxFiles: 1,\n        testChunks: false,\n        query: {\n          csrftoken: \"\"//TODO csrftoken\n        }\n      });\n\n      that.uploader.assignBrowse($('#files_file-uploader-input', context));\n\n      var fileName = '';\n      var file_input = false;\n\n      that.uploader.on('fileAdded', function(file) {\n        fileName = file.fileName;\n        file_input = fileName;\n\n        $('#files_file-uploader-input', context).hide()\n        $(\"#files_file-uploader-label\", context).html(file.fileName);\n      });\n\n      that.uploader.on('uploadStart', function() {\n        $('#files_upload_progress_bars').append('<div id=\"files-' + fileName + 'progressBar\" class=\"row\" style=\"margin-bottom:10px\">\\\n            <div id=\"files-' + fileName + '-info\" class=\"large-2 columns dataTables_info\">\\\n              ' + Locale.tr(\"Uploading...\") + '\\\n            </div>\\\n            <div class=\"large-10 columns\">\\\n              <div id=\"upload_progress_container\" class=\"progress nine radius\" style=\"height:25px !important\">\\\n                <span class=\"meter\" style=\"width:0%\"></span>\\\n              </div>\\\n              <div class=\"progress-text\" style=\"margin-left:15px\">' + fileName + '</div>\\\n            </div>\\\n          </div>');\n      });\n\n      that.uploader.on('progress', function() {\n        $('span.meter', $('div[id=\"files-' + fileName + 'progressBar\"]')).css('width', that.uploader.progress() * 100.0 + '%')\n      });\n    }\n\n    return false;\n  }\n\n  function _submitWizard(context) {\n    var that = this;\n    var upload = false;\n\n    var ds_id = $('#file_datastore .resource_list_select', context).val();\n    if (!ds_id) {\n      Sunstone.hideFormPanelLoading(TAB_ID);\n      Notifier.notifyError(Locale.tr(\"Please select a datastore for this file\"));\n      return false;\n    }\n\n    var img_json = {};\n\n    var name = $('#file_name', context).val();\n    img_json[\"NAME\"] = name;\n\n    var desc = $('#file_desc', context).val();\n    if (desc.length) {\n      img_json[\"DESCRIPTION\"] = desc;\n    }\n\n    var type = $('#file_type', context).val();\n    img_json[\"TYPE\"] = type;\n\n    switch ($('#src_path_select input:checked', context).val()){\n    case \"path\":\n      path = $('#file_path', context).val();\n      if (path) img_json[\"PATH\"] = path;\n      break;\n    case \"upload\":\n      upload = true;\n      break;\n    }\n\n    var img_obj = {\n      \"image\" : img_json,\n      \"ds_id\" : ds_id\n    };\n\n    //this is an image upload we trigger FileUploader\n    //to start the upload\n    if (upload) {\n      if (that.uploader.files.length == 0) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.notifyError(Locale.tr(\"Please select a file to upload\"));\n        return false;\n      }\n\n      Sunstone.resetFormPanel(that.tabId, that.formPanelId);\n      Sunstone.hideFormPanel(that.tabId);\n\n      that.uploader.on('fileSuccess', function(file) {\n        $('div[id=\"files-' + file.fileName + '-info\"]').text(Locale.tr(\"Registering in OpenNebula\"));\n        $.ajax({\n          url: 'upload',\n          type: \"POST\",\n          data: {\n            csrftoken: csrftoken,\n            img : JSON.stringify(img_obj),\n            file: file.fileName,\n            tempfile: file.uniqueIdentifier\n          },\n          success: function() {\n            Notifier.notifyMessage(\"Image uploaded correctly\");\n            $('div[id=\"files-' + file.fileName + 'progressBar\"]').remove();\n            Sunstone.runAction(\"File.refresh\");\n          },\n          error: function(response) {\n            Notifier.onError({}, OpenNebulaError(response));\n            $('div[id=\"files-' + file.fileName + 'progressBar\"]').remove();\n          }\n        });\n      });\n\n      that.uploader.upload();\n    } else {\n      Sunstone.runAction(\"File.create\", img_obj);\n    }\n\n    return false;\n  }\n\n  function _submitAdvanced(context) {\n    var template = $('#template', context).val();\n    var ds_id = $('#file_datastore_raw .resource_list_select', context).val();\n\n    if (!ds_id) {\n      Notifier.notifyError(Locale.tr(\"Please select a datastore for this file\"));\n      return false;\n    }\n\n    var img_obj = {\n      \"image\" : {\n        \"image_raw\" : template\n      },\n      \"ds_id\" : ds_id\n    };\n\n    Sunstone.runAction(\"File.create\", img_obj);\n\n    return false;\n  }\n});\n\n","define('tabs/files-tab',['require','utils/locale','./files-tab/buttons','./files-tab/actions','./files-tab/datatable','./files-tab/tabId','./files-tab/panels/info','./files-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./files-tab/buttons');\n  var Actions = require('./files-tab/actions');\n  var Table = require('./files-tab/datatable');\n\n  var TAB_ID = require('./files-tab/tabId');\n  var DATATABLE_ID = \"dataTableFiles\";\n\n  var _dialogs = [];\n\n  var _panels = [\n    require('./files-tab/panels/info')\n  ];\n\n  var _formPanels = [\n    require('./files-tab/form-panels/create')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Files & Kernels\"),\n    tabClass: \"subTab\",\n    parentTab: \"vresources-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-folder-open\"></i>&emsp;' + Locale.tr(\"Files & Kernels\"),\n    infoHeader: '<i class=\"fa fa-fw fa-folder-open\"></i>&emsp;' + Locale.tr(\"File\"),\n    subheader: '',\n    resource: 'File',\n    content: '<div class=\"large-12 columns\">\\\n                <div id=\"files_upload_progress_bars\"></div>\\\n              </div>',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/infra-tab',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n  var TAB_ID = 'infra-tab';\n\n  var InfraTab = {\n    tabId: TAB_ID,\n    title: '<i class=\"fa fa-lg fa-fw fa-sitemap\"></i>&emsp;' + Locale.tr(\"Infrastructure\"),\n    no_content: true\n  }\n\n  return InfraTab;\n});\n\n","define('tabs/clusters-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Cluster.refresh\" : {\n        type: \"action\",\n        layout: \"refresh\",\n        alwaysActive: true\n    },\n    \"Cluster.create_dialog\" : {\n        type: \"create_dialog\",\n        layout: \"create\"\n    },\n    \"Cluster.update_dialog\" : {\n        type : \"action\",\n        layout: \"main\",\n        text : Locale.tr(\"Update\")\n    },\n    \"Cluster.delete\" : {\n        type: \"confirm\",\n        layout: \"del\",\n        text: Locale.tr(\"Delete\")\n    }\n  };\n\n  return Buttons;\n});\n\n","define('tabs/clusters-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createClusterForm';\n});\n","define('tabs/clusters-tab/actions',['require','sunstone','utils/notifier','utils/locale','./datatable','opennebula/cluster','opennebula/action','./tabId','./form-panels/create/formPanelId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var DataTable = require('./datatable');\n  var OpenNebulaResource = require('opennebula/cluster');\n  var OpenNebulaAction = require('opennebula/action');\n\n  var RESOURCE = \"Cluster\";\n  var XML_ROOT = \"CLUSTER\";\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n\n  var _actions = {\n\n    \"Cluster.create\" : {\n      type: \"create\",\n      call: OpenNebulaResource.create,\n      callback: function(request, response){\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n\n        for (var host in request.request.data[0].cluster.hosts)\n          if (request.request.data[0].cluster.hosts[host])\n            Sunstone.runAction(\"Cluster.addhost\",response[XML_ROOT].ID,host);\n        for (var vnet in request.request.data[0].cluster.vnets)\n          if (request.request.data[0].cluster.vnets[vnet])\n            Sunstone.runAction(\"Cluster.addvnet\",response[XML_ROOT].ID,vnet);\n        for (var datastore in request.request.data[0].cluster.datastores)\n          if (request.request.data[0].cluster.datastores[datastore])\n            Sunstone.runAction(\"Cluster.adddatastore\",response[XML_ROOT].ID,datastore);\n\n        Notifier.notifyCustom(Locale.tr(\"Cluster created\"), \" ID: \" + response[XML_ROOT].ID, false);\n      },\n      error: Notifier.onError\n    },\n\n    \"Cluster.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    \"Cluster.list\" : {\n      type: \"list\",\n      call: OpenNebulaResource.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"Cluster.show\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Cluster.show_to_update\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"update\",\n          function(formPanelInstance, context) {\n            formPanelInstance.fill(context, response[XML_ROOT]);\n          });\n      },\n      error: Notifier.onError\n    },\n\n    \"Cluster.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(RESOURCE+\".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(RESOURCE+\".list\", {force: true});\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Cluster.addhost\" : {\n      type: \"single\",\n      call : OpenNebulaResource.addhost,\n      callback : function (req) {\n        OpenNebulaAction.clear_cache(\"HOST\");\n        Sunstone.runAction('Cluster.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Cluster.delhost\" : {\n      type: \"single\",\n      call : OpenNebulaResource.delhost,\n      callback : function (req) {\n        OpenNebulaAction.clear_cache(\"HOST\");\n        Sunstone.runAction('Cluster.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Cluster.adddatastore\" : {\n      type: \"single\",\n      call : OpenNebulaResource.adddatastore,\n      callback : function (req) {\n        OpenNebulaAction.clear_cache(\"DATASTORE\");\n        Sunstone.runAction('Cluster.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Cluster.deldatastore\" : {\n      type: \"single\",\n      call : OpenNebulaResource.deldatastore,\n      callback : function (req) {\n        OpenNebulaAction.clear_cache(\"DATASTORE\");\n        Sunstone.runAction('Cluster.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Cluster.addvnet\" : {\n      type: \"single\",\n      call : OpenNebulaResource.addvnet,\n      callback : function (req) {\n        OpenNebulaAction.clear_cache(\"VNET\");\n        Sunstone.runAction('Cluster.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Cluster.delvnet\" : {\n      type: \"single\",\n      call : OpenNebulaResource.delvnet,\n      callback : function (req) {\n        OpenNebulaAction.clear_cache(\"VNET\");\n        Sunstone.runAction('Cluster.show',req.request.data[0][0]);\n      },\n      error : Notifier.onError\n    },\n\n    \"Cluster.delete\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError\n    },\n\n    \"Cluster.update_template\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Cluster.update_dialog\" : {\n      type: \"single\",\n      call: function() {\n        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n        if (selected_nodes.length != 1) {\n          Notifier.notifyMessage(\"Please select one (and just one) cluster to update.\");\n          return false;\n        }\n\n        var resource_id = \"\" + selected_nodes[0];\n        Sunstone.runAction(RESOURCE+'.show_to_update', resource_id);\n      }\n    },\n\n    \"Cluster.rename\" : {\n      type: \"single\",\n      call: OpenNebulaResource.rename,\n      callback: function(request) {\n        Sunstone.runAction(RESOURCE+'.show',request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    }\n  };\n\n  return _actions;\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/clusters-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n       <tr>\\n        <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n        <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        <td></td>\\n      </tr>\\n      \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n    </tbody>\\n  </table>\\n</div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/clusters-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/clusters-tab/panels/info',['require','hbs!./info/html','utils/locale','utils/panel/rename-tr','utils/panel/template-table','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TemplateHTML = require('hbs!./info/html');\n  var Locale = require('utils/locale');\n  var RenameTr = require('utils/panel/rename-tr');\n  var TemplateTable = require('utils/panel/template-table');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Cluster\";\n  var XML_ROOT = \"CLUSTER\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var templateTableHTML = TemplateTable.html(this.element.TEMPLATE, RESOURCE,\n                                              Locale.tr(\"Attributes\"));\n\n    return TemplateHTML({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'templateTableHTML': templateTableHTML\n    });\n  }\n\n  function _setup(context) {\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n\n    TemplateTable.setup(this.element.TEMPLATE, RESOURCE, this.element.ID, context);\n  }\n});\n\n","define('tabs/clusters-tab/panels/info/panelId',['require'],function(require){\n  return 'cluster_info_tab';\n});\n","define('tabs/clusters-tab/panels/hosts',['require','utils/locale','tabs/hosts-tab/datatable','./hosts/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var HostsTable = require('tabs/hosts-tab/datatable');\n\n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./hosts/panelId');\n  var HOSTS_TABLE_ID = PANEL_ID + \"HostsTable\";\n  var RESOURCE = \"Cluster\";\n  var XML_ROOT = \"CLUSTER\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Hosts\");\n    this.icon = \"fa-hdd-o\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var hosts = [];\n\n    if (this.element.HOSTS.ID != undefined){\n      hosts = this.element.HOSTS.ID;\n\n      if (!$.isArray(hosts)){\n        hosts = [hosts];\n      }\n    }\n\n    var opts = {\n      info: true,\n      select: true,\n      selectOptions: {\n        read_only: true,\n        fixed_ids: hosts\n      }\n    };\n\n    this.HostsTable = new HostsTable(HOSTS_TABLE_ID, opts);\n\n    return this.HostsTable.dataTableHTML;\n  }\n\n  function _setup(context) {\n    this.HostsTable.initialize();\n    this.HostsTable.refreshResourceTableSelect();\n\n    return false;\n  }\n});\n\n","define('tabs/clusters-tab/panels/hosts/panelId',['require'],function(require){\n  return 'cluster_host_tab';\n});\n","define('tabs/clusters-tab/panels/vnets',['require','utils/locale','tabs/vnets-tab/datatable','./vnets/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var VNetsTable = require('tabs/vnets-tab/datatable');\n\n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./vnets/panelId');\n  var VNETS_TABLE_ID = PANEL_ID + \"VNetsTable\";\n  var RESOURCE = \"Cluster\";\n  var XML_ROOT = \"CLUSTER\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"VNets\");\n    this.icon = \"fa-globe\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var vnets = [];\n\n    if (this.element.VNETS.ID != undefined){\n      vnets = this.element.VNETS.ID;\n\n      if (!$.isArray(vnets)){\n        vnets = [vnets];\n      }\n    }\n\n    var opts = {\n      info: true,\n      select: true,\n      selectOptions: {\n        read_only: true,\n        fixed_ids: vnets\n      }\n    };\n\n    this.VNetsTable = new VNetsTable(VNETS_TABLE_ID, opts);\n\n    return this.VNetsTable.dataTableHTML;\n  }\n\n  function _setup(context) {\n    this.VNetsTable.initialize();\n    this.VNetsTable.refreshResourceTableSelect();\n\n    return false;\n  }\n});\n\n","define('tabs/clusters-tab/panels/vnets/panelId',['require'],function(require){\n  return 'cluster_vnet_tab';\n});\n","define('tabs/clusters-tab/panels/datastores',['require','utils/locale','tabs/datastores-tab/datatable','./datastores/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var DatastoresTable = require('tabs/datastores-tab/datatable');\n\n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./datastores/panelId');\n  var DATASTORES_TABLE_ID = PANEL_ID + \"DatastoresTable\";\n  var RESOURCE = \"Cluster\";\n  var XML_ROOT = \"CLUSTER\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Datastores\");\n    this.icon = \"fa-folder-open\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var datastores = [];\n\n    if (this.element.DATASTORES.ID != undefined){\n      datastores = this.element.DATASTORES.ID;\n\n      if (!$.isArray(datastores)){\n        datastores = [datastores];\n      }\n    }\n\n    var opts = {\n      info: true,\n      select: true,\n      selectOptions: {\n        read_only: true,\n        fixed_ids: datastores\n      }\n    };\n\n    this.DatastoresTable = new DatastoresTable(DATASTORES_TABLE_ID, opts);\n\n    return this.DatastoresTable.dataTableHTML;\n  }\n\n  function _setup(context) {\n    this.DatastoresTable.initialize();\n    this.DatastoresTable.refreshResourceTableSelect();\n\n    return false;\n  }\n});\n\n","define('tabs/clusters-tab/panels/datastores/panelId',['require'],function(require){\n  return 'cluster_datastore_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/clusters-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"medium-6 columns\\\">\\n      <label for=\\\"name\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      <input type=\\\"text\\\" required name=\\\"name\\\" id=\\\"name\\\" />\\n    </div>\\n    <div class=\\\"medium-6 columns\\\">\\n      <dl class=\\\"tabs right-info-tabs text-center right\\\" data-tab>\\n        <dd class=\\\"active\\\">\\n          <a href=\\\"#tab-hostsTab\\\">\\n            <i class=\\\"fa fa-hdd-o\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hosts\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </a>\\n        </dd>\\n        <dd>\\n          <a href=\\\"#tab-vnetsTab\\\">\\n            <i class=\\\"fa fa-globe\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VNets\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </a>\\n        </dd>\\n        <dd>\\n          <a href=\\\"#tab-datastoresTab\\\">\\n            <i class=\\\"fa fa-folder-open\\\"></i><br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastores\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </a>\\n        </dd>\\n      </dl>\\n    </div>\\n  </div>\\n  <div class=\\\"tabs-content\\\">\\n    <div id=\\\"tab-hostsTab\\\" class=\\\"active content\\\">\\n      \";\n  stack1 = ((helper = (helper = helpers.hostsTableHTML || (depth0 != null ? depth0.hostsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"hostsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n    </div>\\n    <div id=\\\"tab-vnetsTab\\\" class=\\\"content\\\">\\n      \";\n  stack1 = ((helper = (helper = helpers.vnetsTableHTML || (depth0 != null ? depth0.vnetsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"vnetsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n    </div>\\n    <div id=\\\"tab-datastoresTab\\\" class=\\\"content\\\">\\n      \";\n  stack1 = ((helper = (helper = helpers.datastoresTableHTML || (depth0 != null ? depth0.datastoresTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"datastoresTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/clusters-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/clusters-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','tabs/hosts-tab/datatable','tabs/vnets-tab/datatable','tabs/datastores-tab/datatable','hbs!./create/wizard','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var HostsTable = require('tabs/hosts-tab/datatable');\n  var VNetsTable = require('tabs/vnets-tab/datatable');\n  var DatastoresTable = require('tabs/datastores-tab/datatable');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n\n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create Cluster\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      },\n      'update': {\n        'title': Locale.tr(\"Update Cluster\"),\n        'buttonText': Locale.tr(\"Update\"),\n        'resetButton': false\n      }\n    };\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.fill = _fill;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    var opts = {\n      info: false,\n      select: true,\n      selectOptions: {\"multiple_choice\": true}\n    };\n\n    this.hostsTable = new HostsTable(\"cluster_wizard_hosts\", opts);\n    this.vnetsTable = new VNetsTable(\"cluster_wizard_vnets\", opts);\n    this.datastoresTable = new DatastoresTable(\"cluster_wizard_datastores\", opts);\n\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId,\n      'hostsTableHTML': this.hostsTable.dataTableHTML,\n      'vnetsTableHTML': this.vnetsTable.dataTableHTML,\n      'datastoresTableHTML': this.datastoresTable.dataTableHTML\n\n    });\n  }\n\n  function _setup(context) {\n    this.hostsTable.initialize();\n    this.vnetsTable.initialize();\n    this.datastoresTable.initialize();\n  }\n\n  function _submitWizard(context) {\n    var that = this;\n\n    var selectedHostsList      = that.hostsTable.retrieveResourceTableSelect();\n    var selectedVNetsList      = that.vnetsTable.retrieveResourceTableSelect();\n    var selectedDatastoresList = that.datastoresTable.retrieveResourceTableSelect();\n\n    if (that.action == \"create\") {\n      var selectedHosts = {};\n      $.each(selectedHostsList, function(i,e){\n        selectedHosts[e] = 1;\n      });\n\n      var selectedVNets = {};\n      $.each(selectedVNetsList, function(i,e){\n        selectedVNets[e] = 1;\n      });\n\n      var selectedDatastores = {};\n      $.each(selectedDatastoresList, function(i,e){\n        selectedDatastores[e] = 1;\n      });\n\n      var cluster_json = {\n        \"cluster\": {\n          \"name\": $('#name',context).val(),\n          \"hosts\": selectedHosts,\n          \"vnets\": selectedVNets,\n          \"datastores\": selectedDatastores\n        }\n      };\n\n      Sunstone.runAction(\"Cluster.create\",cluster_json);\n      return false;\n    } else if (that.action == \"update\") {\n\n      // find out which ones are in and out\n      $.each(selectedHostsList, function(i,hostId){\n        if (that.originalHostsList.indexOf(hostId) == -1){\n          Sunstone.runAction(\"Cluster.addhost\",that.clusterUpdateId,hostId);\n        }\n      });\n\n      $.each(that.originalHostsList, function(i,hostId){\n        if (selectedHostsList.indexOf(hostId) == -1){\n          Sunstone.runAction(\"Cluster.delhost\",that.clusterUpdateId,hostId);\n        }\n      });\n\n      $.each(selectedVNetsList, function(i,vnetId){\n        if (that.originalVNetsList.indexOf(vnetId) == -1){\n          Sunstone.runAction(\"Cluster.addvnet\",that.clusterUpdateId,vnetId);\n        }\n      });\n\n      $.each(that.originalVNetsList, function(i,vnetId){\n        if (selectedVNetsList.indexOf(vnetId) == -1){\n          Sunstone.runAction(\"Cluster.delvnet\",that.clusterUpdateId,vnetId);\n        }\n      });\n\n      $.each(selectedDatastoresList, function(i,datastoreId){\n        if (that.originalDatastoresList.indexOf(datastoreId) == -1){\n          Sunstone.runAction(\"Cluster.adddatastore\",that.clusterUpdateId,datastoreId);\n        }\n      });\n\n      $.each(that.originalDatastoresList, function(i,datastoreId){\n        if (selectedDatastoresList.indexOf(datastoreId) == -1){\n          Sunstone.runAction(\"Cluster.deldatastore\",that.clusterUpdateId,datastoreId);\n        }\n      });\n\n      Sunstone.hideFormPanel(TAB_ID);\n\n      return false;\n    }\n  }\n\n  function _onShow(context) {\n    // TODO bug, does not work until the input is visible\n    $(\"input#name\", context).focus();\n\n    this.hostsTable.refreshResourceTableSelect();\n    this.vnetsTable.refreshResourceTableSelect();\n    this.datastoresTable.refreshResourceTableSelect();\n  }\n\n  function _fill(context, element) {\n\n    var name    = element.NAME;\n    var hostIds = element.HOSTS.ID;\n    var vnetIds = element.VNETS.ID;\n    var dsIds   = element.DATASTORES.ID;\n\n    if (typeof hostIds == 'string'){\n      hostIds = [hostIds];\n    }\n\n    if (typeof vnetIds == 'string'){\n      vnetIds = [vnetIds];\n    }\n\n    if (typeof dsIds == 'string'){\n      dsIds = [dsIds];\n    }\n\n    $('#name',context).val(name);\n    $('#name',context).attr(\"disabled\", \"disabled\");\n\n    this.originalHostsList = [];\n\n    // Select hosts belonging to the cluster\n    if (hostIds){\n      this.originalHostsList = hostIds;\n\n      this.hostsTable.selectResourceTableSelect({ids: hostIds});\n    }\n\n    this.originalVNetsList = [];\n\n    // Select vnets belonging to the cluster\n    if (vnetIds){\n      this.originalVNetsList = vnetIds;\n\n      this.vnetsTable.selectResourceTableSelect({ids: vnetIds});\n    }\n\n    this.originalDatastoresList = [];\n\n    // Select datastores belonging to the cluster\n    if (dsIds){\n      this.originalDatastoresList = dsIds;\n\n      this.datastoresTable.selectResourceTableSelect({ids: dsIds});\n    }\n\n    this.clusterUpdateId = element.ID;\n  }\n});\n\n","define('tabs/clusters-tab',['require','utils/locale','./clusters-tab/buttons','./clusters-tab/actions','./clusters-tab/datatable','./clusters-tab/tabId','./clusters-tab/panels/info','./clusters-tab/panels/hosts','./clusters-tab/panels/vnets','./clusters-tab/panels/datastores','./clusters-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./clusters-tab/buttons');\n  var Actions = require('./clusters-tab/actions');\n  var Table = require('./clusters-tab/datatable');\n\n  var TAB_ID = require('./clusters-tab/tabId');\n  var DATATABLE_ID = \"dataTableClusters\";\n\n  var _dialogs = [\n  ];\n\n  var _panels = [\n    require('./clusters-tab/panels/info'),\n    require('./clusters-tab/panels/hosts'),\n    require('./clusters-tab/panels/vnets'),\n    require('./clusters-tab/panels/datastores')\n  ];\n\n  var _formPanels = [\n    require('./clusters-tab/form-panels/create')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Clusters\"),\n    tabClass: \"subTab\",\n    parentTab: \"infra-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-th\"></i>&emsp;'+Locale.tr(\"Clusters\"),\n    infoHeader: '<i class=\"fa fa-fw fa-th\"></i>&emsp;'+Locale.tr(\"Cluster\"),\n    subheader: '<span/> <small></small>&emsp;',\n    resource: 'Cluster',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/hosts-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Host.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Host.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"Host.addtocluster\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Select cluster\"),\n      select: \"Cluster\",\n      tip: Locale.tr(\"Select the destination cluster:\"),\n      layout: \"main\"\n    },\n    \"Host.enable\" : {\n      type: \"action\",\n      text: Locale.tr(\"Enable\"),\n      layout: \"main\"\n    },\n    \"Host.disable\" : {\n      type: \"action\",\n      text: Locale.tr(\"Disable\"),\n      layout: \"main\"\n    },\n    \"Host.delete\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Delete host\"),\n      layout: \"del\"\n    }\n  };\n\n  return Buttons;\n})\n;\n","define('tabs/hosts-tab/actions',['require','sunstone','utils/notifier','utils/locale','./datatable','opennebula/host','opennebula/cluster','opennebula/action','./tabId','./form-panels/create/formPanelId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var DataTable = require('./datatable');\n  var OpenNebulaHost = require('opennebula/host');\n  var OpenNebulaCluster = require('opennebula/cluster');\n  var OpenNebulaAction = require('opennebula/action');\n\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n\n  var _actions = {\n    \"Host.create\" : {\n      type: \"create\",\n      call : OpenNebulaHost.create,\n      callback : function(request, response) {\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel($(\"#\" + TAB_ID));\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading($(\"#\" + TAB_ID));\n        Notifier.onError(request, response);\n      },\n      notify: true\n    },\n\n    \"Host.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    \"Host.list\" : {\n      type: \"list\",\n      call: OpenNebulaHost.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"Host.show\" : {\n      type: \"single\",\n      call: OpenNebulaHost.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#' + TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Host.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(\"Host.show\", Sunstone.rightInfoResourceId(tab))\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(\"Host.list\", {force: true});\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Host.enable\" : {\n      type: \"multiple\",\n      call: OpenNebulaHost.enable,\n      callback: function (req) {\n        Sunstone.runAction(\"Host.show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Host.disable\" : {\n      type: \"multiple\",\n      call: OpenNebulaHost.disable,\n      callback: function (req) {\n        Sunstone.runAction(\"Host.show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Host.delete\" : {\n      type: \"multiple\",\n      call: OpenNebulaHost.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Host.update_template\" : {\n      type: \"single\",\n      call: OpenNebulaHost.update,\n      callback: function(request) {\n        Sunstone.runAction('Host.show', request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Host.addtocluster\" : {\n      type: \"multiple\",\n      call: function(params){\n        var cluster = params.data.extra_param;\n        var host = params.data.id;\n\n        if (cluster == -1){\n          OpenNebulaHost.show({\n            data : {\n              id: host\n            },\n            success: function (request, info){\n              var element = info.HOST;\n\n              var current_cluster = element.CLUSTER_ID;\n\n              if(current_cluster != -1){\n                OpenNebulaCluster.delhost({\n                  data: {\n                    id: current_cluster,\n                    extra_param: host\n                  },\n                  success: function(){\n                    OpenNebulaAction.clear_cache(\"HOST\");\n                    Sunstone.runAction('Host.show',host);\n                  },\n                  error: Notifier.onError\n                });\n              } else {\n                OpenNebulaAction.clear_cache(\"HOST\");\n                Sunstone.runAction('Host.show',host);\n              }\n            },\n            error: Notifier.onError\n          });\n        } else {\n          OpenNebulaCluster.addhost({\n            data: {\n              id: cluster,\n              extra_param: host\n            },\n            success: function(){\n              OpenNebulaAction.clear_cache(\"HOST\");\n              Sunstone.runAction('Host.show',host);\n            },\n            error: Notifier.onError\n          });\n        }\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      }\n    },\n\n    \"Host.rename\" : {\n      type: \"single\",\n      call: OpenNebulaHost.rename,\n      callback: function(request) {\n        Sunstone.runAction('Host.show', request.request.data[0][0]);\n      },\n      error: Notifier.onError,\n      notify: true\n    }\n  };\n\n  return _actions;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/panel/cluster-tr/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n  return \"<tr>\\n  <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cluster\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n  <td class=\\\"value_td_cluster\\\">\"\n    + escapeExpression(((helper = (helper = helpers.clusterName || (depth0 != null ? depth0.clusterName : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"clusterName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n  <td>\\n    <div id=\\\"div_edit_chg_cluster\\\">\\n      <a id=\\\"div_edit_chg_cluster_link\\\" class=\\\"edit_e\\\" href=\\\"#\\\"> <i class=\\\"fa fa-pencil-square-o right\\\"/></a>\\n    </div>\\n  </td>\\n</tr>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/panel/cluster-tr/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('utils/panel/cluster-tr',['require','hbs!./cluster-tr/html','utils/resource-select','sunstone'],function(require) {\n  /*\n    This module insert a row with the name of the resource.\n    The row can be edited and a rename action will be sent\n   */\n  \n  var TemplateClusterTr = require('hbs!./cluster-tr/html');\n  var ResourceSelect = require('utils/resource-select');\n  var Sunstone = require('sunstone');\n\n  /*\n    Generate the tr HTML with the name of the resource and an edit icon\n    @param {String} resourceType Resource type (i.e: Zone, Host, Image...)\n    @param {String} resourceName Name of the resource\n    @returns {String} HTML row\n   */\n  var _html = function(clusterName) {\n    var renameTrHTML = TemplateClusterTr({\n      'clusterName': (clusterName.length ? clusterName : '-')\n    })\n\n    return renameTrHTML;\n  };\n\n  /*\n    Initialize the row, clicking the edit icon will add an input to edit the name\n    @param {String} resourceType Resource type (i.e: Zone, Host, Image...)\n    @param {String} resourceId ID of the resource\n    @param {jQuery Object} context Selector including the tr\n   */\n  var _setup = function(resourceType, resourceId, clusterId, context) {\n    context.off(\"click\", \"#div_edit_chg_cluster_link\");\n    context.on(\"click\", \"#div_edit_chg_cluster_link\", function() {\n      var tr_context = $(this).parents(\"tr\");\n      ResourceSelect.insert(\".value_td_cluster\", context, \"Cluster\", clusterId, false);\n    });\n\n    context.off(\"change\", \".value_td_cluster .resource_list_select\");\n    context.on(\"change\", \".value_td_cluster .resource_list_select\", function() {\n      var newClusterId = $(this).val();\n      if (newClusterId != \"\") {\n        Sunstone.runAction(resourceType + \".addtocluster\", [resourceId], newClusterId);\n      }\n    });\n\n    return false;\n  }\n\n  return {\n    'html': _html,\n    'setup': _setup\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/hosts-tab/utils/datastore-capacity-table/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"    <tr>\\n      <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.datastoreId || (depth0 != null ? depth0.datastoreId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"datastoreId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n      <td class=\\\"value_td\\\" colspan=\\\"2\\\">\";\n  stack1 = ((helper = (helper = helpers.datastoreBar || (depth0 != null ? depth0.datastoreBar : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"datastoreBar\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</td>\\n    </tr>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<table class=\\\"dataTable extended_table\\\">\\n  <thead>\\n    <tr>\\n      <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastore ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n      <th style=\\\"width:70%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Capacity\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n    </tr>\\n  </thead>\\n  <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.datastoreBars : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  </tbody>\\n</table>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/hosts-tab/utils/datastore-capacity-table/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/hosts-tab/utils/datastores-capacity-table',['require','tabs/datastores-tab/utils/datastore-capacity-bar','hbs!./datastore-capacity-table/html'],function(require){\n  /*\n    DEPENDENCIES\n   */\n  \n  var DatastoreCapacityBar = require('tabs/datastores-tab/utils/datastore-capacity-bar');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateDatastoresCapacityTable = require('hbs!./datastore-capacity-table/html');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  return {\n    'html': _html\n  }\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html(element) {\n    var hostShare = element.HOST_SHARE;\n\n    var datastores = []\n    if ($.isArray(hostShare.DATASTORES.DS))\n      datastores = hostShare.DATASTORES.DS\n    else if (!$.isEmptyObject(hostShare.DATASTORES.DS))\n      datastores = [hostShare.DATASTORES.DS]\n    else\n      return \"\";\n\n    var datastoreBars = [];\n    $.each(datastores, function(index, value){\n      datastoreBars.push({\n        'datastoreId': value.ID,\n        'datastoreBar': DatastoreCapacityBar.html(value)\n      })\n    });\n\n    return TemplateDatastoresCapacityTable({'datastoreBars': datastoreBars});\n  }\n});\n","define('tabs/hosts-tab/utils/can-import-wilds',['require'],function(require){\n  /*\n    CONSTRUCTOR\n   */\n  \n  return _canImportWilds;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  /* Check if any of the existing VMs in the Host define the IMPORT_TEMPLATE\n      attribute to be imported into OpenNebula.\n    @param {Object} element Host element as returned by OpenNebula\n    @result {Boolean}\n  */\n  function _canImportWilds(element) {\n    var canImportWilds = false;\n    if (element.TEMPLATE.VM) {\n      var vms = element.TEMPLATE.VM;\n      if (!$.isArray(vms)) { // If only 1 VM convert to array\n        vms = [vms];\n      }\n      $.each(vms, function() {\n        if (this.IMPORT_TEMPLATE) {\n          canImportWilds = true;\n          return false;\n        }\n      });\n    }\n    return canImportWilds;\n  }\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/hosts-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        \";\n  stack1 = ((helper = (helper = helpers.clusterTrHTML || (depth0 != null ? depth0.clusterTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"clusterTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"State\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.stateStr || (depth0 != null ? depth0.stateStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"stateStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IM MAD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.IM_MAD : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VM MAD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.VM_MAD : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VN MAD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.VN_MAD : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Capacity\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Allocated Memory\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\" style=\\\"width:50%;\\\">\";\n  stack1 = lambda(((stack1 = (depth0 != null ? depth0.memoryBars : depth0)) != null ? stack1.allocated : stack1), depth0);\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Allocated CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\" style=\\\"width:50%;\\\">\";\n  stack1 = lambda(((stack1 = (depth0 != null ? depth0.cpuBars : depth0)) != null ? stack1.allocated : stack1), depth0);\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Real Memory\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\" style=\\\"width:50%;\\\">\";\n  stack1 = lambda(((stack1 = (depth0 != null ? depth0.memoryBars : depth0)) != null ? stack1.real : stack1), depth0);\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Real CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\" style=\\\"width:50%;\\\">\";\n  stack1 = lambda(((stack1 = (depth0 != null ? depth0.cpuBars : depth0)) != null ? stack1.real : stack1), depth0);\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n    \";\n  stack1 = ((helper = (helper = helpers.datastoresCapacityTableHTML || (depth0 != null ? depth0.datastoresCapacityTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"datastoresCapacityTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/hosts-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/hosts-tab/panels/info',['require','utils/locale','utils/humanize','utils/panel/rename-tr','utils/panel/template-table','utils/panel/permissions-table','utils/panel/cluster-tr','opennebula/host','../utils/cpu-bars','../utils/memory-bars','../utils/datastores-capacity-table','../utils/can-import-wilds','hbs!./info/html','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var RenameTr = require('utils/panel/rename-tr');\n  var TemplateTable = require('utils/panel/template-table');\n  var PermissionsTable = require('utils/panel/permissions-table');\n  var ClusterTr = require('utils/panel/cluster-tr');\n  var OpenNebulaHost = require('opennebula/host');\n  var CPUBars = require('../utils/cpu-bars');\n  var MemoryBars = require('../utils/memory-bars');\n  var DatastoresCapacityTable = require('../utils/datastores-capacity-table');\n  var CanImportWilds = require('../utils/can-import-wilds');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Host\"\n  var XML_ROOT = \"HOST\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    var that = this;\n    that.title = Locale.tr(\"Info\");\n    that.icon = \"fa-info-circle\";\n\n    that.element = info[XML_ROOT];\n\n    that.canImportWilds = CanImportWilds(that.element);\n\n    // Hide information of the Wild VMs of the Host and the ESX Hosts\n    //  in the template table. Unshow values are stored in the unshownTemplate\n    //  object to be used when the host info is updated.\n    that.unshownTemplate = {};\n    that.strippedTemplate = {};\n    var unshownKeys = ['HOST', 'VM', 'WILDS'];\n    $.each(that.element.TEMPLATE, function(key, value) {\n      if ($.inArray(key, unshownKeys) > -1) {\n        that.unshownTemplate[key] = value;\n      } else {\n        that.strippedTemplate[key] = value;\n      }\n    });\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var templateTableHTML = TemplateTable.html(\n                                      this.strippedTemplate, \n                                      RESOURCE, \n                                      Locale.tr(\"Attributes\"));\n\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var clusterTrHTML = ClusterTr.html(this.element.CLUSTER);\n    var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);\n    var cpuBars = CPUBars.html(this.element);\n    var memoryBars = MemoryBars.html(this.element);\n    var stateStr = Locale.tr(OpenNebulaHost.stateStr(this.element.STATE));\n    var datastoresCapacityTableHTML = DatastoresCapacityTable.html(this.element);\n\n    return TemplateInfo({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'clusterTrHTML': clusterTrHTML,\n      'templateTableHTML': templateTableHTML,\n      'permissionsTableHTML': permissionsTableHTML,\n      'cpuBars': cpuBars,\n      'memoryBars': memoryBars,\n      'stateStr': stateStr,\n      'datastoresCapacityTableHTML': datastoresCapacityTableHTML\n    });\n  }\n\n  function _setup(context) {\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n    ClusterTr.setup(RESOURCE, this.element.ID, this.element.CLUSTER_ID, context);\n    TemplateTable.setup(this.strippedTemplate, RESOURCE, this.element.ID, context, this.unshownTemplate);\n    PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);\n    return false;\n  }\n});\n\n","define('tabs/hosts-tab/panels/info/panelId',['require'],function(require) {\n  return 'host_info_tab';\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/hosts-tab/panels/monitor/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <div class=\\\"row graph_legend\\\">\\n      <h3 class=\\\"subheader\\\">\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h3>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-10 columns centered graph text-center\\\" id=\\\"host_cpu_graph\\\" style=\\\"height: 100px;\\\">\\n        <span  id=\\\"provision_dashboard_total\\\" style=\\\"font-size:80px\\\">\\n          <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n        </span>\\n      </div>\\n    </div>\\n    <div class=\\\"row graph_legend\\\">\\n      <div class=\\\"large-10 columns centered\\\" id=\\\"host_cpu_legend\\\"></div>\\n    </div>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <div class=\\\"row graph_legend\\\">\\n      <h3 class=\\\"subheader\\\">\\n        <small>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MEMORY\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</small>\\n      </h3>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-10 columns centered graph text-center\\\" id=\\\"host_mem_graph\\\" style=\\\"height: 100px;\\\">\\n        <span  id=\\\"provision_dashboard_total\\\" style=\\\"font-size:80px\\\">\\n          <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n        </span>\\n      </div>\\n    </div>\\n    <div class=\\\"row graph_legend\\\">\\n      <div class=\\\"large-10 columns centered\\\" id=\\\"host_mem_legend\\\"></div>\\n    </div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/hosts-tab/panels/monitor/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/hosts-tab/panels/monitor',['require','opennebula/host','utils/notifier','utils/locale','utils/graphs','hbs!./monitor/html','../tabId','./monitor/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var OpenNebulaHost = require('opennebula/host');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var Graphs = require('utils/graphs');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateInfo = require('hbs!./monitor/html');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./monitor/panelId');\n  var RESOURCE = \"Host\"\n  var XML_ROOT = \"HOST\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.panelId = PANEL_ID;\n    this.title = Locale.tr(\"Graphs\");\n    this.icon = \"fa-bar-chart-o\";\n    this.element = info[XML_ROOT];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n  Panel.prototype.onShow = _onShow;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateInfo();\n  }\n\n  function _setup(context) {\n    return false;\n  }\n\n  function _onShow(context) {\n    OpenNebulaHost.monitor({\n      data: {\n        id: this.element.ID, \n        monitor: {\n          monitor_resources : \"HOST_SHARE/CPU_USAGE,HOST_SHARE/USED_CPU,HOST_SHARE/MAX_CPU,HOST_SHARE/MEM_USAGE,HOST_SHARE/USED_MEM,HOST_SHARE/MAX_MEM\"\n        }\n      },\n      success: function(req, response) {\n        var host_graphs = [\n            {\n              monitor_resources : \"HOST_SHARE/CPU_USAGE,HOST_SHARE/USED_CPU,HOST_SHARE/MAX_CPU\",\n              labels : Locale.tr(\"Allocated\") + \",\" + Locale.tr(\"Real\") + \",\" + Locale.tr(\"Total\"),\n              humanize_figures : false,\n              div_graph : $(\"#host_cpu_graph\"),\n              div_legend : $(\"#host_cpu_legend\")\n            },\n            {\n              monitor_resources : \"HOST_SHARE/MEM_USAGE,HOST_SHARE/USED_MEM,HOST_SHARE/MAX_MEM\",\n              labels : Locale.tr(\"Allocated\") + \",\" + Locale.tr(\"Real\") + \",\" + Locale.tr(\"Total\"),\n              humanize_figures : true,\n              div_graph : $(\"#host_mem_graph\"),\n              div_legend : $(\"#host_mem_legend\")\n            }\n            ];\n\n        for (var i = 0; i < host_graphs.length; i++) {\n          Graphs.plot(response, host_graphs[i]);\n        }\n      },\n      error: Notifier.onError\n    });\n\n    return false;\n  }\n});\n\n","define('tabs/hosts-tab/panels/monitor/panelId',['require'],function(require) {\n  return 'host_monitoring_tab';\n})\n;\n","define('tabs/hosts-tab/panels/vms',['require','utils/locale','tabs/vms-tab/datatable','./vms/panelId'],function(require){\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var VMsTable = require('tabs/vms-tab/datatable');\n  \n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./vms/panelId');\n  var VMS_TABLE_ID = PANEL_ID + \"VMsTable\";\n  var RESOURCE = \"Host\";\n  var XML_ROOT = \"HOST\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"VMs\");\n    this.icon = \"fa-cloud\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var vms = [];\n\n    if (this.element.VMS.ID != undefined){\n      vms = this.element.VMS.ID;\n\n      if (!$.isArray(vms)){\n        vms = [vms];\n      }\n    }\n\n    var opts = {\n      info: true,\n      select: true,\n      selectOptions: {\n        read_only: true,\n        fixed_ids: vms\n      }\n    };\n\n    this.vmsTable = new VMsTable(VMS_TABLE_ID, opts);\n\n    return this.vmsTable.dataTableHTML;\n  }\n\n  function _setup(context) {\n    this.vmsTable.initialize();\n    this.vmsTable.refreshResourceTableSelect();\n\n    return false;\n  }\n});\n","define('tabs/hosts-tab/panels/vms/panelId',['require'],function(require){\n  return 'host_vms_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/hosts-tab/panels/wilds/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <button id=\\\"import_wilds\\\" class=\\\"button tiny success right radius\\\" >\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Import Wilds\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n    <table id=\\\"datatable_host_wilds\\\" class=\\\"datatable twelve\\\">\\n      <thead>\\n        <tr>\\n          <th></th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VM name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Remote ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody id=\\\"tbody_host_wilds\\\"></tbody>\\n    </table>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/hosts-tab/panels/wilds/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/hosts-tab/panels/wilds',['require','foundation-datatables','utils/locale','../utils/can-import-wilds','opennebula/vm','opennebula/action','sunstone','utils/notifier','hbs!./wilds/html','./wilds/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation-datatables');\n  var Locale = require('utils/locale');\n  var CanImportWilds = require('../utils/can-import-wilds');\n  var OpenNebulaVM = require('opennebula/vm');\n  var OpenNebulaAction = require('opennebula/action');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateWilds = require('hbs!./wilds/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./wilds/panelId');\n  var RESOURCE = \"Host\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Wilds\");\n    this.icon = \"fa-hdd-o\";\n\n    this.element = info[RESOURCE.toUpperCase()];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateWilds();\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    // Hide the import button if the Wilds cannot be imported\n    if (!CanImportWilds(this.element)) {\n      $(\"#import_wilds\").hide();\n    }\n\n    that.dataTableWildHosts = $(\"#datatable_host_wilds\", context).dataTable({\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [0]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]}\n      ]\n    });\n\n    if (that.element.TEMPLATE.VM) {\n      wilds = that.element.TEMPLATE.VM;\n\n      if (!$.isArray(wilds)) { // If only 1 VM convert to array\n        wilds = [wilds];\n      }\n\n      $.each(wilds, function() {\n        var name      = this.VM_NAME;\n        var safe_name = name.replace(/ /g, \"_\").replace(/\\./g, \"_\");\n        var deploy_id = this.DEPLOY_ID;\n\n        var wilds_list_array = [\n          [\n            '<input type=\"checkbox\" class=\"import_wild_checker import_' + safe_name + '\" unchecked/>',\n            name,\n            deploy_id\n          ]\n        ];\n\n        that.dataTableWildHosts.fnAddData(wilds_list_array);\n\n        $(\".import_\" + safe_name, that.dataTableWildHosts).data(\"wild_template\", atob(this.IMPORT_TEMPLATE));\n      });\n    }\n\n    delete that.element.TEMPLATE.WILDS;\n    delete that.element.TEMPLATE.VM;\n\n    // Enable the import button when at least a VM is selected\n    $(\"#import_wilds\", context).attr(\"disabled\", \"disabled\").on(\"click.disable\", function(e) { return false; });\n\n    $(\".import_wild_checker\", context).off(\"change\");\n    $(\".import_wild_checker\", context).on(\"change\", function(){\n      if ($(\".import_wild_checker:checked\", context).length == 0){\n        $(\"#import_wilds\", context).attr(\"disabled\", \"disabled\").on(\"click.disable\", function(e) { return false; });\n      } else {\n        $(\"#import_wilds\", context).removeAttr(\"disabled\").off(\"click.disable\");\n      }\n    });\n\n    // Add event listener for importing WILDS\n    context.off(\"click\", '#import_wilds');\n    context.on(\"click\", '#import_wilds', function () {\n      $(\"#import_wilds\", context).attr(\"disabled\", \"disabled\").on(\"click.disable\", function(e) { return false; });\n      $(\"#import_wilds\", context).html('<i class=\"fa fa-spinner fa-spin\"></i>');\n\n      $(\".import_wild_checker:checked\", \"#datatable_host_wilds\").each(function() {\n        var vm_json = {\n          \"vm\": {\n            \"vm_raw\": $(this).data(\"wild_template\")\n          }\n        };\n\n        var import_host_id = that.element.ID;\n        var wild_row       = $(this).closest('tr');\n\n        // Create the VM in OpenNebula\n        OpenNebulaVM.create({\n          timeout: true,\n          data: vm_json,\n          success: function(request, response) {\n            OpenNebulaAction.clear_cache(\"VM\");\n\n            var extra_info = {};\n\n            extra_info['host_id'] = import_host_id;\n            extra_info['ds_id']   = -1;\n            extra_info['enforce'] = false;\n\n            // Deploy the VM\n            Sunstone.runAction(\"VM.silent_deploy_action\",\n                               response.VM.ID,\n                               extra_info);\n\n            // Notify\n            Notifier.notifyCustom(Locale.tr(\"VM imported\"), \" ID: \" + response.VM.ID, false);\n\n            // Delete row (shouldn't be there in next monitorization)\n            that.dataTableWildHosts.fnDeleteRow(wild_row);\n\n            $(\"#import_wilds\", context).removeAttr(\"disabled\").off(\"click.disable\");\n            $(\"#import_wilds\", context).html(Locale.tr(\"Import Wilds\"));\n          },\n          error: function (request, error_json) {\n            var msg;\n            if (error_json.error.message){\n              msg = error_json.error.message;\n            } else {\n              msg = Locale.tr(\"Cannot contact server: is it running and reachable?\");\n            }\n\n            Notifier.notifyError(msg);\n\n            $(\"#import_wilds\", context).removeAttr(\"disabled\").off(\"click.disable\");\n            $(\"#import_wilds\", context).html(Locale.tr(\"Import Wilds\"));\n          }\n        });\n      });\n    });\n\n    return false;\n  }\n});\n","define('tabs/hosts-tab/panels/wilds/panelId',['require'],function(require) {\n  return 'host_wilds_tab';\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/hosts-tab/panels/esx/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"datatable_host_esx_info_div\\\" class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <table id=\\\"datatable_host_esx\\\" class=\\\"datatable twelve\\\">\\n      <thead>\\n        <tr>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hostname\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Status\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Real CPU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Real Memory\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody id=\\\"tbody_host_esx\\\"></tbody>\\n    </table>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/hosts-tab/panels/esx/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/hosts-tab/panels/esx',['require','foundation-datatables','utils/locale','../utils/cpu-bars','../utils/memory-bars','hbs!./esx/html','./esx/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation-datatables');\n  var Locale = require('utils/locale');\n  var CPUBars = require('../utils/cpu-bars');\n  var MemoryBars = require('../utils/memory-bars');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateESX = require('hbs!./esx/html');\n  \n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./esx/panelId');\n  var RESOURCE = \"Host\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"ESX\");\n    this.icon = \"fa-hdd-o\";\n\n    this.element = info[RESOURCE.toUpperCase()];\n\n    // Do not create an instance of this panel if no vcenter hypervisor\n    if (this.element.TEMPLATE.HYPERVISOR != \"vcenter\") {\n      throw \"Panel not available for this element\";\n    }\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateESX();\n  }\n\n  function _setup(context) {\n    var that = this;\n    var dataTableESX = $(\"#datatable_host_esx\", context).dataTable({\n          \"bSortClasses\" : false,\n          \"bDeferRender\": true\n    });\n\n    var hostListArray = [];\n\n    if (that.element.TEMPLATE.HOST) {\n      if (!(that.element.TEMPLATE.HOST instanceof Array)) {\n        that.element.TEMPLATE.HOST = [that.element.TEMPLATE.HOST];\n      }\n\n      if (that.element.TEMPLATE.HOST instanceof Array) {\n        $.each(that.element.TEMPLATE.HOST, function(){\n          var cpuBars = CPUBars.html(this.element);\n          var memoryBars = MemoryBars.html(this.element);\n\n          hostListArray.push([\n              this.HOSTNAME,\n              this.STATE,\n              cpuBars.real,\n              memoryBars.real\n          ]);\n        });\n      }\n\n      dataTableESX.fnAddData(hostListArray);\n      delete that.element.TEMPLATE.HOST;\n    }\n  }\n})\n;\n","define('tabs/hosts-tab/panels/esx/panelId',['require'],function(require) {\n  return 'host_esx_tab';\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/hosts-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"host_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      <select id=\\\"host_type_mad\\\" name=\\\"host_type\\\">\\n        <option value=\\\"kvm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"xen\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"XEN\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"vmware\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"vcenter\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"vCenter\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"az\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Microsoft Azure\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"ec2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Amazon EC2\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"sl\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IBM Softlayer\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"dummy\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Dummy\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"custom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n    <div class=\\\"large-6 columns\\\" id=\\\"cluster_select\\\">\\n      <label for=\\\"host_cluster_id\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cluster\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      <div id=\\\"host_cluster_id\\\" name=\\\"host_cluster_id\\\"></div>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-6 columns\\\" id=\\\"name_container\\\">\\n      <label for=\\\"name\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hostname\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n      <input type=\\\"text\\\" name=\\\"name\\\" id=\\\"name\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns\\\">\\n      <div class=\\\"manager clear row\\\" id=\\\"vnm_mads\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"vn\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Networking\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <select id=\\\"vnm_mad\\\" name=\\\"vn\\\">\\n            <option value=\\\"dummy\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default (dummy)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"fw\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Firewall\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"802.1Q\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"802.1Q\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"vxlan\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VXLAN\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"ebtables\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ebtables\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"ovswitch\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Open vSwitch\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"vmware\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"custom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"large-12 columns\\\">\\n          <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom VNM_MAD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <input type=\\\"text\\\" name=\\\"custom_vnm_mad\\\" />\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"drivers\\\">\\n    <fieldset>\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Drivers\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <div class=\\\"manager clear row\\\" id=\\\"vmm_mads\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              <label for=\\\"vmm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtualization\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n              <select id=\\\"vmm_mad\\\" name=\\\"vmm\\\">\\n                <option value=\\\"kvm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"xen\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"XEN\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"vmware\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"vcenter\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"vCenter\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"az\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Microsoft Azure\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"ec2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Amazon EC2\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"sl\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IBM Softlayer\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"dummy\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Dummy\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"custom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n              </select>\\n            </div>\\n            <div class=\\\"large-12 columns\\\">\\n              <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom VMM_MAD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n              <input type=\\\"text\\\" name=\\\"custom_vmm_mad\\\" />\\n            </div>\\n          </div>\\n        </div>\\n        <div class=\\\"large-6 columns\\\">\\n          <div class=\\\"manager clear row\\\" id=\\\"im_mads\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              <label for=\\\"im\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n              <select id=\\\"im_mad\\\" name=\\\"im\\\">\\n                <option value=\\\"kvm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"KVM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"xen\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"XEN\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"vmware\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"vcenter\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"vCenter\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"az\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Microsoft Azure\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"ec2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Amazon EC2\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"sl\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IBM Softlayer\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"dummy\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Dummy\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"custom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n              </select>\\n            </div>\\n            <div class=\\\"large-12 columns\\\">\\n              <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom IM_MAD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n              <input type=\\\"text\\\" name=\\\"custom_im_mad\\\" />\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </fieldset>\\n  </div>\\n  <div class=\\\"row vcenter_credentials hidden\\\">\\n    <fieldset>\\n      <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"vCenter\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"vcenter_user\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <input type=\\\"text\\\" name=\\\"vcenter_user\\\" id=\\\"vcenter_user\\\" />\\n        </div>\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"vcenter_host\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hostname\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <input type=\\\"text\\\" name=\\\"vcenter_host\\\" id=\\\"vcenter_host\\\" />\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"vcenter_password\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Password\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n          <input type=\\\"password\\\" name=\\\"vcenter_password\\\" id=\\\"vcenter_password\\\" />\\n        </div>\\n        <div class=\\\"large-6 columns\\\">\\n          <br>\\n          <a class=\\\"button radius small right\\\" id=\\\"get_vcenter_clusters\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Get vCenter Clusters\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n        </div>\\n      </div>\\n      <div class=\\\"vcenter_clusters\\\"></div>\\n      <br>\\n      <div class=\\\"vcenter_templates\\\"></div>\\n      <br>\\n      <br>\\n      <div class=\\\"vcenter_vms\\\"></div>\\n      <br>\\n      <div class=\\\"vcenter_networks\\\"></div>\\n      <div class=\\\"row import_vcenter_clusters_div hidden\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <br>\\n          <a class=\\\"button radius small right success\\\" id=\\\"import_vcenter_clusters\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Import\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n        </div>\\n      </div>\\n    </fieldset>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/hosts-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/hosts-tab/form-panels/create',['require','utils/form-panels/form-panel','sunstone','utils/locale','utils/tips','utils/notifier','utils/resource-select','hbs!./create/wizard','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var Notifier = require('utils/notifier');\n  var ResourceSelect = require('utils/resource-select')\n  \n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create Host\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      }\n    }\n\n    BaseFormPanel.call(this);\n  };\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    return TemplateWizardHTML({formPanelId: this.formPanelId});\n  }\n\n  function _setup(context) {\n\n    $(\".drivers\", context).hide();\n\n    $(\"#host_type_mad\", context).on(\"change\", function() {\n      $(\"#vmm_mad\", context).val(this.value).change();\n      $(\"#im_mad\", context).val(this.value).change();\n\n      if (this.value == \"custom\") {\n        $(\".vcenter_credentials\", context).hide();\n        $(\"#vnm_mads\", context).show();\n        $(\"#name_container\", context).show();\n        $(\"#create_host_submit\", context).show();\n        $(\".drivers\", context).show();\n      } else if (this.value == \"vcenter\") {\n        $(\"#vnm_mads\", context).hide();\n        $(\"#name_container\", context).hide();\n        $(\".vcenter_credentials\", context).show();\n        $(\"#create_host_submit\", context).hide();\n        $(\".drivers\", context).hide();\n      } else {\n        $(\".vcenter_credentials\", context).hide();\n        $(\"#vnm_mads\", context).show();\n        $(\"#name_container\", context).show();\n        $(\"#create_host_submit\", context).show();\n        $(\".drivers\", context).hide();\n      }\n    })\n\n    /* TODO\n    $(\"#get_vcenter_clusters\", context).on(\"click\", function() {\n          // TODO notify if credentials empty\n          var container = $(\".vcenter_clusters\", context); \n\n          container.html(generateAdvancedSection({\n            html_id: \"/vcenter\",\n            title: Locale.tr(\"Clusters\"),\n            content: '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n              '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n              '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n            '</span>'\n          }))\n\n          $('a', container).trigger(\"click\")\n\n          $.ajax({\n            url: 'vcenter',\n            type: \"GET\",\n            data: {timeout: false},\n            dataType: \"json\",\n            headers: {\n                \"X_VCENTER_USER\": $(\"#vcenter_user\", context).val(),\n                \"X_VCENTER_PASSWORD\": $(\"#vcenter_password\", context).val(),\n                \"X_VCENTER_HOST\": $(\"#vcenter_host\", context).val()\n              },\n            success: function(response) {\n              $(\"#vcenter_user\", context).atLocale.tr(\"disabled\", \"disabled\")\n              $(\"#vcenter_password\", context).atLocale.tr(\"disabled\", \"disabled\")\n              $(\"#vcenter_host\", context).atLocale.tr(\"disabled\", \"disabled\")\n              $(\"#get_vcenter_clusters\", context).hide();\n              $(\".import_vcenter_clusters_div\", context).show();\n\n              $(\".content\", container).html(\"\");\n\n              $('<div class=\"row\">' +\n                  '<div class=\"large-12 columns\">' +\n                    '<p style=\"color: #999\">' + Locale.tr(\"Please select the vCenter Clusters to be imported to OpenNebula. Each vCenter Cluster will be included as a new OpenNebula Host\") + '</p>' +\n                  '</div>' +\n                '</div>').appendTo($(\".content\", container))\n\n              $.each(response, function(datacenter_name, clusters) {\n                    $('<div class=\"row\">' +\n                        '<div class=\"large-12 columns\">' +\n                          '<h5>' +\n                            datacenter_name + ' ' + Locale.tr(\"Datacenter\") +\n                          '</h5>' +\n                        '</div>' +\n                      '</div>').appendTo($(\".content\", container))\n\n                    if (clusters.length == 0) {\n                      $('<div class=\"row\">' +\n                          '<div class=\"large-12 columns\">' +\n                            '<label>' +\n                              Locale.tr(\"No clusters found in this DataCenter\") +\n                            '</label>' +\n                          '</div>' +\n                        '</div>').appendTo($(\".content\", container))\n                    } else {\n                      $.each(clusters, function(id, cluster_name) {\n                        var row = $('<div class=\"vcenter_cluster\">' +\n                            '<div class=\"row\">' +\n                              '<div class=\"large-10 columns\">' +\n                                '<label>' +\n                                  '<input type=\"checkbox\" class=\"cluster_name\"/> ' +\n                                  cluster_name +\n                                '</label>' +\n                                '<div class=\"large-12 columns vcenter_host_response\">' +\n                                '</div>' +\n                              '</div>' +\n                              '<div class=\"large-2 columns vcenter_host_result\">' +\n                              '</div>' +\n                            '</div>' +\n                          '</div>').appendTo($(\".content\", container))\n\n                        $(\".cluster_name\", row).data(\"cluster_name\", cluster_name)\n                        $(\".cluster_name\", row).data(\"datacenter_name\", datacenter_name)\n                      });\n                    }\n                  });\n\n              var templates_container = $(\".vcenter_templates\", context);\n              var vms_container = $(\".vcenter_vms\", context);\n              var networks_container = $(\".vcenter_networks\", context);\n\n              var vcenter_user = $(\"#vcenter_user\", context).val();\n              var vcenter_password = $(\"#vcenter_password\", context).val();\n              var vcenter_host = $(\"#vcenter_host\", context).val();\n\n              fillVCenterTemplates({\n                    container: templates_container,\n                    vcenter_user: vcenter_user,\n                    vcenter_password: vcenter_password,\n                    vcenter_host: vcenter_host\n                  });\n\n              fillVCenterNetworks({\n                    container: networks_container,\n                    vcenter_user: vcenter_user,\n                    vcenter_password: vcenter_password,\n                    vcenter_host: vcenter_host\n                  });\n            },\n            error: function(response) {\n                $(\".vcenter_clusters\", context).html('')\n                onError({}, OpenNebula.Error(response));\n              }\n          });\n\n          return false;\n        })\n\n    $(\"#import_vcenter_clusters\", context).on(\"click\", function() {\n          $(this).hide();\n\n          var cluster_id = $('#host_cluster_id .resource_list_select', context).val();\n          if (!cluster_id) cluster_id = \"-1\";\n\n          $.each($(\".cluster_name:checked\", context), function() {\n            var cluster_context = $(this).closest(\".vcenter_cluster\");\n            $(\".vcenter_host_result:not(.success)\", cluster_context).html('<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                  '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                  '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n                '</span>');\n\n            var host_json = {\n              \"host\": {\n                \"name\": $(this).data(\"cluster_name\"),\n                \"vm_mad\": \"vcenter\",\n                \"vnm_mad\": \"dummy\",\n                \"im_mad\": \"vcenter\",\n                \"cluster_id\": cluster_id\n              }\n            };\n\n            OpenNebula.Host.create({\n              timeout: true,\n              data: host_json,\n              success: function(request, response) {\n                  OpenNebula.Helper.clear_cache(\"HOST\");\n\n                  $(\".vcenter_host_result\", cluster_context).addClass(\"success\").html(\n                      '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                        '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                        '<i class=\"fa  fa-check fa-stack-1x fa-inverse\"></i>' +\n                      '</span>');\n\n                  $(\".vcenter_host_response\", cluster_context).html('<p style=\"font-size:12px\" class=\"running-color\">' +\n                        Locale.tr(\"Host created successfully\") + ' ID:' + response.HOST.ID +\n                      '</p>');\n\n                  var template_raw =\n                    \"VCENTER_USER=\\\"\" + $(\"#vcenter_user\", context).val() + \"\\\"\\n\" +\n                    \"VCENTER_PASSWORD=\\\"\" + $(\"#vcenter_password\", context).val() + \"\\\"\\n\" +\n                    \"VCENTER_HOST=\\\"\" + $(\"#vcenter_host\", context).val() + \"\\\"\\n\";\n\n                  Sunstone.runAction(\"Host.update_template\", response.HOST.ID, template_raw);\n                  addHostElement(request, response);\n                },\n              error: function (request, error_json) {\n                $(\".vcenter_host_result\",  context).html('<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                      '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                      '<i class=\"fa  fa-warning fa-stack-1x fa-inverse\"></i>' +\n                    '</span>');\n\n                $(\".vcenter_host_response\",  context).html('<p style=\"font-size:12px\" class=\"error-color\">' +\n                      (error_json.error.message || Locale.tr(\"Cannot contact server: is it running and reachable?\")) +\n                    '</p>');\n              }\n            });\n          })\n\n          $.each($(\".template_name:checked\", context), function() {\n            var template_context = $(this).closest(\".vcenter_template\");\n\n            $(\".vcenter_template_result:not(.success)\", template_context).html(\n                '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                  '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                  '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n                '</span>');\n\n            var template_json = {\n              \"vmtemplate\": {\n                \"template_raw\": $(this).data(\"one_template\")\n              }\n            };\n\n            OpenNebula.Template.create({\n              timeout: true,\n              data: template_json,\n              success: function(request, response) {\n                  OpenNebula.Helper.clear_cache(\"VMTEMPLATE\");\n                  $(\".vcenter_template_result\", template_context).addClass(\"success\").html(\n                      '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                        '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                        '<i class=\"fa  fa-check fa-stack-1x fa-inverse\"></i>' +\n                      '</span>');\n\n                  $(\".vcenter_template_response\", template_context).html('<p style=\"font-size:12px\" class=\"running-color\">' +\n                        Locale.tr(\"Template created successfully\") + ' ID:' + response.VMTEMPLATE.ID +\n                      '</p>');\n                },\n              error: function (request, error_json) {\n                $(\".vcenter_template_result\", template_context).html('<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                      '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                      '<i class=\"fa  fa-warning fa-stack-1x fa-inverse\"></i>' +\n                    '</span>');\n\n                $(\".vcenter_template_response\", template_context).html('<p style=\"font-size:12px\" class=\"error-color\">' +\n                      (error_json.error.message || Locale.tr(\"Cannot contact server: is it running and reachable?\")) +\n                    '</p>');\n              }\n            });\n          })\n\n          $.each($(\".vm_name:checked\", context), function() {\n            var vm_context = $(this).closest(\".vcenter_vm\");\n\n            $(\".vcenter_vm_result:not(.success)\", vm_context).html(\n                '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                  '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                  '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n                '</span>');\n\n            var vm_json = {\n              \"vm\": {\n                \"vm_raw\": $(this).data(\"one_vm\")\n              }\n            };\n\n            var host_id_to_deploy = $(this).data(\"vm_to_host\");\n\n            OpenNebula.VM.create({\n              timeout: true,\n              data: vm_json,\n              success: function(request, response) {\n                  OpenNebula.Helper.clear_cache(\"VM\");\n\n                  var extra_info = {};\n\n                  extra_info['host_id'] = host_id_to_deploy;\n                  extra_info['ds_id']   = -1;\n                  extra_info['enforce'] = false;\n\n                  Sunstone.runAction(\"VM.deploy_action\", response.VM.ID, extra_info);\n\n                  $(\".vcenter_vm_result\", vm_context).addClass(\"success\").html(\n                      '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                        '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                        '<i class=\"fa  fa-check fa-stack-1x fa-inverse\"></i>' +\n                      '</span>');\n\n                  $(\".vcenter_vm_response\", vm_context).html('<p style=\"font-size:12px\" class=\"running-color\">' +\n                        Locale.tr(\"VM imported successfully\") + ' ID:' + response.VM.ID +\n                      '</p>');\n                },\n              error: function (request, error_json) {\n                $(\".vcenter_vm_response\", vm_context).html('<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                      '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                      '<i class=\"fa  fa-warning fa-stack-1x fa-inverse\"></i>' +\n                    '</span>');\n\n                $(\".vcenter_vm_response\", vm_context).html('<p style=\"font-size:12px\" class=\"error-color\">' +\n                      (error_json.error.message || Locale.tr(\"Cannot contact server: is it running and reachable?\")) +\n                    '</p>');\n              }\n            });\n          })\n\n          $.each($(\".network_name:checked\", context), function() {\n            var network_context = $(this).closest(\".vcenter_network\");\n\n            $(\".vcenter_network_result:not(.success)\", network_context).html(\n                '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                  '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                  '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>' +\n                '</span>');\n\n            var network_size = $(\".netsize\", network_context).val();\n            var network_tmpl = $(this).data(\"one_network\");\n            var netname      = $(this).data(\"network_name\");\n            var type         = $('.type_select', network_context).val();\n\n            var ar_array = [];\n            ar_array.push(\"TYPE=\" + type);\n            ar_array.push(\"SIZE=\" + network_size);\n\n            switch (type) {\n              case 'ETHER':\n                var mac = $('.eth_mac_net', network_context).val();\n\n                if (mac) {\n                  ar_array.push(\"MAC=\" + mac);\n                }\n\n                break;\n              case 'IP4':\n                var mac = $('.four_mac_net', network_context).val();\n                var ip = $('.four_ip_net', network_context).val();\n\n                if (mac) {\n                  ar_array.push(\"MAC=\" + mac);\n                }\n                if (ip) {\n                  ar_array.push(\"IP=\" + ip);\n                }\n\n                break;\n              case 'IP6':\n                var mac = $('.six_mac_net', network_context).val();\n                var gp = $('.six_global_net', network_context).val();\n                var ula = $('.six_mac_net', network_context).val();\n\n                if (mac) {\n                  ar_array.push(\"MAC=\" + mac);\n                }\n                if (gp) {\n                  ar_array.push(\"GLOBAL_PREFIX=\" + gp);\n                }\n                if (ula) {\n                  ar_array.push(\"ULA_PREFIX=\" + ula);\n                }\n\n                break;\n            }\n\n            network_tmpl += \"\\nAR=[\" \n            network_tmpl += ar_array.join(\",\\n\")\n            network_tmpl += \"]\"\n\n            if ($(\".vlaninfo\", network_context)) {\n              network_tmpl += \"VLAN=\\\"YES\\\"\\n\";\n              network_tmpl += \"VLAN_ID=\" + $(\".vlaninfo\", network_context).val() + \"\\n\";\n            }\n\n            var vnet_json = {\n              \"vnet\": {\n                \"vnet_raw\": network_tmpl\n              }\n            };\n\n            OpenNebula.Network.create({\n              timeout: true,\n              data: vnet_json,\n              success: function(request, response) {\n                  OpenNebula.Helper.clear_cache(\"VNET\");\n                  $(\".vcenter_network_result\", network_context).addClass(\"success\").html(\n                      '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                        '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                        '<i class=\"fa  fa-check fa-stack-1x fa-inverse\"></i>' +\n                      '</span>');\n\n                  $(\".vcenter_network_response\", network_context).html('<p style=\"font-size:12px\" class=\"running-color\">' +\n                        Locale.tr(\"Virtual Network created successfully\") + ' ID:' + response.VNET.ID +\n                      '</p>');\n                },\n              error: function (request, error_json) {\n                $(\".vcenter_network_result\", network_context).html('<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">' +\n                      '<i class=\"fa fa-cloud fa-stack-2x\"></i>' +\n                      '<i class=\"fa  fa-warning fa-stack-1x fa-inverse\"></i>' +\n                    '</span>');\n\n                $(\".vcenter_network_response\", network_context).html('<p style=\"font-size:12px\" class=\"error-color\">' +\n                      (error_json.error.message || Locale.tr(\"Cannot contact server: is it running and reachable?\")) +\n                    '</p>');\n              }\n            });\n          });\n\n          return false\n        });\n  */\n \n    // Show custom driver input only when custom is selected in selects\n    $('input[name=\"custom_vmm_mad\"],' +\n       'input[name=\"custom_im_mad\"],' +\n       'input[name=\"custom_vnm_mad\"]', context).parent().hide();\n\n    $('select#vmm_mad', context).change(function() {\n      if ($(this).val() == \"custom\")\n          $('input[name=\"custom_vmm_mad\"]').parent().show();\n      else\n          $('input[name=\"custom_vmm_mad\"]').parent().hide();\n    });\n\n    $('select#im_mad', context).change(function() {\n      if ($(this).val() == \"custom\")\n          $('input[name=\"custom_im_mad\"]').parent().show();\n      else\n          $('input[name=\"custom_im_mad\"]').parent().hide();\n    });\n\n    $('select#vnm_mad', context).change(function() {\n      if ($(this).val() == \"custom\")\n          $('input[name=\"custom_vnm_mad\"]').parent().show();\n      else\n          $('input[name=\"custom_vnm_mad\"]').parent().hide();\n    });\n\n    $('#create_host_form').on(\"keyup keypress\", function(e) {\n          var code = e.keyCode || e.which; \n          if (code  == 13) {               \n            e.preventDefault();\n            return false;\n          }\n        });\n\n    Tips.setup();\n    return false;\n  }\n\n  function _submitWizard(context) {\n    var name = $('#name', context).val();\n    if (!name) {\n      Sunstone.hideFormPanelLoading(this.tabId);\n      Notifier.notifyError(Locale.tr(\"Host name missing!\"));\n      return false;\n    }\n\n    var cluster_id = $('#host_cluster_id .resource_list_select', context).val();\n    if (!cluster_id) cluster_id = \"-1\";\n\n    var vmm_mad = $('select#vmm_mad', context).val();\n    vmm_mad = vmm_mad == \"custom\" ? $('input[name=\"custom_vmm_mad\"]').val() : vmm_mad;\n    var im_mad = $('select#im_mad', context).val();\n    im_mad = im_mad == \"custom\" ? $('input[name=\"custom_im_mad\"]').val() : im_mad;\n    var vnm_mad = $('select#vnm_mad', context).val();\n    vnm_mad = vnm_mad == \"custom\" ? $('input[name=\"custom_vnm_mad\"]').val() : vnm_mad;\n\n    var host_json = {\n      \"host\": {\n        \"name\": name,\n        \"vm_mad\": vmm_mad,\n        \"vnm_mad\": vnm_mad,\n        \"im_mad\": im_mad,\n        \"cluster_id\": cluster_id\n      }\n    };\n\n    //Create the OpenNebula.Host.\n    //If it is successfull we refresh the list.\n    Sunstone.runAction(\"Host.create\", host_json);\n    return false;\n  }\n\n  function _onShow(context) {\n    $(\"#name\", context).focus();\n\n    var cluster_id = $(\"#host_cluster_id .resource_list_select\", context).val();\n    if (!cluster_id) cluster_id = \"-1\";\n\n    ResourceSelect.insert('#host_cluster_id', context, \"Cluster\", cluster_id, false);\n    return false;\n  }\n});\n\n","define('tabs/hosts-tab',['require','utils/locale','./hosts-tab/buttons','./hosts-tab/actions','./hosts-tab/datatable','./hosts-tab/tabId','./hosts-tab/panels/info','./hosts-tab/panels/monitor','./hosts-tab/panels/vms','./hosts-tab/panels/wilds','./hosts-tab/panels/esx','./hosts-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./hosts-tab/buttons');\n  var Actions = require('./hosts-tab/actions');\n  var Table = require('./hosts-tab/datatable');\n\n  var TAB_ID = require('./hosts-tab/tabId');\n  var DATATABLE_ID = \"dataTableHosts\";\n\n  //var _dialogs = [\n  //  require('./hosts-tab/dialogs/create'),\n  //  require('./hosts-tab/dialogs/clone')\n  //];\n\n  var _panels = [\n    require('./hosts-tab/panels/info'),\n    require('./hosts-tab/panels/monitor'),\n    require('./hosts-tab/panels/vms'),\n    require('./hosts-tab/panels/wilds'),\n    require('./hosts-tab/panels/esx')\n  ];\n\n  var _formPanels = [\n    require('./hosts-tab/form-panels/create')\n  ]\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Hosts\"),\n    tabClass: \"subTab\",\n    parentTab: \"infra-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-hdd-o\"></i>&emsp;' + Locale.tr(\"Hosts\"),\n    infoHeader: '<i class=\"fa fa-fw fa-hdd-o\"></i>&emsp;' + Locale.tr(\"Host\"),\n    subheader: '<span class=\"total_hosts\"/> <small>' + Locale.tr(\"TOTAL\") + '</small>&emsp;\\\n        <span class=\"on_hosts\"/> <small>' + Locale.tr(\"ON\") + '</small>&emsp;\\\n        <span class=\"off_hosts\"/> <small>' + Locale.tr(\"OFF\") + '</small>&emsp;\\\n        <span class=\"error_hosts\"/> <small>' + Locale.tr(\"ERROR\") + '</small>',\n    resource: 'Host',\n    content: '',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    //dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/datastores-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var DatastoreButtons = {\n    \"Datastore.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Datastore.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"Datastore.addtocluster\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Select cluster\"),\n      select: \"Cluster\",\n      layout: \"main\",\n      tip: Locale.tr(\"Select the destination cluster:\")\n    },\n    \"Datastore.chown\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change owner\"),\n      select: \"User\",\n      layout: \"user_select\",\n      tip: Locale.tr(\"Select the new owner\") + \":\"\n    },\n    \"Datastore.chgrp\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change group\"),\n      select: \"Group\",\n      layout: \"user_select\",\n      tip: Locale.tr(\"Select the new group\") + \":\"\n    },\n    \"Datastore.delete\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Delete\"),\n      layout: \"del\"\n    },\n    \"Datastore.enable\" : {\n      type: \"action\",\n      layout: \"more_select\",\n      text: Locale.tr(\"Enable\")\n    },\n    \"Datastore.disable\" : {\n      type: \"action\",\n      layout: \"more_select\",\n      text: Locale.tr(\"Disable\")\n    }\n  };\n\n  return DatastoreButtons;\n})\n;\n","define('tabs/datastores-tab/dialogs/create/dialogId',['require'],function(require){\n  return 'createDatastoreDialog';\n});\n","define('tabs/datastores-tab/actions',['require','sunstone','utils/notifier','utils/locale','opennebula/datastore','opennebula/cluster','opennebula/action','./tabId','./dialogs/create/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var OpenNebulaDatastore = require('opennebula/datastore');\n  var OpenNebulaCluster = require('opennebula/cluster');\n  var OpenNebulaAction = require('opennebula/action');\n\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./dialogs/create/dialogId');\n\n  var _actions = {\n    \"Datastore.create\" : {\n      type: \"create\",\n      call : OpenNebulaDatastore.create,\n      callback : function(request, response) {\n        Sunstone.getDialog(CREATE_DIALOG_ID).hide();\n        Sunstone.getDialog(CREATE_DIALOG_ID).reset();\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n        Notifier.notifyCustom(Locale.tr(\"Datastore created\"), \" ID: \" + response.DATASTORE.ID, false);\n      },\n      error : Notifier.onError\n    },\n\n    \"Datastore.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.getDialog(CREATE_DIALOG_ID).show();\n      }\n    },\n\n    \"Datastore.list\" : {\n      type: \"list\",\n      call: OpenNebulaDatastore.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"Datastore.show\" : {\n      type: \"single\",\n      call: OpenNebulaDatastore.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#' + TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Datastore.refresh\" : {\n      type: \"custom\",\n      call: function() {\n          var tab = $('#' + TAB_ID);\n          if (Sunstone.rightInfoVisible(tab)) {\n            Sunstone.runAction(\"Datastore.show\", Sunstone.rightInfoResourceId(tab))\n          } else {\n            Sunstone.getDataTable(TAB_ID).waitingNodes();\n            Sunstone.runAction(\"Datastore.list\", {force: true});\n          }\n        },\n      error: Notifier.onError\n    },\n\n    \"Datastore.fetch_permissions\" : {\n      type: \"single\",\n      call: OpenNebulaDatastore.show,\n      callback: function(request, element_json) {\n        //var ds = element_json.DATASTORE;\n        //setPermissionsTable(ds, $(\".datastore_permissions_table\"));\n      },\n      error: Notifier.onError\n    },\n\n    \"Datastore.update_template\" : {\n      type: \"single\",\n      call: OpenNebulaDatastore.update,\n      callback: function(request) {\n        Sunstone.runAction('Datastore.show', request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Datastore.update\" : {\n      type: \"single\",\n      call: OpenNebulaDatastore.update,\n      callback: function() {\n        Sunstone.runAction('Datastore.show', request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Datastore.delete\" : {\n      type: \"multiple\",\n      call : OpenNebulaDatastore.del,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error : Notifier.onError,\n      notify: true\n    },\n\n    \"Datastore.chown\" : {\n      type: \"multiple\",\n      call: OpenNebulaDatastore.chown,\n      callback:  function (req) {\n        Sunstone.runAction(\"Datastore.show\", req.request.data[0][0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError\n    },\n\n    \"Datastore.chgrp\" : {\n      type: \"multiple\",\n      call: OpenNebulaDatastore.chgrp,\n      callback: function (req) {\n        Sunstone.runAction(\"Datastore.show\", req.request.data[0][0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError\n    },\n\n    \"Datastore.chmod\" : {\n      type: \"single\",\n      call: OpenNebulaDatastore.chmod,\n      callback: function (req) {\n        Sunstone.runAction(\"Datastore.show\", req.request.data[0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Datastore.addtocluster\" : {\n      type: \"multiple\",\n      call: function(params, success) {\n        var cluster = params.data.extra_param;\n        var ds = params.data.id;\n\n        if (cluster == -1) {\n          OpenNebulaDatastore.show({\n            data : {\n              id: ds\n            },\n            success: function (request, ds_info) {\n              var current_cluster = ds_info.DATASTORE.CLUSTER_ID;\n\n              if (current_cluster != -1) {\n                OpenNebulaCluster.deldatastore({\n                  data: {\n                    id: current_cluster,\n                    extra_param: ds\n                  },\n                  success: function() {\n                    OpenNebulaAction.clear_cache(\"DATASTORE\");\n                    Sunstone.runAction('Datastore.show', ds);\n                  },\n                  error: Notifier.onError\n                });\n              } else {\n                OpenNebulaAction.clear_cache(\"DATASTORE\");\n                Sunstone.runAction('Datastore.show', ds);\n              }\n            },\n            error: Notifier.onError\n          });\n        } else {\n          OpenNebulaCluster.adddatastore({\n            data: {\n              id: cluster,\n              extra_param: ds\n            },\n            success: function() {\n              OpenNebulaAction.clear_cache(\"DATASTORE\");\n              Sunstone.runAction('Datastore.show', ds);\n            },\n            error: Notifier.onError\n          });\n        }\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      }\n    },\n\n    \"Datastore.rename\" : {\n      type: \"single\",\n      call: OpenNebulaDatastore.rename,\n      callback: function(request) {\n        Sunstone.runAction('Datastore.show', request.request.data[0][0]);\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Datastore.enable\" : {\n      type: \"multiple\",\n      call: OpenNebulaDatastore.enable,\n      callback: function (req) {\n        Sunstone.runAction(\"Datastore.show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Datastore.disable\" : {\n      type: \"multiple\",\n      call: OpenNebulaDatastore.disable,\n      callback: function (req) {\n        Sunstone.runAction(\"Datastore.show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    }\n  };\n\n  return _actions;\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/datastores-tab/dialogs/create/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal medium max-height\\\" role=\\\"dialog\\\" data-reveal>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-5 columns\\\">\\n      <h3 id=\\\"create_cluster_header\\\" class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create Datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n    </div>\\n    <div class=\\\"large-7 columns\\\">\\n      <dl class=\\\"tabs right wizard_tabs\\\" data-tab>\\n        <dd class=\\\"active\\\">\\n          <a href=\\\"#datastore_easyTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Wizard\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n        </dd>\\n        <dd>\\n          <a href=\\\"#datastore_manualTab\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced mode\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n        </dd>\\n      </dl>\\n    </div>\\n  </div>\\n  <div class=\\\"reveal-body\\\">\\n    <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\" class=\\\"creation\\\">\\n      <div class=\\\"tabs-content\\\">\\n        <div id=\\\"datastore_easyTab\\\" class=\\\"active content\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"name\\\" >\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n              <input type=\\\"text\\\" name=\\\"name\\\" id=\\\"name\\\"/>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"presets\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Presets\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n              <select id=\\\"presets\\\" name=\\\"presets\\\">\\n                <option value=\\\"fs\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filesystem\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"vmware_vmfs\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMware VMFS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"block_lvm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Block LVM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"fs_lvm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"FS LVM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"ceph\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ceph\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"gluster\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Gluster\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"dev\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Devices\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"custom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n              </select>\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"cluster\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cluster\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n              <div id=\\\"cluster_id\\\" name=\\\"cluster_id\\\"></div>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              <fieldset>\\n                <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n                <div class=\\\"large-12 columns text-center\\\">\\n                  <input id=\\\"image_ds_type\\\" type=\\\"radio\\\" name=\\\"ds_type\\\" value=\\\"IMAGE_DS\\\" checked/>\\n                  <label for=\\\"image_ds_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Images\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n                  <input id=\\\"system_ds_type\\\" type=\\\"radio\\\" name=\\\"ds_type\\\" value=\\\"SYSTEM_DS\\\" />\\n                  <label for=\\\"system_ds_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"System\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n                  <input id=\\\"file_ds_type\\\" type=\\\"radio\\\" name=\\\"ds_type\\\" value=\\\"FILE_DS\\\" />\\n                  <label for=\\\"file_ds_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Files\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n                </div>\\n              </fieldset>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              <fieldset>\\n                <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Managers\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n                <div class=\\\"large-6 columns\\\">\\n                  <label for=\\\"ds_mad\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n                  <select id=\\\"ds_mad\\\" name=\\\"ds_mad\\\">\\n                    <option value=\\\"fs\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filesystem\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"vmware\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"lvm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"LVM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"vmfs\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMFS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"ceph\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ceph\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"dev\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Devices\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"custom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                  </select>\\n                  <div>\\n                    <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom DS_MAD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n                    <input type=\\\"text\\\" name=\\\"ds_tab_custom_ds_mad\\\" />\\n                  </div>\\n                </div>\\n                <div class=\\\"large-6 columns\\\">\\n                  <label for=\\\"tm_mad\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Transfer\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n                  <select id=\\\"tm_mad\\\" name=\\\"tm_mad\\\">\\n                    <option value=\\\"shared\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shared\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"ssh\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"SSH\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"qcow2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"qcow2\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"lvm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"LVM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"fs_lvm\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"FS LVM\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"vmfs\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMFS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"ceph\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ceph\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"dev\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Devices\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                    <option value=\\\"custom\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                  </select>\\n                  <div>\\n                    <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom TM_MAD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n                    <input type=\\\"text\\\" name=\\\"ds_tab_custom_tm_mad\\\" />\\n                  </div>\\n                </div>\\n              </fieldset>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"disk_type\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Disk type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n              <select id=\\\"disk_type\\\" name=\\\"disk_type\\\">\\n                <option value=\\\"file\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"File\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"block\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Block\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"RBD\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"RBD\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                <option value=\\\"gluster\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Gluster\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n              </select>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              <label for=\\\"safe_dirs\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Safe Directories\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"If you need to un-block a directory under one of the RESTRICTED_DIRS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"safe_dirs\\\" id=\\\"safe_dirs\\\" />\\n            </div>\\n            <div class=\\\"large-12 columns\\\">\\n              <label for=\\\"restricted_dirs\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Restricted Directories\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Paths that can not be used to register images. A space separated list of paths. This will prevent users registering important files as VM images and accessing them thourgh their VMs. OpenNebula will automatically add its configuration directories: /var/lib/one, /etc/one and oneadmin's home ($HOME).\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"restricted_dirs\\\" id=\\\"restricted_dirs\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"base_path\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Base Path\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"When needed, the front-end will access the datastores using BASE_PATH (defaults to /var/lib/one/datastores).\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"base_path\\\" id=\\\"base_path\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"limit_transfer_bw\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Transfer BW Limit\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Specify the maximum transfer rate in bytes/second when downloading images from a http/https URL. Suffixes K, M or G can be used.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"limit_transfer_bw\\\" id=\\\"limit_transfer_bw\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"limit_mb\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Limit\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Optional limit, in MB. If set, OpenNebula will only use this amount of storage, instead of the whole free disk.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"limit_mb\\\" id=\\\"limit_mb\\\" />\\n            </div>\\n            <div class=\\\"large-12 columns\\\">\\n              <input id=\\\"no_decompress\\\" type=\\\"checkbox\\\" name=\\\"no_decompress\\\" value=\\\"YES\\\" />\\n              <label for=\\\"no_decompress\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Do not try to untar or decompress\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n            </div>\\n            <div class=\\\"large-12 columns\\\">\\n              <input id=\\\"datastore_capacity_check\\\" type=\\\"checkbox\\\" name=\\\"datastore_capacity_check\\\" value=\\\"YES\\\" />\\n              <label for=\\\"datastore_capacity_check\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Check available capacity of the datastore before creating a new image\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </label>\\n            </div>\\n            <div class=\\\"large-12 columns\\\">\\n              <label for=\\\"bridge_list\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Host Bridge List\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Space separated list of Server names or IPs where OpenNebula will be staging the new images into. This server will act as the entry point for new inmages in the datastore.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"bridge_list\\\" id=\\\"bridge_list\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"ds_tmp_dir\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"DS Tmp Dir\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Path in the OpenNebula front-end to be used as a buffer to stage in files in vmfs datastores.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"ds_tmp_dir\\\" id=\\\"ds_tmp_dir\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"vg_name\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Volume Group Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n              <input type=\\\"text\\\" name=\\\"vg_name\\\" id=\\\"vg_name\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"gluster_host\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Gluster Host\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Host and port of one (and only one) Gluster server (host:port)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"gluster_host\\\" id=\\\"gluster_host\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"gluster_volume\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Gluster Volume\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Gluster volume to use for the datastore\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"gluster_volume\\\" id=\\\"gluster_volume\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"pool_name\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Pool Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"The OpenNebula Ceph pool name. Defaults to 'one' (this pool must exist before using the drivers).\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"pool_name\\\" id=\\\"pool_name\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"ceph_host\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ceph Host\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Space-separated list of Ceph monitors. Example: host1 host2:port2 host3 host4:port4 (if no port is specified, the default one is chosen) (Required for Libvirt 1.x when cephx is enabled).\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"ceph_host\\\" id=\\\"ceph_host\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"ceph_user\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ceph User\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"The OpenNebula Ceph user name. If set it is used by RBD commands. This ceph user must exist before using the drivers. Required for Libvirt 1.x when cephx is enabled .\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"ceph_user\\\" id=\\\"ceph_user\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"ceph_secret\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ceph Secret\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"A generated UUID for a LibVirt secret (to hold the CephX authentication key in Libvirt on each hypervisor). This should be generated when creating the Ceph datastore in OpenNebula. (Required for Libvirt 1.x when cephx is enabled).\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"ceph_secret\\\" id=\\\"ceph_secret\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label class=\\\"fs\\\" for=\\\"staging_dir\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Staging Dir\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"FS: Default path where images will be temporarily copied to in the host carrying out the registration operation (chosen from the bridge list). If empty, defaults to /var/tmp.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                  <br>\\n                  <br>\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ceph: Default path for image operations in the OpenNebula Ceph frontend.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"staging_dir\\\" id=\\\"staging_dir\\\" />\\n            </div>\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"rbd_format\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"RBD Format\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                <span class=\\\"tip\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"By default RBD Format 2 will be used. If RBD_FORMAT=2 is specified then when instantiating non-persistent images the Ceph driver will perform rbd snap instead of rbd copy.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                </span>\\n              </label>\\n              <input type=\\\"text\\\" name=\\\"rbd_format\\\" id=\\\"rbd_format\\\" />\\n            </div>\\n          </div>\\n          <div class=\\\"reveal-footer\\\">\\n            <div class=\\\"form_buttons\\\">\\n              <button class=\\\"button radius right success\\\" type=\\\"submit\\\" id=\\\"create_datastore_submit\\\" value=\\\"OpenNebula.Datastore.create\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n              <button class=\\\"button radius secondary resetDialog\\\" type=\\\"reset\\\" value=\\\"reset\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Reset\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n            </div>\\n          </div>\\n        </div>\\n        <div id=\\\"datastore_manualTab\\\" class=\\\"content\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"columns large-6\\\">\\n              <label for=\\\"datastore_cluster_raw\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cluster\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n              <div id=\\\"datastore_cluster_raw\\\" name=\\\"datastore_cluster_raw\\\"></div>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"columns large-12\\\">\\n              <textarea id=\\\"template\\\" rows=\\\"15\\\"></textarea>\\n            </div>\\n          </div>\\n          <div class=\\\"reveal-footer\\\">\\n            <div class=\\\"form_buttons\\\">\\n              <button class=\\\"button success radius right\\\" id=\\\"create_datastore_submit_manual\\\" value=\\\"datastore/create\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n              <button class=\\\"button secondary radius resetDialog\\\" type=\\\"reset\\\" value=\\\"reset\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Reset\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </form>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/datastores-tab/dialogs/create/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/datastores-tab/dialogs/create',['require','utils/dialogs/dialog','hbs!./create/html','sunstone','utils/notifier','utils/tips','utils/resource-select','./create/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./create/html');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Tips = require('utils/tips');\n  var ResourceSelect = require('utils/resource-select')\n  \n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./create/dialogId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({dialogId: DIALOG_ID});\n  }\n\n  function _onShow(dialog) {\n    $(\"#name\", dialog).focus();\n\n    var cluster_id = $(\"div#cluster_id .resource_list_select\", dialog).val();\n    if (!cluster_id) cluster_id = \"-1\";\n\n    var cluster_id_raw = $(\"div#datastore_cluster_raw .resource_list_select\", dialog).val();\n    if (!cluster_id_raw) cluster_id_raw = \"-1\";\n\n    ResourceSelect.insert('div#cluster_id', dialog, \"Cluster\", cluster_id, false);\n    ResourceSelect.insert('div#datastore_cluster_raw', dialog, \"Cluster\", cluster_id_raw, false);\n    \n    return false;\n  }\n\n  // Set up the create datastore dialog\n  function _setup(dialog) {\n    Tips.setup(dialog);\n\n    // Show custom driver input only when custom is selected in selects\n    $('input[name=\"ds_tab_custom_ds_mad\"],' +\n      'input[name=\"ds_tab_custom_tm_mad\"]', dialog).parent().hide();\n\n    $('select#ds_mad', dialog).change(function() {\n      if ($(this).val() == \"custom\")\n          $('input[name=\"ds_tab_custom_ds_mad\"]').parent().show();\n      else\n          $('input[name=\"ds_tab_custom_ds_mad\"]').parent().hide();\n    });\n\n    $('select#tm_mad', dialog).change(function() {\n      if ($(this).val() == \"custom\")\n          $('input[name=\"ds_tab_custom_tm_mad\"]').parent().show();\n      else\n          $('input[name=\"ds_tab_custom_tm_mad\"]').parent().hide();\n    });\n\n    $('#presets').change(function() {\n      _hideAll(dialog);\n      var choice_str = $(this).val();\n      switch (choice_str)\n      {\n        case 'fs':\n          _selectFilesystem();\n          break;\n        case 'vmware_vmfs':\n          _selectVmwareVmfs();\n          break;\n        case 'block_lvm':\n          _selectBlockLvm();\n          break;\n        case 'fs_lvm':\n          _selectFsLvm();\n          break;\n        case 'ceph':\n          _selectCeph();\n          break;\n        case 'gluster':\n          _selectGluster();\n          break;\n        case 'dev':\n          _selectDevices();\n          break;\n        case 'custom':\n          _selectCustom();\n          break;\n      }\n    });\n\n    $('#create_datastore_submit', dialog).click(function() {\n      var name            = $('#name', dialog).val();\n      var cluster_id      = $(\".resource_list_select\", $('#cluster_id', dialog)).val();\n      var ds_type         = $('input[name=ds_type]:checked', dialog).val();\n      var ds_mad          = $('#ds_mad', dialog).val();\n      ds_mad              = ds_mad == \"custom\" ? $('input[name=\"ds_tab_custom_ds_mad\"]').val() : ds_mad;\n      var tm_mad          = $('#tm_mad', dialog).val();\n      tm_mad              = tm_mad == \"custom\" ? $('input[name=\"ds_tab_custom_tm_mad\"]').val() : tm_mad;\n      var type            = $('#disk_type', dialog).val();\n\n      var safe_dirs       = $('#safe_dirs', dialog).val();\n      var base_path       = $('#base_path', dialog).val();\n      var restricted_dirs = $('#restricted_dirs', dialog).val();\n      var limit_transfer_bw = $('#limit_transfer_bw', dialog).val();\n      var datastore_capacity_check = $('#datastore_capacity_check', dialog).is(':checked');\n      var no_decompress   = $('#no_decompress', dialog).is(':checked');\n\n      var bridge_list     = $('#bridge_list', dialog).val();\n      var ds_tmp_dir     = $('#ds_tmp_dir', dialog).val();\n      var vg_name         = $('#vg_name', dialog).val();\n      var limit_mb        = $('#limit_mb', dialog).val();\n      var gluster_host    = $('#gluster_host', dialog).val();\n      var gluster_volume  = $('#gluster_volume', dialog).val();\n      var pool_name       = $('#pool_name', dialog).val();\n      var ceph_host       = $('#ceph_host', dialog).val();\n      var ceph_secret     = $('#ceph_secret', dialog).val();\n      var ceph_user       = $('#ceph_user', dialog).val();\n      var rbd_format      = $('#rbd_format', dialog).val();\n      var staging_dir     = $('#staging_dir', dialog).val();\n\n      if (!name) {\n        Notifier.notifyError(\"Please provide a name\");\n        return false;\n      };\n\n      var ds_obj = {\n        \"datastore\" : {\n          \"name\" : name,\n          \"tm_mad\" : tm_mad,\n          \"disk_type\" : type,\n          \"type\" : ds_type\n        },\n        \"cluster_id\" : cluster_id\n      };\n\n      // If we are adding a system datastore then\n      // we do not use ds_mad\n      if (ds_type != \"SYSTEM_DS\")\n          ds_obj.datastore.ds_mad = ds_mad;\n\n      if (base_path)\n          ds_obj.datastore.base_path = base_path;\n\n      if (safe_dirs)\n          ds_obj.datastore.safe_dirs = safe_dirs;\n\n      if (restricted_dirs)\n          ds_obj.datastore.restricted_dirs = restricted_dirs;\n\n      if (limit_transfer_bw)\n          ds_obj.datastore.limit_transfer_bw = limit_transfer_bw;\n\n      if (no_decompress)\n          ds_obj.datastore.no_decompress = \"YES\";\n\n      if (datastore_capacity_check)\n          ds_obj.datastore.datastore_capacity_check = \"YES\";\n\n      if (bridge_list)\n          ds_obj.datastore.bridge_list = bridge_list;\n\n      if (ds_tmp_dir)\n          ds_obj.datastore.ds_tmp_dir = ds_tmp_dir;\n\n      if (vg_name)\n          ds_obj.datastore.vg_name = vg_name;\n\n      if (limit_mb)\n          ds_obj.datastore.limit_mb = limit_mb;\n\n      if (gluster_host)\n          ds_obj.datastore.gluster_host = gluster_host;\n\n      if (gluster_volume)\n          ds_obj.datastore.gluster_volume = gluster_volume;\n\n      if (pool_name)\n          ds_obj.datastore.pool_name = pool_name;\n\n      if (ceph_host)\n          ds_obj.datastore.ceph_host = ceph_host;\n\n      if (ceph_secret)\n          ds_obj.datastore.ceph_secret = ceph_secret;\n\n      if (ceph_user)\n          ds_obj.datastore.ceph_user = ceph_user;\n\n      if (rbd_format)\n          ds_obj.datastore.rbd_format = rbd_format;\n\n      if (staging_dir)\n          ds_obj.datastore.staging_dir = staging_dir;\n\n      Sunstone.runAction(\"Datastore.create\", ds_obj);\n      return false;\n    });\n\n    $('#create_datastore_submit_manual', dialog).click(function() {\n      var template   = $('#template', dialog).val();\n      var cluster_id = $(\".resource_list_select\", $('#datastore_cluster_raw', dialog)).val();\n\n      if (!cluster_id) {\n        Notifier.notifyError(tr(\"Please select a cluster for this datastore\"));\n        return false;\n      };\n\n      var ds_obj = {\n        \"datastore\" : {\n          \"datastore_raw\" : template\n        },\n        \"cluster_id\" : cluster_id\n      };\n      Sunstone.runAction(\"Datastore.create\", ds_obj);\n      return false;\n    });\n\n    // Hide disk_type\n    $('select#disk_type').parent().hide();\n\n    _hideAll(dialog);\n    _selectFilesystem();\n  }\n\n  function _hideAll(dialog) {\n    // Hide all the options that depends on datastore type\n    // and reset the selects\n\n    $('input#image_ds_type').attr('checked', 'true');\n    $('input[name=ds_type]').removeAttr('disabled', 'disabled');\n\n    $('label[for=\"bridge_list\"],input#bridge_list', dialog).parent().hide();\n    $('label[for=\"ds_tmp_dir\"],input#ds_tmp_dir', dialog).parent().hide();\n    $('label[for=\"vg_name\"],input#vg_name', dialog).hide();\n    $('label[for=\"gluster_host\"],input#gluster_host', dialog).parent().hide();\n    $('label[for=\"gluster_volume\"],input#gluster_volume', dialog).parent().hide();\n    $('label[for=\"pool_name\"],input#pool_name', dialog).parent().hide();\n    $('label[for=\"ceph_host\"],input#ceph_host', dialog).parent().hide();\n    $('label[for=\"ceph_secret\"],input#ceph_secret', dialog).parent().hide();\n    $('label[for=\"ceph_user\"],input#ceph_user', dialog).parent().hide();\n    $('label[for=\"rbd_format\"],input#rbd_format', dialog).parent().hide();\n    $('label[for=\"staging_dir\"],input#staging_dir', dialog).parent().hide();\n    $('label[for=\"limit_transfer_bw\"],input#limit_transfer_bw', dialog).parent().hide();\n    $('label[for=\"no_decompress\"],input#no_decompress', dialog).parent().hide();\n    $('select#ds_mad').removeAttr('disabled');\n    $('select#tm_mad').removeAttr('disabled');\n    $('select#tm_mad').children('option').each(function() {\n        $(this).removeAttr('disabled');\n      });\n    $('select#disk_type').removeAttr('disabled');\n    $('select#disk_type').children('option').each(function() {\n        $(this).removeAttr('disabled');\n      });\n\n    $('input[name=\"ds_tab_custom_ds_mad\"]', dialog).parent().hide();\n    $('input[name=\"ds_tab_custom_tm_mad\"]', dialog).parent().hide();\n  }\n\n  function _selectFilesystem(dialog) {\n    $('select#ds_mad').val('fs');\n    $('select#tm_mad').val('shared');\n    $('select#ds_mad').attr('disabled', 'disabled');\n    $('select#tm_mad').children('option').each(function() {\n        var value_str = $(this).val();\n        $(this).attr('disabled', 'disabled');\n        if (value_str == \"qcow2\"  ||\n            value_str == \"shared\" ||\n            value_str == \"ssh\") {\n          $(this).removeAttr('disabled');\n        }\n      });\n    $('select#disk_type').val('file');\n    $('select#disk_type').attr('disabled', 'disabled');\n    $('label[for=\"limit_transfer_bw\"],input#limit_transfer_bw').parent().fadeIn();\n    $('label[for=\"no_decompress\"],input#no_decompress').parent().fadeIn();\n    $('label[for=\"datastore_capacity_check\"],input#datastore_capacity_check').parent().fadeIn();\n    $('input#safe_dirs').removeAttr('disabled');\n    $('select#disk_type').removeAttr('disabled');\n    $('input#base_path').removeAttr('disabled');\n    $('input#limit_mb').removeAttr('disabled');\n    $('input#restricted_dirs').removeAttr('disabled');\n    $('label[for=\"bridge_list\"],input#bridge_list').parent().fadeIn();\n    $('label[for=\"staging_dir\"],input#staging_dir').parent().fadeIn();\n  }\n\n  function _selectVmwareVmfs(dialog) {\n    $('label[for=\"bridge_list\"],input#bridge_list').parent().fadeIn();\n    $('label[for=\"ds_tmp_dir\"],input#ds_tmp_dir').parent().fadeIn();\n    $('select#ds_mad').val('vmfs');\n    $('select#ds_mad').attr('disabled', 'disabled');\n    $('select#tm_mad').val('vmfs');\n    $('select#tm_mad').attr('disabled', 'disabled');\n    $('label[for=\"limit_transfer_bw\"],input#limit_transfer_bw').parent().fadeIn();\n    $('label[for=\"no_decompress\"],input#no_decompress').parent().fadeIn();\n    $('label[for=\"datastore_capacity_check\"],input#datastore_capacity_check').parent().fadeIn();\n    $('select#disk_type').val('file');\n    $('select#disk_type').attr('disabled', 'disabled');\n    $('input#safe_dirs').removeAttr('disabled');\n    $('input#base_path').removeAttr('disabled');\n    $('input#limit_mb').removeAttr('disabled');\n    $('input#restricted_dirs').removeAttr('disabled');\n  }\n\n  function _selectCeph(dialog) {\n    $('input#image_ds_type').attr('checked', 'true');\n    $('input[name=ds_type]').attr('disabled', 'disabled');\n    $('select#ds_mad').val('ceph');\n    $('select#ds_mad').attr('disabled', 'disabled');\n    $('select#tm_mad').val('ceph');\n    $('select#tm_mad').attr('disabled', 'disabled');\n    $('label[for=\"bridge_list\"],input#bridge_list').parent().fadeIn();\n    $('label[for=\"pool_name\"],input#pool_name').parent().fadeIn();\n    $('label[for=\"ceph_host\"],input#ceph_host').parent().fadeIn();\n    $('label[for=\"ceph_secret\"],input#ceph_secret').parent().fadeIn();\n    $('label[for=\"ceph_user\"],input#ceph_user').parent().fadeIn();\n    $('label[for=\"rbd_format\"],input#rbd_format').parent().fadeIn();\n    $('label[for=\"staging_dir\"],input#staging_dir').parent().fadeIn();\n    $('label[for=\"limit_transfer_bw\"],input#limit_transfer_bw').parent().fadeIn();\n    $('label[for=\"no_decompress\"],input#no_decompress').parent().fadeIn();\n    $('label[for=\"datastore_capacity_check\"],input#datastore_capacity_check').parent().fadeIn();\n    $('select#disk_type').val('RBD');\n    $('select#disk_type').attr('disabled', 'disabled');\n    $('input#safe_dirs').removeAttr('disabled');\n    $('input#base_path').removeAttr('disabled');\n    $('input#limit_mb').removeAttr('disabled');\n    $('input#restricted_dirs').removeAttr('disabled');\n  }\n\n  function _selectBlockLvm(dialog) {\n    $('select#ds_mad').val('lvm');\n    $('select#ds_mad').attr('disabled', 'disabled');\n    $('select#tm_mad').val('lvm');\n    $('select#tm_mad').attr('disabled', 'disabled');\n    $('input#image_ds_type').attr('checked', 'true');\n    $('input[name=ds_type]').attr('disabled', 'disabled');\n    $('label[for=\"bridge_list\"],input#bridge_list').parent().fadeIn();\n    $('label[for=\"vg_name\"],input#vg_name').fadeIn();\n    $('label[for=\"limit_transfer_bw\"],input#limit_transfer_bw').parent().fadeIn();\n    $('label[for=\"no_decompress\"],input#no_decompress').parent().fadeIn();\n    $('label[for=\"datastore_capacity_check\"],input#datastore_capacity_check').parent().fadeIn();\n    $('select#disk_type').val('block');\n    $('select#disk_type').attr('disabled', 'disabled');\n    $('input#safe_dirs').removeAttr('disabled');\n    $('input#base_path').removeAttr('disabled');\n    $('input#limit_mb').removeAttr('disabled');\n    $('input#restricted_dirs').removeAttr('disabled');\n  }\n\n  function _selectFsLvm(dialog) {\n    $('select#ds_mad').val('fs');\n    $('select#ds_mad').attr('disabled', 'disabled');\n    $('select#tm_mad').val('fs_lvm');\n    $('select#tm_mad').attr('disabled', 'disabled');\n    $('input#image_ds_type').attr('checked', 'true');\n    $('input[name=ds_type]').attr('disabled', 'disabled');\n    $('label[for=\"limit_transfer_bw\"],input#limit_transfer_bw').parent().fadeIn();\n    $('label[for=\"no_decompress\"],input#no_decompress').parent().fadeIn();\n    $('label[for=\"datastore_capacity_check\"],input#datastore_capacity_check').parent().fadeIn();\n    $('select#disk_type').val('block');\n    $('select#disk_type').attr('disabled', 'disabled');\n    $('input#safe_dirs').removeAttr('disabled');\n    $('input#base_path').removeAttr('disabled');\n    $('input#limit_mb').removeAttr('disabled');\n    $('input#restricted_dirs').removeAttr('disabled');\n  }\n\n  function _selectGluster(dialog) {\n    $('select#ds_mad').val('fs');\n    $('select#ds_mad').attr('disabled', 'disabled');\n    $('select#tm_mad').val('shared');\n    $('select#tm_mad').children('option').each(function() {\n        var value_str = $(this).val();\n        $(this).attr('disabled', 'disabled');\n        if (value_str == \"shared\"  ||\n            value_str == \"ssh\") {\n          $(this).removeAttr('disabled');\n        }\n      });\n    $('input#image_ds_type').attr('checked', 'true');\n    $('input[name=ds_type]').attr('disabled', 'disabled');\n    $('select#disk_type').val('gluster');\n    $('select#disk_type').attr('disabled', 'disabled');\n    $('label[for=\"gluster_host\"],input#gluster_host').parent().fadeIn();\n    $('label[for=\"gluster_volume\"],input#gluster_volume').parent().fadeIn();\n    $('label[for=\"limit_transfer_bw\"],input#limit_transfer_bw').parent().fadeIn();\n    $('label[for=\"no_decompress\"],input#no_decompress').parent().fadeIn();\n    $('label[for=\"datastore_capacity_check\"],input#datastore_capacity_check').parent().fadeIn();\n    $('input#safe_dirs').removeAttr('disabled');\n    $('input#base_path').removeAttr('disabled');\n    $('input#limit_mb').removeAttr('disabled');\n    $('input#restricted_dirs').removeAttr('disabled');\n  }\n\n  function _selectDevices(dialog) {\n    $('select#ds_mad').val('dev');\n    $('select#ds_mad').attr('disabled', 'disabled');\n    $('select#tm_mad').val('dev');\n    $('select#tm_mad').attr('disabled', 'disabled');\n    $('input#image_ds_type').attr('checked', 'true');\n    $('input[name=ds_type]').attr('disabled', 'disabled');\n    $('select#disk_type').val('block');\n    $('select#disk_type').attr('disabled', 'disabled');\n    $('label[for=\"limit_transfer_bw\"],input#limit_transfer_bw').parent().hide();\n    $('label[for=\"no_decompress\"],input#no_decompress').parent().hide();\n    $('label[for=\"datastore_capacity_check\"],input#datastore_capacity_check').parent().hide();\n    $('input#safe_dirs').attr('disabled', 'disabled');\n    $('input#base_path').attr('disabled', 'disabled');\n    $('input#limit_mb').attr('disabled', 'disabled');\n    $('input#restricted_dirs').attr('disabled', 'disabled');\n  }\n\n  function _selectCustom(dialog) {\n    _hideAll(dialog);\n    $('select#ds_mad').val('fs');\n    $('select#tm_mad').val('shared');\n    $('input#safe_dirs').removeAttr('disabled');\n    $('select#disk_type').removeAttr('disabled');\n    $('input#base_path').removeAttr('disabled');\n    $('input#limit_mb').removeAttr('disabled');\n    $('input#restricted_dirs').removeAttr('disabled');\n    $('label[for=\"limit_transfer_bw\"],input#limit_transfer_bw').parent().fadeIn();\n    $('label[for=\"no_decompress\"],input#no_decompress').parent().fadeIn();\n    $('label[for=\"datastore_capacity_check\"],input#datastore_capacity_check').parent().fadeIn();\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/datastores-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        \";\n  stack1 = ((helper = (helper = helpers.clusterTrHTML || (depth0 != null ? depth0.clusterTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"clusterTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"State\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.stateStr || (depth0 != null ? depth0.stateStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"stateStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Base path\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.BASE_PATH : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Capacity\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\";\n  stack1 = ((helper = (helper = helpers.capacityBar || (depth0 != null ? depth0.capacityBar : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"capacityBar\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Limit\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(((helper = (helper = helpers.limitStr || (depth0 != null ? depth0.limitStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"limitStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.permissionsTableHTML || (depth0 != null ? depth0.permissionsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"permissionsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/datastores-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/datastores-tab/panels/info',['require','utils/locale','utils/humanize','utils/panel/rename-tr','utils/panel/template-table','utils/panel/permissions-table','utils/panel/cluster-tr','opennebula/datastore','../utils/datastore-capacity-bar','hbs!./info/html','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var RenameTr = require('utils/panel/rename-tr');\n  var TemplateTable = require('utils/panel/template-table');\n  var PermissionsTable = require('utils/panel/permissions-table');\n  var ClusterTr = require('utils/panel/cluster-tr');\n  var OpenNebulaDatastore = require('opennebula/datastore');\n  var DatastoreCapacityBar = require('../utils/datastore-capacity-bar');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Datastore\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[RESOURCE.toUpperCase()];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n\n  function _html() {\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var clusterTrHTML = ClusterTr.html(this.element.CLUSTER);\n    var templateTableHTML = TemplateTable.html(\n                                      this.element.TEMPLATE, RESOURCE, \n                                      Locale.tr(\"Attributes\"));\n    var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);\n    var capacityBar = DatastoreCapacityBar.html(this.element);\n    var stateStr = Locale.tr(OpenNebulaDatastore.stateStr(this.element.STATE));\n\n    var limitStr = '-';\n    if (this.element.TEMPLATE.SHARED == \"NO\" || this.element.TEMPLATE.LIMIT_MB != undefined) {\n      limitStr = Humanize.sizeFromMB(this.element.TEMPLATE.LIMIT_MB)\n    }\n\n    return TemplateInfo({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'clusterTrHTML': clusterTrHTML,\n      'templateTableHTML': templateTableHTML,\n      'permissionsTableHTML': permissionsTableHTML,\n      'capacityBar': capacityBar,\n      'stateStr': stateStr,\n      'limitStr': limitStr\n    });\n  }\n\n  function _setup(context) {\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n    ClusterTr.setup(RESOURCE, this.element.ID, this.element.CLUSTER_ID, context);\n    TemplateTable.setup(this.element.TEMPLATE, RESOURCE, this.element.ID, context);\n    PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);\n    return false;\n  }\n});\n\n","define('tabs/datastores-tab/panels/info/panelId',['require'],function(require){\n  return 'datastore_info_tab';\n});\n","define('tabs/datastores-tab/panels/images',['require','utils/locale','tabs/images-tab/datatable','./images/panelId'],function(require){\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var ImagesTable = require('tabs/images-tab/datatable');\n  \n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./images/panelId');\n  var IMAGES_TABLE_ID = PANEL_ID + \"ImagesTable\"\n  var RESOURCE = \"Datastore\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Images\");\n    this.icon = \"fa-upload\";\n\n    this.element = info[RESOURCE.toUpperCase()];\n    this.imagesDataTable = new ImagesTable(IMAGES_TABLE_ID, {info: true});\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return this.imagesDataTable.dataTableHTML;\n  }\n\n  function _setup(context) {\n    this.imagesDataTable.initialize();\n    this.imagesDataTable.filter(this.element.NAME, ImagesTable.COLUMN_IDS.DATASTORE);\n    this.imagesDataTable.list();\n\n    return false;\n  }\n});\n","define('tabs/datastores-tab/panels/images/panelId',['require'],function(require){\n  return 'datastore_image_tab';\n});\n","define('tabs/datastores-tab',['require','utils/locale','./datastores-tab/buttons','./datastores-tab/actions','./datastores-tab/datatable','./datastores-tab/tabId','./datastores-tab/dialogs/create','./datastores-tab/panels/info','./datastores-tab/panels/images'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./datastores-tab/buttons');\n  var Actions = require('./datastores-tab/actions');\n  var Table = require('./datastores-tab/datatable');\n\n  var TAB_ID = require('./datastores-tab/tabId');\n  var DATATABLE_ID = \"dataTableDatastores\";\n\n  var _dialogs = [\n    require('./datastores-tab/dialogs/create')\n  ];\n\n  var _panels = [\n    require('./datastores-tab/panels/info'),\n    require('./datastores-tab/panels/images')\n  ];\n\n  var DatastoresTab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Datastores\"),\n    tabClass: \"subTab\",\n    parentTab: \"infra-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-folder-open\"></i>&emsp;' + Locale.tr(\"Datastores\"),\n    infoHeader: '<i class=\"fa fa-fw fa-folder-open\"></i>&emsp;' + Locale.tr(\"Datastore\"),\n    subheader: '',\n    resource: 'Datastore',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    dialogs: _dialogs\n  };\n\n  return DatastoresTab;\n});\n","define('tabs/vnets-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var VNetButtons = {\n    \"Network.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Network.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"Network.import_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\",\n      text:  Locale.tr(\"Import\"),\n      icon: '<i class=\"fa fa-download\">',\n      alwaysActive: true\n    },\n    \"Network.update_dialog\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Update\")\n    },\n    \"Network.reserve_dialog\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Reserve\"),\n      custom_classes: \"only-right-info reserve-right-info\",\n    },\n    \"Network.addtocluster\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Select cluster\"),\n      layout: \"main\",\n      select: \"Cluster\",\n      tip: Locale.tr(\"Select the destination cluster:\")\n    },\n    \"Network.chown\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change owner\"),\n      layout: \"user_select\",\n      select: \"User\",\n      tip: Locale.tr(\"Select the new owner\")+\":\"\n    },\n\n    \"Network.chgrp\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change group\"),\n      layout: \"user_select\",\n      select: \"Group\",\n      tip: Locale.tr(\"Select the new group\")+\":\"\n    },\n\n    \"Network.delete\" : {\n      type: \"confirm\",\n      layout: \"del\",\n      text: Locale.tr(\"Delete\")\n    }\n  };\n\n  return VNetButtons;\n})\n;\n","define('tabs/vnets-tab/dialogs/add-ar/dialogId',['require'],function(require){\n  return 'add_ar_dialog';\n});\n","define('tabs/vnets-tab/dialogs/update-ar/dialogId',['require'],function(require){\n  return 'update_ar_dialog';\n});\n","define('tabs/vnets-tab/dialogs/reserve/dialogId',['require'],function(require){\n  return 'reserve_dialog';\n});\n","define('tabs/vnets-tab/actions',['require','sunstone','utils/notifier','utils/locale','./datatable','opennebula/network','opennebula/cluster','opennebula/action','./tabId','./form-panels/create/formPanelId','./dialogs/add-ar/dialogId','./dialogs/update-ar/dialogId','./dialogs/reserve/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var DataTable = require('./datatable');\n  var OpenNebulaNetwork = require('opennebula/network');\n  var OpenNebulaCluster = require('opennebula/cluster');\n  var OpenNebulaAction = require('opennebula/action');\n\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n  var ADD_AR_DIALOG_ID = require('./dialogs/add-ar/dialogId');\n  var UPDATE_AR_DIALOG_ID = require('./dialogs/update-ar/dialogId');\n  var RESERVE_DIALOG_ID = require('./dialogs/reserve/dialogId');\n\n  var _actions = {\n    \"Network.create\" : {\n      type: \"create\",\n      call: OpenNebulaNetwork.create,\n      callback: function(request, response) {\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      },\n      notify: true\n    },\n\n    \"Network.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    // TODO\n    /*\n    \"Network.import_dialog\" : {\n      type: \"create\",\n      call: function(){\n        popUpNetworkImportDialog();\n      }\n    },\n    */\n\n    \"Network.list\" : {\n      type: \"list\",\n      call: OpenNebulaNetwork.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.show\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#' + TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(\"Network.show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(\"Network.list\", {force: true});\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.delete\" : {\n      type: \"multiple\",\n      call : OpenNebulaNetwork.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error : Notifier.onError,\n      notify:true\n    },\n\n    \"Network.hold\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.hold,\n      callback: function(req) {\n        Sunstone.runAction(\"Network.show\", req.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.release\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.release,\n      callback: function(req) {\n        Sunstone.runAction(\"Network.show\", req.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.add_ar\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.add_ar,\n      callback: function(req) {\n        // Reset the wizard\n        Sunstone.getDialog(ADD_AR_DIALOG_ID).hide();\n        Sunstone.getDialog(ADD_AR_DIALOG_ID).reset();\n\n        Sunstone.runAction(\"Network.show\",req.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.rm_ar\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.rm_ar,\n      callback: function(req) {\n        OpenNebulaAction.clear_cache(\"VNET\");\n        Sunstone.runAction(\"Network.show\",req.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.update_ar\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.update_ar,\n      callback: function(req) {\n        // Reset the wizard\n        Sunstone.getDialog(UPDATE_AR_DIALOG_ID).hide();\n        Sunstone.getDialog(UPDATE_AR_DIALOG_ID).reset();\n\n        Sunstone.runAction(\"Network.show\",req.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.reserve_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n        if (selected_nodes.length != 1) {\n          Notifier.notifyMessage(\"Please select one (and just one) Virtual Network.\");\n          return false;\n        }\n\n        var resource_id = \"\" + selected_nodes[0];\n\n        Sunstone.getDialog(RESERVE_DIALOG_ID).setParams({vnetId: resource_id});\n        Sunstone.getDialog(RESERVE_DIALOG_ID).reset();\n        Sunstone.getDialog(RESERVE_DIALOG_ID).show();\n      }\n    },\n\n    \"Network.reserve\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.reserve,\n      callback: function(req) {\n        // Reset the wizard\n        Sunstone.getDialog(RESERVE_DIALOG_ID).hide();\n        Sunstone.getDialog(RESERVE_DIALOG_ID).reset();\n\n        OpenNebulaAction.clear_cache(\"VNET\");\n        Sunstone.runAction(\"Network.show\",req.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.chown\" : {\n      type: \"multiple\",\n      call: OpenNebulaNetwork.chown,\n      callback:  function (req) {\n        Sunstone.runAction(\"Network.show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Network.chgrp\" : {\n      type: \"multiple\",\n      call: OpenNebulaNetwork.chgrp,\n      callback:  function (req) {\n        Sunstone.runAction(\"Network.show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Network.chmod\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.chmod,\n      callback:  function (req) {\n        Sunstone.runAction(\"Network.show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Network.rename\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.rename,\n      callback: function(request) {\n        Sunstone.runAction('Network.show', request.request.data[0][0]);\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Network.update_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n        if (selected_nodes.length != 1) {\n          Notifier.notifyMessage(\"Please select one (and just one) Virtual Network to update.\");\n          return false;\n        }\n\n        var resource_id = \"\" + selected_nodes[0];\n        Sunstone.runAction(\"Network.show_to_update\", resource_id);\n      }\n    },\n\n    \"Network.show_to_update\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.show,\n      callback: function(request, response) {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"update\", \n          function(formPanelInstance, context) {\n            formPanelInstance.fill(context, response.VNET)\n          });\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.update\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.update,\n      callback: function(request, response) {\n        Sunstone.hideFormPanel(TAB_ID);\n        Notifier.notifyMessage(Locale.tr(\"Virtual Network updated correctly\"));\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      }\n    },\n    \n    \"Network.update_template\" : {\n      type: \"single\",\n      call: OpenNebulaNetwork.update,\n      callback: function(request) {\n        Sunstone.runAction('Network.show', request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Network.addtocluster\" : {\n      type: \"multiple\",\n      call: function(params){\n        var cluster = params.data.extra_param;\n        var vnet = params.data.id;\n\n        if (cluster == -1){\n          OpenNebulaNetwork.show({\n            data : {\n              id: vnet\n            },\n            success: function (request, vn){\n              var vn_info = vn.VNET;\n\n              var current_cluster = vn_info.CLUSTER_ID;\n\n              if(current_cluster != -1){\n                OpenNebulaCluster.delvnet({\n                  data: {\n                    id: current_cluster,\n                    extra_param: vnet\n                  },\n                  success: function(){\n                    OpenNebulaAction.clear_cache(\"VNET\");\n                    Sunstone.runAction('Network.show',vnet);\n                  },\n                  error: Notifier.onError\n                });\n              } else {\n                OpenNebulaAction.clear_cache(\"VNET\");\n                Sunstone.runAction('Network.show',vnet);\n              }\n            },\n            error: Notifier.onError\n          });\n        } else {\n          OpenNebulaCluster.addvnet({\n            data: {\n              id: cluster,\n              extra_param: vnet\n            },\n            success: function(){\n              OpenNebulaAction.clear_cache(\"VNET\");\n              Sunstone.runAction('Network.show',vnet);\n            },\n            error: Notifier.onError\n          });\n        }\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      }\n    }\n  };\n\n  return _actions;\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vnets-tab/dialogs/add-ar/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large max-height\\\" data-reveal >\\n  <div class=\\\"reveal-body\\\">\\n    <form data-abide=\\\"ajax\\\" id=\\\"add_ar_form\\\" action=\\\"\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <h3 class=\\\"subheader\\\" id=\\\"\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" <span id=\\\"vnet_id\\\"/>\\n            <br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"New Address Range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </h3>\\n        </div>\\n      </div>\\n      \";\n  stack1 = ((helper = (helper = helpers.arTabHTML || (depth0 != null ? depth0.arTabHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"arTabHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      <div class=\\\"reveal-footer\\\">\\n        <div class=\\\"form_buttons\\\">\\n          <button class=\\\"button radius right success\\\" id=\\\"submit_ar_button\\\" type=\\\"submit\\\" value=\\\"Network.add_ar\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </button>\\n          <button id=\\\"submit_ar_reset_button\\\" class=\\\"button secondary radius\\\" type=\\\"reset\\\" value=\\\"reset\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Reset\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </button>\\n        </div>\\n      </div>\\n      <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n    </form>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vnets-tab/dialogs/add-ar/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vnets-tab/utils/ar-tab/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/advancedSection'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom attributes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      <br>\\n      <br>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_custom_tags\\\">\\n    <div class=\\\"12 columns\\\">\\n      \";\n  stack1 = ((helper = (helper = helpers.customTagsHTML || (depth0 != null ? depth0.customTagsHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customTagsHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <br>\\n    <br>\\n    <hr>\\n    <div class=\\\"large-12 columns\\\">\\n      <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Security Groups\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      <br>\\n      <br>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_security_groups\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.securityGroupsTableHTML || (depth0 != null ? depth0.securityGroupsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"securityGroupsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n  </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"row\\\" name=\\\"str_ar_tab_id\\\" str_ar_tab_id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <input wizard_field=\\\"TYPE\\\" type=\\\"radio\\\" name=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type_ip4\\\" value=\\\"IP4\\\"/><label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type_ip4\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv4\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input wizard_field=\\\"TYPE\\\" type=\\\"radio\\\" name=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type_ip4_6\\\" value=\\\"IP4_6\\\"/><label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type_ip4_6\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv4/6\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input wizard_field=\\\"TYPE\\\" type=\\\"radio\\\" name=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type_ip6\\\" value=\\\"IP6\\\"/><label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type_ip6\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv6\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n    <input wizard_field=\\\"TYPE\\\" type=\\\"radio\\\" name=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type_ether\\\" value=\\\"ETHER\\\"/><label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ar_type_ether\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ethernet\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <div class=\\\"row collapse ar_input type_ip4 type_ip4_6\\\">\\n      <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ip_start\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IP Start\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"First IP address\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <input wizard_field=\\\"IP\\\" type=\\\"text\\\" name=\\\"IP\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ip_start\\\"/>\\n    </div>\\n    <div class=\\\"row collapse ar_input type_ip4 type_ip4_6 type_ip6 type_ether\\\">\\n      <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_mac_start\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MAC Start\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"First MAC address\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <input wizard_field=\\\"MAC\\\" type=\\\"text\\\" name=\\\"MAC\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_mac_start\\\" />\\n    </div>\\n  </div>\\n  <div class=\\\"large-6 columns ar_input type_ip4 type_ip4_6 type_ip6 type_ether\\\">\\n    <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_size\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Size\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n      <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of addresses in the range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </label>\\n    <input wizard_field=\\\"SIZE\\\" required type=\\\"text\\\" name=\\\"SIZE\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_size\\\" />\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns ar_input type_ip4_6 type_ip6\\\">\\n    <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_global_prefix\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Global prefix\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n      <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv6 global address prefix to create leases\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </label>\\n    <input wizard_field=\\\"GLOBAL_PREFIX\\\" type=\\\"text\\\" name=\\\"GLOBAL_PREFIX\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_global_prefix\\\"/>\\n  </div>\\n  <div class=\\\"large-6 columns ar_input type_ip4_6 type_ip6\\\">\\n    <label for=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ula_prefix\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ULA prefix\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n      <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv6 unique local address (ULA) prefix to create leases\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </label>\\n    <input wizard_field=\\\"ULA_PREFIX\\\" type=\\\"text\\\" name=\\\"ULA_PREFIX\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.str_ar_tab_id || (depth0 != null ? depth0.str_ar_tab_id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"str_ar_tab_id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_ula_prefix\\\"/>\\n  </div>\\n</div>\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced Options\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vnets-tab/utils/ar-tab/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vnets-tab/utils/ar-tab',['require','utils/locale','utils/tips','utils/custom-tags-table','utils/wizard-fields','tabs/secgroups-tab/datatable','hbs!./ar-tab/html'],function(require) {\n  // Dependencies\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var CustomTagsTable = require('utils/custom-tags-table');\n  var WizardFields = require('utils/wizard-fields');\n  var SecurityGroupsTable = require('tabs/secgroups-tab/datatable');\n\n  var TemplateHTML = require('hbs!./ar-tab/html');\n\n  function ArTab() {\n    return this;\n  }\n\n  ArTab.prototype = {\n    'html': _generate_ar_tab_content,\n    'setup': _setup_ar_tab_content,\n    'onShow': _onShow,\n    'fill': _fill_ar_tab_data,\n    'retrieve': _retrieve_ar_tab_data\n  };\n  ArTab.prototype.constructor = ArTab;\n\n  return ArTab;\n\n  function _generate_ar_tab_content(str_ar_tab_id){\n    var opts = {\n      info: false,\n      select: true,\n      selectOptions: {\"multiple_choice\": true}\n    };\n\n    this.securityGroupsTable = new SecurityGroupsTable(str_ar_tab_id, opts);\n\n    return TemplateHTML({\n          'str_ar_tab_id': str_ar_tab_id,\n          'customTagsHTML': CustomTagsTable.html(),\n          'securityGroupsTableHTML': this.securityGroupsTable.dataTableHTML\n        });\n  }\n\n  function _setup_ar_tab_content(ar_section, str_ar_tab_id) {\n\n    this.ar_section = ar_section;\n\n    $('input[name$=\"ar_type\"]',ar_section).change(function(){\n      $('div.ar_input', ar_section).hide();\n\n      $('input[wizard_field=\"IP\"]',ar_section).removeAttr('required');\n\n      switch($(this).val()){\n      case \"IP4\":\n        $('div.type_ip4', ar_section).show();\n        $('input[wizard_field=\"IP\"]',ar_section).attr('required', '');\n\n        break;\n      case \"IP4_6\":\n        $('div.type_ip4_6', ar_section).show();\n        $('input[wizard_field=\"IP\"]',ar_section).attr('required', '');\n\n        break;\n      case \"IP6\":\n        $('div.type_ip6', ar_section).show();\n        break;\n      case \"ETHER\":\n        $('div.type_ether', ar_section).show();\n        break;\n      }\n    });\n\n    $('input#'+str_ar_tab_id+'_ar_type_ip4',ar_section).prop('checked', true);\n    $('input#'+str_ar_tab_id+'_ar_type_ip4',ar_section).change();\n\n    CustomTagsTable.setup($('#'+str_ar_tab_id+'_custom_tags',ar_section));\n\n    this.securityGroupsTable.initialize();\n\n    Tips.setup(ar_section);\n  }\n\n  function _onShow(){\n    this.securityGroupsTable.refreshResourceTableSelect();\n  }\n\n  function _retrieve_ar_tab_data(){\n    var data  = {};\n\n    var ar_type = $('input[name$=\"ar_type\"]:checked',this.ar_section).val();\n\n    var fields = [];\n\n    switch(ar_type){\n      case \"IP4\":\n        fields = $('div.type_ip4', this.ar_section).children(\"input\");\n        break;\n      case \"IP4_6\":\n        fields = $('div.type_ip4_6', this.ar_section).children(\"input\");\n        break;\n      case \"IP6\":\n        fields = $('div.type_ip6', this.ar_section).children(\"input\");\n        break;\n      case \"ETHER\":\n        fields = $('div.type_ether', this.ar_section).children(\"input\");\n        break;\n    }\n\n    fields.each(function(){\n      var field=$(this);\n\n      if (field.val() != null && field.val().length){ //if has a length\n        data[field.attr('name')] = field.val();\n      }\n\n    });\n\n    if (!$.isEmptyObject(data)) {\n      data[\"TYPE\"] = ar_type;\n    }\n\n    $.extend(data, CustomTagsTable.retrieve(this.ar_section));\n\n    var str_ar_tab_id = $('div[name=\"str_ar_tab_id\"]', this.ar_section).attr(\"str_ar_tab_id\");\n\n    var secgroups = this.securityGroupsTable.retrieveResourceTableSelect();\n    if (secgroups != undefined && secgroups.length != 0){\n      data[\"SECURITY_GROUPS\"] = secgroups.join(\",\");\n    }\n\n    return data;\n  }\n\n  function _fill_ar_tab_data(ar_json){\n    WizardFields.fill(this.ar_section, ar_json);\n\n    var fields = $('[wizard_field]',this.ar_section);\n\n    fields.each(function(){\n      var field = $(this);\n      var field_name = field.attr('wizard_field');\n\n      // Delete so these attributes don't end in the custom tags table also\n      delete ar_json[field_name];\n    });\n\n    delete ar_json[\"AR_ID\"];\n    delete ar_json[\"USED_LEASES\"];\n    delete ar_json[\"LEASES\"];\n    delete ar_json[\"MAC_END\"];\n    delete ar_json[\"IP_END\"];\n    delete ar_json[\"IP6_ULA\"];\n    delete ar_json[\"IP6_ULA_END\"];\n    delete ar_json[\"IP6_GLOBAL\"];\n    delete ar_json[\"IP6_GLOBAL_END\"];\n\n    if (ar_json[\"SECURITY_GROUPS\"] != undefined &&\n        ar_json[\"SECURITY_GROUPS\"].length != 0){\n\n      var secgroups = ar_json[\"SECURITY_GROUPS\"].split(\",\");\n\n      this.securityGroupsTable.selectResourceTableSelect({ids: secgroups});\n    }\n\n    delete ar_json[\"SECURITY_GROUPS\"];\n\n    CustomTagsTable.fill(this.ar_section, ar_json);\n\n    $('input[name$=\"ar_type\"]',this.ar_section).prop(\"disabled\", true);\n    $('input[wizard_field=\"IP\"]',this.ar_section).prop(\"disabled\", true);\n    $('input[wizard_field=\"MAC\"]',this.ar_section).prop(\"disabled\", true);\n  }\n});\n","define('tabs/vnets-tab/dialogs/add-ar',['require','utils/dialogs/dialog','hbs!./add-ar/html','tabs/vnets-tab/utils/ar-tab','sunstone','utils/notifier','utils/locale','./add-ar/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./add-ar/html');\n  var ArTab = require('tabs/vnets-tab/utils/ar-tab');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n\n  /*\n    CONSTANTS\n   */\n\n  var DIALOG_ID = require('./add-ar/dialogId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.arTab = new ArTab();\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setId = _setId;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'arTabHTML': this.arTab.html(\"add_ar\")\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    that.arTab.setup(context, \"add_ar\");\n\n    $('#submit_ar_reset_button', context).click(function(){\n      Sunstone.getDialog(DIALOG_ID).reset();\n      Sunstone.getDialog(DIALOG_ID).show();\n    });\n\n    $('#add_ar_form',context).on('invalid', function () {\n        Notifier.notifyError(Locale.tr(\"One or more required fields are missing.\"));\n    }).on('valid', function () {\n        var data = that.arTab.retrieve();\n\n        var obj = {AR: data};\n        Sunstone.runAction('Network.add_ar', that.vnetId, obj);\n\n        return false;\n    });\n  }\n\n  function _onShow(context) {\n    this.arTab.onShow();\n    $('#vnet_id', this.dialogElement).text(this.vnetId);\n  }\n\n  function _setId(id) {\n    this.vnetId = id;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vnets-tab/dialogs/update-ar/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large max-height\\\" data-reveal >\\n  <div class=\\\"reveal-body\\\">\\n    <form data-abide=\\\"ajax\\\" id=\\\"update_ar_form\\\" action=\\\"\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <h3 class=\\\"subheader\\\" id=\\\"\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" <span id=\\\"vnet_id\\\"/>\\n            <br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Edit Address Range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" <span id=\\\"ar_id\\\"/>\\n          </h3>\\n        </div>\\n      </div>\\n      \";\n  stack1 = ((helper = (helper = helpers.arTabHTML || (depth0 != null ? depth0.arTabHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"arTabHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      <div class=\\\"reveal-footer\\\">\\n        <div class=\\\"form_buttons\\\">\\n          <button class=\\\"button radius right success\\\" id=\\\"submit_ar_button\\\" type=\\\"submit\\\" value=\\\"Network.update_ar\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </button>\\n        </div>\\n      </div>\\n      <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n    </form>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vnets-tab/dialogs/update-ar/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vnets-tab/dialogs/update-ar',['require','utils/dialogs/dialog','hbs!./update-ar/html','tabs/vnets-tab/utils/ar-tab','sunstone','utils/notifier','utils/locale','./update-ar/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./update-ar/html');\n  var ArTab = require('tabs/vnets-tab/utils/ar-tab');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n\n  /*\n    CONSTANTS\n   */\n\n  var DIALOG_ID = require('./update-ar/dialogId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    this.arTab = new ArTab();\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setParams = _setParams;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'arTabHTML': this.arTab.html(\"update_ar\")\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    that.arTab.setup(context, \"update_ar\");\n\n    $('#update_ar_form',context).on('invalid', function () {\n        Notifier.notifyError(tr(\"One or more required fields are missing.\"));\n    }).on('valid', function () {\n        var data = that.arTab.retrieve();\n\n        data['AR_ID'] = that.arId;\n\n        var obj = {AR: data};\n        Sunstone.runAction('Network.update_ar', that.vnetId, obj);\n\n        return false;\n    });\n  }\n\n  function _onShow(context) {\n    this.arTab.onShow();\n  }\n\n  function _setParams(params) {\n    this.vnetId = params.vnetId;\n    this.arId = params.arId;\n\n    $('#vnet_id', this.dialogElement).text(params.vnetId);\n    $('#ar_id', this.dialogElement).text(params.arId);\n    this.arTab.fill(params.arData);\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vnets-tab/dialogs/reserve/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/advancedSection'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"        <div class=\\\"content\\\" id=\\\"advanced_reserve\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              <p>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"You can select the addresses from an specific Address Range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</p>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-12 columns\\\">\\n              \";\n  stack1 = ((helper = (helper = helpers.arsTableHTML || (depth0 != null ? depth0.arsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"arsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n            </div>\\n          </div>\\n          <br>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"large-6 columns\\\">\\n              <label for=\\\"reserve_addr\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"First address\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n              <input wizard_field=\\\"addr\\\" type=\\\"text\\\" id=\\\"reserve_addr\\\" placeholder=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv4 or MAC\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\"/>\\n            </div>\\n          </div>\\n        </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal large max-height\\\" data-reveal >\\n  <div class=\\\"reveal-body\\\">\\n    <form id=\\\"reserve_form\\\" action=\\\"\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <h3 class=\\\"subheader\\\" id=\\\"\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Reservation from Virtual Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" <span id=\\\"vnet_id\\\"/>\\n          </h3>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-6 columns\\\">\\n          <label for=\\\"reserve_size\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of addresses\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n          <input wizard_field=\\\"size\\\" type=\\\"text\\\" id=\\\"reserve_size\\\"/>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <input type=\\\"radio\\\" name=\\\"reserve_target\\\" id=\\\"reserve_new\\\" value=\\\"NEW\\\"/>\\n          <label for=\\\"reserve_new\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add to a new Virtual Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </label>\\n          <input type=\\\"radio\\\" name=\\\"reserve_target\\\" id=\\\"reserve_add\\\" value=\\\"ADD\\\"/>\\n          <label for=\\\"reserve_add\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add to an existing Reservation\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </label>\\n        </div>\\n      </div>\\n      <div id=\\\"reserve_new_body\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"reserve_name\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Network Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n            <input wizard_field=\\\"name\\\" type=\\\"text\\\" id=\\\"reserve_name\\\"/>\\n          </div>\\n        </div>\\n      </div>\\n      <div id=\\\"reserve_add_body\\\">\\n        \";\n  stack1 = ((helper = (helper = helpers.vnetsTableHTML || (depth0 != null ? depth0.vnetsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"vnetsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n      </div>\\n      <br>\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced Options\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"      <div class=\\\"reveal-footer\\\">\\n        <div class=\\\"form_buttons\\\">\\n          <button class=\\\"button radius right success\\\" id=\\\"submit_reserve_button\\\" type=\\\"submit\\\" value=\\\"Network.reserve\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Reserve\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </button>\\n        </div>\\n      </div>\\n      <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n    </form>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vnets-tab/dialogs/reserve/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vnets-tab/dialogs/reserve/ar-datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','opennebula/network','tabs/vnets-tab/utils/common','utils/notifier','utils/progress-bar'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var OpenNebulaNetwork = require('opennebula/network');\n  var Utils = require('tabs/vnets-tab/utils/common');\n  var Notifier = require('utils/notifier');\n  var ProgressBar = require('utils/progress-bar');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  /**\n   * Constructor\n   * @param {string} dataTableId \n   * @param {object} conf        Same options as TabDatatable constructor, plus\n   *                             conf.vnetId \n   */\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.dataTableId = dataTableId;\n\n    //this.tabId = TAB_NAME;\n    //this.resource = RESOURCE;\n    //this.xmlRoot = XML_ROOT;\n\n    this.vnetId = conf.vnetId;\n\n    this.dataTableOptions = {\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n        //{ \"bSortable\": false, \"aTargets\": [3,4] },\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"Address Range\"),\n      Locale.tr(\"Type\"),\n      Locale.tr(\"Start\"),\n      Locale.tr(\"IPv6 Prefix\"),\n      Locale.tr(\"Leases\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 1,\n      \"select_resource\": Locale.tr(\"Please select an Address Range from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following Address Range:\")\n    };\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n  Table.prototype.updateFn = _updateFn;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _updateFn() {\n    var that = this;\n\n    OpenNebulaNetwork.show({\n      data : {\n        id: that.vnetId\n      },\n      timeout: true,\n      success: function (request, vn){\n        var ar_list_array = [];\n\n        var ar_list = Utils.getARList(vn.VNET);\n\n        $.each(ar_list, function(){\n          var ar = this;\n          var id = ar.AR_ID;\n\n          var start;\n\n          if(ar.TYPE == \"IP4\" || ar.TYPE == \"IP4_6\"){\n            start = (ar.IP ? ar.IP : \"--\");\n          } else {\n            start = (ar.MAC ? ar.MAC : \"--\");\n          }\n\n          var prefix = \"\";\n\n          if(ar.GLOBAL_PREFIX && ar.ULA_PREFIX){\n            prefix += ar.GLOBAL_PREFIX + \"<br>\" + ar.ULA_PREFIX;\n          } else if (ar.GLOBAL_PREFIX){\n            prefix += ar.GLOBAL_PREFIX;\n          } else if (ar.ULA_PREFIX){\n            prefix += ar.ULA_PREFIX;\n          } else {\n            prefix = \"--\";\n          }\n\n          ar_list_array.push([\n            null,\n            id,\n            (ar.TYPE ? ar.TYPE : \"--\"),\n            start,\n            prefix,\n            ProgressBar.html(ar.USED_LEASES, ar.SIZE)\n            ]);\n        });\n\n        that.updateView(null, ar_list_array, true);\n      },\n      error: Notifier.onError\n    });\n  }\n\n  function _elementArray(element_json) {\n    return [];\n  }\n});\n\n","define('tabs/vnets-tab/dialogs/reserve',['require','utils/dialogs/dialog','hbs!./reserve/html','sunstone','utils/locale','utils/tips','utils/wizard-fields','tabs/vnets-tab/datatable','./reserve/ar-datatable','./reserve/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./reserve/html');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var WizardFields = require('utils/wizard-fields');\n  var VNetsTable = require('tabs/vnets-tab/datatable');\n  var ARsTable = require('./reserve/ar-datatable');\n\n  /*\n    CONSTANTS\n   */\n\n  var DIALOG_ID = require('./reserve/dialogId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    var that = this;\n\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setParams = _setParams;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var that = this;\n\n    var opts = {\n      info: false,\n      select: true,\n      selectOptions: {\n        filter_fn: function(vnet){\n          return (vnet['PARENT_NETWORK_ID'] == that.vnetId);\n        }\n      }\n    };\n\n    this.vnetsTable = new VNetsTable(\"reserve\", opts);\n\n    var arOpts = {\n      info: false,\n      select: true,\n      vnetId: this.vnetId\n    };\n\n    this.arsTable = new ARsTable(\"ar_reserve\", arOpts);\n\n    return TemplateHTML({\n      'vnetsTableHTML': this.vnetsTable.dataTableHTML,\n      'arsTableHTML': this.arsTable.dataTableHTML\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    $('input[name=\"reserve_target\"]',context).change(function(){\n      $('div#reserve_new_body', context).hide();\n      $('div#reserve_add_body', context).hide();\n\n      $('input', $('div#reserve_new_body', context)).prop('wizard_field_disabled', true);\n      $('input', $('div#reserve_add_body', context)).prop('wizard_field_disabled', true);\n\n      switch($(this).val()){\n        case \"NEW\":\n          $('div#reserve_new_body', context).show();\n          $('input', $('div#reserve_new_body', context)).prop('wizard_field_disabled', false);\n          break;\n        case \"ADD\":\n          $('div#reserve_add_body', context).show();\n          $('input', $('div#reserve_add_body', context)).prop('wizard_field_disabled', false);\n          break;\n      }\n    });\n\n    $('input#reserve_new', context).prop('checked', true);\n    $('input#reserve_new', context).change();\n\n    that.vnetsTable.idInput().attr(\"wizard_field\", \"vnet\");\n    that.arsTable.idInput().attr(\"wizard_field\", \"ar_id\");\n\n    this.vnetsTable.initialize();\n    this.arsTable.initialize();\n\n    Tips.setup(context);\n\n    $('#reserve_form',context).submit(function(){\n      var data = WizardFields.retrieve(context);\n\n      Sunstone.runAction('Network.reserve', that.vnetId, data);\n\n      return false;\n    });\n  }\n\n  function _onShow(context) {\n    this.vnetsTable.refreshResourceTableSelect();\n    this.arsTable.refreshResourceTableSelect();\n  }\n\n  /**\n   * [_setParams description]\n   * @param {object} params\n   *        - params.vnetId : Virtual Network id\n   */\n  function _setParams(params) {\n    this.vnetId = params.vnetId;\n\n    $('#vnet_id', this.dialogElement).text(params.vnetId);\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vnets-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table id=\\\"info_vnet_table\\\" class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n          <td></td>\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        <tr>\\n          \";\n  stack1 = ((helper = (helper = helpers.clusterTrHTML || (depth0 != null ? depth0.clusterTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"clusterTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.reservationTrHTML || (depth0 != null ? depth0.reservationTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"reservationTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n      <tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.permissionsTableHTML || (depth0 != null ? depth0.permissionsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"permissionsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n  </div>\\n</div>\\n\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vnets-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vnets-tab/panels/info',['require','hbs!./info/html','utils/locale','utils/panel/permissions-table','utils/panel/cluster-tr','utils/panel/rename-tr','opennebula/network','utils/panel/template-table','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n  var Locale = require('utils/locale');\n  var PermissionsTable = require('utils/panel/permissions-table');\n  var ClusterTr = require('utils/panel/cluster-tr');\n  var RenameTr = require('utils/panel/rename-tr');\n  var OpenNebulaNetwork = require('opennebula/network');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateTable = require('utils/panel/template-table');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Network\";\n  var XML_ROOT = \"VNET\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var clusterTrHTML = ClusterTr.html(this.element.CLUSTER);\n    var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);\n\n    // TODO: simplify interface?\n    var strippedTemplate = $.extend({}, this.element.TEMPLATE);\n    delete strippedTemplate[\"SECURITY_GROUPS\"];\n\n    var templateTableHTML = TemplateTable.html(strippedTemplate, RESOURCE,\n                                              Locale.tr(\"Attributes\"));\n    //====\n\n    // TODO: move to util?\n    var reservationTrHTML = '';\n\n    if(this.element.PARENT_NETWORK_ID.length > 0){\n      reservationTrHTML =\n        '<tr>\\\n          <td class=\"key_td\">'+Locale.tr(\"Reservation parent\")+'</td>\\\n          <td class=\"value_td\">'+this.element.PARENT_NETWORK_ID+'</td>\\\n          <td></td>\\\n        </tr>';\n\n      $(\".reserve-right-info\").prop(\"disabled\", true);\n      $(\".reserve-right-info\").addClass(\"has-tip\");\n      $(\".reserve-right-info\").attr(\"title\", Locale.tr(\"This Network is already a reservation\"));\n    } else{\n      $(\".reserve-right-info\").prop(\"disabled\", false);\n      $(\".reserve-right-info\").removeClass(\"has-tip\");\n      $(\".reserve-right-info\").removeAttr(\"title\");\n    }\n    //====\n\n    return TemplateInfo({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'clusterTrHTML': clusterTrHTML,\n      'reservationTrHTML': reservationTrHTML,\n      'permissionsTableHTML': permissionsTableHTML,\n      'templateTableHTML': templateTableHTML\n    });\n  }\n\n  function _setup(context) {\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n    ClusterTr.setup(RESOURCE, this.element.ID, this.element.CLUSTER_ID, context);\n    PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);\n\n    // TODO: simplify interface?\n    var strippedTemplate = $.extend({}, this.element.TEMPLATE);\n    delete strippedTemplate[\"SECURITY_GROUPS\"];\n\n    var hiddenValues = {};\n\n    if (this.element.TEMPLATE.SECURITY_GROUPS != undefined){\n        hiddenValues.SECURITY_GROUPS = this.element.TEMPLATE.SECURITY_GROUPS;\n    }\n\n    TemplateTable.setup(strippedTemplate, RESOURCE, this.element.ID, context, hiddenValues);\n    //===\n\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vnets-tab/panels/ar/html',['hbs','hbs/handlebars','templates/helpers/isTabActionEnabled','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"        <button class=\\\"button success small radius\\\" id=\\\"add_ar_button\\\">\\n          <span class=\\\"fa fa-plus\\\"></span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </button>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"          <button class=\\\"button secondary small radius\\\" id=\\\"update_ar_button\\\" ar_id=\\\"\\\" disabled=\\\"disabled\\\">\\n            <span class=\\\"fa fa-pencil-square-o\\\"></span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Update\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </button>\\n\";\n},\"5\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"          <button class=\\\"button secondary small radius\\\" id=\\\"rm_ar_button\\\" ar_id=\\\"\\\" disabled=\\\"disabled\\\">\\n            <span class=\\\"fa fa-trash-o\\\"></span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Remove\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </button>\\n\";\n},\"7\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"            <tr ar=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.type || (depth0 != null ? depth0.type : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"type\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.start || (depth0 != null ? depth0.start : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"start\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\";\n  stack1 = ((helper = (helper = helpers.prefixHTML || (depth0 != null ? depth0.prefixHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"prefixHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</td>\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\";\n  stack1 = ((helper = (helper = helpers.leasesHTML || (depth0 != null ? depth0.leasesHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"leasesHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</td>\\n            </tr>\\n\";\n},\"9\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"      <div class=\\\"text-center\\\">\\n        <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\">\\n          <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n          <i class=\\\"fa fa-info-circle fa-stack-1x fa-inverse\\\"></i>\\n        </span>\\n        <br>\\n        <br>\\n        <span style=\\\"font-size: 18px; color: #999\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select an Address Range to see more information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form id=\\\"ar_list_form\\\">\\n  <div class=\\\"row collapse\\\">\\n    <div class=\\\"large-12 columns\\\">\\n\";\n  stack1 = ((helpers.isTabActionEnabled || (depth0 && depth0.isTabActionEnabled) || helperMissing).call(depth0, \"vnets-tab\", \"Network.add_ar\", {\"name\":\"isTabActionEnabled\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"      <span class=\\\"right\\\">\\n\";\n  stack1 = ((helpers.isTabActionEnabled || (depth0 && depth0.isTabActionEnabled) || helperMissing).call(depth0, \"vnets-tab\", \"Network.update_ar\", {\"name\":\"isTabActionEnabled\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  stack1 = ((helpers.isTabActionEnabled || (depth0 && depth0.isTabActionEnabled) || helperMissing).call(depth0, \"vnets-tab\", \"Network.remove_ar\", {\"name\":\"isTabActionEnabled\",\"hash\":{},\"fn\":this.program(5, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"      </span>\\n    </div>\\n  </div>\\n  <div class=\\\"row collapse\\\">\\n    <div class=\\\"large-12 columns\\\" style=\\\"overflow:auto\\\">\\n      <table id=\\\"ar_list_datatable\\\" class=\\\"datatable twelve\\\">\\n        <thead>\\n          <tr>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Address Range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Start\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv6 Prefix\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Leases\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.arList : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(7, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"        </tbody>\\n      </table>\\n    </div>\\n  </div>\\n  <div id=\\\"ar_show_info\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.arList : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(9, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vnets-tab/panels/ar/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vnets-tab/panels/ar/arInfo',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.value : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(2, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"2\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            <tr>\\n              <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.key || (depth0 != null ? depth0.key : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"key\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n              <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.value || (depth0 != null ? depth0.value : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"value\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            </tr>\\n\";\n},\"4\":function(depth0,helpers,partials,data) {\n  var lambda=this.lambda, escapeExpression=this.escapeExpression;\n  return \"          <tr>\\n           <td class=\\\"key_td\\\">\"\n    + escapeExpression(lambda((data && data.key), depth0))\n    + \"</td>\\n           <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(depth0, depth0))\n    + \"</td>\\n         </tr>\\n\";\n},\"6\":function(depth0,helpers,partials,data) {\n  var helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n  return \"          <tr>\\n            <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IP\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n            <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.first_ip || (depth0 != null ? depth0.first_ip : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"first_ip\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.last_ip || (depth0 != null ? depth0.last_ip : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"last_ip\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          </tr>\\n\";\n},\"8\":function(depth0,helpers,partials,data) {\n  var helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n  return \"          <tr>\\n            <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IP6_GLOBAL\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n            <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.first_ip6_global || (depth0 != null ? depth0.first_ip6_global : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"first_ip6_global\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.last_ip6_global || (depth0 != null ? depth0.last_ip6_global : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"last_ip6_global\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          </tr>\\n\";\n},\"10\":function(depth0,helpers,partials,data) {\n  var helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n  return \"          <tr>\\n            <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IP6_ULA\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n            <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.first_ip6_ula || (depth0 != null ? depth0.first_ip6_ula : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"first_ip6_ula\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.last_ip6_ula || (depth0 != null ? depth0.last_ip6_ula : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"last_ip6_ula\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          </tr>\\n\";\n},\"12\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"  <div class=\\\"row collapse\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <table class=\\\"dataTable extended_table\\\">\\n        <thead>\\n          <tr><th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Security Groups\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th></tr>\\n        </thead>\\n        <tbody/>\\n      </table>\\n    </div>\\n    <div class=\\\"large-12 columns\\\">\\n      \";\n  stack1 = ((helper = (helper = helpers.secgroupTableHTML || (depth0 != null ? depth0.secgroupTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"secgroupTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    </div>\\n  </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"<div class=\\\"row collapse\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr><th colspan=\\\"2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Address Range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" \"\n    + escapeExpression(((helper = (helper = helpers.arId || (depth0 != null ? depth0.arId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"arId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</th></tr>\\n      </thead>\\n      <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.arKnownAttr : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr><th colspan=\\\"2\\\">&nbsp;</th></tr>\\n      </thead>\\n      <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.arExtraAttr : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(4, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"      </tbody>\\n    </table>\\n  </div>\\n</div>\\n<div class=\\\"row collapse\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"First\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Last\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MAC\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.first_mac || (depth0 != null ? depth0.first_mac : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"first_mac\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.last_mac || (depth0 != null ? depth0.last_mac : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"last_mac\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n        </tr>\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.first_ip : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(6, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.first_ip6_global : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(8, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.first_ip6_ula : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(10, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"      </tbody>\\n    </table>\\n  </div>\\n</div>\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.secgroupTableHTML : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(12, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vnets-tab/panels/ar/arInfo', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vnets-tab/panels/ar',['require','hbs!./ar/html','hbs!./ar/arInfo','utils/locale','utils/progress-bar','sunstone-config','../utils/common','tabs/secgroups-tab/datatable','sunstone','opennebula/network','utils/notifier','../tabId','./ar/panelId','../dialogs/add-ar/dialogId','../dialogs/update-ar/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TemplateAR = require('hbs!./ar/html');\n  var TemplateARInfo = require('hbs!./ar/arInfo');\n  var Locale = require('utils/locale');\n  var ProgressBar = require('utils/progress-bar');\n  var Config = require('sunstone-config');\n  var Utils = require('../utils/common');\n  var SecurityGroupsTable = require('tabs/secgroups-tab/datatable');\n  var Sunstone = require('sunstone');\n  var OpenNebulaNetwork = require('opennebula/network');\n  var Notifier = require('utils/notifier');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./ar/panelId');\n  var SG_TABLE_ID = PANEL_ID + \"SecurityGroupsTable\";\n  var RESOURCE = \"Network\";\n  var XML_ROOT = \"VNET\";\n\n  var ADD_AR_DIALOG_ID = require('../dialogs/add-ar/dialogId');\n  var UPDATE_AR_DIALOG_ID = require('../dialogs/update-ar/dialogId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Addresses\");\n    this.icon = \"fa-align-justify\";\n\n    this.element = info[XML_ROOT];\n\n    this.last_selected_row_ar = \"\";\n\n    this.secgroupTable = undefined;\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var arList = Utils.getARList(this.element);\n    var processedARList = [];\n\n    for (var i=0; i<arList.length; i++){\n      var ar = arList[i];\n      var id = ar.AR_ID;\n\n      var type = (ar.TYPE ? ar.TYPE : \"--\");\n\n      var start = \"\";\n\n      if(ar.TYPE == \"IP4\" || ar.TYPE == \"IP4_6\"){\n        start = (ar.IP ? ar.IP : \"--\");\n      } else {\n        start = (ar.MAC ? ar.MAC : \"--\");\n      }\n\n      var prefix = \"\";\n\n      if(ar.GLOBAL_PREFIX && ar.ULA_PREFIX){\n        prefix += ar.GLOBAL_PREFIX + \"<br>\" + ar.ULA_PREFIX;\n      } else if (ar.GLOBAL_PREFIX){\n        prefix += ar.GLOBAL_PREFIX;\n      } else if (ar.ULA_PREFIX){\n        prefix += ar.ULA_PREFIX;\n      } else {\n        prefix = \"--\";\n      }\n\n      var leases = ProgressBar.html(ar.USED_LEASES, ar.SIZE);\n\n      processedARList.push({\n        \"id\" : id,\n        \"type\" : type,\n        \"start\" : start,\n        \"prefixHTML\" : prefix,\n        \"leasesHTML\" : leases\n      });\n    }\n\n    return TemplateAR({\n      'element': this.element,\n      'arList' : processedARList\n    });\n  }\n\n  function _setup(context) {\n\n    var that = this;\n\n    var ar_list_dataTable = $(\"#ar_list_datatable\", context).dataTable({\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n        //{ \"bSortable\": false, \"aTargets\": [3,4] },\n      ]\n    });\n\n    // TODO: should be a method for sunstone-config?\n    ar_list_dataTable.fnSort( [ [0,config['user_config']['table_order']] ] );\n\n    ar_list_dataTable.off(\"click\", 'tbody tr');\n    ar_list_dataTable.on(\"click\", 'tbody tr', function(e){\n      var aData = ar_list_dataTable.fnGetData(this);\n      if (!aData) return true;\n      var id = aData[0];\n      if (!id) return true;\n\n      if(that.last_selected_row_ar) {\n        that.last_selected_row_ar.children().each(function(){\n          $(this).removeClass('markrowchecked');\n        });\n      }\n\n      that.last_selected_row_ar = $(this);\n      $(this).children().each(function(){\n        $(this).addClass('markrowchecked');\n      });\n\n      $(\"#update_ar_button\", context).attr(\"ar_id\", id);\n      $(\"#update_ar_button\", context).prop(\"disabled\", false);\n\n      $(\"#rm_ar_button\", context).attr(\"ar_id\", id).removeAttr('disabled');\n\n      $(\"#ar_show_info\", context).html(_arHTML(that.element, id));\n\n      _arSetup($(\"#ar_show_info\", context), that.element, id);\n\n      return false;\n    });\n\n\n    if (Config.isTabActionEnabled(\"vnets-tab\", \"Network.remove_ar\")) {\n      context.off(\"click\", 'button#rm_ar_button');\n      context.on(\"click\", 'button#rm_ar_button', function(){\n        // TODO: confirm?\n        var ar_id = $(this).attr('ar_id');\n\n        var obj = {ar_id: ar_id};\n        Sunstone.runAction('Network.rm_ar',that.element.ID,obj);\n\n        return false;\n      });\n    }\n\n    if (Config.isTabActionEnabled(\"vnets-tab\", \"Network.add_ar\")) {\n      context.off(\"click\", 'button#add_ar_button');\n      context.on(\"click\", 'button#add_ar_button', function(){\n        var id = that.element.ID;\n\n        Sunstone.getDialog(ADD_AR_DIALOG_ID).setId(id);\n        Sunstone.getDialog(ADD_AR_DIALOG_ID).show();\n\n        return false;\n      });\n    }\n\n    if (Config.isTabActionEnabled(\"vnets-tab\", \"Network.update_ar\")) {\n      context.off(\"click\", 'button#update_ar_button');\n      context.on(\"click\", 'button#update_ar_button', function(){\n        var id = that.element.ID;\n        var ar_id = $(this).attr('ar_id');\n\n        OpenNebulaNetwork.show({\n          data : {\n            id: id\n          },\n          timeout: true,\n          success: function (request, vn){\n            var vn_info = vn.VNET;\n\n            var ar = getAR(vn_info, ar_id);\n\n            if(ar != undefined){\n              Sunstone.getDialog(UPDATE_AR_DIALOG_ID).reset();\n\n              Sunstone.getDialog(UPDATE_AR_DIALOG_ID).setParams({\n                'vnetId': id,\n                'arId': ar_id,\n                'arData': $.extend({}, ar)\n              });\n\n              Sunstone.getDialog(UPDATE_AR_DIALOG_ID).show();\n\n            } else {\n              Notifier.notifyError(Locale.tr(\"The Adress Range was not found\"));\n              Sunstone.runAction(\"Network.show\", id);\n            }\n          },\n          error: Notifier.onError\n        });\n\n        return false;\n      });\n    }\n\n    return false;\n  }\n\n\n  //============================================================================\n  //============================================================================\n\n  // TODO move to util?\n  function getAR(vn_info, arId){\n    var ar_list = Utils.getARList(vn_info);\n    var ar = undefined;\n\n    for (var i=0; i<ar_list.length; i++){\n      if (arId == ar_list[i].AR_ID){\n        ar = $.extend({}, ar_list[i]);\n        break;\n      }\n    }\n\n    return ar;\n  }\n  //====\n\n\n  // TODO: move to its own file?\n\n  function _arHTML(vn_info, arId){\n    var ar = getAR(vn_info, arId);\n\n    if(ar == undefined){\n        return \"\";\n    }\n\n    var first_mac       = ar.MAC;\n    var last_mac        = ar.MAC_END;\n    var first_ip        = ar.IP;\n    var last_ip         = ar.IP_END;\n    var first_ip6_global= ar.IP6_GLOBAL;\n    var last_ip6_global = ar.IP6_GLOBAL_END;\n    var first_ip6_ula   = ar.IP6_ULA;\n    var last_ip6_ula    = ar.IP6_ULA_END;\n\n    var arKnownAttr = [\n      {key: Locale.tr(\"Type\"),         value: ar.TYPE},\n      {key: Locale.tr(\"MAC Start\"),    value: ar.MAC},\n      {key: Locale.tr(\"IP Start\"),     value: ar.IP},\n      {key: Locale.tr(\"Global prefix\"),value: ar.GLOBAL_PREFIX},\n      {key: Locale.tr(\"ULA prefix\"),   value: ar.ULA_PREFIX},\n      {key: Locale.tr(\"Size\"),         value: ar.SIZE},\n      {key: Locale.tr(\"Used leases\"),  value: ar.USED_LEASES},\n      {key: Locale.tr(\"Reservation parent AR\"),  value: ar.PARENT_NETWORK_AR_ID}\n    ];\n\n    delete ar[\"MAC_END\"];\n    delete ar[\"IP_END\"];\n    delete ar[\"IP6_ULA\"];\n    delete ar[\"IP6_ULA_END\"];\n    delete ar[\"IP6_GLOBAL\"];\n    delete ar[\"IP6_GLOBAL_END\"];\n    delete ar[\"AR_ID\"];\n    delete ar[\"TYPE\"];\n    delete ar[\"MAC\"];\n    delete ar[\"IP\"];\n    delete ar[\"GLOBAL_PREFIX\"];\n    delete ar[\"ULA_PREFIX\"];\n    delete ar[\"SIZE\"];\n    delete ar[\"USED_LEASES\"];\n    delete ar[\"LEASES\"];\n    delete ar[\"PARENT_NETWORK_AR_ID\"];\n\n    this.secgroupTable = undefined;\n    var secgroupTableHTML = undefined;\n\n    if (ar.SECURITY_GROUPS != undefined &&\n        ar.SECURITY_GROUPS.length != 0){\n\n      var secgroups = ar.SECURITY_GROUPS.split(\",\");\n\n      var opts = {\n        info: true,\n        select: true,\n        selectOptions: {\n          read_only: true,\n          fixed_ids: secgroups\n        }\n      };\n\n      this.secgroupTable = new SecurityGroupsTable(SG_TABLE_ID, opts);\n      secgroupTableHTML = this.secgroupTable.dataTableHTML;\n    }\n\n    delete ar[\"SECURITY_GROUPS\"];\n\n    var arExtraAttr = ar;\n\n    return TemplateARInfo({\n      'arId': arId,\n      'arKnownAttr': arKnownAttr,\n      'arExtraAttr': arExtraAttr,\n      'first_mac': first_mac,\n      'last_mac': last_mac,\n      'first_ip': first_ip,\n      'last_ip': last_ip,\n      'first_ip6_global': first_ip6_global,\n      'last_ip6_global': last_ip6_global,\n      'first_ip6_ula': first_ip6_ula,\n      'last_ip6_ula': last_ip6_ula,\n      'secgroupTableHTML': secgroupTableHTML\n    });\n  }\n\n  function _arSetup(section, vn_info, ar_id){\n    var ar = getAR(vn_info, ar_id);\n\n    if(ar == undefined){\n        return;\n    }\n\n    if (this.secgroupTable != undefined){\n      this.secgroupTable.initialize();\n      this.secgroupTable.refreshResourceTableSelect();\n    }\n  }\n});\n\n","define('tabs/vnets-tab/panels/ar/panelId',['require'],function(require){\n  return 'vnet_ar_list_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vnets-tab/panels/leases/html',['hbs','hbs/handlebars','templates/helpers/isTabActionEnabled','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"    <div class=\\\"row collapse\\\">\\n      <div class=\\\"large-4 columns\\\">\\n        <input type=\\\"text\\\" id=\\\"panel_hold_lease\\\"/>\\n      </div>\\n      <div class=\\\"large-2 columns end\\\">\\n        <button class=\\\"button small secondary radius\\\" id=\\\"panel_hold_lease_button\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hold IP\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </button>\\n      </div>\\n    </div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"            <tr ip=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.IP || (depth0 != null ? depth0.IP : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"IP\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" mac=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.MAC || (depth0 != null ? depth0.MAC : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"MAC\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n              <td class=\\\"key_td\\\">\";\n  stack1 = ((helper = (helper = helpers.col0HTML || (depth0 != null ? depth0.col0HTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"col0HTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</td>\\n              <td>\";\n  stack1 = ((helper = (helper = helpers.col1HTML || (depth0 != null ? depth0.col1HTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"col1HTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</td>\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.IP || (depth0 != null ? depth0.IP : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"IP\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.MAC || (depth0 != null ? depth0.MAC : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"MAC\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.IP6_LINK || (depth0 != null ? depth0.IP6_LINK : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"IP6_LINK\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.IP6_ULA || (depth0 != null ? depth0.IP6_ULA : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"IP6_ULA\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.IP6_GLOBAL || (depth0 != null ? depth0.IP6_GLOBAL : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"IP6_GLOBAL\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n              <td style=\\\"white-space: nowrap\\\" class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.AR_ID || (depth0 != null ? depth0.AR_ID : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"AR_ID\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            </tr>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form id=\\\"leases_form\\\">\\n\";\n  stack1 = ((helpers.isTabActionEnabled || (depth0 && depth0.isTabActionEnabled) || helperMissing).call(depth0, \"vnets-tab\", \"Network.hold_lease\", {\"name\":\"isTabActionEnabled\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  <div class=\\\"row collapse\\\">\\n    <div class=\\\"large-12 columns\\\" style=\\\"overflow:auto\\\">\\n      <table id=\\\"leases_datatable\\\" class=\\\"datatable twelve\\\">\\n        <thead>\\n          <tr>\\n            <th></th>\\n            <th></th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IP\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MAC\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv6 Link\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv6 ULA\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv6 Global\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Address Range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.leases : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"        </tbody>\\n      </table>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vnets-tab/panels/leases/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vnets-tab/panels/leases',['require','hbs!./leases/html','utils/locale','sunstone-config','sunstone','../utils/common','../tabId','./leases/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TemplateLeases = require('hbs!./leases/html');\n  var Locale = require('utils/locale');\n  var Config = require('sunstone-config');\n  var Sunstone = require('sunstone');\n  var Utils = require('../utils/common');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./leases/panelId');\n  var RESOURCE = \"Network\";\n  var XML_ROOT = \"VNET\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Leases\");\n    this.icon = \"fa-list-ul\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var arList = Utils.getARList(this.element);\n    var processedLeases = [];\n\n    for (var i=0; i<arList.length; i++){\n      var ar = arList[i];\n      var id = ar.AR_ID;\n\n      var leases = ar.LEASES.LEASE;\n\n      if (!leases) { //empty\n        continue;\n      } else if (leases.constructor != Array) { //>1 lease\n        leases = [leases];\n      }\n\n      for (var j=0; j<leases.length; j++){\n        var lease = leases[j];\n\n        var col0HTML = \"\";\n        var col1HTML = \"\";\n\n        if (lease.VM == \"-1\") { //hold\n          col0HTML = '<span type=\"text\" class=\"alert radius label\"></span>';\n          \n          if (Config.isTabActionEnabled(\"vnets-tab\", \"Network.release_lease\")) {\n            col1HTML = '<a class=\"release_lease\" href=\"#\"><i class=\"fa fa-play\"/></a>';\n          }\n        } else if (lease.VM != undefined) { //used by a VM\n          col0HTML = '<span type=\"text\" class=\"radius label \"></span>';\n          col1HTML = Locale.tr(\"VM:\") + lease.VM;\n        } else if (lease.VNET != undefined) { //used by a VNET\n          col0HTML = '<span type=\"text\" class=\"radius label \"></span>';\n          col1HTML = Locale.tr(\"NET:\") + lease.VNET;\n        } else {\n          col0HTML = '<span type=\"text\" class=\"radius label \"></span>';\n          col1HTML = '--';\n        }\n\n        processedLeases.push({\n          \"col0HTML\"  : col0HTML,\n          \"col1HTML\"  : col1HTML,\n          \"IP\"        : (lease.IP ? lease.IP : \"--\"),\n          \"MAC\"       : (lease.MAC ? lease.MAC : \"--\"),\n          \"IP6_LINK\"  : (lease.IP6_LINK ? lease.IP6_LINK : \"--\"),\n          \"IP6_ULA\"   : (lease.IP6_ULA ? lease.IP6_ULA : \"--\"),\n          \"IP6_GLOBAL\": (lease.IP6_GLOBAL ? lease.IP6_GLOBAL : \"--\"),\n          \"AR_ID\"     : id\n        });\n      }\n    }\n\n    return TemplateLeases({\n      'element': this.element,\n      'leases' : processedLeases\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    var leases_dataTable = $(\"#leases_datatable\", context).dataTable({\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      // \"sScrollX\": \"100%\",\n      \"aoColumnDefs\": [\n        { \"bSortable\": false, \"aTargets\": [0,1] },\n      ]\n    });\n\n    if (Config.isTabActionEnabled(\"vnets-tab\", \"Network.hold_lease\")) {\n      context.off(\"click\", 'button#panel_hold_lease_button');\n      context.on(\"click\", 'button#panel_hold_lease_button', function(){\n        // TODO: context for selector\n        var lease = $('input#panel_hold_lease').val();\n\n        if (lease.length){\n            var obj = {ip: lease};\n            Sunstone.runAction('Network.hold',that.element.ID,obj);\n        }\n\n        return false;\n      });\n\n      context.off(\"click\", 'a.hold_lease');\n      context.on(\"click\", 'a.hold_lease', function(){\n        var lease = $(this).parents('tr').attr('ip');\n        var obj = { ip: lease};\n        Sunstone.runAction('Network.hold',that.element.ID,obj);\n        // TODO: spinner is a global var set in sunstone.js\n        //Set spinner\n        $(this).parents('tr').html('<td class=\"key_td\">'+spinner+'</td><td class=\"value_td\"></td>');\n        return false;\n      });\n    }\n\n    if (Config.isTabActionEnabled(\"vnets-tab\", \"Network.release_lease\")) {\n      context.off(\"click\", 'a.release_lease');\n      context.on(\"click\", 'a.release_lease', function(){\n        var lease = $(this).parents('tr').attr('ip');\n        if (lease == \"undefined\"){\n          lease = $(this).parents('tr').attr('mac');\n        }\n\n        var obj = { ip: lease};\n        Sunstone.runAction('Network.release',that.element.ID,obj);\n        // TODO: spinner is a global var set in sunstone.js\n        //Set spinner\n        $(this).parents('tr').html('<td class=\"key_td\">'+spinner+'</td><td class=\"value_td\"></td>');\n        return false;\n      });\n    }\n\n    return false;\n  }\n});\n\n","define('tabs/vnets-tab/panels/secgroups',['require','utils/locale','tabs/secgroups-tab/datatable','./secgroups/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var SecurityGroupsTable = require('tabs/secgroups-tab/datatable');\n\n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./secgroups/panelId');\n  var SG_TABLE_ID = PANEL_ID + \"SecurityGroupsTable\";\n  var RESOURCE = \"Network\";\n  var XML_ROOT = \"VNET\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Security\");\n    this.icon = \"fa-shield\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var secgroups = [];\n\n    if (this.element.TEMPLATE.SECURITY_GROUPS != undefined &&\n        this.element.TEMPLATE.SECURITY_GROUPS.length != 0){\n\n        secgroups = this.element.TEMPLATE.SECURITY_GROUPS.split(\",\");\n    }\n\n    var opts = {\n      info: true,\n      select: true,\n      selectOptions: {\n        read_only: true,\n        fixed_ids: secgroups\n      }\n    };\n\n    this.secgroupTable = new SecurityGroupsTable(SG_TABLE_ID, opts);\n\n    return this.secgroupTable.dataTableHTML;\n  }\n\n  function _setup(context) {\n    this.secgroupTable.initialize();\n    this.secgroupTable.refreshResourceTableSelect();\n\n    return false;\n  }\n});\n\n","define('tabs/vnets-tab/panels/secgroups/panelId',['require'],function(require){\n  return 'vnet_sg_list_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vnets-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div>\\n    <dl id=\\\"vnet_create_tabs\\\" class=\\\"tabs right-info-tabs text-center\\\" data-tab>\\n      <dd class=\\\"active\\\">\\n        <a href=\\\"#vnetCreateGeneralTab\\\"> <i class=\\\"fa fa-globe\\\"></i>\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"General\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n      </dd>\\n      <dd>\\n        <a href=\\\"#vnetCreateBridgeTab\\\"> <i class=\\\"fa fa-cog\\\"></i>\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Conf\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n      </dd>\\n      <dd>\\n        <a href=\\\"#vnetCreateARTab\\\">\\n          <i class=\\\"fa fa-align-justify\\\"></i>\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Addresses\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n      </dd>\\n      <dd>\\n        <a href=\\\"#vnetCreateSecurityTab\\\">\\n          <i class=\\\"fa fa-shield\\\"></i>\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Security\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n      </dd>\\n      <dd>\\n        <a href=\\\"#vnetCreateContextTab\\\">\\n          <i class=\\\"fa fa-folder\\\"></i>\\n          <br>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Context\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n      </dd>\\n    </dl>\\n    <div id=\\\"vnet_create_tabs_content\\\" class=\\\"tabs-content\\\">\\n      <div class=\\\"content active\\\" id=\\\"vnetCreateGeneralTab\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"name\\\" >\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name that the Virtual Network will get for description purposes.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n            <input type=\\\"text\\\" wizard_field=\\\"NAME\\\" required name=\\\"name\\\" id=\\\"name\\\"/>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"DESCRIPTION\\\" >\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description of the Virtual Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n            <textarea type=\\\"text\\\" wizard_field=\\\"DESCRIPTION\\\" id=\\\"DESCRIPTION\\\" name=\\\"DESCRIPTION\\\"/>\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"content\\\" id=\\\"vnetCreateBridgeTab\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"bridge\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Bridge\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name of the physical bridge in the physical host where the VM should connect its network interface\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n            <input type=\\\"text\\\" wizard_field=\\\"BRIDGE\\\" name=\\\"bridge\\\" id=\\\"bridge\\\" />\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"network_mode\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network model\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Choose the same networking model you chose for the hosts that will use this newtork\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n            <select name=\\\"network_mode\\\" id=\\\"network_mode\\\">\\n              <option value=\\\"default\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n              <option value=\\\"802.1Q\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"802.1Q\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n              <option value=\\\"vxlan\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VXLAN\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n              <option value=\\\"ebtables\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ebtables\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n              <option value=\\\"openvswitch\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Open vSwitch\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n              <option value=\\\"vmware\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMware\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            </select>\\n          </div>\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"network_mode_description\\\" value=\\\"default\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Default: dummy driver that doesn’t perform any network operation. Firewalling rules are also ignored.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </div>\\n            <div class=\\\"network_mode_description\\\" value=\\\"802.1Q\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"802.1Q: restrict network access through VLAN tagging, which also requires support from the hardware switches.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </div>\\n            <div class=\\\"network_mode_description\\\" value=\\\"vxlan\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VXLAN: creates a L2 network overlay based on the VXLAN protocol, each VLAN has associated a multicast address in the 239.0.0.0/8 range.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </div>\\n            <div class=\\\"network_mode_description\\\" value=\\\"ebtables\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ebtables: restrict network access through Ebtables rules. No special hardware configuration required.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </div>\\n            <div class=\\\"network_mode_description\\\" value=\\\"openvswitch\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Open vSwitch: restrict network access with Open vSwitch Virtual Switch.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </div>\\n            <div class=\\\"network_mode_description\\\" value=\\\"vmware\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMware: uses the VMware networking infrastructure to provide an isolated and 802.1Q compatible network for VMs launched with the VMware hypervisor.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </div>\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"mac_spoofing\\\">\\n              <input type=\\\"checkbox\\\" wizard_field=\\\"FILTER_MAC_SPOOFING\\\" value=\\\"YES\\\" name=\\\"mac_spoofing\\\" id=\\\"mac_spoofing\\\" />\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filter MAC spoofing\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Activate the filter to prevent mac spoofing. Only works with FW, 802.1Q, VXLAN and Ebtables network drivers.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"ip_spoofing\\\">\\n              <input type=\\\"checkbox\\\" wizard_field=\\\"FILTER_IP_SPOOFING\\\" value=\\\"YES\\\" name=\\\"ip_spoofing\\\" id=\\\"ip_spoofing\\\" />\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Filter IP spoofing\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Activate the filter to prevent IP spoofing. Only works with FW, 802.1Q, VXLAN and Ebtables network drivers.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <div class=\\\"row\\\">\\n              <div class=\\\"large-6 columns\\\">\\n                <label for=\\\"vlan\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VLAN\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n                  <span class=\\\"tip\\\">\\n                    \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Whether or not to isolate this virtual network using the Virtual Network Manager drivers\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                  </span>\\n                </label>\\n                <select wizard_field=\\\"VLAN\\\" name=\\\"vlan\\\" id=\\\"vlan\\\">\\n                  <option value=\\\"YES\\\" selected=\\\"selected\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Yes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                  <option value=\\\"NO\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"No\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n                </select>\\n              </div>\\n              <div class=\\\"large-6 columns\\\">\\n                <label for=\\\"vlan_id\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VLAN ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n                  <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Optional: Set a specific VLAN id\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n                </label>\\n                <input type=\\\"text\\\" wizard_field=\\\"VLAN_ID\\\" name=\\\"vlan_id\\\" id=\\\"vlan_id\\\" />\\n              </div>\\n            </div>\\n          </div>\\n          <div class=\\\"large-6 columns\\\">\\n            <div class=\\\"row\\\">\\n              <div class=\\\"large-12 columns\\\">\\n                <label for=\\\"phydev\\\">\\n                  \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Physical device\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n                  <span class=\\\"tip\\\">\\n                    \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name of the physical network device that will be attached to the bridge\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                  </span>\\n                </label>\\n                <input type=\\\"text\\\" wizard_field=\\\"PHYDEV\\\" name=\\\"phydev\\\" id=\\\"phydev\\\" />\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-3 columns\\\">\\n            <label for=\\\"mtu\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"MTU\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Set the MTU for the tagged interface. This MTU will be then inherited by the bridge and by the tagged interface.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n            <input type=\\\"text\\\" wizard_field=\\\"MTU\\\" name=\\\"mtu\\\" id=\\\"mtu\\\" />\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"content\\\" id=\\\"vnetCreateARTab\\\">\\n        <div class=\\\"row\\\" id=\\\"vnetCreateARTabCreate\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <div class=\\\"row\\\">\\n              <dl class=\\\"tabs vertical\\\" id=\\\"vnet_wizard_ar_tabs\\\" data-tab>\\n                <dt class=\\\"text-center\\\">\\n                  <button type=\\\"button\\\" class=\\\"button tiny radius\\\" id=\\\"vnet_wizard_ar_btn\\\">\\n                    <span class=\\\"fa fa-plus\\\"></span>\\n                    \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add another Address Range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                  </button>\\n                </dt>\\n              </dl>\\n              <div class=\\\"tabs-content vertical\\\" id=\\\"vnet_wizard_ar_tabs_content\\\"></div>\\n            </div>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\" id=\\\"vnetCreateARTabUpdate\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <p>\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Address Ranges need to be managed in the individual Virtual Network panel\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"content\\\" id=\\\"vnetCreateSecurityTab\\\">\\n        \";\n  stack1 = ((helper = (helper = helpers.securityGroupsTableHTML || (depth0 != null ? depth0.securityGroupsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"securityGroupsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n        <div class=\\\"row\\\" id=\\\"default_sg_warning\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <span class=\\\"radius secondary label\\\">\\n              <i class=\\\"fa fa-warning\\\"/>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"The default Security Group 0 is automatically added to new Virtual Networks\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            </span>\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"content\\\" id=\\\"vnetCreateContextTab\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"net_address\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network address\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Base network address. For example, 192.168.1.0\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n            <input type=\\\"text\\\" wizard_field=\\\"NETWORK_ADDRESS\\\" name=\\\"net_address\\\" id=\\\"net_address\\\" />\\n          </div>\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"net_mask\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network mask\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network mask. For example, 255.255.255.0\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n            <input type=\\\"text\\\" wizard_field=\\\"NETWORK_MASK\\\" name=\\\"net_mask\\\" id=\\\"net_mask\\\" />\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"net_gateway\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Gateway\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Router for this network. Leave empty if the network is not routable\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </span>\\n            </label>\\n            <input type=\\\"text\\\" wizard_field=\\\"GATEWAY\\\" name=\\\"net_gateway\\\" id=\\\"net_gateway\\\" />\\n          </div>\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"net_gateway6\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv6 Gateway\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPv6 Router for this network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n            <input type=\\\"text\\\" wizard_field=\\\"GATEWAY6\\\" name=\\\"net_gateway6\\\" id=\\\"net_gateway6\\\" />\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-6 columns\\\">\\n            <label for=\\\"net_dns\\\">\\n              \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"DNS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Specific DNS for this network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n            <input type=\\\"text\\\" wizard_field=\\\"DNS\\\" name=\\\"net_dns\\\" id=\\\"net_dns\\\" />\\n          </div>\\n        </div>\\n        <br>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"large-12 columns\\\">\\n            <span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Custom attributes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            <br>\\n            <br>\\n          </div>\\n        </div>\\n        \";\n  stack1 = ((helper = (helper = helpers.customTagsHTML || (depth0 != null ? depth0.customTagsHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customTagsHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n      </div>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vnets-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/vnets-tab/form-panels/create/advanced',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Advanced\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <p>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write the Virtual Network template here\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</p>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <textarea id=\\\"template\\\" rows=\\\"15\\\" required></textarea>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/vnets-tab/form-panels/create/advanced', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/vnets-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','utils/tips','utils/custom-tags-table','tabs/vnets-tab/utils/ar-tab','tabs/secgroups-tab/datatable','utils/template-utils','utils/wizard-fields','hbs!./create/wizard','hbs!./create/advanced','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var CustomTagsTable = require('utils/custom-tags-table');\n  var ArTab = require('tabs/vnets-tab/utils/ar-tab');\n  var SecurityGroupsTable = require('tabs/secgroups-tab/datatable');\n  var TemplateUtils = require('utils/template-utils');\n  var WizardFields = require('utils/wizard-fields');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n  var TemplateAdvancedHTML = require('hbs!./create/advanced');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create Virtual Network\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      },\n      'update': {\n        'title': Locale.tr(\"Update Virtual Network\"),\n        'buttonText': Locale.tr(\"Update\"),\n        'resetButton': false\n      }\n    };\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.htmlAdvanced = _htmlAdvanced;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.submitAdvanced = _submitAdvanced;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.fill = _fill;\n  FormPanel.prototype.setup = _setup;\n  FormPanel.prototype.addARTab = _add_ar_tab;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    var opts = {\n      info: false,\n      select: true,\n      selectOptions: {\"multiple_choice\": true}\n    };\n\n    this.securityGroupsTable = new SecurityGroupsTable(\"vnet_create\", opts);\n\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId,\n      'customTagsHTML': CustomTagsTable.html(),\n      'securityGroupsTableHTML': this.securityGroupsTable.dataTableHTML\n    });\n  }\n\n  function _htmlAdvanced() {\n    return TemplateAdvancedHTML({formPanelId: this.formPanelId});\n  }\n\n  function _setup(context) {\n    this.arTabObjects = {};\n    var that = this;\n\n    var number_of_ar = 0;\n\n    // add new ar tabs\n    $(\"#vnet_wizard_ar_btn\", context).bind(\"click\", function() {\n      that.addARTab(number_of_ar, context);\n      number_of_ar++;\n\n      context.foundation();\n\n      return false;\n    });\n\n    // close icon: removing the tab on click\n    $(\"#vnetCreateARTab\", context).on(\"click\", \"i.remove-tab\", function() {\n      var target = $(this).parent().attr(\"href\");\n      var dd = $(this).closest('dd');\n      var dl = $(this).closest('dl');\n      var content = $(target);\n\n      var ar_id = content.attr(\"ar_id\");\n\n      dd.remove();\n      content.remove();\n\n      if (dd.attr(\"class\") == 'active') {\n        $('a', dl.children('dd').last()).click();\n      }\n\n      delete that.arTabObjects[ar_id];\n\n      return false;\n    });\n\n    $(\"#vnetCreateARTab #vnetCreateARTabUpdate\", context).hide();\n\n    $('#network_mode', context).change(function() {\n      $('input,select#vlan,label[for!=\"network_mode\"]', $(this).parent()).hide();\n      $('input', $(this).parent()).val(\"\");\n      switch ($(this).val()) {\n      case \"default\":\n        $('input#bridge,label[for=\"bridge\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#phydev,label[for=\"phydev\"]', context).hide().prop('wizard_field_disabled', true);\n        $('select#vlan,label[for=\"vlan\"]', context).hide().prop('wizard_field_disabled', true);\n        $('input#vlan_id,label[for=\"vlan_id\"]', context).hide().prop('wizard_field_disabled', true);\n        $('input#ip_spoofing,label[for=\"ip_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#mac_spoofing,label[for=\"mac_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#mtu,label[for=\"mtu\"]', context).hide().prop('wizard_field_disabled', false);\n\n        $('input#phydev', context).removeAttr('required');\n        $('input#bridge', context).attr('required', '');\n        break;\n      case \"802.1Q\":\n        $('input#bridge,label[for=\"bridge\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#phydev,label[for=\"phydev\"]', context).show().prop('wizard_field_disabled', false);\n        $('select#vlan,label[for=\"vlan\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#vlan_id,label[for=\"vlan_id\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#ip_spoofing,label[for=\"ip_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#mac_spoofing,label[for=\"mac_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#mtu,label[for=\"mtu\"]', context).show().prop('wizard_field_disabled', false);\n\n        $('input#phydev', context).removeAttr('required');\n        $('input#bridge', context).removeAttr('required');\n        break;\n      case \"vxlan\":\n        $('input#bridge,label[for=\"bridge\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#phydev,label[for=\"phydev\"]', context).show().prop('wizard_field_disabled', false);\n        $('select#vlan,label[for=\"vlan\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#vlan_id,label[for=\"vlan_id\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#ip_spoofing,label[for=\"ip_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#mac_spoofing,label[for=\"mac_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#mtu,label[for=\"mtu\"]', context).show().prop('wizard_field_disabled', false);\n\n        $('input#phydev', context).removeAttr('required');\n        $('input#bridge', context).removeAttr('required');\n        break;\n      case \"ebtables\":\n        $('input#bridge,label[for=\"bridge\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#phydev,label[for=\"phydev\"]', context).hide().prop('wizard_field_disabled', true);\n        $('select#vlan,label[for=\"vlan\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#vlan_id,label[for=\"vlan_id\"]', context).hide().prop('wizard_field_disabled', true);\n        $('input#ip_spoofing,label[for=\"ip_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#mac_spoofing,label[for=\"mac_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#mtu,label[for=\"mtu\"]', context).hide().prop('wizard_field_disabled', false);\n\n        $('input#phydev', context).removeAttr('required');\n        $('input#bridge', context).attr('required', '');\n        break;\n      case \"openvswitch\":\n        $('input#bridge,label[for=\"bridge\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#phydev,label[for=\"phydev\"]', context).hide().prop('wizard_field_disabled', true);\n        $('select#vlan,label[for=\"vlan\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#vlan_id,label[for=\"vlan_id\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#ip_spoofing,label[for=\"ip_spoofing\"]', context).hide().prop('wizard_field_disabled', true);\n        $('input#mac_spoofing,label[for=\"mac_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n        $('input#mtu,label[for=\"mtu\"]', context).hide().prop('wizard_field_disabled', false);\n\n        $('input#phydev', context).removeAttr('required');\n        $('input#bridge', context).attr('required', '');\n        break;\n      case \"vmware\":\n        $('input#bridge,label[for=\"bridge\"]', context).show();\n        $('input#phydev,label[for=\"phydev\"]', context).hide();\n        $('select#vlan,label[for=\"vlan\"]', context).show();\n        $('input#vlan_id,label[for=\"vlan_id\"]', context).show();\n        $('input#ip_spoofing,label[for=\"ip_spoofing\"]', context).hide().prop('wizard_field_disabled', true);\n        $('input#mac_spoofing,label[for=\"mac_spoofing\"]', context).hide().prop('wizard_field_disabled', true);\n        $('input#mtu,label[for=\"mtu\"]', context).hide().prop('wizard_field_disabled', false);\n\n        $('input#phydev', context).removeAttr('required');\n        $('input#bridge', context).attr('required', '');\n        break;\n      }\n\n      $(\"div.network_mode_description\").hide();\n      $('div.network_mode_description[value=\"' + $(this).val() + '\"]').show();\n    });\n\n    //Initialize shown options\n    $('#network_mode', context).trigger(\"change\");\n\n    this.securityGroupsTable.initialize();\n\n    CustomTagsTable.setup($(\"#vnetCreateContextTab\", context));\n\n    // Add first AR\n    $(\"#vnet_wizard_ar_btn\", context).trigger(\"click\");\n\n    $(document).foundation('reflow', 'tab');\n    Tips.setup();\n    return false;\n  }\n\n  function _add_ar_tab(ar_id, context) {\n    var str_ar_tab_id  = 'ar' + ar_id;\n\n    var ar_tab = new ArTab();\n    this.arTabObjects[ar_id] = ar_tab;\n\n    var html_tab_content =\n      '<div id=\"' + str_ar_tab_id + 'Tab\" class=\"ar_tab content\" ar_id=\"' + ar_id + '\">' +\n        ar_tab.html(str_ar_tab_id) +\n      '</div>';\n\n    // Append the new div containing the tab and add the tab to the list\n    var a = $(\"<dd><a id='ar_tab\" + str_ar_tab_id + \"' href='#\" + str_ar_tab_id + \"Tab'>\" +\n        Locale.tr(\"Address Range\") + \" <i class='fa fa-times-circle remove-tab'></i></a></dd>\"\n        ).appendTo($(\"dl#vnet_wizard_ar_tabs\", context));\n\n    $(html_tab_content).appendTo($(\"#vnet_wizard_ar_tabs_content\", context));\n\n    $(\"a\", a).trigger(\"click\");\n\n    var ar_section = $('#' + str_ar_tab_id + 'Tab', context);\n    ar_tab.setup(ar_section, str_ar_tab_id);\n    ar_tab.onShow();\n  }\n\n  function _submitWizard(context) {\n    var that = this;\n\n    //Fetch values\n    var network_json = {};\n\n    $.extend(network_json, WizardFields.retrieve($(\"#vnetCreateGeneralTab\", context)));\n    $.extend(network_json, WizardFields.retrieve($(\"#vnetCreateBridgeTab\", context)));\n    $.extend(network_json, WizardFields.retrieve($(\"#vnetCreateContextTab\", context)));\n\n    var secgroups = this.securityGroupsTable.retrieveResourceTableSelect();\n    if (secgroups != undefined && secgroups.length != 0) {\n      network_json[\"SECURITY_GROUPS\"] = secgroups.join(\",\");\n    }\n\n    $.extend(network_json, CustomTagsTable.retrieve($(\"#vnetCreateContextTab\", context)));\n\n    $('.ar_tab', context).each(function() {\n      var ar_id = $(this).attr(\"ar_id\");\n      var hash = that.arTabObjects[ar_id].retrieve();\n\n      if (!$.isEmptyObject(hash)) {\n        if (!network_json[\"AR\"])\n            network_json[\"AR\"] = [];\n\n        network_json[\"AR\"].push(hash);\n      }\n    });\n\n    if (this.action == \"create\") {\n      network_json = {\n        \"vnet\" : network_json\n      };\n\n      Sunstone.runAction(\"Network.create\", network_json);\n      return false;\n    } else if (this.action == \"update\") {\n      Sunstone.runAction(\"Network.update\", this.resourceId, TemplateUtils.templateToString(network_json));\n      return false;\n    }\n  }\n\n  function _submitAdvanced(context) {\n    if (this.action == \"create\") {\n      var template = $('textarea#template', context).val();\n      var vnet_json = {vnet: {vnet_raw: template}};\n      Sunstone.runAction(\"Network.create\", vnet_json);\n      return false;\n\n    } else if (this.action == \"update\") {\n      var template_raw = $('textarea#template', context).val();\n      Sunstone.runAction(\"Network.update\", this.resourceId, template_raw);\n      return false;\n    }\n  }\n\n  function _onShow(context) {\n    var that = this;\n\n    this.securityGroupsTable.refreshResourceTableSelect();\n\n    $('.ar_tab', context).each(function() {\n      var ar_id = $(this).attr(\"ar_id\");\n      that.arTabObjects[ar_id].onShow();\n    });\n  }\n\n  function _fill(context, element) {\n    if (this.action != \"update\") {return;}\n    this.resourceId = element.ID;\n\n    $(\"#default_sg_warning\").hide();\n    // Populates the Avanced mode Tab\n    $('#template', context).val(TemplateUtils.templateToString(element.TEMPLATE).replace(/^[\\r\\n]+$/g, \"\"));\n\n    $('[wizard_field=\"NAME\"]', context).val(\n        TemplateUtils.escapeDoubleQuotes( TemplateUtils.htmlDecode(element.NAME) )).\n        prop(\"disabled\", true).\n        prop('wizard_field_disabled', true);\n\n    WizardFields.fill($(\"#vnetCreateGeneralTab\", context), element.TEMPLATE);\n    WizardFields.fill($(\"#vnetCreateBridgeTab\", context), element.TEMPLATE);\n    WizardFields.fill($(\"#vnetCreateContextTab\", context), element.TEMPLATE);\n\n    // Show all network mode inputs, and make them not required. This will change\n    // if a different network model is selected\n    $('input#bridge,label[for=\"bridge\"]', context).show().prop('wizard_field_disabled', false).removeAttr('required');\n    $('input#phydev,label[for=\"phydev\"]', context).show().prop('wizard_field_disabled', false).removeAttr('required');\n    $('select#vlan,label[for=\"vlan\"]', context).show().prop('wizard_field_disabled', false).removeAttr('required');\n    $('input#vlan_id,label[for=\"vlan_id\"]', context).show().prop('wizard_field_disabled', false).removeAttr('required');\n    $('input#ip_spoofing,label[for=\"ip_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n    $('input#mac_spoofing,label[for=\"mac_spoofing\"]', context).show().prop('wizard_field_disabled', false);\n\n    if (element.TEMPLATE[\"SECURITY_GROUPS\"] != undefined &&\n        element.TEMPLATE[\"SECURITY_GROUPS\"].length != 0) {\n\n      var secgroups = element.TEMPLATE[\"SECURITY_GROUPS\"].split(\",\");\n\n      this.securityGroupsTable.selectResourceTableSelect({ids : secgroups});\n    } else {\n      this.securityGroupsTable.refreshResourceTableSelect();\n    }\n\n    // Delete so these attributes don't end in the custom tags table also\n    delete element.TEMPLATE[\"SECURITY_GROUPS\"];\n\n    var fields = $('[wizard_field]', context);\n\n    fields.each(function() {\n      var field = $(this);\n      var field_name = field.attr('wizard_field');\n\n      delete element.TEMPLATE[field_name];\n    });\n\n    CustomTagsTable.fill($(\"#vnetCreateContextTab\", context), element.TEMPLATE);\n\n    // Remove the first AR added in initialize_\n    $(\"#vnetCreateARTab i.remove-tab\", context).trigger(\"click\");\n    $(\"#vnetCreateARTab #vnetCreateARTabUpdate\", context).show();\n    $(\"#vnetCreateARTab #vnetCreateARTabCreate\", context).hide();\n  }\n});\n\n","define('tabs/vnets-tab',['require','utils/locale','./vnets-tab/buttons','./vnets-tab/actions','./vnets-tab/datatable','./vnets-tab/tabId','./vnets-tab/dialogs/add-ar','./vnets-tab/dialogs/update-ar','./vnets-tab/dialogs/reserve','./vnets-tab/panels/info','./vnets-tab/panels/ar','./vnets-tab/panels/leases','./vnets-tab/panels/secgroups','./vnets-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./vnets-tab/buttons');\n  var Actions = require('./vnets-tab/actions');\n  var Table = require('./vnets-tab/datatable');\n\n  var TAB_ID = require('./vnets-tab/tabId');\n  var DATATABLE_ID = \"dataTableVNets\";\n\n  var _dialogs = [\n    require('./vnets-tab/dialogs/add-ar'),\n    require('./vnets-tab/dialogs/update-ar'),\n    require('./vnets-tab/dialogs/reserve')\n  ];\n\n  var _panels = [\n    require('./vnets-tab/panels/info'),\n    require('./vnets-tab/panels/ar'),\n    require('./vnets-tab/panels/leases'),\n    require('./vnets-tab/panels/secgroups')\n  ];\n\n  var _formPanels = [\n    require('./vnets-tab/form-panels/create')\n  ]\n\n  var VNetsTab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Virtual Networks\"),\n    tabClass: \"subTab\",\n    parentTab: \"infra-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-globe\"></i>&emsp;' + Locale.tr(\"Virtual Networks\"),\n    infoHeader: '<i class=\"fa fa-fw fa-globe\"></i>&emsp;' + Locale.tr(\"Virtual Network\"),\n    subheader: '<span class=\"total_vnets\"/> <small>'+Locale.tr(\"TOTAL\")+'</small>&emsp;\\\n        <span class=\"addresses_vnets\"/> <small>'+Locale.tr(\"USED IPs\")+'</small>',\n    resource: 'Network',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return VNetsTab;\n});\n\n","define('tabs/secgroups-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"SecurityGroup.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"SecurityGroup.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"SecurityGroup.update_dialog\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Update\")\n    },\n    \"SecurityGroup.chown\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change owner\"),\n      layout: \"user_select\",\n      select: \"User\",\n      tip: Locale.tr(\"Select the new owner\")+\":\"\n    },\n    \"SecurityGroup.chgrp\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change group\"),\n      layout: \"user_select\",\n      select: \"Group\",\n      tip: Locale.tr(\"Select the new group\")+\":\"\n    },\n    \"SecurityGroup.clone_dialog\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Clone\")\n    },\n    \"SecurityGroup.delete\" : {\n      type: \"confirm\",\n      layout: \"del\",\n      text: Locale.tr(\"Delete\")\n    }\n  };\n\n  return Buttons;\n})\n;\n","define('tabs/secgroups-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createSecurityGroupForm';\n});\n","define('tabs/secgroups-tab/dialogs/clone/dialogId',['require'],function(require){\n  return 'cloneSecurityGroupDialog';\n});\n","define('tabs/secgroups-tab/actions',['require','sunstone','utils/notifier','utils/locale','./datatable','opennebula/securitygroup','./tabId','./form-panels/create/formPanelId','./dialogs/clone/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var DataTable = require('./datatable');\n  var OpenNebulaResource = require('opennebula/securitygroup');\n\n  var RESOURCE = \"SecurityGroup\";\n  var XML_ROOT = \"SECURITY_GROUP\";\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n  var CLONE_DIALOG_ID = require('./dialogs/clone/dialogId');\n\n  var _actions = {\n\n    \"SecurityGroup.create\" : {\n      type: \"create\",\n      call: OpenNebulaResource.create,\n      callback: function(request, response) {\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      },\n      notify: true\n    },\n\n    \"SecurityGroup.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    \"SecurityGroup.list\" : {\n      type: \"list\",\n      call: OpenNebulaResource.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"SecurityGroup.show\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"SecurityGroup.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(RESOURCE+\".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(RESOURCE+\".list\", {force: true});\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"SecurityGroup.delete\" : {\n      type: \"multiple\",\n      call : OpenNebulaResource.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"SecurityGroup.update_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n        if (selected_nodes.length != 1) {\n          Notifier.notifyMessage(\"Please select one (and just one) Security Group to update.\");\n          return false;\n        }\n\n        var resource_id = \"\" + selected_nodes[0];\n        Sunstone.runAction(RESOURCE+\".show_to_update\", resource_id);\n      }\n    },\n\n    \"SecurityGroup.show_to_update\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"update\",\n          function(formPanelInstance, context) {\n            formPanelInstance.fill(context, response[XML_ROOT]);\n          });\n      },\n      error: Notifier.onError\n    },\n\n    \"SecurityGroup.update\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request, response){\n        Sunstone.hideFormPanel(TAB_ID);\n        Notifier.notifyMessage(Locale.tr(\"Security Group updated correctly\"));\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      }\n    },\n\n    \"SecurityGroup.update_template\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request,response){\n         Sunstone.runAction('SecurityGroup.show',request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"SecurityGroup.chown\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.chown,\n      callback:  function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"SecurityGroup.chgrp\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.chgrp,\n      callback:  function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"SecurityGroup.chmod\" : {\n      type: \"single\",\n      call: OpenNebulaResource.chmod,\n      callback:  function (req) {\n        Sunstone.runAction(RESOURCE+\".show\", req.request.data[0]);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"SecurityGroup.clone_dialog\" : {\n      type: \"custom\",\n      call: function(){\n        Sunstone.getDialog(CLONE_DIALOG_ID).show();\n      }\n    },\n\n    \"SecurityGroup.clone\" : {\n      type: \"single\",\n      call: OpenNebulaResource.clone,\n      callback: function(request, response) {\n        Sunstone.getDialog(CLONE_DIALOG_ID).hide();\n        Sunstone.getDialog(CLONE_DIALOG_ID).reset();\n        Sunstone.runAction('SecurityGroup.refresh');\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"SecurityGroup.rename\" : {\n      type: \"single\",\n      call: OpenNebulaResource.rename,\n      callback: function(request) {\n          Sunstone.runAction('SecurityGroup.show',request.request.data[0][0]);\n      },\n      error: Notifier.onError,\n      notify: true\n    }\n  };\n\n  return _actions;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/secgroups-tab/dialogs/clone/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Clone Security Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n  <form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <div class=\\\"clone_one\\\"></div>\\n        <div class=\\\"clone_several\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Several security groups are selected, please choose a prefix to name the new copies\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <br>\\n        </div>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label class=\\\"clone_one\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        <label class=\\\"clone_several\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Prefix\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</label>\\n        <input required type=\\\"text\\\" name=\\\"name\\\"></input>\\n      </div>\\n    </div>\\n    <div class=\\\"form_buttons row\\\">\\n      <button type=\\\"submit\\\" class=\\\"button radius right\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Clone\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/secgroups-tab/dialogs/clone/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/secgroups-tab/dialogs/clone',['require','utils/dialogs/dialog','hbs!./clone/html','sunstone','utils/notifier','utils/locale','opennebula/securitygroup','./clone/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./clone/html');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var OpenNebulaSecurityGroup = require('opennebula/securitygroup');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./clone/dialogId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    context.off('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n    context.off('valid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n\n    context.on('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; }\n\n      Notifier.notifyError(Locale.tr(\"One or more required fields are missing or malformed.\"));\n    }).on('valid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; }\n\n      var name = $('input', this).val();\n      var sel_elems = Sunstone.getDataTable(TAB_ID).elements();\n\n      if (sel_elems.length > 1){\n        for (var i=0; i< sel_elems.length; i++)\n          //use name as prefix if several items selected\n          Sunstone.runAction('SecurityGroup.clone',\n            sel_elems[i],\n            name + OpenNebulaSecurityGroup.getName(sel_elems[i]));\n      } else {\n        Sunstone.runAction('SecurityGroup.clone',sel_elems[0],name);\n      }\n\n      return false;\n    });\n\n    context.foundation('reflow', 'abide');\n\n    return false;\n  }\n\n  function _onShow(context) {\n    var sel_elems = Sunstone.getDataTable(TAB_ID).elements();\n\n    //show different text depending on how many elements are selected\n    if (sel_elems.length > 1) {\n      $('.clone_one', context).hide();\n      $('.clone_several', context).show();\n      $('input',context).val('Copy of ');\n    } else {\n      $('.clone_one', context).show();\n      $('.clone_several', context).hide();\n\n      $('input',context).val('Copy of ' + OpenNebulaSecurityGroup.getName(sel_elems[0]));\n    }\n\n    $(\"input[name='name']\",context).focus();\n\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/secgroups-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"          <tr>\\n            <td>\"\n    + escapeExpression(((helper = (helper = helpers.PROTOCOL || (depth0 != null ? depth0.PROTOCOL : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"PROTOCOL\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            <td>\"\n    + escapeExpression(((helper = (helper = helpers.RULE_TYPE || (depth0 != null ? depth0.RULE_TYPE : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"RULE_TYPE\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            <td>\"\n    + escapeExpression(((helper = (helper = helpers.RANGE || (depth0 != null ? depth0.RANGE : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"RANGE\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            <td>\"\n    + escapeExpression(((helper = (helper = helpers.NETWORK || (depth0 != null ? depth0.NETWORK : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"NETWORK\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            <td>\"\n    + escapeExpression(((helper = (helper = helpers.ICMP_TYPE || (depth0 != null ? depth0.ICMP_TYPE : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"ICMP_TYPE\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          </tr>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table id=\\\"info_security_group_table\\\" class=\\\"dataTable extended_table\\\">\\n      <thead>\\n         <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.permissionsTableHTML || (depth0 != null ? depth0.permissionsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"permissionsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Rules\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n    </table>\\n    <table class=\\\"policies_table dataTable\\\">\\n      <thead>\\n        <tr>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Protocol\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Port Range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ICMP Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.ruleList : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"      </tbody>\\n    </table>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/secgroups-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/secgroups-tab/panels/info',['require','hbs!./info/html','utils/locale','utils/panel/permissions-table','utils/panel/rename-tr','opennebula/securitygroup','../utils/common','utils/panel/template-table','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n  var Locale = require('utils/locale');\n  var PermissionsTable = require('utils/panel/permissions-table');\n  var RenameTr = require('utils/panel/rename-tr');\n  var OpenNebulaSecurityGroup = require('opennebula/securitygroup');\n  var Utils = require('../utils/common');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateTable = require('utils/panel/template-table');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"SecurityGroup\";\n  var XML_ROOT = \"SECURITY_GROUP\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);\n\n    var rules = Utils.getRules(this.element);\n\n    var ruleTextList = [];\n\n    $.each(rules, function(){\n      ruleTextList.push(Utils.sgRuleToSt(this));\n    });\n\n    // TODO\n    //$(\".resource-info-header\", $(\"#secgroups-tab\")).html(this.element.NAME);\n\n    // TODO: simplify interface?\n    var strippedTemplate = $.extend({}, this.element.TEMPLATE);\n    delete strippedTemplate[\"RULE\"];\n\n    var templateTableHTML = TemplateTable.html(strippedTemplate, RESOURCE,\n                                              Locale.tr(\"Attributes\"));\n    //====\n\n    return TemplateInfo({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'permissionsTableHTML': permissionsTableHTML,\n      'ruleList': ruleTextList,\n      'templateTableHTML': templateTableHTML\n    });\n  }\n\n  function _setup(context) {\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n    PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);\n\n    // TODO: simplify interface?\n    var strippedTemplate = $.extend({}, this.element.TEMPLATE);\n    delete strippedTemplate[\"RULE\"];\n\n    var hiddenValues = {RULE: this.element.TEMPLATE.RULE};\n\n    TemplateTable.setup(strippedTemplate, RESOURCE, this.element.ID, context, hiddenValues);\n    //===\n\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/secgroups-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"create_security_group_form_wrapper\\\">\\n  <form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"medium-4 columns\\\">\\n        <label for=\\\"security_group_name\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Security Group Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n        <input required type=\\\"text\\\" name=\\\"security_group_name\\\" id=\\\"security_group_name\\\"/>\\n      </div>\\n      <div class=\\\"medium-8 columns\\\">\\n        <label for=\\\"security_group_description\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description for the Security Group\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <textarea type=\\\"text\\\" id=\\\"security_group_description\\\" name=\\\"security_group_description\\\" style=\\\"height: 70px;\\\"/>\\n      </div>\\n    </div>\\n    <hr/>\\n  </form>\\n  <form data-abide=\\\"ajax\\\" id=\\\"rules_form_wizard\\\" action=\\\"\\\">\\n    <div class=\\\"row collapse\\\" id=\\\"new_rule_wizard\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"medium-4 columns\\\">\\n          <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Defines the direction of the rule.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select class=\\\"security_group_rule_type\\\">\\n            <option value=\\\"inbound\\\" selected=\\\"selected\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Inbound\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"outbound\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Outbound\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"medium-4 columns\\\">\\n          <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Protocol\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Defines the protocol of the rule.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select class=\\\"security_group_rule_protocol\\\">\\n            <option value=\\\"TCP\\\" selected=\\\"selected\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"TCP\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"UDP\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"UDP\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"ICMP\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ICMP\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"IPSEC\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IPsec\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"ALL\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"All\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"medium-4 columns icmp_type_wrapper\\\">\\n          <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ICMP Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Specific ICMP type of the rule. If a type has multiple codes, it includes all the codes within.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select class=\\\"security_group_rule_icmp_type\\\">\\n            <option value=\\\"\\\" selected=\\\"selected\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"All\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value = \\\"0\\\">0/0: Echo Reply (pong)</option>\\n            <option value = \\\"3\\\">3: Destination Unreachable</option>\\n            <option value = \\\"4\\\">4/0: Source Quench</option>\\n            <option value = \\\"5\\\">5: Redirect</option>\\n            <option value = \\\"8\\\">8/0: Echo Request (ping)</option>\\n            <option value = \\\"9\\\">9/0: Router Advertisement</option>\\n            <option value = \\\"10\\\">10/0: Router Solicitation</option>\\n            <option value = \\\"11\\\">11: Time Exceeded</option>\\n            <option value = \\\"12\\\">12: Parameter Problem</option>\\n            <option value = \\\"13\\\">13/0: Timestamp Request</option>\\n            <option value = \\\"14\\\">14/0: Timestamp Reply</option>\\n            <option value = \\\"17\\\">17/0: Address Mask Request</option>\\n            <option value = \\\"18\\\">18/0: Address Mask Reply</option>\\n          </select>\\n        </div>\\n      </div>\\n      <div class=\\\"row range_row\\\">\\n        <div class=\\\"medium-4 columns\\\">\\n          <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Port range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Selects whether to apply this TCP or UDP rule to all the ports or just a specific set.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select class=\\\"security_group_rule_range_sel\\\">\\n            <option value=\\\"ALL\\\" selected=\\\"selected\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"All\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"RANGE\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Port range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"medium-4 columns end security_group_rule_range\\\">\\n          <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Iptables range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"A Port Range to filter specific ports. Uses the iptables port syntax: port[,port|,port:port]...\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input type=\\\"text\\\" placeholder=\\\"22,53,80:90,110,1024:65535\\\"/>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"medium-4 columns\\\">\\n          <label>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Any: apply this rule to any connection regardless of its source or destination. Network: Apply this rule only to a custom defined network range. Virtual Network: Apply this rule only to connections with origin or destination in one of the already defined VNETs.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <select class=\\\"security_group_rule_network_sel\\\">\\n            <option value=\\\"ANY\\\" selected=\\\"selected\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Any\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"NETWORK\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n            <option value=\\\"VNET\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          </select>\\n        </div>\\n        <div class=\\\"medium-4 columns security_group_rule_network\\\">\\n          <label for=\\\"security_group_rule_first_ip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"IP Start\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"First IP address\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input id=\\\"security_group_rule_first_ip\\\" type=\\\"text\\\" placeholder=\\\"192.168.10.1\\\"/>\\n        </div>\\n        <div class=\\\"medium-4 columns security_group_rule_network\\\">\\n          <label for=\\\"security_group_rule_size\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Size\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n            <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of addresses in the range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n          </label>\\n          <input id=\\\"security_group_rule_size\\\" type=\\\"text\\\" placeholder=\\\"254\\\"/>\\n        </div>\\n      </div>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"small-12 columns vnet_select\\\">\\n          \";\n  stack1 = ((helper = (helper = helpers.vnetsTableHTML || (depth0 != null ? depth0.vnetsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"vnetsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n          <br/>\\n        </div>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"medium-8 small-centered columns\\\">\\n        <button type=\\\"submit\\\" class=\\\"add_security_group_rule button small small-12 radius\\\">\\n          <i class=\\\"fa fa-angle-double-down\\\"></i> \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add Rule\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </button>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <table class=\\\"security_group_rules policies_table dataTable\\\">\\n          <thead>\\n            <tr>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Protocol\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Port Range\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ICMP Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th style=\\\"width:3%\\\"></th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n          </tbody>\\n        </table>\\n      </div>\\n    </div>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/secgroups-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/secgroups-tab/form-panels/create/advanced',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Advanced\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <p>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write the Security Group template here\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</p>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <textarea id=\\\"template\\\" rows=\\\"15\\\" required></textarea>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/secgroups-tab/form-panels/create/advanced', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/secgroups-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','utils/tips','utils/template-utils','utils/wizard-fields','tabs/vnets-tab/datatable','../utils/common','hbs!./create/wizard','hbs!./create/advanced','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var TemplateUtils = require('utils/template-utils');\n  var WizardFields = require('utils/wizard-fields');\n  var VNetsTable = require('tabs/vnets-tab/datatable');\n  var Utils = require('../utils/common');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n  var TemplateAdvancedHTML = require('hbs!./create/advanced');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create Security Group\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      },\n      'update': {\n        'title': Locale.tr(\"Update Security Group\"),\n        'buttonText': Locale.tr(\"Update\"),\n        'resetButton': false\n      }\n    };\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.htmlAdvanced = _htmlAdvanced;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.submitAdvanced = _submitAdvanced;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.fill = _fill;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n\n    var opts = {\n      info: false,\n      select: true\n    };\n\n    this.vnetsTable = new VNetsTable(\"new_sg_rule\", opts);\n\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId,\n      'vnetsTableHTML': this.vnetsTable.dataTableHTML\n    });\n  }\n\n  function _htmlAdvanced() {\n    return TemplateAdvancedHTML({formPanelId: this.formPanelId});\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    context.off(\"change\", '.security_group_rule_protocol');\n    context.on(\"change\", '.security_group_rule_protocol', function(){\n      $('.range_row', context).hide();\n      $('.range_row input', context).removeAttr('required');\n\n      $('.icmp_type_wrapper', context).hide();\n\n      switch ($(this).val()) {\n      case \"TCP\":\n      case \"UDP\":\n        $('.range_row', context).show();\n        $(\".range_row select\", context).trigger(\"change\");\n        break;\n      case \"ICMP\":\n        $('.icmp_type_wrapper', context).show();\n        break;\n      case \"IPSEC\":\n      case \"ALL\":\n        break;\n      }\n    });\n\n    context.off(\"change\", '.security_group_rule_network_sel');\n    context.on(\"change\", '.security_group_rule_network_sel', function(){\n      $('.security_group_rule_network',context).hide();\n      $('div.security_group_rule_network input',context).removeAttr('required');\n      that.vnetsTable.idInput().removeAttr(\"required\");\n\n      $('.vnet_select',context).hide();\n\n      switch ($(this).val()) {\n      case \"ANY\":\n        break;\n      case \"NETWORK\":\n        $('.security_group_rule_network',context).show();\n        $('div.security_group_rule_network input',context).attr('required', '');\n        break;\n      case \"VNET\":\n        $('.vnet_select',context).show();\n        that.vnetsTable.idInput().attr(\"required\", \"\");\n\n        that.vnetsTable.refreshResourceTableSelect();\n\n        break;\n      }\n    });\n\n    context.off(\"change\", '.security_group_rule_range_sel');\n    context.on(\"change\", '.security_group_rule_range_sel', function(){\n      switch ($(this).val()) {\n      case \"ALL\":\n        $('.security_group_rule_range', context).hide();\n        $(\".security_group_rule_range input\", context).removeAttr('required');\n        break;\n      case \"RANGE\":\n        $('.security_group_rule_range', context).show();\n        $(\".security_group_rule_range input\", context).attr('required', '');\n        break;\n      }\n    });\n\n    $('#rules_form_wizard',context).off('invalid');\n    $('#rules_form_wizard',context).off('valid');\n\n    $('#rules_form_wizard',context).on('invalid', function () {\n\n    }).on('valid', function() {\n      var rule = {};\n\n      rule[\"PROTOCOL\"] = $(\".security_group_rule_protocol\", context).val();\n      rule[\"RULE_TYPE\"] = $(\".security_group_rule_type\", context).val();\n\n      switch ($('.security_group_rule_range_sel', context).val()) {\n      case \"ALL\":\n        break;\n      case \"RANGE\":\n        rule[\"RANGE\"] = $(\".security_group_rule_range input\", context).val();\n        break;\n      }\n\n      switch ($('.security_group_rule_network_sel', context).val()) {\n      case \"ANY\":\n        break;\n      case \"NETWORK\":\n        rule[\"IP\"] = $('#security_group_rule_first_ip', context).val();\n        rule[\"SIZE\"] = $('#security_group_rule_size', context).val();\n        break;\n      case \"VNET\":\n        rule[\"NETWORK_ID\"] = that.vnetsTable.retrieveResourceTableSelect();\n        break;\n      }\n\n      if (rule[\"PROTOCOL\"] == \"ICMP\" ){\n        var icmp_type_val = $(\".security_group_rule_icmp_type\", context).val();\n\n        if (icmp_type_val != \"\"){\n          rule[\"ICMP_TYPE\"] = icmp_type_val;\n        }\n      }\n\n      var text = Utils.sgRuleToSt(rule);\n\n      $(\".security_group_rules tbody\", context).append(\n          '<tr>\\\n            <td>'+text.PROTOCOL+'</td>\\\n            <td>'+text.RULE_TYPE+'</td>\\\n            <td>'+text.RANGE+'</td>\\\n            <td>'+text.NETWORK+'</td>\\\n            <td>'+text.ICMP_TYPE+'</td>\\\n            <td>\\\n              <a href=\"#\"><i class=\"fa fa-times-circle remove-tab\"></i></a>\\\n            </td>\\\n          </tr>');\n\n      // Add data to tr element\n      $(\".security_group_rules tbody\", context).children(\"tr\").last().data(\"rule\", rule);\n\n      // Reset new rule fields\n      $('#new_rule_wizard select option', context).prop('selected', function() {\n        return this.defaultSelected;\n      });\n\n      $('#new_rule_wizard select', context).trigger(\"change\");\n\n      $('#new_rule_wizard input', context).val(\"\");\n\n      that.vnetsTable.resetResourceTableSelect();\n    });\n\n    context.off(\"click\", \".security_group_rules i.remove-tab\");\n    context.on(\"click\", \".security_group_rules i.remove-tab\", function(){\n      var tr = $(this).closest('tr');\n      tr.remove();\n    });\n\n    context.foundation();\n\n    this.vnetsTable.initialize();\n\n    Tips.setup();\n\n    $('#new_rule_wizard select', context).trigger(\"change\");\n\n    return false;\n  }\n\n  function _submitWizard(context) {\n\n    var name = $('#security_group_name', context).val();\n    var description = $('#security_group_description', context).val();\n\n    var rules =  [];\n\n    $(\".security_group_rules tbody tr\").each(function(){\n      rules.push($(this).data(\"rule\"));\n    });\n\n    var security_group_json = {\n      \"NAME\" : name,\n      \"DESCRIPTION\": description,\n      \"RULE\" : rules\n    };\n\n    if (this.action == \"create\") {\n      security_group_json = {\n        \"security_group\" : security_group_json\n      };\n\n      Sunstone.runAction(\"SecurityGroup.create\",security_group_json);\n      return false;\n    } else if (this.action == \"update\") {\n      delete security_group_json[\"NAME\"];\n\n      Sunstone.runAction(\n        \"SecurityGroup.update\",\n        this.resourceId,\n        TemplateUtils.templateToString(security_group_json));\n\n      return false;\n    }\n  }\n\n  function _submitAdvanced(context) {\n    if (this.action == \"create\") {\n      var template = $('textarea#template', context).val();\n      var security_group_json = {security_group: {security_group_raw: template}};\n      Sunstone.runAction(\"SecurityGroup.create\",security_group_json);\n      return false;\n    } else if (this.action == \"update\") {\n      var template_raw = $('textarea#template', context).val();\n      Sunstone.runAction(\"SecurityGroup.update\", this.resourceId, template_raw);\n      return false;\n    }\n  }\n\n  function _onShow(context) {\n    this.vnetsTable.refreshResourceTableSelect();\n  }\n\n  function _fill(context, element) {\n    var that = this;\n\n    this.resourceId = element.ID;\n\n    // Populates the Avanced mode Tab\n    $('#template', context).val(TemplateUtils.templateToString(element.TEMPLATE).replace(/^[\\r\\n]+$/g, \"\"));\n\n    $('#security_group_name',context).val(\n      TemplateUtils.escapeDoubleQuotes(TemplateUtils.htmlDecode( element.NAME ))).\n      prop(\"disabled\", true);\n\n    $('#security_group_description', context).val(\n      TemplateUtils.escapeDoubleQuotes(TemplateUtils.htmlDecode( element.TEMPLATE.DESCRIPTION )) );\n\n    var rules = element.TEMPLATE.RULE;\n\n    if (!rules) { //empty\n      rules = [];\n    }\n    else if (rules.constructor != Array) { //>1 rule\n      rules = [rules];\n    }\n\n    $.each(rules, function(){\n      var text = Utils.sgRuleToSt(this);\n\n      $(\".security_group_rules tbody\", context).append(\n        '<tr>\\\n        <td>'+text.PROTOCOL+'</td>\\\n        <td>'+text.RULE_TYPE+'</td>\\\n        <td>'+text.RANGE+'</td>\\\n        <td>'+text.NETWORK+'</td>\\\n        <td>'+text.ICMP_TYPE+'</td>\\\n        <td>\\\n        <a href=\"#\"><i class=\"fa fa-times-circle remove-tab\"></i></a>\\\n        </td>\\\n        </tr>');\n\n      $(\".security_group_rules tbody\", context).children(\"tr\").last().data(\"rule\", this);\n    });\n  }\n});\n\n","define('tabs/secgroups-tab',['require','utils/locale','./secgroups-tab/buttons','./secgroups-tab/actions','./secgroups-tab/datatable','./secgroups-tab/tabId','./secgroups-tab/dialogs/clone','./secgroups-tab/panels/info','./secgroups-tab/form-panels/create'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./secgroups-tab/buttons');\n  var Actions = require('./secgroups-tab/actions');\n  var Table = require('./secgroups-tab/datatable');\n\n  var TAB_ID = require('./secgroups-tab/tabId');\n  var DATATABLE_ID = \"dataTableSecurityGroups\";\n\n  var _dialogs = [\n    require('./secgroups-tab/dialogs/clone')\n  ];\n\n  var _panels = [\n    require('./secgroups-tab/panels/info')\n  ];\n\n  var _formPanels = [\n    require('./secgroups-tab/form-panels/create')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Security Groups\"),\n    tabClass: \"subTab\",\n    parentTab: \"infra-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-shield\"></i>&emsp;'+Locale.tr(\"Security Groups\"),\n    infoHeader: '<i class=\"fa fa-fw fa-shield\"></i>&emsp;'+Locale.tr(\"Security Group\"),\n    subheader: '<span/> <small></small>&emsp;',\n    resource: 'SecurityGroup',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/zones-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var ZoneButtons = {\n    \"Zone.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Zone.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"Zone.delete\" : {\n      type: \"confirm\",\n      layout: \"del\",\n      text: Locale.tr(\"Delete\")\n    }\n  };\n\n  return ZoneButtons;\n})\n;\n","define('tabs/zones-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var RESOURCE = \"Zone\";\n  var XML_ROOT = \"ZONE\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    }\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Endpoint\"),\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 2,\n      \"select_resource\": Locale.tr(\"Please select a Zone from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following Zone:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more Zones from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following Zones:\")\n    };\n\n    TabDataTable.call(this);\n  };\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json.ZONE;\n\n    return [\n        '<input class=\"check_item\" type=\"checkbox\" id=\"' + RESOURCE.toLowerCase() + '_' +\n                             element.ID + '\" name=\"selected_items\" value=\"' +\n                             element.ID + '\"/>',\n        element.ID,\n        element.NAME,\n        element.TEMPLATE.ENDPOINT\n    ];\n  }\n});\n\n","define('tabs/zones-tab/tabId',['require'],function(require){\n  return 'zones-tab';\n});\n","define('tabs/zones-tab/dialogs/create/dialogId',['require'],function(require){\n  return 'createZoneDialog';\n});\n","define('tabs/zones-tab/actions',['require','sunstone','utils/notifier','utils/locale','./datatable','opennebula/zone','./tabId','./dialogs/create/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var DataTable = require('./datatable');\n  var OpenNebulaZone = require('opennebula/zone');\n\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./dialogs/create/dialogId');\n\n  var _actions = {\n    \"Zone.create\" : {\n      type: \"create\",\n      call: OpenNebulaZone.create,\n      callback: function(request, response) {\n        Sunstone.getDialog(CREATE_DIALOG_ID).hide();\n        Sunstone.getDialog(CREATE_DIALOG_ID).reset();\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Zone.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.getDialog(CREATE_DIALOG_ID).show();\n      }\n    },\n\n    \"Zone.list\" : {\n      type: \"list\",\n      call: OpenNebulaZone.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: Notifier.onError\n    },\n\n    \"Zone.show\" : {\n      type: \"single\",\n      call: OpenNebulaZone.show,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Zone.show_to_update\" : {\n      type: \"single\",\n      call: OpenNebulaZone.show,\n      // TODO callback: fillPopPup,\n      error: Notifier.onError\n    },\n\n    \"Zone.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(\"Zone.show\", Sunstone.rightInfoResourceId(tab))\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(\"Zone.list\", {force: true});\n        }\n      },\n      error: Notifier.onError\n    },\n\n    \"Zone.delete\" : {\n      type: \"multiple\",\n      call : OpenNebulaZone.del,\n      callback : function(request, response) {\n        Sunstone.getDataTable(TAB_ID).deleteElement(request, response);\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error : Notifier.onError,\n      notify:true\n    },\n\n    \"Zone.update_template\" : {  // Update template\n      type: \"single\",\n      call: OpenNebulaZone.update,\n      callback: function(request, response) {\n        Notifier.notifyMessage(Locale.tr(\"Zone updated correctly\"));\n        Sunstone.runAction('Zone.show', request.request.data[0][0]);\n      },\n      error: Notifier.onError\n    },\n\n    \"Zone.fetch_template\" : {\n      type: \"single\",\n      call: OpenNebulaZone.fetch_template,\n      callback: function(request, response) {\n        $('#template_update_dialog #template_update_textarea').val(response.template);\n      },\n      error: Notifier.onError\n    },\n\n    \"Zone.rename\" : {\n      type: \"single\",\n      call: OpenNebulaZone.rename,\n      callback: function(request) {\n        Notifier.notifyMessage(Locale.tr(\"Zone renamed correctly\"));\n        Sunstone.runAction('Zone.show', request.request.data[0][0]);\n      },\n      error: Notifier.onError,\n      notify: true\n    }\n  };\n\n  return _actions;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/zones-tab/dialogs/create/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"row reveal-modal\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h3 id=\\\"create_zone_header\\\" class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create Zone\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n    </div>\\n  </div>\\n  <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\" action=\\\"\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label for=\\\"zonename\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Zone Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n        <input type=\\\"text\\\" name=\\\"zonename\\\" id=\\\"zonename\\\" />\\n      </div>\\n    </div>\\n    <div class=\\\"row centered\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label for=\\\"endpoint\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Endpoint\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":</label>\\n        <input type=\\\"text\\\" name=\\\"endpoint\\\" id=\\\"endpoint\\\" />\\n      </div>\\n    </div>\\n    <div class=\\\"form_buttons\\\">\\n      <button class=\\\"button radius right success\\\" id=\\\"create_zone_submit\\\" value=\\\"zone/create\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/zones-tab/dialogs/create/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/zones-tab/dialogs/create',['require','utils/dialogs/dialog','hbs!./create/html','sunstone','./create/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./create/html');\n  var Sunstone = require('sunstone');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./create/dialogId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({dialogId: this.dialogId});\n  }\n\n  function _setup(dialog) {\n    $('#'+DIALOG_ID+'Form', dialog).submit(_submit);\n    return false;\n  }\n\n  function _submit() {\n    var name = $('#zonename', this).val();\n    var endpoint = $(\"#endpoint\", this).val();\n    var zoneJSON = {\"zone\" : {\"name\" : name, \"endpoint\" : endpoint}};\n    Sunstone.runAction(\"Zone.create\", zoneJSON);\n    return false;\n  }\n\n  function _onShow(dialog) {\n    $(\"#zonename\", dialog).focus();\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/zones-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table id=\\\"info_zone_table\\\" class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"3\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        \";\n  stack1 = ((helper = (helper = helpers.renameTrHTML || (depth0 != null ? depth0.renameTrHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"renameTrHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\"></div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-9 columns\\\">\\n    \";\n  stack1 = ((helper = (helper = helpers.templateTableHTML || (depth0 != null ? depth0.templateTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templateTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/zones-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/zones-tab/panels/info',['require','hbs!./info/html','utils/locale','utils/panel/rename-tr','utils/panel/template-table','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n  var Locale = require('utils/locale');\n  var RenameTr = require('utils/panel/rename-tr');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateTable = require('utils/panel/template-table');\n\n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Zone\"\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[RESOURCE.toUpperCase()];\n\n    return this;\n  };\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);\n    var templateTableHTML = TemplateTable.html(this.element.TEMPLATE, RESOURCE, \n                                      Locale.tr(\"Attributes\"));\n\n    return TemplateInfo({\n      'element': this.element,\n      'renameTrHTML': renameTrHTML,\n      'templateTableHTML': templateTableHTML\n    });\n  }\n\n  function _setup(context) {\n    RenameTr.setup(RESOURCE, this.element.ID, context);\n    TemplateTable.setup(this.element.TEMPLATE, RESOURCE, this.element.ID, context);\n    return false;\n  }\n});\n\n","define('tabs/zones-tab/panels/info/panelId',['require'],function(require){\n  return 'zone_info_tab';\n});\n","define('tabs/zones-tab',['require','utils/locale','./zones-tab/buttons','./zones-tab/actions','./zones-tab/datatable','./zones-tab/tabId','./zones-tab/dialogs/create','./zones-tab/panels/info'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./zones-tab/buttons');\n  var Actions = require('./zones-tab/actions');\n  var Table = require('./zones-tab/datatable');\n\n  var TAB_ID = require('./zones-tab/tabId');\n  var DATATABLE_ID = \"dataTableZones\";\n\n  var _dialogs = [\n    require('./zones-tab/dialogs/create')\n  ];\n\n  var _panels = [\n    require('./zones-tab/panels/info')\n  ];\n\n  var ZonesTab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Zones\"),\n    tabClass: \"subTab\",\n    parentTab: \"infra-tab\",\n    listHeader: '<i class=\"fa fa-fw fa-files-o\"></i>&emsp;' + Locale.tr(\"Zones\"),\n    infoHeader: '<i class=\"fa fa-fw fa-files-o\"></i>&emsp;' + Locale.tr(\"Zone\"),\n    subheader: '',\n    resource: 'Zone',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    dialogs: _dialogs\n  };\n\n  return ZonesTab;\n});\n\n","define('tabs/marketplace-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Marketplace.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Marketplace.import\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr('Import')\n    }\n  };\n\n  return Buttons;\n});\n","define('tabs/marketplace-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n\n  /*\n    CONSTANTS\n   */\n\n  var RESOURCE = \"Marketplace\";\n  //var XML_ROOT = \"\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    //this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"ID\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"Publisher\"),\n      Locale.tr(\"Hypervisor\"),\n      Locale.tr(\"Arch\"),\n      Locale.tr(\"Format\"),\n      Locale.tr(\"Tags\")\n    ];\n    /*\n    this.selectOptions = {\n    };\n    */\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element) {\n    var publisher   = '-';\n    var hypervisor  = '-';\n    var arch        = '-';\n    var format      = '-';\n    var tags        = '-';\n\n    if(element.publisher != undefined){\n      publisher = element.publisher;\n    }\n\n    if(element.files != undefined && element.files.length > 0){\n      if(element.files[0][\"hypervisor\"] != undefined){\n        hypervisor = element.files[0][\"hypervisor\"];\n      }\n\n      if(element.files[0][\"os-arch\"] != undefined){\n        arch = element.files[0][\"os-arch\"];\n      }\n\n      if(element.files[0][\"format\"] != undefined){\n        format = element.files[0][\"format\"];\n      }\n    }\n\n    if(element.tags != undefined){\n      tags = element.tags;\n    }\n\n    return [\n        '<input class=\"check_item\" type=\"checkbox\" id=\"'+\n                    RESOURCE.toLowerCase()+'_' +\n                    element._id.$oid + '\" name=\"selected_items\" value=\"' +\n                    element._id.$oid + '\"/>',\n        element._id.$oid,\n        element.name,\n        publisher,\n        hypervisor,\n        arch,\n        format,\n        tags\n    ];\n  }\n});\n\n","define('tabs/marketplace-tab/tabId',['require'],function(require){\n  return 'marketplace-tab';\n});\n","define('tabs/marketplace-tab/dialogs/import/dialogId',['require'],function(require){\n  return 'importMarketplaceDialog';\n});\n","define('tabs/marketplace-tab/actions',['require','sunstone','utils/notifier','utils/locale','./datatable','opennebula/marketplace','./tabId','./dialogs/import/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var DataTable = require('./datatable');\n  var OpenNebulaResource = require('opennebula/marketplace');\n\n  var RESOURCE = \"Marketplace\";\n  var TAB_ID = require('./tabId');\n  var IMPORT_DIALOG_ID = require('./dialogs/import/dialogId');\n\n  var _actions = {\n    \"Marketplace.list\" : {\n      type: \"list\",\n      call: OpenNebulaResource.list,\n      callback: function(request, response) {\n        Sunstone.getDataTable(TAB_ID).updateView(request, response.appliances);\n      }\n    },\n\n    \"Marketplace.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(RESOURCE+\".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(RESOURCE+\".list\", {force: true});\n        }\n      },\n    },\n\n    \"Marketplace.import\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        if (response['status'] && response['status'] != 'ready') {\n            Notifier.notifyError(Locale.tr(\"The appliance is not ready\"));\n            return;\n        }\n\n        Sunstone.getDialog(IMPORT_DIALOG_ID).setParams({element: response});\n        Sunstone.getDialog(IMPORT_DIALOG_ID).reset();\n        Sunstone.getDialog(IMPORT_DIALOG_ID).show();\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError\n    },\n\n    \"Marketplace.show\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: Notifier.onError\n    }\n  };\n\n  return _actions;\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/marketplace-tab/dialogs/import/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal medium\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Import Appliance\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n  <form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\">\\n    <div id=\\\"market_import_dialog_content\\\">\\n    </div>\\n    <div class=\\\"form_buttons row\\\">\\n      <button type=\\\"submit\\\" class=\\\"button radius right\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Import\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/marketplace-tab/dialogs/import/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/marketplace-tab/dialogs/import/content',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/humanizeSize'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, buffer = \"<div class=\\\"row\\\" id=\\\"market_import_file_\"\n    + escapeExpression(lambda((data && data.index), depth0))\n    + \"\\\">\\n  <div class=\\\"large-10 large-centered columns\\\">\\n    <div class=\\\"large-10 columns\\\">\\n      <label>\\n        <i class=\\\"fa fa-fw fa-download\\\"/>\\n        &emsp;\"\n    + escapeExpression(lambda((data && data.index), depth0))\n    + \" - \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Image Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"right\\\">\"\n    + escapeExpression(((helpers.humanizeSize || (depth0 && depth0.humanizeSize) || helperMissing).call(depth0, \"B\", (depth0 != null ? depth0.size : depth0), {\"name\":\"humanizeSize\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.name : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(2, data),\"inverse\":this.program(4, data),\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"    </div>\\n    <div class=\\\"large-2 columns market_image_result\\\">\\n    </div>\\n  </div>\\n  <div class=\\\"large-10 columns market_image_response\\\">\\n  </div>\\n</div>\\n\";\n},\"2\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"      <input type=\\\"text\\\" class=\\\"name\\\" value=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\";\n},\"4\":function(depth0,helpers,partials,data) {\n  var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression;\n  return \"      <input type=\\\"text\\\" class=\\\"name\\\" value=\\\"\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.name : stack1), depth0))\n    + \"\\\"/>\\n\";\n},\"6\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<br>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <p style=\\\"font-size:14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"The following template will be created in OpenNebula and the previous images will be referenced in the disks\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"If you want to edit parameters of the template you can do it later in the templates tab\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" </p>\\n  </div>\\n</div>\\n<div class=\\\"row\\\" id=\\\"market_import_file_template\\\">\\n  <div class=\\\"large-10 large-centered columns\\\">\\n    <div class=\\\"large-10 columns\\\">\\n      <label>\\n        <i class=\\\"fa fa-fw fa-file-text-o\\\"/>&emsp;\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Template Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </label>\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.NAME : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(7, data),\"inverse\":this.program(4, data),\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"    </div>\\n    <div class=\\\"large-2 columns market_template_result\\\">\\n    </div>\\n  </div>\\n  <div class=\\\"large-10 columns market_template_response\\\">\\n  </div>\\n</div>\\n\";\n},\"7\":function(depth0,helpers,partials,data) {\n  return \"      <input type=\\\"text\\\" class=\\\"name\\\" value=\\\"NAME\\\"/>\\n\";\n  },\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns\\\">\\n    <p style=\\\"font-size:14px\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"The following images will be created in OpenNebula.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"If you want to edit parameters of the image you can do it later in the images tab\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" </p>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-10 large-centered columns\\\">\\n    <div class=\\\"large-10 columns\\\">\\n      <label for=\\\"market_img_datastore\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select the datastore for the images\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </label>\\n      <div id=\\\"market_img_datastore\\\" name=\\\"market_img_datastore\\\">\\n      </div>\\n    </div>\\n    <div class=\\\"large-2 columns\\\">\\n    </div>\\n  </div>\\n</div>\\n\";\n  stack1 = helpers.each.call(depth0, ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.files : stack1), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.opennebula_template : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(6, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"useData\":true});\nHandlebars.registerPartial('tabs/marketplace-tab/dialogs/import/content', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/marketplace-tab/dialogs/import',['require','utils/dialogs/dialog','hbs!./import/html','hbs!./import/content','sunstone','utils/notifier','utils/locale','utils/resource-select','opennebula/image','opennebula/template','./import/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./import/html');\n  var ContentHTML = require('hbs!./import/content');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var ResourceSelect = require('utils/resource-select');\n  var OpenNebulaImage = require('opennebula/image');\n  var OpenNebulaTemplate = require('opennebula/template');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./import/dialogId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setParams = _setParams;\n  Dialog.prototype.try_to_create_template = _try_to_create_template;\n\n  return Dialog;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    $(\"#market_import_dialog_content\", context).html(\n      ContentHTML({'element': this.element})\n    );\n\n    // Filter out DS with type system (1) or file (2)\n    var filter_att = [\"TYPE\", \"TYPE\"];\n    var filter_val = [\"1\", \"2\"];\n\n    ResourceSelect.insert('div#market_img_datastore', context, \"Datastore\",\n                        null, false, null, filter_att, filter_val);\n\n    context.off('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n    context.off('valid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n\n    context.on('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; }\n\n      Notifier.notifyError(Locale.tr(\"One or more required fields are missing or malformed.\"));\n    }).on('valid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; }\n\n\n      that.number_of_files = that.element['files'].length;\n      that.template_created = false;\n      that.images_information = [];\n\n\n      $(\"input, button\", context).attr(\"disabled\", \"disabled\");\n      $(\".market_image_result:not(.success)\",  context).html(\n        '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">'+\n          '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n          '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>'+\n        '</span>');\n      $(\".market_template_result\",  context).html(\n        '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">'+\n          '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n          '<i class=\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\"></i>'+\n        '</span>');\n\n      var template_context = $(\"#market_import_file_template\", context);\n\n      $.each(that.element['files'], function(index, value){\n        var local_context = $(\"#market_import_file_\"+index,  local_context);\n\n        if ($(\".market_image_result:not(.success)\", local_context).length > 0) {\n          img_obj = {\n            \"image\" : {\n              \"NAME\": $(\"input.name\",local_context).val(),\n              \"PATH\": that.element['links']['download']['href']+'/'+index,\n              \"TYPE\": value['type'],\n              \"MD5\": value['md5'],\n              \"SHA1\": value['sha1'],\n              \"DRIVER\": value['driver'],\n              \"DEV_PREFIX\": value['dev_prefix'],\n              \"FROM_APP\": that.element['_id'][\"$oid\"],\n              \"FROM_APP_NAME\": that.element['name'],\n              \"FROM_APP_FILE\": index\n            },\n            \"ds_id\" : $(\"#market_img_datastore select\", context).val()\n          };\n\n          OpenNebulaImage.create({\n            timeout: true,\n            data: img_obj,\n            success: function (file_index, file_context){\n              return function(request, response) {\n                $(\".market_image_result\", file_context).addClass(\"success\").html(\n                  '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">'+\n                    '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n                    '<i class=\"fa  fa-check fa-stack-1x fa-inverse\"></i>'+\n                  '</span>');\n\n                $(\".market_image_response\", file_context).html(\n                  '<p style=\"font-size:12px\" class=\"running-color\">'+\n                  Locale.tr(\"Image created successfully\")+' ID:'+response.IMAGE.ID+\n                  '</p>');\n\n                that.images_information[file_index] = response;\n\n                that.try_to_create_template(context);\n              };\n            }(index, local_context),\n            error: function (request, error_json){\n              $(\".market_template_result\", template_context).html('');\n\n              $(\".market_image_result\", local_context).html(\n                '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">'+\n                  '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n                  '<i class=\"fa  fa-warning fa-stack-1x fa-inverse\"></i>'+\n                '</span>');\n\n              $(\".market_image_response\", local_context).html(\n                '<p style=\"font-size:12px\" class=\"error-color\">'+\n                (error_json.error.message || Locale.tr(\"Cannot contact server: is it running and reachable?\"))+\n                '</p>');\n\n              $(\"input\", template_context).removeAttr(\"disabled\");\n              $(\"input\", local_context).removeAttr(\"disabled\");\n              $(\"button\", context).removeAttr(\"disabled\");\n            }\n          });\n        }\n      });\n      \n      that.try_to_create_template(context);\n\n      return false;\n    });\n\n    context.foundation('reflow', 'abide');\n\n    return false;\n  }\n\n  function _onShow(context) {\n\n    return false;\n  }\n\n  /**\n   * @param {object} params\n   *        - params.element : Marketplace appliance as returned by a .show call\n   */\n  function _setParams(params) {\n    this.element = params.element;\n  }\n\n\n  function _try_to_create_template(context){\n    var that = this;\n\n    var template_context = $(\"#market_import_file_template\",  context);\n\n    var images_created = $(\".market_image_result.success\", context).length;\n\n    if ((images_created == this.number_of_files) && !that.template_created) {\n      that.template_created = true;\n\n      if (that.element['opennebula_template'] && that.element['opennebula_template'] !== \"CPU=1\") {\n        var vm_template;\n        try {\n          vm_template = JSON.parse(that.element['opennebula_template']);\n        } catch (error) {\n          $(\".market_template_result\", template_context).html(\n            '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">'+\n              '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n              '<i class=\"fa  fa-warning fa-stack-1x fa-inverse\"></i>'+\n            '</span>');\n\n          $(\".market_template_response\", template_context).html(\n            '<p style=\"font-size:12px\" class=\"error-color\">'+\n            (error.message || Locale.tr(\"Cannot contact server: is it running and reachable?\"))+\n            '</p>');\n\n          $(\"input\", template_context).removeAttr(\"disabled\");\n          $(\"button\", context).removeAttr(\"disabled\");\n          that.template_created = false;\n          return;\n        }\n\n        if ($.isEmptyObject(vm_template.DISK)){\n          vm_template.DISK = [];\n        } else if (!$.isArray(vm_template.DISK)){\n          vm_template.DISK = [vm_template.DISK];\n        }\n\n        vm_template.NAME = $(\"input\", template_context).val();\n        if (!vm_template.CPU){\n          vm_template.CPU = \"1\";\n        }\n        if (!vm_template.MEMORY){\n          vm_template.MEMORY = \"1024\";\n        }\n\n        $.each(that.images_information, function(image_index, image_info){\n          if (!vm_template.DISK[image_index]) {\n            vm_template.DISK[image_index] = {};\n          }\n\n          vm_template.DISK[image_index].IMAGE = image_info.IMAGE.NAME;\n          vm_template.DISK[image_index].IMAGE_UNAME = image_info.IMAGE.UNAME;\n        });\n\n        vm_template.FROM_APP = that.element['_id'][\"$oid\"];\n        vm_template.FROM_APP_NAME = that.element['name'];\n\n        OpenNebulaTemplate.create({\n          timeout: true,\n          data: {vmtemplate: vm_template},\n          success: function (request, response){\n            $(\".market_template_result\", template_context).addClass(\"success\").html(\n              '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">'+\n                '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n                '<i class=\"fa  fa-check fa-stack-1x fa-inverse\"></i>'+\n              '</span>');\n\n            $(\".market_template_response\", template_context).html(\n              '<p style=\"font-size:12px\" class=\"running-color\">'+\n              Locale.tr(\"Template created successfully\")+' ID:'+response.VMTEMPLATE.ID+\n              '</p>');\n\n            $(\"button\", context).hide();\n          },\n          error: function (request, error_json){\n            $(\".market_template_result\", template_context).html(\n              '<span class=\"fa-stack fa-2x\" style=\"color: #dfdfdf\">'+\n                '<i class=\"fa fa-cloud fa-stack-2x\"></i>'+\n                '<i class=\"fa  fa-warning fa-stack-1x fa-inverse\"></i>'+\n              '</span>');\n\n            $(\".market_template_response\", template_context).html(\n              '<p style=\"font-size:12px\" class=\"error-color\">'+\n              (error_json.error.message || Locale.tr(\"Cannot contact server: is it running and reachable?\"))+\n              '</p>');\n\n            $(\"input\", template_context).removeAttr(\"disabled\");\n            $(\"button\", context).removeAttr(\"disabled\");\n            that.template_created = false;\n          }\n        });\n      } else {\n        $(\"button\", context).hide();\n      }\n    }\n  }\n\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/marketplace-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/humanizeSize'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda;\n  return \"        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Status\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.status : stack1), depth0))\n    + \"</td>\\n        </tr>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda;\n  return \"        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Tags\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.tags : stack1), depth0))\n    + \"</td>\\n        </tr>\\n\";\n},\"5\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda;\n  return \"        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Catalog\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.catalog : stack1), depth0))\n    + \"</td>\\n        </tr>\\n\";\n},\"7\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Size\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helpers.humanizeSize || (depth0 && depth0.humanizeSize) || helperMissing).call(depth0, \"B\", ((stack1 = ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.files : stack1)) != null ? stack1['0'] : stack1)) != null ? stack1.size : stack1), {\"name\":\"humanizeSize\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n        </tr>\\n\";\n},\"9\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"    <table class=\\\"dataTable\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Short Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"value_td\\\">\";\n  stack1 = ((helper = (helper = helpers.short_description || (depth0 != null ? depth0.short_description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"short_description\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n\";\n},\"11\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"        <tr>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helpers.humanizeSize || (depth0 && depth0.humanizeSize) || helperMissing).call(depth0, \"B\", (depth0 != null ? depth0.size : depth0), {\"name\":\"humanizeSize\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n        </tr>\\n\";\n},\"13\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"        <tr>\\n          <td colspan=\\\"2\\\" class=\\\"value_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"No Images defined\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n        </tr>\\n\";\n},\"15\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda;\n  return \"    <table class=\\\"dataTable\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"OpenNebula Template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"value_td\\\"><pre>\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.opennebula_template : stack1), depth0))\n    + \"</pre></td>\\n        </tr>\\n      </tbody>\\n    </table>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable\\\">\\n      <thead>\\n        <tr><th colspan=\\\"2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th></tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1._id : stack1)) != null ? stack1.$oid : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.name : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"URL\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\\n            <a href=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" target=\\\"_blank\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"link\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n          </td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Publisher\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.publisher : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Downloads\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.downloads : stack1), depth0))\n    + \"</td>\\n        </tr>\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.status : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.tags : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.catalog : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(5, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"OS\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1['os-id'] : stack1), depth0))\n    + \" \"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1['os-release'] : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Arch\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1['os-arch'] : stack1), depth0))\n    + \"</td>\\n        </tr>\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.files : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(7, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Hypervisor\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.hypervisor : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Format\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.format : stack1), depth0))\n    + \"</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.short_description : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(9, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"    <table class=\\\"dataTable\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"value_td\\\">\";\n  stack1 = ((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"description\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n    <table class=\\\"dataTable\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Images\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.files : stack1), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(11, data),\"inverse\":this.program(13, data),\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"      </tbody>\\n    </table>\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.opennebula_template : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(15, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/marketplace-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/marketplace-tab/panels/info',['require','hbs!./info/html','utils/locale','utils/humanize','utils/template-utils','utils/panel/template-table','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TemplateInfo = require('hbs!./info/html');\n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateTable = require('utils/panel/template-table');\n\n  /*\n    CONSTANTS\n   */\n\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Marketplace\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info;\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var url = this.element.links.download.href;\n    url = url.replace(/\\/download$/, '');\n\n    var short_description = \"\";\n\n    if(this.element.short_description){\n      short_description = TemplateUtils.htmlDecode(this.element.short_description).replace(/\\n/g, \"<br/>\");\n    }\n\n    var description = TemplateUtils.htmlDecode(this.element.description).replace(/\\n/g, \"<br/>\");\n\n    return TemplateInfo({\n      'element': this.element,\n      'url': url,\n      'short_description': short_description,\n      'description': description\n    });\n  }\n\n  function _setup(context) {\n    return false;\n  }\n});\n\n","define('tabs/marketplace-tab/panels/info/panelId',['require'],function(require){\n  return 'marketplace_info_tab';\n});\n","define('tabs/marketplace-tab',['require','utils/locale','./marketplace-tab/buttons','./marketplace-tab/actions','./marketplace-tab/datatable','./marketplace-tab/tabId','./marketplace-tab/dialogs/import','./marketplace-tab/panels/info'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./marketplace-tab/buttons');\n  var Actions = require('./marketplace-tab/actions');\n  var Table = require('./marketplace-tab/datatable');\n\n  var TAB_ID = require('./marketplace-tab/tabId');\n  var DATATABLE_ID = \"dataTableMarketplace\";\n\n  var _dialogs = [\n    require('./marketplace-tab/dialogs/import')\n  ];\n\n  var _panels = [\n    require('./marketplace-tab/panels/info')\n  ];\n\n  var _formPanels = [\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: '<i class=\"fa fa-lg fa-fw fa-shopping-cart\"></i>&emsp;' + Locale.tr(\"Marketplace\"),\n    listHeader: '<i class=\"fa fa-fw fa-shopping-cart\"></i>&emsp;'+Locale.tr(\"OpenNebula Marketplace\"),\n    infoHeader: '<i class=\"fa fa-fw fa-shopping-cart\"></i>&emsp;'+Locale.tr(\"Appliance\"),\n    subheader: '<span/> <small></small>&emsp;',\n    resource: 'Marketplace',\n    content: '<div class=\"row marketplace_error_message\" hidden>\\\n        <div class=\"small-6 columns small-centered text-center\">\\\n            <div class=\"alert-box alert radius\">'+Locale.tr(\"Cannot connect to OpenNebula Marketplace\")+'</div>\\\n        </div>\\\n    </div>',\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true, oneSelection: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/oneflow-dashboard',['require'],function(require) {\n  var TAB_ID = 'oneflow-dashboard';\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: '<i class=\"fa fa-lg fa-fw fa-cubes\"></i>&emsp;OneFlow',\n    no_content: true\n  };\n\n  return Tab;\n});\n\n","define('tabs/oneflow-services-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Service.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Service.chown\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change owner\"),\n      select: \"User\",\n      tip: Locale.tr(\"Select the new owner\")+\":\",\n      layout: \"user_select\"\n    },\n    \"Service.chgrp\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change group\"),\n      select: \"Group\",\n      tip: Locale.tr(\"Select the new group\")+\":\",\n      layout: \"user_select\"\n    },\n    \"Service.shutdown\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Shutdown\")\n    },\n    \"Service.recover\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Recover\")\n    },\n    \"Service.delete\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Delete\"),\n      layout: \"del\",\n      tip: Locale.tr(\"This will delete the selected services\")\n    }\n  };\n\n  return Buttons;\n});\n","define('tabs/oneflow-services-tab/actions',['require','sunstone','utils/notifier','utils/locale','opennebula/service','opennebula/role','opennebula/vm','utils/common-actions','./tabId','./panels/roles/panelId','./dialogs/scale/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var OpenNebulaResource = require('opennebula/service');\n  var OpenNebulaRole = require('opennebula/role');\n  var OpenNebulaVM = require('opennebula/vm');\n  var CommonActions = require('utils/common-actions');\n\n  var TAB_ID = require('./tabId');\n  var XML_ROOT = \"DOCUMENT\";\n  var RESOURCE = \"Service\";\n\n  var ROLES_PANEL_ID = require('./panels/roles/panelId');\n  var SCALE_DIALOG_ID = require('./dialogs/scale/dialogId');\n\n  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID);\n\n  function roleElements() {\n    var selected_nodes = [];\n\n    var dataTable = $('#datatable_service_roles', '#'+TAB_ID+' #'+ROLES_PANEL_ID);\n    var nodes = $('tbody input.check_item:checked', dataTable);\n    $.each(nodes, function() {\n      selected_nodes.push($(this).val());\n    });\n\n    return selected_nodes;\n  }\n\n  function roleVMElements() {\n    var selected_nodes = [];\n\n    var dataTable = $('table[id^=datatable_service_vms]', '#'+TAB_ID+' #'+ROLES_PANEL_ID);\n    var nodes = $('tbody input.check_item:checked', dataTable);\n    $.each(nodes, function() {\n      selected_nodes.push($(this).val());\n    });\n\n    return selected_nodes;\n  }\n\n  function roleCallback() {\n    return Sunstone.runAction('Service.refresh');\n  }\n\n  var _actions = {\n    \"Service.show\" : _commonActions.show(),\n    \"Service.refresh\" : _commonActions.refresh(),\n    \"Service.delete\" : _commonActions.delete(),\n    \"Service.chown\": _commonActions.multipleAction('chown'),\n    \"Service.chgrp\": _commonActions.multipleAction('chgrp'),\n    \"Service.chmod\": _commonActions.singleAction('chmod'),\n\n    \"Service.list\" : {\n      type: \"list\",\n      call: OpenNebulaResource.list,\n      callback: function(request, response) {\n        $(\".oneflow_services_error_message\").hide();\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: function(request, error_json) {\n        Notifier.onError(request, error_json, $(\".oneflow_services_error_message\"));\n      }\n    },\n\n    \"Service.shutdown\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.shutdown,\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Service.recover\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.recover,\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: Notifier.onError,\n      notify: true\n    },\n\n    //--------------------------------------------------------------------------\n\n    \"Role.scale_dialog\" : {\n      type: \"custom\",\n      call: function(){\n        selected = roleElements();\n\n        if(selected.lenght == 0){\n          return;\n        }\n\n        Sunstone.getDialog(SCALE_DIALOG_ID).setParams({roleIds: selected});\n        Sunstone.getDialog(SCALE_DIALOG_ID).reset();\n        Sunstone.getDialog(SCALE_DIALOG_ID).show();\n      }\n    },\n\n    \"Role.update\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.update,\n      callback: function() {\n        Sunstone.getDialog(SCALE_DIALOG_ID).hide();\n        roleCallback();\n      },\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.hold\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.hold,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.release\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.release,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.suspend\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.suspend,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.resume\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.resume,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.stop\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.stop,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.reboot_hard\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.reboot_hard,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.delete_recreate\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.delete_recreate,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.reboot\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.reboot,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.poweroff\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.poweroff,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.poweroff_hard\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.poweroff_hard,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.undeploy\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.undeploy,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.undeploy_hard\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.undeploy_hard,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.snapshot_create\" : {\n      type: \"single\",\n      call: OpenNebulaRole.snapshot_create,\n      callback: roleCallback,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.shutdown\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.shutdown,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.shutdown_hard\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.cancel,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.delete\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.del,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"Role.recover\" : {\n      type: \"multiple\",\n      call: OpenNebulaRole.recover,\n      callback: roleCallback,\n      elements: roleElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    //--------------------------------------------------------------------------\n\n    \"RoleVM.deploy\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.deploy,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.migrate\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.migrate,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.migrate_live\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.livemigrate,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.hold\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.hold,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.release\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.release,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.suspend\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.suspend,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.resume\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.resume,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.stop\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.stop,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.reboot_hard\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.reset,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.delete_recreate\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.resubmit,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.reboot\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.reboot,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.poweroff\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.poweroff,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.poweroff_hard\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.poweroff_hard,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.undeploy\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.undeploy,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.undeploy_hard\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.undeploy_hard,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.shutdown\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.shutdown,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.shutdown_hard\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.cancel,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.delete\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.del,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.recover\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.recover,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.resched\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.resched,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.unresched\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.unresched,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n\n    \"RoleVM.chown\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.chown,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    },\n    \"RoleVM.chgrp\" : {\n      type: \"multiple\",\n      call: OpenNebulaVM.chgrp,\n      callback: roleCallback,\n      elements: roleVMElements,\n      error: Notifier.onError,\n      notify: true\n    }\n\n\n  };\n\n  return _actions;\n});\n","define('tabs/oneflow-services-tab/dialogs/scale/dialogId',['require'],function(require){\n  return 'scaleServiceRoleDialog';\n});\n","define('tabs/oneflow-services-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','opennebula/service','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  var OpenNebulaService = require('opennebula/service');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var RESOURCE = \"Service\";\n  var XML_ROOT = \"DOCUMENT\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"ID\") ,\n      Locale.tr(\"Owner\") ,\n      Locale.tr(\"Group\"),\n      Locale.tr(\"Name\"),\n      Locale.tr(\"State\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 4,\n      \"select_resource\": Locale.tr(\"Please select a Service from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following Service:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more Services from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following Services:\")\n    };\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n\n    return [\n        '<input class=\"check_item\" type=\"checkbox\" id=\"' + RESOURCE.toLowerCase() + '_' +\n                             element.ID + '\" name=\"selected_items\" value=\"' +\n                             element.ID + '\"/>',\n        element.ID,\n        element.UNAME,\n        element.GNAME,\n        element.NAME,\n        OpenNebulaService.state(element.TEMPLATE.BODY.state)\n    ];\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-services-tab/dialogs/scale/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Scale\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h3>\\n  </div>\\n  <form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <label for=\\\"cardinality\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cardinality\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of VMs to instantiate with this role\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" name=\\\"cardinality\\\" id=\\\"cardinality\\\"/>\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <input type=\\\"checkbox\\\" name=\\\"force\\\" id=\\\"force\\\"/>\\n        <label class=\\\"inline\\\" for=\\\"force\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Force\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Force the new cardinality even if it is outside the limits\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n      </div>\\n    </div>\\n    <div class=\\\"form_buttons row\\\">\\n      <button type=\\\"submit\\\" class=\\\"button radius right\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Scale\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      </button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/oneflow-services-tab/dialogs/scale/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/oneflow-services-tab/dialogs/scale',['require','utils/dialogs/dialog','hbs!./scale/html','sunstone','utils/notifier','utils/locale','utils/tips','./scale/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./scale/html');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n\n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./scale/dialogId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setParams = _setParams;\n\n  return Dialog;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId\n    });\n  }\n\n  function _onShow(context) {\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    context.off('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n    context.off('valid.fndtn.abide', '#' + DIALOG_ID + 'Form');\n\n    context.on('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; }\n\n      Notifier.notifyError(Locale.tr(\"One or more required fields are missing or malformed.\"));\n    }).on('valid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {\n      // Fix for valid event firing twice\n      if (e.namespace != 'abide.fndtn') { return; }\n\n\n      var force = false;\n      if ($(\"#force\", context).is(\":checked\")) {\n        force = true;\n      }\n\n      var obj = {\n        \"force\": force,\n        \"cardinality\": $(\"#cardinality\", context).val(),\n      };\n\n      Sunstone.runAction('Role.update', that.roleIds, obj);\n\n      return false;\n    });\n\n    context.foundation('reflow', 'abide');\n\n    Tips.setup(context);\n\n    return false;\n  }\n\n  /**\n   * @param {object} params\n   *        - params.roleIds : Array of selected role IDs\n   */\n  function _setParams(params) {\n    this.roleIds = params.roleIds;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-services-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/valOrDefault'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"yes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"no\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.NAME : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Strategy\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.BODY : stack1)) != null ? stack1.deployment : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shutdown action\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\\n            \"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.BODY : stack1)) != null ? stack1.shutdown_action : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"\\n          </td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"State\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.stateStr || (depth0 != null ? depth0.stateStr : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"stateStr\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ready Status Gate\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.BODY : stack1)) != null ? stack1.ready_status_gate : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.program(3, data),\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"          </td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.permissionsTableHTML || (depth0 != null ? depth0.permissionsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"permissionsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/oneflow-services-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/oneflow-services-tab/panels/info',['require','utils/locale','utils/panel/permissions-table','opennebula/service','hbs!./info/html','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var PermissionsTable = require('utils/panel/permissions-table');\n  var OpenNebulaService = require('opennebula/service');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateHTML = require('hbs!./info/html');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var XML_ROOT = \"DOCUMENT\";\n  var RESOURCE = \"Service\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);\n\n    return TemplateHTML({\n      'element': this.element,\n      'permissionsTableHTML': permissionsTableHTML,\n      'stateStr': OpenNebulaService.state(this.element.TEMPLATE.BODY.state)\n    });\n  }\n\n  function _setup(context) {\n    PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);\n  }\n});\n\n","define('tabs/oneflow-services-tab/panels/info/panelId',['require'],function(require){\n  return 'service_info_tab';\n});\n","define('tabs/oneflow-services-tab/panels/roles/roles-buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Role.scale_dialog\" : {\n      type: \"action\",\n      text: Locale.tr(\"Scale\"),\n      layout: \"create\"\n    },\n    \"Role.hold\" : {\n      type: \"action\",\n      text: Locale.tr(\"Hold\"),\n      tip: Locale.tr(\"This will hold selected pending VMs from being deployed\"),\n      layout: \"vmsplanification_buttons\"\n    },\n    \"Role.release\" : {\n      type: \"action\",\n      text: Locale.tr(\"Release\"),\n      layout: \"vmsplanification_buttons\",\n      tip: Locale.tr(\"This will release held machines\")\n    },\n    \"Role.suspend\" : {\n      type: \"action\",\n      text: Locale.tr(\"Suspend\"),\n      layout: \"vmspause_buttons\",\n      tip: Locale.tr(\"This will suspend selected machines\")\n    },\n    \"Role.resume\" : {\n      type: \"action\",\n      text: '<i class=\"fa fa-play\"/>',\n      layout: \"vmsplay_buttons\",\n      tip: Locale.tr(\"This will resume selected VMs\")\n    },\n    \"Role.stop\" : {\n      type: \"action\",\n      text: Locale.tr(\"Stop\"),\n      layout: \"vmsstop_buttons\",\n      tip: Locale.tr(\"This will stop selected VMs\")\n    },\n    \"Role.reboot\" : {\n      type: \"action\",\n      text: Locale.tr(\"Reboot\"),\n      layout: \"vmsrepeat_buttons\",\n      tip: Locale.tr(\"This will send a reboot action to running VMs\")\n    },\n    \"Role.reboot_hard\" : {\n      type: \"action\",\n      text: Locale.tr(\"Reboot\") + ' <span class=\"label secondary radius\">hard</span>',\n      layout: \"vmsrepeat_buttons\",\n      tip: Locale.tr(\"This will perform a hard reboot on selected VMs\")\n    },\n    \"Role.poweroff\" : {\n      type: \"action\",\n      text: Locale.tr(\"Power Off\"),\n      layout: \"vmspause_buttons\",\n      tip: Locale.tr(\"This will send a power off signal to running VMs. They can be resumed later.\")\n    },\n    \"Role.poweroff_hard\" : {\n      type: \"action\",\n      text: Locale.tr(\"Power Off\") + ' <span class=\"label secondary radius\">hard</span>',\n      layout: \"vmspause_buttons\",\n      tip: Locale.tr(\"This will send a forced power off signal to running VMs. They can be resumed later.\")\n    },\n    \"Role.undeploy\" : {\n      type: \"action\",\n      text: Locale.tr(\"Undeploy\"),\n      layout: \"vmsstop_buttons\",\n      tip: Locale.tr(\"Shuts down the given VM. The VM is saved in the system Datastore.\")\n    },\n    \"Role.undeploy_hard\" : {\n      type: \"action\",\n      text: Locale.tr(\"Undeploy\") + ' <span class=\"label secondary radius\">hard</span>',\n      layout: \"vmsstop_buttons\",\n      tip: Locale.tr(\"Shuts down the given VM. The VM is saved in the system Datastore.\")\n    },\n    \"Role.shutdown\" : {\n      type: \"action\",\n      text: Locale.tr(\"Shutdown\"),\n      layout: \"vmsdelete_buttons\",\n      tip: Locale.tr(\"This will initiate the shutdown process in the selected VMs\")\n    },\n    \"Role.shutdown_hard\" : {\n      type: \"action\",\n      text: Locale.tr(\"Shutdown\") + ' <span class=\"label secondary radius\">hard</span>',\n      layout: \"vmsdelete_buttons\",\n      tip: Locale.tr(\"This will initiate the shutdown-hard (forced) process in the selected VMs\")\n    },\n    \"Role.delete\" : {\n      type: \"action\",\n      text: Locale.tr(\"Delete\"),\n      layout: \"vmsdelete_buttons\",\n      tip: Locale.tr(\"This will delete the selected VMs from the database\")\n    },\n    \"Role.delete_recreate\" : {\n      type: \"action\",\n      text: Locale.tr(\"Delete\") + ' <span class=\"label secondary radius\">recreate</span>',\n      layout: \"vmsrepeat_buttons\",\n      tip: Locale.tr(\"This will delete and recreate VMs to PENDING state\")\n    }\n  };\n\n  return Buttons;\n});\n","define('tabs/oneflow-services-tab/panels/roles/roles-vm-buttons',['require','utils/locale','tabs/vms-tab/buttons'],function(require) {\n  var Locale = require('utils/locale');\n  var VMButtons = require('tabs/vms-tab/buttons');\n\n  var Buttons = {\n    \"RoleVM.hold\" : VMButtons[\"VM.hold\"],\n    \"RoleVM.release\" : VMButtons[\"VM.release\"],\n    \"RoleVM.suspend\" : VMButtons[\"VM.suspend\"],\n    \"RoleVM.resume\" : VMButtons[\"VM.resume\"],\n    \"RoleVM.stop\" : VMButtons[\"VM.stop\"],\n    \"RoleVM.reboot\" : VMButtons[\"VM.reboot\"],\n    \"RoleVM.reboot_hard\" : VMButtons[\"VM.reboot_hard\"],\n    \"RoleVM.poweroff\" : VMButtons[\"VM.poweroff\"],\n    \"RoleVM.poweroff_hard\" : VMButtons[\"VM.poweroff_hard\"],\n    \"RoleVM.undeploy\" : VMButtons[\"VM.undeploy\"],\n    \"RoleVM.undeploy_hard\" : VMButtons[\"VM.undeploy_hard\"],\n    \"RoleVM.shutdown\" : VMButtons[\"VM.shutdown\"],\n    \"RoleVM.shutdown_hard\" : VMButtons[\"VM.shutdown_hard\"],\n    \"RoleVM.delete\" : VMButtons[\"VM.delete\"],\n    \"RoleVM.delete_recreate\" : VMButtons[\"VM.delete_recreate\"],\n    \"RoleVM.resched\" : VMButtons[\"VM.resched\"],\n    \"RoleVM.unresched\" : VMButtons[\"VM.unresched\"]\n  };\n\n  return Buttons;\n});\n","define('utils/dom-datatable',['require','utils/tab-datatable','sunstone-config','utils/locale'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  /**\n   * Generic datatable that uses the columns and row data from the html dom,\n   * instead of .list and elementArray methods. Offers the same row check\n   * and row info mechanism as TabDataTable\n   * @param {string} dataTableId dataTable ID\n   * @param {object} conf        Same as tab-datatable.js, plus:\n   *                             - dataTableOptions: replaces the default dataTableOptions\n   */\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.dataTableId = dataTableId;\n\n    this.dataTableOptions = conf.dataTableOptions || {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]}\n      ]\n    };\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n\n  return Table;\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-services-tab/panels/roles/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"    <div id=\\\"role_actions\\\">\\n      <div class=\\\"columns large-4 medium-6 right\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"small-6 columns\\\">\\n            <label for=\\\"batch_action_period\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Period\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Seconds between each group of actions\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n            <input type=\\\"text\\\" id=\\\"batch_action_period\\\" name=\\\"batch_action_period\\\"/>\\n          </div>\\n          <div class=\\\"small-6 columns\\\">\\n            <label for=\\\"batch_action_number\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \":\\n              <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of VMs to apply the action to each period\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n            </label>\\n            <input type=\\\"text\\\" id=\\\"batch_action_number\\\" name=\\\"batch_action_number\\\"/>\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"action_blocks columns large-12\\\">\\n      </div>\\n    </div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"State\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n\";\n},\"5\":function(depth0,helpers,partials,data,depths) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, buffer = \"          <tr>\\n            <td class=\\\"hidden\\\">\\n              <input class=\\\"check_item\\\" type=\\\"checkbox\\\" id=\\\"role_\"\n    + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" name=\\\"selected_items\\\" value=\\\"\"\n    + escapeExpression(lambda(((stack1 = (depths[1] != null ? depths[1].element : depths[1])) != null ? stack1.ID : stack1), depth0))\n    + \"/role/\"\n    + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n            </td>\\n            <td>\"\n    + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n\";\n  stack1 = helpers['if'].call(depth0, (depths[1] != null ? depths[1].servicePanel : depths[1]), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(6, data, depths),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"            <td>\"\n    + escapeExpression(((helper = (helper = helpers.cardinality || (depth0 != null ? depth0.cardinality : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"cardinality\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            <td>\"\n    + escapeExpression(((helper = (helper = helpers.vm_template || (depth0 != null ? depth0.vm_template : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"vm_template\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n            <td>\"\n    + escapeExpression(((helper = (helper = helpers.parents || (depth0 != null ? depth0.parents : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"parents\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          </tr>\\n\";\n},\"6\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            <td>\"\n    + escapeExpression(((helper = (helper = helpers.state || (depth0 != null ? depth0.state : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"state\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data,depths) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form class=\\\"custom\\\" id=\\\"roles_form\\\" action=\\\"\\\">\\n  <div class=\\\"row\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.servicePanel : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data, depths),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"    <div id=\\\"roles_info\\\" class=\\\"columns large-12\\\">\\n      <table id=\\\"datatable_roles_\"\n    + escapeExpression(((helper = (helper = helpers.panelId || (depth0 != null ? depth0.panelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"panelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"dataTable twelve\\\">\\n        <thead>\\n          <tr>\\n            <th class=\\\"check hidden\\\">\\n              <input type=\\\"checkbox\\\" class=\\\"check_all\\\" value=\\\"\\\"></input>\\n            </th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.servicePanel : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(3, data, depths),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cardinality\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VM Template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n            <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Parents\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n          </tr>\\n        </thead>\\n        <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.roleList : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(5, data, depths),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"        </tbody>\\n      </table>\\n    </div>\\n    <div id=\\\"roles_extended_info\\\" class=\\\"columns twelve\\\">\\n      <div class=\\\"text-center\\\">\\n        <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\">\\n          <i class=\\\"fa fa-cloud fa-stack-2x\\\"></i>\\n          <i class=\\\"fa fa-info-circle fa-stack-1x fa-inverse\\\"></i>\\n        </span>\\n        <br>\\n        <br>\\n        <span style=\\\"font-size: 18px; color: #999\\\">\\n          \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Select a role in the table for more information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </span>\\n      </div>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true,\"useDepths\":true});\nHandlebars.registerPartial('tabs/oneflow-services-tab/panels/roles/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-services-tab/panels/roles/roleInfo',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/valOrDefault'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", lambda=this.lambda, buffer = \"  <fieldset>\\n    <legend>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Virtual Machines\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</legend>\\n    <div id=\\\"role_vms_actions\\\">\\n      <div class=\\\"action_blocks large-12 columns\\\">\\n      </div>\\n    </div>\\n    <div class=\\\"large-12 columns\\\">\\n      <br>\\n      <table id=\\\"datatable_vms_\"\n    + escapeExpression(((helper = (helper = helpers.panelId || (depth0 != null ? depth0.panelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"panelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"_\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.role : depth0)) != null ? stack1.name : stack1), depth0))\n    + \"\\\" class=\\\"dataTable twelve \\\">\\n        <thead>\\n          <tr>\\n            <th></th>\\n            <th></th>\\n            <th class=\\\"check\\\">\\n              <input type=\\\"checkbox\\\" class=\\\"check_all\\\" value=\\\"\\\"></input>\\n            </th>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.vmsTableColumns : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(2, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"          </tr>\\n        </thead>\\n        <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.vms : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(4, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"        </tbody>\\n      </table>\\n    </div>\\n  </fieldset>\\n\";\n},\"2\":function(depth0,helpers,partials,data) {\n  var lambda=this.lambda, escapeExpression=this.escapeExpression;\n  return \"            <th>\"\n    + escapeExpression(lambda(depth0, depth0))\n    + \"</th>\\n\";\n},\"4\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"          <tr>\\n\";\n  stack1 = helpers.each.call(depth0, depth0, {\"name\":\"each\",\"hash\":{},\"fn\":this.program(5, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"          </tr>\\n\";\n},\"5\":function(depth0,helpers,partials,data) {\n  var stack1, lambda=this.lambda, buffer = \"            <td>\";\n  stack1 = lambda(depth0, depth0);\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</td>\\n\";\n},\"7\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"    <table class=\\\"dataTable extended_table policies_table\\\">\\n      <thead style=\\\"background:#dfdfdf\\\">\\n        <tr>\\n          <th colspan=\\\"7\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Elasticity policies\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <thead>\\n        <tr>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type of adjustment.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CHANGE: Add/substract the given number of VMs.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CARDINALITY: Set the cardinality to the given number.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PERCENTAGE_CHANGE: Add/substract the given percentage to the current cardinality.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n            \\\" style=\\\"width:14%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Positive or negative adjustment. Its meaning depends on 'type'\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CHANGE: -2, will substract 2 VMs from the role\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CARDINALITY: 8, will set carditanilty to 8\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PERCENTAGE_CHANGE: 20, will increment cardinality by 20%\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:12%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Adjust\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Optional parameter for PERCENTAGE_CHANGE adjustment type.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \" If present, the policy will change the cardinality by at least the number of VMs set in this attribute.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:9%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Min\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Expression to trigger the elasticity\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Example: ATT < 20\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:30%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Expression\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of periods that the expression must be true before the elasticity is triggered\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:8%\\\">#\\n          </th>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Duration, in seconds, of each period in '# Periods'\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:9%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Period\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cooldown period duration after a scale operation, in seconds\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:15%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cooldown\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th style=\\\"width:3%\\\"></th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, ((stack1 = (depth0 != null ? depth0.role : depth0)) != null ? stack1.elasticity_policies : stack1), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(8, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"      </tbody>\\n    </table>\\n\";\n},\"8\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"        <tr>\\n          <td>\"\n    + escapeExpression(((helper = (helper = helpers.type || (depth0 != null ? depth0.type : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"type\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td>\"\n    + escapeExpression(((helper = (helper = helpers.adjust || (depth0 != null ? depth0.adjust : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"adjust\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td>\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, (depth0 != null ? depth0.min_adjust_step : depth0), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td>\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, (depth0 != null ? depth0.expression_evaluated : depth0), (depth0 != null ? depth0.expression : depth0), {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td>\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.period_number : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(9, data),\"inverse\":this.program(14, data),\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"          </td>\\n          <td>\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, (depth0 != null ? depth0.period : depth0), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td>\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, (depth0 != null ? depth0.cooldown : depth0), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n        </tr>\\n\";\n},\"9\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.servicePanel : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(10, data),\"inverse\":this.program(12, data),\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"10\":function(depth0,helpers,partials,data) {\n  var helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n  return \"            \"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, (depth0 != null ? depth0.true_evals : depth0), \"0\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"/\"\n    + escapeExpression(((helper = (helper = helpers.period_number || (depth0 != null ? depth0.period_number : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"period_number\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\n\";\n},\"12\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            \"\n    + escapeExpression(((helper = (helper = helpers.period_number || (depth0 != null ? depth0.period_number : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"period_number\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\n\";\n},\"14\":function(depth0,helpers,partials,data) {\n  return \"            -\\n\";\n  },\"16\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"    <table class=\\\"dataTable extended_table policies_table\\\">\\n      <thead style=\\\"background:#dfdfdf\\\">\\n        <tr>\\n          <th colspan=\\\"5\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Scheduled policies\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <thead>\\n        <tr>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type of adjustment.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CHANGE: Add/substract the given number of VMs.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CARDINALITY: Set the cardinality to the given number.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PERCENTAGE_CHANGE: Add/substract the given percentage to the current cardinality.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:14%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Positive or negative adjustment. Its meaning depends on 'type'\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CHANGE: -2, will substract 2 VMs from the role\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CARDINALITY: 8, will set carditanilty to 8\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PERCENTAGE_CHANGE: 20, will increment cardinality by 20%\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:12%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Adjust\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Optional parameter for PERCENTAGE_CHANGE adjustment type. If present, the policy will change the cardinality by at least the number of VMs set in this attribute.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:9%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Min\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Recurrence: Time for recurring adjustements. Time is specified with the Unix cron syntax\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Start time: Exact time for the adjustement\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:28%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Time format\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Time expression depends on the the time formar selected\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Recurrence: Time for recurring adjustements. Time is specified with the Unix cron syntax\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Start time: Exact time for the adjustement\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:33%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Time expression\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n          <th style=\\\"width:3%\\\"></th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n\";\n  stack1 = helpers.each.call(depth0, ((stack1 = (depth0 != null ? depth0.role : depth0)) != null ? stack1.scheduled_policies : stack1), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(17, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"      </tbody>\\n    </table>\\n\";\n},\"17\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"        <tr>\\n          <td>\"\n    + escapeExpression(((helper = (helper = helpers.type || (depth0 != null ? depth0.type : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"type\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td>\"\n    + escapeExpression(((helper = (helper = helpers.adjust || (depth0 != null ? depth0.adjust : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"adjust\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n          <td>\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, (depth0 != null ? depth0.min_adjust_step : depth0), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.start_time : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(18, data),\"inverse\":this.program(20, data),\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"        </tr>\\n\";\n},\"18\":function(depth0,helpers,partials,data) {\n  var helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n  return \"          <td>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Start time\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td>\"\n    + escapeExpression(((helper = (helper = helpers.start_time || (depth0 != null ? depth0.start_time : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"start_time\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n\";\n},\"20\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.recurrence : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(21, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"21\":function(depth0,helpers,partials,data) {\n  var helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\";\n  return \"          <td>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Recurrence\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td>\"\n    + escapeExpression(((helper = (helper = helpers.recurrence || (depth0 != null ? depth0.recurrence : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"recurrence\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, buffer = \"<form>\\n  <h4>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Role\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \" - \"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.role : depth0)) != null ? stack1.name : stack1), depth0))\n    + \"</h4>\\n  <div class='large-12 columns'>\\n    <table class='dataTable extended_table policies_table'>\\n      <thead>\\n        <tr>\\n          <th colspan='8'>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class='key_td'>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shutdown action\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class='value_td'>\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = (depth0 != null ? depth0.role : depth0)) != null ? stack1.shutdown_action : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class='key_td'>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cooldown\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class='value_td'>\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = (depth0 != null ? depth0.role : depth0)) != null ? stack1.cooldown : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class='key_td'>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Min VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class='value_td'>\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = (depth0 != null ? depth0.role : depth0)) != null ? stack1.min_vms : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class='key_td'>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Max VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class='value_td'>\"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = (depth0 != null ? depth0.role : depth0)) != null ? stack1.max_vms : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n        </tr>\\n      </tbody>\\n    </table>\\n    <br>\\n  </div>\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.servicePanel : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  <div class='large-12 columns'>\\n    <br>\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.role : depth0)) != null ? stack1.elasticity_policies : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(7, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"    <br>\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.role : depth0)) != null ? stack1.scheduled_policies : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(16, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/oneflow-services-tab/panels/roles/roleInfo', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/oneflow-services-tab/panels/roles',['require','utils/locale','utils/tips','opennebula/role','./roles/roles-buttons','./roles/roles-vm-buttons','sunstone','utils/dom-datatable','tabs/vms-tab/utils/datatable-common','sunstone-config','tabs/vms-tab/tabId','hbs!./roles/html','hbs!./roles/roleInfo','../tabId','./roles/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var OpenNebulaRole = require('opennebula/role');\n  var roles_buttons = require('./roles/roles-buttons');\n  var roles_vm_buttons = require('./roles/roles-vm-buttons');\n  var Sunstone = require('sunstone');\n  var DomDataTable = require('utils/dom-datatable');\n  var VMsTableUtils = require('tabs/vms-tab/utils/datatable-common');\n  var SunstoneConfig = require('sunstone-config');\n\n  var VMS_TAB_ID = require('tabs/vms-tab/tabId');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateHTML = require('hbs!./roles/html');\n  var TemplateRoleInfo = require('hbs!./roles/roleInfo');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./roles/panelId');\n  var XML_ROOT = \"DOCUMENT\";\n  var RESOURCE = \"Service\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Roles\");\n    this.icon = \"fa-wrench\";\n\n    this.element = info[XML_ROOT];\n\n    this.selected_row_role_id = undefined;\n\n    // Controls visibility of buttons only available to OneFlow services. This\n    // panel is also used by the OneFlow templates\n    this.servicePanel = true;\n\n    this.panelId = PANEL_ID;\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n  Panel.prototype.roleHTML = _roleHTML;\n  Panel.prototype.roleSetup = _roleSetup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var roleList = [];\n\n    var roles = this.element.TEMPLATE.BODY.roles;\n    if (roles && roles.length) {\n      $.each(roles, function(){\n        roleList.push(\n          {\n            'name': this.name,\n            'state': OpenNebulaRole.state(this.state),\n            'cardinality': this.cardinality,\n            'vm_template': this.vm_template,\n            'parents': this.parents ? this.parents.join(', ') : '-'\n          });\n      });\n    }\n\n    return TemplateHTML({\n      'element': this.element,\n      'panelId': this.panelId,\n      'servicePanel': this.servicePanel,\n      'roleList': roleList\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    Tips.setup(context);\n\n    that.last_selected_row_role = undefined;\n\n    var roles = this.element.TEMPLATE.BODY.roles;\n    if (roles && roles.length) {\n      this.servicerolesDataTable = new DomDataTable(\n        'datatable_roles_'+this.panelId,\n        {\n          actions: true,\n          info: false,\n          oneSelection: true,\n          customTabContext: $('#role_actions', context),\n          customTrListener: function(tableObj, tr){\n            var aData = tableObj.dataTable.fnGetData(tr);\n            var role_name = $(aData[0]).val();\n\n            var role_index = tableObj.dataTable.fnGetPosition(tr);\n\n            $(\"#roles_extended_info\", context).html(that.roleHTML(role_index));\n            that.roleSetup($(\"#roles_extended_info\", context), role_index);\n\n            // The info listener is triggered instead of\n            // the row selection. So we click the check input to select\n            // the row also\n            var check = $('.check_item', tr);\n            if (!check.is(\":checked\")) {\n              check.trigger('click');\n            }\n          }\n        });\n\n      this.servicerolesDataTable.initialize();\n\n      Sunstone.insertButtonsInTab(\"oneflow-services\", \"service_roles_tab\", roles_buttons, $('#role_actions', context));\n\n      // TODO: global var, see Service.refresh\n      /*\n      if(selected_row_role_id) {\n        $.each($(this.servicerolesDataTable.dataTable.fnGetNodes()),function(){\n          if($($('td',this)[1]).html()==selected_row_role_id) {\n            $('td',this)[2].click();\n          }\n        });\n      }\n\n      if(checked_row_rolevm_ids.length!=0) {\n        $.each($(serviceroleVMsDataTable.fnGetNodes()),function(){\n          var current_id = $($('td',this)[1]).html();\n          if (current_id) {\n            if(jQuery.inArray(current_id, checked_row_rolevm_ids)!=-1) {\n              $('input.check_item',this).first().click();\n              $('td',this).addClass('markrowchecked');\n            }\n          }\n        });\n      }\n      //*/\n    }\n  }\n\n\n  function _roleHTML(role_index) {\n    var that = this;\n\n    var role = this.element.TEMPLATE.BODY.roles[role_index];\n\n    var vms = [];\n\n    if (role.nodes) {\n      $.each(role.nodes, function(){\n        var vm_info = this.vm_info;\n\n        var info = [];\n        if (this.scale_up) {\n          info.push(\"<i class='fa fa-arrow-up'/>\");\n        } else if (this.disposed) {\n          info.push(\"<i class='fa fa-arrow-down'/>\");\n        } else {\n          info.push(\"\");\n        }\n\n        if (that.element.TEMPLATE.BODY.ready_status_gate) {\n          if (vm_info.VM.USER_TEMPLATE.READY == \"YES\") {\n            info.push('<span data-tooltip class=\"has-tip\" title=\"'+tr(\"The VM is ready\")+'\"><i class=\"fa fa-check\"/></span>');\n\n          } else {\n            info.push('<span data-tooltip class=\"has-tip\" title=\"'+tr(\"Waiting for the VM to be ready\")+'\"><i class=\"fa fa-clock-o\"/></span>');\n          }\n        } else {\n          info.push(\"\");\n        }\n\n        if (vm_info) {\n          vms.push(info.concat(VMsTableUtils.elementArray(vm_info)));\n        } else {\n          vms.push(info.concat(VMsTableUtils.emptyElementArray(this.deploy_id)));\n        }\n      });\n    }\n\n    return TemplateRoleInfo({\n      'role': role,\n      'servicePanel': this.servicePanel,\n      'panelId': this.panelId,\n      'vmsTableColumns': VMsTableUtils.columns,\n      'vms': vms\n    });\n  }\n\n  function _roleSetup(context, role_index) {\n    if(this.servicePanel) {\n      var role = this.element.TEMPLATE.BODY.roles[role_index];\n\n      // This table has 2 more columns to the left compared to the normal VM table\n      // The visibility index array needs to be adjusted\n      var visibleColumns = [0,1].concat(\n        SunstoneConfig.tabTableColumns(VMS_TAB_ID).map(function(n){\n          return n+2;\n        }));\n\n      this.serviceroleVMsDataTable = new DomDataTable(\n        'datatable_vms_'+this.panelId+'_'+role.name,\n        {\n          actions: true,\n          info: false,\n          customTabContext: $('#role_vms_actions', context),\n          dataTableOptions: {\n            \"bAutoWidth\": false,\n            \"bSortClasses\" : false,\n            \"bDeferRender\": true,\n            \"aoColumnDefs\": [\n              {\"bSortable\": false, \"aTargets\": [0,1,\"check\"]},\n              {\"bVisible\": true, \"aTargets\": visibleColumns},\n              {\"bVisible\": false, \"aTargets\": ['_all']}\n            ]\n          }\n        });\n\n      // TODO: global vars, see Service.refresh\n      /*\n      if(last_selected_row_rolevm) {\n          last_selected_row_rolevm.children().each(function(){\n              $(this).removeClass('markrowchecked');\n          });\n      }\n\n      last_selected_row_rolevm = $(this);\n      $(this).children().each(function(){\n          $(this).addClass('markrowchecked');\n      });\n      */\n\n      this.serviceroleVMsDataTable.initialize();\n      Sunstone.insertButtonsInTab(\n        \"oneflow-services\",\n        \"service_roles_tab\",\n        roles_vm_buttons,\n        $('div#role_vms_actions', context));\n    }\n\n    Tips.setup(context);\n  }\n});\n\n","define('tabs/oneflow-services-tab/panels/log',['require','utils/locale','utils/humanize','../tabId','./log/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var Humanize = require('utils/humanize');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./log/panelId');\n  var XML_ROOT = \"DOCUMENT\";\n  var RESOURCE = \"Service\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Log\");\n    this.icon = \"fa-file-text\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var logs = this.element.TEMPLATE.BODY.log;\n    var log_info = '';\n    if (logs) {\n      log_info += '<div class=\"row\"><div class=\"large-12 columns log-tab\">';\n\n      for (var i = 0; i < logs.length; i++) {\n        var line = Humanize.prettyTime(logs[i].timestamp)+' ['+logs[i].severity + '] ' + logs[i].message+ '<br>';\n\n        if (logs[i].severity == 'E'){\n          line = '<span class=\"vm_log_error\">'+line+'</span>';\n        }\n\n        log_info += line;\n      }\n\n      log_info += '</div></div>';\n    }\n\n    return log_info;\n  }\n\n  function _setup(context) {\n  }\n});\n\n","define('tabs/oneflow-services-tab/panels/log/panelId',['require'],function(require){\n  return 'service_log_tab';\n});\n","define('tabs/oneflow-services-tab',['require','utils/locale','./oneflow-services-tab/buttons','./oneflow-services-tab/actions','./oneflow-services-tab/datatable','./oneflow-services-tab/tabId','./oneflow-services-tab/dialogs/scale','./oneflow-services-tab/panels/info','./oneflow-services-tab/panels/roles','./oneflow-services-tab/panels/log'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./oneflow-services-tab/buttons');\n  var Actions = require('./oneflow-services-tab/actions');\n  var Table = require('./oneflow-services-tab/datatable');\n\n  var TAB_ID = require('./oneflow-services-tab/tabId');\n  var DATATABLE_ID = \"dataTableService\";\n  var RESOURCE = \"Service\";\n\n  var _dialogs = [\n    require('./oneflow-services-tab/dialogs/scale'),\n  ];\n\n  var _panels = [\n    require('./oneflow-services-tab/panels/info'),\n    require('./oneflow-services-tab/panels/roles'),\n    require('./oneflow-services-tab/panels/log')\n  ];\n\n  var _formPanels = [\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Services\"),\n    tabClass: \"subTab\",\n    parentTab: \"oneflow-dashboard\",\n    listHeader: '<i class=\"fa fa-fw fa-cubes\"></i>&emsp;'+Locale.tr(\"OneFlow - Services\"),\n    infoHeader: '<i class=\"fa fa-fw fa-cubes\"></i>&emsp;'+Locale.tr(\"OneFlow - Service\"),\n    subheader: '',\n    content: '<div class=\"row oneflow_services_error_message\" hidden>\\\n        <div class=\"small-6 columns small-centered text-center\">\\\n            <div class=\"alert-box alert radius\">'+Locale.tr(\"Cannot connect to OneFlow server\")+'</div>\\\n        </div>\\\n    </div>',\n    resource: RESOURCE,\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/oneflow-templates-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"ServiceTemplate.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"ServiceTemplate.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"ServiceTemplate.instantiate_dialog\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Instantiate\")\n    },\n    \"ServiceTemplate.update_dialog\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: Locale.tr(\"Update\")\n    },\n    \"ServiceTemplate.chown\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change owner\"),\n      select: \"User\",\n      layout: \"user_select\",\n      tip: Locale.tr(\"Select the new owner\")+\":\"\n    },\n    \"ServiceTemplate.chgrp\" : {\n      type: \"confirm_with_select\",\n      text: Locale.tr(\"Change group\"),\n      select: \"Group\",\n      layout: \"user_select\",\n      tip: Locale.tr(\"Select the new group\")+\":\"\n    },\n    \"ServiceTemplate.delete\" : {\n      type: \"confirm\",\n      text: Locale.tr(\"Delete\"),\n      layout: \"del\",\n      tip: Locale.tr(\"This will delete the selected templates\")\n    }\n  };\n\n  return Buttons;\n});\n","define('tabs/oneflow-templates-tab/tabId',['require'],function(require){\n  return 'oneflow-templates';\n});\n","define('tabs/oneflow-templates-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createServiceTemplateForm';\n});\n","define('tabs/oneflow-templates-tab/form-panels/instantiate/formPanelId',['require'],function(require){\n  return 'instantiateServiceTemplateForm';\n});\n","define('tabs/oneflow-templates-tab/actions',['require','sunstone','utils/notifier','utils/locale','opennebula/servicetemplate','utils/common-actions','opennebula/action','./tabId','./form-panels/create/formPanelId','./form-panels/instantiate/formPanelId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var Locale = require('utils/locale');\n  var OpenNebulaResource = require('opennebula/servicetemplate');\n  var CommonActions = require('utils/common-actions');\n  var OpenNebulaAction = require('opennebula/action');\n\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n  var INSTANTIATE_DIALOG_ID = require('./form-panels/instantiate/formPanelId');\n  var XML_ROOT = \"DOCUMENT\";\n  var RESOURCE = \"ServiceTemplate\";\n\n  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID);\n\n  var _actions = {\n    \"ServiceTemplate.show\" : _commonActions.show(),\n    \"ServiceTemplate.refresh\" : _commonActions.refresh(),\n    \"ServiceTemplate.delete\" : _commonActions.delete(),\n    \"ServiceTemplate.chown\": _commonActions.multipleAction('chown'),\n    \"ServiceTemplate.chgrp\": _commonActions.multipleAction('chgrp'),\n    \"ServiceTemplate.chmod\": _commonActions.singleAction('chmod'),\n\n    \"ServiceTemplate.list\" : {\n      type: \"list\",\n      call: OpenNebulaResource.list,\n      callback: function(request, response) {\n        $(\".oneflow_templates_error_message\").hide();\n        Sunstone.getDataTable(TAB_ID).updateView(request, response);\n      },\n      error: function(request, error_json) {\n        Notifier.onError(request, error_json, $(\".oneflow_templates_error_message\"));\n      }\n    },\n\n    \"ServiceTemplate.create\" : {\n      type: \"create\",\n      call: OpenNebulaResource.create,\n      callback: function(request, response){\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.getDataTable(TAB_ID).addElement(request, response);\n      },\n      error: function(request, response){\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      }\n    },\n\n    \"ServiceTemplate.create_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n\n    \"ServiceTemplate.update_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n        if (selected_nodes.length != 1) {\n          Notifier.notifyMessage(\"Please select one (and just one) template to update.\");\n          return false;\n        }\n\n        var resource_id = \"\" + selected_nodes[0];\n        Sunstone.runAction(RESOURCE+\".show_to_update\", resource_id);\n      }\n    },\n\n    \"ServiceTemplate.show_to_update\" : {\n      type: \"single\",\n      call: OpenNebulaResource.show,\n      callback: function(request, response) {\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"update\",\n          function(formPanelInstance, context) {\n            formPanelInstance.fill(context, response[XML_ROOT]);\n          });\n      },\n      error: Notifier.onError\n    },\n\n    \"ServiceTemplate.update\" : {\n      type: \"single\",\n      call: OpenNebulaResource.update,\n      callback: function(request, response){\n        Sunstone.hideFormPanel(TAB_ID);\n        Notifier.notifyMessage(Locale.tr(\"ServiceTemplate updated correctly\"));\n      },\n      error: function(request, response) {\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      }\n    },\n\n    \"ServiceTemplate.instantiate\" : {\n      type: \"multiple\",\n      call: OpenNebulaResource.instantiate,\n      callback: function(request, response){\n        Sunstone.hideFormPanel(TAB_ID);\n        OpenNebulaAction.clear_cache(\"SERVICE\");\n      },\n      elements: function() {\n        return Sunstone.getDataTable(TAB_ID).elements();\n      },\n      error: function(request, response){\n        Sunstone.hideFormPanelLoading(TAB_ID);\n        Notifier.onError(request, response);\n      },\n      notify: true\n    },\n\n    \"ServiceTemplate.instantiate_dialog\" : {\n      type: \"custom\",\n      call: function() {\n        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n        if (selected_nodes.length != 1) {\n          Notifier.notifyMessage(\"Please select one (and just one) template to instantiate.\");\n          return false;\n        }\n\n        Sunstone.resetFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID);\n        Sunstone.showFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID, \"instantiate\");\n      }\n    },\n\n  };\n\n  return _actions;\n});\n","define('tabs/oneflow-templates-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var RESOURCE = \"ServiceTemplate\";\n  var XML_ROOT = \"DOCUMENT\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n  \n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      Locale.tr(\"ID\") ,\n      Locale.tr(\"Owner\") ,\n      Locale.tr(\"Group\"),\n      Locale.tr(\"Name\")\n    ];\n\n    this.selectOptions = {\n      \"id_index\": 1,\n      \"name_index\": 4,\n      \"select_resource\": Locale.tr(\"Please select a Template from the list\"),\n      \"you_selected\": Locale.tr(\"You selected the following Template:\"),\n      \"select_resource_multiple\": Locale.tr(\"Please select one or more Templates from the list\"),\n      \"you_selected_multiple\": Locale.tr(\"You selected the following Templates:\")\n    };\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element_json) {\n    var element = element_json[XML_ROOT];\n\n    return [\n        '<input class=\"check_item\" type=\"checkbox\" id=\"' + RESOURCE.toLowerCase() + '_' +\n                             element.ID + '\" name=\"selected_items\" value=\"' +\n                             element.ID + '\"/>',\n        element.ID,\n        element.UNAME,\n        element.GNAME,\n        element.NAME\n    ];\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-templates-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/valOrDefault'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"yes\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"no\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n\";\n},\"5\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"    <table id=\\\"info_template_table\\\" class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network Configuration\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.customAttrs : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(6, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"    </table>\\n\";\n},\"6\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"      <tr>\\n        <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n        <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"description\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n      </tr>\\n      <tr>\\n        <td class=\\\"key_td\\\"></td>\\n        <td class=\\\"value_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Roles\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \": \"\n    + escapeExpression(((helper = (helper = helpers.roles || (depth0 != null ? depth0.roles : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"roles\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</td>\\n      </tr>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, lambda=this.lambda, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <table class=\\\"dataTable extended_table\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"2\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Information\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.ID : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.NAME : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\" colspan=\\\"2\\\">\"\n    + escapeExpression(lambda(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.BODY : stack1)) != null ? stack1.description : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Strategy\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.BODY : stack1)) != null ? stack1.deployment : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shutdown action\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\\n            \"\n    + escapeExpression(((helpers.valOrDefault || (depth0 && depth0.valOrDefault) || helperMissing).call(depth0, ((stack1 = ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.BODY : stack1)) != null ? stack1.shutdown_action : stack1), \"-\", {\"name\":\"valOrDefault\",\"hash\":{},\"data\":data})))\n    + \"\\n          </td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Ready Status Gate\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</td>\\n          <td class=\\\"value_td\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.TEMPLATE : stack1)) != null ? stack1.BODY : stack1)) != null ? stack1.ready_status_gate : stack1), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.program(3, data),\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"          </td>\\n        </tr>\\n      </tbody>\\n    </table>\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.customAttrs : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(5, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  </div>\\n  <div class=\\\"large-6 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.permissionsTableHTML || (depth0 != null ? depth0.permissionsTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"permissionsTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/oneflow-templates-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/oneflow-templates-tab/panels/info',['require','utils/locale','utils/panel/permissions-table','utils/template-utils','hbs!./info/html','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var Locale = require('utils/locale');\n  var PermissionsTable = require('utils/panel/permissions-table');\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    TEMPLATES\n   */\n  \n  var TemplateHTML = require('hbs!./info/html');\n\n  /*\n    CONSTANTS\n   */\n  \n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var XML_ROOT = \"DOCUMENT\";\n  var RESOURCE = \"ServiceTemplate\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = Locale.tr(\"Info\");\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var that = this;\n\n    var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);\n\n    var customAttrs = [];\n\n    if ( ! $.isEmptyObject( this.element.TEMPLATE.BODY['custom_attrs'] ) ) {\n      $.each(this.element.TEMPLATE.BODY['custom_attrs'], function(key, attr){\n        var parts = attr.split(\"|\");\n        // 0 mandatory; 1 type; 2 desc;\n\n        var roles_using_net = [];\n\n        switch (parts[1]) {\n          case \"vnet_id\":\n            $.each(that.element.TEMPLATE.BODY.roles, function(index, value){\n              if (value.vm_template_contents){\n                var reg = new RegExp(\"\\\\$\"+TemplateUtils.htmlDecode(key)+\"\\\\b\");\n\n                if(reg.exec(value.vm_template_contents) != null){\n                  roles_using_net.push(value.name);\n                }\n              }\n            });\n\n            break;\n        }\n\n        customAttrs.push({\n          \"name\": key,\n          \"mandatory\": parts[0],\n          \"type\": parts[1],\n          \"description\": parts[2],\n          \"roles\": roles_using_net.join(\", \")\n        });\n      });\n    }\n\n    return TemplateHTML({\n      'element': this.element,\n      'permissionsTableHTML': permissionsTableHTML,\n      'customAttrs': customAttrs\n    });\n  }\n\n  function _setup(context) {\n    PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);\n  }\n});\n\n","define('tabs/oneflow-templates-tab/panels/info/panelId',['require'],function(require){\n  return 'service_template_info_tab';\n});\n","define('tabs/oneflow-templates-tab/panels/roles',['require','tabs/oneflow-services-tab/panels/roles','./roles/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BasePanel = require('tabs/oneflow-services-tab/panels/roles');\n\n  /*\n    CONSTANTS\n   */\n  \n  var PANEL_ID = require('./roles/panelId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    BasePanel.call(this, info);\n\n    this.servicePanel = false;\n    this.panelId = PANEL_ID;\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype = Object.create(BasePanel.prototype);\n  Panel.prototype.constructor = Panel;\n\n  return Panel;\n});\n\n","define('tabs/oneflow-templates-tab/panels/roles/panelId',['require'],function(require){\n  return 'service_template_roles_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-templates-tab/utils/role-tab/html',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/advancedSection'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"    <div class=\\\"row\\\">\\n      <div class=\\\"large-4 columns\\\">\\n        <label for=\\\"min_vms\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Min VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Minimum number of VMs for elasticity adjustments\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" id=\\\"min_vms\\\" name=\\\"min_vms\\\" value=\\\"\\\" />\\n      </div>\\n      <div class=\\\"large-4 columns\\\">\\n        <label for=\\\"max_vms\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Max VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Maximum number of VMs for elasticity adjustments\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" id=\\\"max_vms\\\" name=\\\"max_vms\\\" value=\\\"\\\" />\\n      </div>\\n      <div class=\\\"service_template_param service_role large-4 columns\\\">\\n        <label for=\\\"cooldown\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cooldown\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cooldown time after an elasticity operation (secs)\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <input type=\\\"text\\\" id=\\\"cooldown\\\" name=\\\"cooldown\\\" value=\\\"\\\" />\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <table id=\\\"elasticity_policies_table\\\" class=\\\"policies_table dataTable\\\">\\n          <thead style=\\\"background:#dfdfdf\\\">\\n            <tr>\\n              <th colspan=\\\"8\\\" style=\\\"font-size: 16px !important\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Elasticity policies\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n            </tr>\\n          </thead>\\n          <thead>\\n            <tr>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type of adjustment.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CHANGE: Add/substract the given number of VMs.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CARDINALITY: Set the cardinality to the given number.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PERCENTAGE_CHANGE: Add/substract the given percentage to the current cardinality.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n                \\\" style=\\\"width:14%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Positive or negative adjustment. Its meaning depends on 'type'\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CHANGE: -2, will substract 2 VMs from the role\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CARDINALITY: 8, will set carditanilty to 8\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PERCENTAGE_CHANGE: 20, will increment cardinality by 20%\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:12%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Adjust\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Optional parameter for PERCENTAGE_CHANGE adjustment type.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \" If present, the policy will change the cardinality by at least the number of VMs set in this attribute.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:9%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Min\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Expression to trigger the elasticity\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Example: ATT < 20\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:30%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Expression\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of periods that the expression must be true before the elasticity is triggered\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:8%\\\">#\\n              </th>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Duration, in seconds, of each period in '# Periods'\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:9%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Period\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cooldown period duration after a scale operation, in seconds\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:15%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cooldown\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th style=\\\"width:3%\\\"></th>\\n            </tr>\\n          </thead>\\n          <tbody id=\\\"elasticity_policies_tbody\\\">\\n          </tbody>\\n          <tfoot>\\n            <tr>\\n              <td colspan=\\\"8\\\">\\n                <a type=\\\"button\\\" class=\\\"button small radius right\\\" id=\\\"tf_btn_elas_policies\\\"><i class=\\\"fa fa-plus\\\"></i> \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add another policy\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n              </td>\\n            </tr>\\n          </tfoot>\\n        </table>\\n      </div>\\n    </div>\\n    <br>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <table id=\\\"scheduled_policies_table\\\" class=\\\"policies_table dataTable\\\">\\n          <thead style=\\\"background:#dfdfdf\\\">\\n            <tr>\\n              <th colspan=\\\"6\\\" style=\\\"font-size: 16px !important\\\">\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Scheduled policies\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n            </tr>\\n          </thead>\\n          <thead>\\n            <tr>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type of adjustment.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CHANGE: Add/substract the given number of VMs.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CARDINALITY: Set the cardinality to the given number.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PERCENTAGE_CHANGE: Add/substract the given percentage to the current cardinality.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:14%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Type\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Positive or negative adjustment. Its meaning depends on 'type'\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CHANGE: -2, will substract 2 VMs from the role\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"CARDINALITY: 8, will set carditanilty to 8\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"PERCENTAGE_CHANGE: 20, will increment cardinality by 20%\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:12%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Adjust\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Optional parameter for PERCENTAGE_CHANGE adjustment type. If present, the policy will change the cardinality by at least the number of VMs set in this attribute.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:9%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Min\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Recurrence: Time for recurring adjustements. Time is specified with the Unix cron syntax\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Start time: Exact time for the adjustement\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:28%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Time format\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th class=\\\"has-tip\\\" data-tooltip title=\\\"\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Time expression depends on the the time formar selected\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br><br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Recurrence: Time for recurring adjustements. Time is specified with the Unix cron syntax\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"<br>\\n                \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Start time: Exact time for the adjustement\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\\" style=\\\"width:33%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Time expression\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n              </th>\\n              <th style=\\\"width:3%\\\"></th>\\n            </tr>\\n          </thead>\\n          <tbody id=\\\"scheduled_policies_tbody\\\">\\n          </tbody>\\n          <tfoot>\\n            <tr>\\n              <td colspan=\\\"6\\\">\\n                <a type=\\\"button\\\" class=\\\"button small radius right\\\" id=\\\"tf_btn_sche_policies\\\"><i class=\\\"fa fa-plus\\\"></i> \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add another policy\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n              </td>\\n            </tr>\\n          </tfoot>\\n        </table>\\n      </div>\\n    </div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"    <div class=\\\"row\\\">\\n      <div class=\\\"service_template_param service_role large-6 columns\\\">\\n        <label for=\\\"shutdown_action_role\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shutdown action\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VM shutdown action: 'shutdown' or 'shutdown-hard'. If it is not set, the one set for the Service will be used\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <select name=\\\"shutdown_action_role\\\">\\n          <option value=\\\"\\\"></option>\\n          <option value=\\\"shutdown\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shutdown\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n          <option value=\\\"shutdown-hard\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shutdown hard\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        </select>\\n      </div>\\n      <div class=\\\"large-6 columns\\\">\\n      </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"service_template_param st_man large-12 columns\\\">\\n        <label  for=\\\"vm_template_contents\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VM Template Content\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"This information will be merged with the original Virtual Machine template. Configuration attributes and network interfaces will be replaced by those provided by the user when the template is instantiated\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n        </label>\\n        <textarea type=\\\"text\\\" class=\\\"vm_template_contents\\\" name=\\\"vm_template_contents\\\"/>\\n      </div>\\n    </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"service_template_param service_role st_man large-6 columns\\\">\\n    <label for=\\\"name\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Role Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name of the role\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </label>\\n    <input type=\\\"text\\\" id=\\\"role_name\\\" name=\\\"name\\\" required/>\\n  </div>\\n  <div class=\\\"service_template_param service_role large-2 columns end\\\">\\n    <label for=\\\"cardinality\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VMs\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of VMs to instantiate with this role\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </label>\\n    <input type=\\\"text\\\" id=\\\"cardinality\\\" name=\\\"cardinality\\\" value=\\\"1\\\"/>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"service_template_param service_role small-12 columns\\\">\\n    <label for=\\\"vm_template\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VM template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Template associated to this role\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n    </label>\\n    \";\n  stack1 = ((helper = (helper = helpers.templatesTableHTML || (depth0 != null ? depth0.templatesTableHTML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"templatesTableHTML\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n    <div id=\\\"vm_template\\\">\\n    </div>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"service_template_param service_role large-6 columns\\\">\\n    <table class=\\\"networks_role extended_table dataTable\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"2\\\">\\n            <i class=\\\"fa fa-lg fa-fw fa-globe off-color\\\"/>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network Interfaces\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n        </tr>\\n      </thead>\\n      <tbody class=\\\"networks_role_body\\\">\\n      </tbody>\\n    </table>\\n  </div>\\n  <div class=\\\"service_template_param service_role large-6 columns\\\">\\n    <table class=\\\"parent_roles extended_table dataTable\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"2\\\">\\n            \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Parent roles\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n          </th>\\n        </tr>\\n      </thead>\\n      <tbody class=\\\"parent_roles_body\\\">\\n      </tbody>\\n    </table>\\n  </div>\\n</div>\\n<br>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns elasticity_accordion\\\">\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Role Elasticity\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  </div>\\n</div>\\n<br>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns advanced_role_accordion\\\">\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced Role Parameters\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/oneflow-templates-tab/utils/role-tab/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-templates-tab/utils/role-tab/elasticity-row',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<tr>\\n  <td>\\n    <select id=\\\"type\\\" name=\\\"type\\\">\\n      <option value=\\\"\\\"></option>\\n      <option value=\\\"CHANGE\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Change\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"CARDINALITY\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cardinality\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"PERCENTAGE_CHANGE\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Percentage\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n    </select>\\n  </td>\\n  <td>\\n    <input type=\\\"text\\\" id=\\\"adjust\\\" name=\\\"adjust\\\"/>\\n  </td>\\n  <td id=\\\"min_adjust_step_td\\\">\\n  </td>\\n  <td>\\n    <input type=\\\"text\\\" id=\\\"expression\\\" name=\\\"expression\\\"/>\\n  </td>\\n  <td>\\n    <input type=\\\"text\\\" id=\\\"period_number\\\" name=\\\"period_number\\\"/>\\n  </td>\\n  <td>\\n    <input type=\\\"text\\\" id=\\\"period\\\" name=\\\"period\\\"/>\\n  </td>\\n  <td>\\n    <input type=\\\"text\\\" id=\\\"cooldown\\\" name=\\\"cooldown\\\"/>\\n  </td>\\n  <td>\\n    <a href=\\\"#\\\"><i class=\\\"fa fa-times-circle remove-tab\\\"></i></a>\\n  </td>\\n</tr>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/oneflow-templates-tab/utils/role-tab/elasticity-row', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-templates-tab/utils/role-tab/sche-row',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<tr>\\n  <td>\\n    <select id=\\\"type\\\" name=\\\"type\\\">\\n      <option value=\\\"\\\"></option>\\n      <option value=\\\"CHANGE\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Change\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"CARDINALITY\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Cardinality\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"PERCENTAGE_CHANGE\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Percentage\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n    </select>\\n  </td>\\n  <td>\\n    <input type=\\\"text\\\" id=\\\"adjust\\\" name=\\\"adjust\\\"/>\\n  </td>\\n  <td id=\\\"min_adjust_step_td\\\">\\n  </td>\\n  <td>\\n    <select id=\\\"time_format\\\" name=\\\"time_format\\\">\\n      <option value=\\\"start_time\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Start time\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      <option value=\\\"recurrence\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Recurrence\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n    </select>\\n  </td>\\n  <td>\\n    <input type=\\\"text\\\" id=\\\"time\\\" name=\\\"time\\\"/>\\n  </td>\\n  <td>\\n    <a href=\\\"#\\\"><i class=\\\"fa fa-times-circle remove-tab\\\"></i></a>\\n  </td>\\n</tr>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/oneflow-templates-tab/utils/role-tab/sche-row', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/oneflow-templates-tab/utils/role-tab',['require','utils/locale','utils/tips','tabs/templates-tab/datatable','utils/template-utils','hbs!./role-tab/html','hbs!./role-tab/elasticity-row','hbs!./role-tab/sche-row'],function(require) {\n  // Dependencies\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var TemplatesTable = require('tabs/templates-tab/datatable');\n  var TemplateUtils = require('utils/template-utils');\n\n  var TemplateHTML = require('hbs!./role-tab/html');\n  var TemplateElasticityRowHTML = require('hbs!./role-tab/elasticity-row');\n  var TemplateScheRowHTML = require('hbs!./role-tab/sche-row');\n\n  function RoleTab(html_role_id) {\n    this.html_role_id = html_role_id;\n\n    return this;\n  }\n\n  RoleTab.prototype = {\n    'html': _role_tab_content,\n    'setup': _setup_role_tab_content,\n    'onShow': _onShow,\n    'retrieve': _retrieve,\n    'fill': _fill\n  };\n  RoleTab.prototype.constructor = RoleTab;\n\n  return RoleTab;\n\n  function _role_tab_content(){\n    var opts = {\n      info: false,\n      select: true\n    };\n\n    this.templatesTable = new TemplatesTable(\"roleTabTemplates\"+this.html_role_id, opts);\n\n    return TemplateHTML({\n      'templatesTableHTML': this.templatesTable.dataTableHTML\n    });\n  }\n\n  function _setup_role_tab_content(role_section) {\n    var that = this;\n\n    Tips.setup(role_section);\n\n    this.templatesTable.initialize();\n    this.templatesTable.idInput().attr(\"required\", \"\");\n\n    role_section.on(\"change\", \"#role_name\", function(){\n      $(\"#\" + that.html_role_id +\" #role_name_text\").html($(this).val());\n    });\n\n    role_section.on(\"change\", \"select#type\", function(){\n      var new_tr = $(this).closest('tr');\n      if ($(this).val() == \"PERCENTAGE_CHANGE\") {\n        $(\"#min_adjust_step_td\", new_tr).html('<input type=\"text\" id=\"min_adjust_step\" name=\"min_adjust_step\"/>');\n      } else {\n        $(\"#min_adjust_step_td\", new_tr).empty();\n      }\n    });\n\n    $(\"#tf_btn_elas_policies\", role_section).bind(\"click\", function(){\n      $( TemplateElasticityRowHTML({}) ).appendTo($(\"#elasticity_policies_tbody\", role_section));\n    });\n\n    role_section.on(\"click\", \"#elasticity_policies_table i.remove-tab\", function() {\n      var tr = $(this).closest('tr');\n      tr.remove();\n    });\n\n    $(\"#tf_btn_sche_policies\", role_section).bind(\"click\", function(){\n      $( TemplateScheRowHTML({}) ).appendTo($(\"#scheduled_policies_tbody\", role_section));\n    });\n\n    role_section.on(\"click\", \"#scheduled_policies_table i.remove-tab\", function() {\n      var tr = $(this).closest('tr');\n      tr.remove();\n    });\n\n    $(\"#tf_btn_elas_policies\", role_section).trigger(\"click\");\n    $(\"#tf_btn_sche_policies\", role_section).trigger(\"click\");\n\n    role_section.on(\"change\", \".service_network_checkbox\", function(){\n      var vm_template_contents = \"\";\n      $(\".service_network_checkbox:checked\", role_section).each(function(){\n        vm_template_contents += \"NIC=[NETWORK_ID=\\\"$\"+$(this).val()+\"\\\"]\\n\";\n      });\n\n      $(\".vm_template_contents\", role_section).val(vm_template_contents);\n    });\n  }\n\n  function _onShow(){\n    this.templatesTable.refreshResourceTableSelect();\n  }\n\n  function _retrieve(context){\n    var role = {};\n    role['name'] = $('input[name=\"name\"]', context).val();\n    role['cardinality'] = $('input[name=\"cardinality\"]', context).val();\n    role['vm_template'] = this.templatesTable.retrieveResourceTableSelect();\n    role['shutdown_action'] = $('select[name=\"shutdown_action_role\"]', context).val();\n    role['parents'] = [];\n    role['vm_template_contents'] = $(\".vm_template_contents\", context).val();\n\n    $('.parent_roles_body input.check_item:checked', context).each(function(){\n      role['parents'].push($(this).val());\n    });\n\n    var shutdown_action = $('select[name=\"shutdown_action_role\"]', context).val();\n    if (shutdown_action) {\n      role['shutdown_action'] = shutdown_action;\n    }\n\n    var min_vms = $('input[name=\"min_vms\"]', context).val();\n    if (min_vms) {\n      role['min_vms'] = min_vms;\n    }\n\n    var max_vms = $('input[name=\"max_vms\"]', context).val();\n    if (max_vms) {\n      role['max_vms'] = max_vms;\n    }\n\n    var cooldown = $('input[name=\"cooldown\"]', context).val();\n    if (cooldown) {\n      role['cooldown'] = cooldown;\n    }\n\n    role = _removeEmptyObjects(role);\n    role['elasticity_policies'] = [];\n    $(\"#elasticity_policies_tbody tr\", context).each(function(){\n      if ($(\"#type\" ,this).val()) {\n        var policy = {};\n        policy['type'] = $(\"#type\" ,this).val();\n        policy['adjust']  = $(\"#adjust\" ,this).val();\n        policy['min_adjust_step']  = $(\"#min_adjust_step\" ,this).val();\n        policy['expression']  = $(\"#expression\" ,this).val();\n        policy['period_number']  = $(\"#period_number\" ,this).val();\n        policy['period']  = $(\"#period\" ,this).val();\n        policy['cooldown']  = $(\"#cooldown\" ,this).val();\n\n        // TODO remove empty policies\n        role['elasticity_policies'].push(_removeEmptyObjects(policy));\n      }\n    });\n\n    role['scheduled_policies'] = [];\n    $(\"#scheduled_policies_tbody tr\", context).each(function(){\n      if ($(\"#type\" ,this).val()) {\n        var policy = {};\n        policy['type'] = $(\"#type\" ,this).val();\n        policy['adjust']  = $(\"#adjust\" ,this).val();\n        policy['min_adjust_step']  = $(\"#min_adjust_step\" ,this).val();\n\n        var time_format = $(\"#time_format\" ,this).val();\n        policy[time_format] = $(\"#time\" ,this).val();\n\n        // TODO remove empty policies\n        role['scheduled_policies'].push(_removeEmptyObjects(policy));\n      }\n    });\n\n    return role;\n  }\n\n  function _fill(context, value, network_names) {\n    $(\"#role_name\", context).val(TemplateUtils.htmlDecode(value.name));\n    $(\"#role_name\", context).change();\n\n    $(\"#cardinality\", context).val(TemplateUtils.htmlDecode(value.cardinality));\n\n    this.templatesTable.selectResourceTableSelect({ids : value.vm_template});\n\n    if (value.vm_template_contents){\n      $(network_names).each(function(){\n        var reg = new RegExp(\"\\\\$\"+this+\"\\\\b\");\n\n        if(reg.exec(value.vm_template_contents) != null){\n          $(\".service_network_checkbox[value='\"+this+\"']\", context).attr('checked', true).change();\n        }\n      });\n\n      $(\".vm_template_contents\", context).val(TemplateUtils.htmlDecode(value.vm_template_contents));\n    }\n\n    $(\"select[name='shutdown_action_role']\", context).val(value.shutdown_action);\n\n    $(\"#min_vms\", context).val(TemplateUtils.htmlDecode(value.min_vms));\n    $(\"#max_vms\", context).val(TemplateUtils.htmlDecode(value.max_vms));\n    $(\"#cooldown\", context).val(TemplateUtils.htmlDecode(value.cooldown));\n\n    if (value['elasticity_policies'].length > 0 ||\n        value['scheduled_policies'].length > 0) {\n      $(\"div.elasticity_accordion a.accordion_advanced_toggle\", context).trigger(\"click\");\n    }\n\n    $(\"#elasticity_policies_table i.remove-tab\", context).trigger(\"click\");\n    $(\"#scheduled_policies_table i.remove-tab\", context).trigger(\"click\");\n\n    if (value['elasticity_policies']) {\n      $.each(value['elasticity_policies'], function(){\n        $(\"#tf_btn_elas_policies\", context).click();\n        var td = $(\"#elasticity_policies_tbody tr\", context).last();\n        $(\"#type\" ,td).val(TemplateUtils.htmlDecode(this['type']));\n        $(\"#type\" ,td).change();\n        $(\"#adjust\" ,td).val(TemplateUtils.htmlDecode(this['adjust'] ));\n        $(\"#min_adjust_step\" ,td).val(TemplateUtils.htmlDecode(this['min_adjust_step'] || \"\"));\n        $(\"#expression\" ,td).val(TemplateUtils.htmlDecode(this.expression));\n        $(\"#period_number\" ,td).val(TemplateUtils.htmlDecode(this['period_number'] || \"\"));\n        $(\"#period\" ,td).val(TemplateUtils.htmlDecode(this['period'] || \"\" ));\n        $(\"#cooldown\" ,td).val(TemplateUtils.htmlDecode(this['cooldown'] || \"\" ));\n      });\n    }\n\n    if (value['scheduled_policies']) {\n      $.each(value['scheduled_policies'], function(){\n        $(\"#tf_btn_sche_policies\", context).click();\n        var td = $(\"#scheduled_policies_tbody tr\", context).last();\n        $(\"#type\", td).val(TemplateUtils.htmlDecode(this['type']));\n        $(\"#type\" ,td).change();\n        $(\"#adjust\", td).val(TemplateUtils.htmlDecode(this['adjust'] ));\n        $(\"#min_adjust_step\", td).val(TemplateUtils.htmlDecode(this['min_adjust_step']  || \"\"));\n\n        if (this['start_time']) {\n          $(\"#time_format\", td).val('start_time');\n          $(\"#time\", td).val(TemplateUtils.htmlDecode(this['start_time']));\n        } else if (this['recurrence']) {\n          $(\"#time_format\", td).val('recurrence');\n          $(\"#time\", td).val(TemplateUtils.htmlDecode(this['recurrence']));\n        }\n      });\n    }\n  }\n\n  //----------------------------------------------------------------------------\n\n  function _removeEmptyObjects(obj){\n    for (var elem in obj){\n      var remove = false;\n      var value = obj[elem];\n      if (value instanceof Array){\n        if (value.length == 0)\n          remove = true;\n        else if (value.length > 0){\n          value = jQuery.grep(value, function (n) {\n            var obj_length = 0;\n            for (e in n)\n              obj_length += 1;\n\n            if (obj_length == 0)\n              return false;\n\n            return true;\n          });\n\n          if (value.length == 0)\n            remove = true;\n        }\n      }\n      else if (value instanceof Object){\n        var obj_length = 0;\n        for (e in value)\n          obj_length += 1;\n        if (obj_length == 0)\n          remove = true;\n      }else{\n        value = String(value);\n        if (value.length == 0)\n          remove = true;\n      }\n\n      if (remove)\n        delete obj[elem];\n    }\n\n    return obj;\n  }\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-templates-tab/form-panels/create/wizard',['hbs','hbs/handlebars','templates/helpers/tr','templates/helpers/advancedSection'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\\n        <table class=\\\"service_networks policies_table dataTable\\\">\\n          <thead>\\n            <tr>\\n              <th style=\\\"width:30%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th style=\\\"width:70%\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n              <th style=\\\"width:3%\\\"></th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n          </tbody>\\n          <tfoot>\\n            <tr>\\n              <td colspan=\\\"3\\\">\\n                <a type=\\\"button\\\" class=\\\"add_service_network button small large-12 secondary radius\\\"><i class=\\\"fa fa-plus\\\"></i>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add another Network\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n              </td>\\n            </tr>\\n          </tfoot>\\n        </table>\\n      </div>\\n    </div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"  <div class=\\\"row\\\">\\n    <div class=\\\"service_template_param st_man large-6 columns\\\">\\n      <label for=\\\"deployment\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Strategy\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Straight strategy will instantiate each role in order: parents role will be deployed before their children. None strategy will instantiate the roles regardless of their relationships.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <select name=\\\"deployment\\\">\\n        <option value=\\\"straight\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Straight\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"none\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"None\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n    <div class=\\\"service_template_param st_man large-6 columns\\\">\\n      <label for=\\\"shutdown_action_service\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shutdown action\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"VM shutdown action: 'shutdown' or 'shutdown-hard'.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <select name=\\\"shutdown_action_service\\\">\\n        <option value=\\\"\\\"></option>\\n        <option value=\\\"shutdown\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shutdown\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n        <option value=\\\"shutdown-hard\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Shutdown hard\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</option>\\n      </select>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"service_template_param st_man large-6 columns\\\">\\n      <input type=\\\"checkbox\\\" name=\\\"ready_status_gate\\\" id=\\\"ready_status_gate\\\"/>\\n      <label for=\\\"ready_status_gate\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Wait for VMs to report that they are READY\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Before deploying any child roles, wait for all VMs of the parent roles to report via OneGate that they are READY=YES\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n    </div>\\n  </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"service_template_param st_man large-6 columns\\\">\\n      <label for=\\\"service_name\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name for this template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <input type=\\\"text\\\" id=\\\"service_name\\\" name=\\\"service_name\\\" required/>\\n    </div>\\n    <div class=\\\"service_template_param st_man large-6 columns\\\">\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"service_template_param st_man large-12 columns\\\">\\n      <label  for=\\\"description\\\">\\n        \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Description of the service\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</span>\\n      </label>\\n      <textarea type=\\\"text\\\" id=\\\"description\\\" name=\\\"description\\\"/>\\n    </div>\\n  </div>\\n  <br>\\n  <div id=\\\"network_configuration\\\">\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Network Configuration\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  </div>\\n  <br>\\n\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, ((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced Service Parameters\", {\"name\":\"tr\",\"hash\":{},\"data\":data})), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  <br>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h4>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Roles\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</h4>\\n    </div>\\n  </div>\\n  <br>\\n  <div class=\\\"row\\\">\\n    <div id=\\\"new_role\\\" class=\\\"bordered-tabs large-12 columns\\\">\\n      <dl class=\\\"tabs\\\" id=\\\"roles_tabs\\\" data-tab>\\n        <a class=\\\"button small right radius\\\" id=\\\"tf_btn_roles\\\">\\n          <span class=\\\"fa fa-plus\\\"></span>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Add another role\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        </a>\\n      </dl>\\n      <div class=\\\"tabs-content\\\" id=\\\"roles_tabs_content\\\">\\n      </div>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/oneflow-templates-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-templates-tab/form-panels/create/advanced',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Advanced\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <p>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Write the Service template here\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</p>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <textarea id=\\\"template\\\" rows=\\\"15\\\" required></textarea>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/oneflow-templates-tab/form-panels/create/advanced', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/oneflow-templates-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','utils/tips','tabs/oneflow-templates-tab/utils/role-tab','utils/template-utils','hbs!./create/wizard','hbs!./create/advanced','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var RoleTab = require('tabs/oneflow-templates-tab/utils/role-tab');\n  var TemplateUtils = require('utils/template-utils');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n  var TemplateAdvancedHTML = require('hbs!./create/advanced');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': Locale.tr(\"Create Service Template\"),\n        'buttonText': Locale.tr(\"Create\"),\n        'resetButton': true\n      },\n      'update': {\n        'title': Locale.tr(\"Update Service Template\"),\n        'buttonText': Locale.tr(\"Update\"),\n        'resetButton': false\n      }\n    };\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.htmlAdvanced = _htmlAdvanced;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.submitAdvanced = _submitAdvanced;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.fill = _fill;\n  FormPanel.prototype.setup = _setup;\n  FormPanel.prototype.addRoleTab = _add_role_tab;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId\n    });\n  }\n\n  function _htmlAdvanced() {\n    return TemplateAdvancedHTML({\n      'formPanelId': this.formPanelId\n    });\n  }\n\n  function _setup(context) {\n    this.roleTabObjects = {};\n    var that = this;\n\n    var roles_index = 0;\n\n    $(\".add_service_network\", context).on(\"click\", function(){\n      $(\".service_networks tbody\").append(\n        '<tr>\\\n          <td>\\\n            <input class=\"service_network_name\" type=\"text\" pattern=\"[\\\\w]+\"/>\\\n            <small class=\"error\">'+Locale.tr(\"Only word characters are allowed\")+'</small>\\\n          </td>\\\n          <td>\\\n            <textarea class=\"service_network_description\"/>\\\n          </td>\\\n          <td>\\\n            <a href=\"#\"><i class=\"fa fa-times-circle remove-tab\"></i></a>\\\n          </td>\\\n        </tr>');\n    });\n\n    $(\".add_service_network\", context).trigger(\"click\");\n\n    context.on(\"change\", \".service_network_name\", function(){\n      _redo_service_networks_selector(context);\n    });\n\n    context.on(\"click\", \".service_networks i.remove-tab\", function(){\n      var tr = $(this).closest('tr');\n      tr.remove();\n\n      _redo_service_networks_selector(context);\n    });\n\n    $(\"#tf_btn_roles\", context).bind(\"click\", function(){\n      that.addRoleTab(roles_index, context);\n      roles_index++;\n\n      context.foundation();\n\n      return false;\n    });\n\n    // close icon: removing the tab on click\n    $(\"#roles_tabs\", context).on(\"click\", \"i.remove-tab\", function() {\n      var target = $(this).parent().attr(\"href\");\n      var dd = $(this).closest('dd');\n      var dl = $(this).closest('dl');\n      var content = $(target);\n\n      var role_id = content.attr(\"role_id\");\n\n      dd.remove();\n      content.remove();\n\n      if (dd.attr(\"class\") == 'active') {\n        $('a', dl.children('dd').last()).click();\n      }\n\n      delete that.roleTabObjects[role_id];\n\n      return false;\n    });\n\n    // Fill parents table\n    // Each time a tab is clicked the table is filled with existing tabs (roles)\n    // Selected roles are kept\n    // TODO If the name of a role is changed and is selected, selection will be lost\n    $(\"#roles_tabs\", context).on(\"click\", \"a\", function() {\n      var tab_id = \"#\"+this.id+\"Tab\";\n      var str = \"\";\n\n      $(tab_id+\" .parent_roles\").hide();\n      var parent_role_available = false;\n\n      $(\"#roles_tabs_content #role_name\", context).each(function(){\n        if ($(this).val() && ($(this).val() != $(tab_id+\" #role_name\", context).val())) {\n          parent_role_available = true;\n          str += \"<tr>\\\n            <td style='width:10%'>\\\n              <input class='check_item' type='checkbox' value='\"+$(this).val()+\"' id='\"+$(this).val()+\"'/>\\\n            </td>\\\n            <td>\"+$(this).val()+\"</td>\\\n          </tr>\";\n        }\n      });\n\n      if (parent_role_available) {\n        $(tab_id+\" .parent_roles\", context).show();\n      }\n\n      var selected_parents = [];\n      $(tab_id+\" .parent_roles_body input:checked\", context).each(function(){\n        selected_parents.push($(this).val());\n      });\n\n      $(tab_id+\" .parent_roles_body\", context).html(str);\n\n      $.each(selected_parents, function(){\n        $(tab_id+\" .parent_roles_body #\"+this, context).attr('checked', true);\n      });\n    });\n\n\n    // Add first role\n    $(\"#tf_btn_roles\", context).trigger(\"click\");\n\n    $(document).foundation('reflow', 'tab');\n    Tips.setup(context);\n    return false;\n  }\n\n  function _submitWizard(context) {\n    var that = this;\n\n    var name = $('input[name=\"service_name\"]', context).val();\n    var description = $('#description', context).val();\n    var deployment = $('select[name=\"deployment\"]', context).val();\n    var shutdown_action_service = $('select[name=\"shutdown_action_service\"]', context).val();\n    var ready_status_gate = $('input[name=\"ready_status_gate\"]', context).prop(\"checked\");\n\n    var custom_attrs =  {};\n\n    $(\".service_networks tbody tr\").each(function(){\n      if ($(\".service_network_name\", $(this)).val()) {\n        var attr_name = $(\".service_network_name\", $(this)).val();\n        var attr_type = \"vnet_id\";\n        var attr_desc = $(\".service_network_description\", $(this)).val();\n        custom_attrs[attr_name] = \"M|\" + attr_type + \"|\" + attr_desc;\n      }\n    });\n\n    var roles = [];\n\n    $('.role_content', context).each(function() {\n      var role_id = $(this).attr(\"role_id\");\n\n      roles.push( that.roleTabObjects[role_id].retrieve($(this)) );\n    });\n\n    var json_template = {\n      name: name,\n      deployment: deployment,\n      description: description,\n      roles: roles\n    };\n\n    if (!$.isEmptyObject(custom_attrs)){\n      json_template['custom_attrs'] = custom_attrs;\n    }\n\n    if (shutdown_action_service){\n      json_template['shutdown_action'] = shutdown_action_service;\n    }\n\n    json_template['ready_status_gate'] = ready_status_gate;\n\n    if (this.action == \"create\") {\n      Sunstone.runAction(\"ServiceTemplate.create\", json_template );\n      return false;\n    } else if (this.action == \"update\") {\n      Sunstone.runAction(\"ServiceTemplate.update\",this.resourceId, JSON.stringify(json_template));\n      return false;\n    }\n  }\n\n  function _submitAdvanced(context) {\n    var json_template = $('textarea#template', context).val();\n\n    if (this.action == \"create\") {\n      Sunstone.runAction(\"ServiceTemplate.create\", JSON.parse(json_template) );\n      return false;\n    } else if (this.action == \"update\") {\n      Sunstone.runAction(\"ServiceTemplate.update\", this.resourceId, json_template);\n      return false;\n    }\n  }\n\n  function _onShow(context) {\n    var that = this;\n\n    $('.role_content', context).each(function() {\n      var role_id = $(this).attr(\"role_id\");\n      that.roleTabObjects[role_id].onShow();\n    });\n  }\n\n  function _fill(context, element) {\n    var that = this;\n\n    if (this.action != \"update\") {return;}\n    this.resourceId = element.ID;\n\n    // Populates the Avanced mode Tab\n    $('#template', context).val(TemplateUtils.htmlDecode(\n                          JSON.stringify(element.TEMPLATE.BODY, null, \"  \")));\n\n\n    $(\"#service_name\", context).attr(\"disabled\", \"disabled\");\n    $(\"#service_name\", context).val(TemplateUtils.htmlDecode(element.NAME));\n\n    $(\"#description\", context).val(TemplateUtils.htmlDecode(element.TEMPLATE.BODY.description));\n\n    $('select[name=\"deployment\"]', context).val(element.TEMPLATE.BODY.deployment);\n    $(\"select[name='shutdown_action_service']\", context).val(element.TEMPLATE.BODY.shutdown_action);\n    $(\"input[name='ready_status_gate']\", context).prop(\"checked\",element.TEMPLATE.BODY.ready_status_gate || false);\n\n\n    $(\".service_networks i.remove-tab\", context).trigger(\"click\");\n\n    if ( ! $.isEmptyObject( element.TEMPLATE.BODY['custom_attrs'] ) ) {\n      $(\"div#network_configuration a.accordion_advanced_toggle\", context).trigger(\"click\");\n\n      $.each(element.TEMPLATE.BODY['custom_attrs'], function(key, attr){\n        var parts = attr.split(\"|\");\n        // 0 mandatory; 1 type; 2 desc;\n        var attrs = {\n          \"name\": key,\n          \"mandatory\": parts[0],\n          \"type\": parts[1],\n          \"description\": parts[2],\n        };\n\n        switch (parts[1]) {\n          case \"vnet_id\":\n            $(\".add_service_network\", context).trigger(\"click\");\n\n            var tr = $(\".service_networks tbody tr\", context).last();\n            $(\".service_network_name\", tr).val(TemplateUtils.htmlDecode(attrs.name)).change();\n            $(\".service_network_description\", tr).val(TemplateUtils.htmlDecode(attrs.description));\n\n            break;\n        }\n      });\n    }\n\n    $(\"#roles_tabs i.remove-tab\", context).trigger(\"click\");\n\n    var network_names = [];\n\n    $(\".service_networks .service_network_name\", context).each(function(){\n      if ($(this).val()) {\n        network_names.push($(this).val());\n      }\n    });\n\n    var roles_names = [];\n    $.each(element.TEMPLATE.BODY.roles, function(index, value){\n      roles_names.push(value.name);\n\n      $(\"#tf_btn_roles\", context).click();\n\n      var role_context = $('.role_content', context).last();\n      var role_id = $(role_context).attr(\"role_id\");\n\n      that.roleTabObjects[role_id].fill(role_context, value, network_names);\n    });\n\n    $.each(element.TEMPLATE.BODY.roles, function(index, value){\n        var role_context = $('.role_content', context)[index];\n        var str = \"\";\n\n        $.each(roles_names, function(){\n          if (this != value.name) {\n            str += \"<tr>\\\n              <td style='width:10%'>\\\n                <input class='check_item' type='checkbox' value='\"+this+\"' id='\"+this+\"'/>\\\n              </td>\\\n              <td>\"+this+\"</td>\\\n            </tr>\";\n          }\n        });\n\n        $(\".parent_roles_body\", role_context).html(str);\n\n        if (value.parents) {\n          $.each(value.parents, function(index, value){\n            $(\".parent_roles_body #\"+this, role_context).attr('checked', true);\n          });\n        }\n    });\n  }\n\n  //----------------------------------------------------------------------------\n\n  function _redo_service_networks_selector(dialog){\n    $('#roles_tabs_content .role_content', dialog).each(function(){\n      var role_section = this;\n      _redo_service_networks_selector_role(dialog, role_section);\n    });\n  }\n\n  function _redo_service_networks_selector_role(dialog, role_section){\n    $('#roles_tabs_content .role_content', dialog).each(function(){\n      var role_section = this;\n\n      var selected_networks = [];\n      $(\".service_network_checkbox:checked\", role_section).each(function(){\n        selected_networks.push($(this).val());\n      });\n\n      $(\".networks_role\", role_section).hide();\n      var service_networks = false;\n\n      var role_tab_id = $(role_section).attr('id');\n\n      var str = \"\";\n      $(\".service_networks .service_network_name\", dialog).each(function(){\n        if ($(this).val()) {\n          service_networks = true;\n          str += \"<tr>\\\n            <td style='width:10%'>\\\n              <input class='service_network_checkbox check_item' type='checkbox' value='\"+$(this).val()+\"' id='\"+role_tab_id+\"_\"+$(this).val()+\"'/>\\\n            </td>\\\n            <td>\\\n              <label for='\"+role_tab_id+\"_\"+$(this).val()+\"'>\"+$(this).val()+\"</label>\\\n            </td>\\\n          </tr>\";\n        }\n      });\n\n      $(\".networks_role_body\", role_section).html(str);\n\n      if (service_networks) {\n        $(\".networks_role\", role_section).show();\n      }\n\n      $(\".vm_template_contents\", role_section).val(\"\");\n\n      $.each(selected_networks, function(){\n        $(\".service_network_checkbox[value='\"+this+\"']\", role_section).attr('checked', true).change();\n      });\n    });\n  }\n\n  function _add_role_tab(role_id, dialog) {\n    var html_role_id  = 'role' + role_id;\n\n    var role_tab = new RoleTab(html_role_id);\n    this.roleTabObjects[role_id] = role_tab;\n\n    // Append the new div containing the tab and add the tab to the list\n    var role_section = $('<div id=\"'+html_role_id+'Tab\" class=\"content role_content wizard_internal_tab\" role_id=\"'+role_id+'\">'+\n        role_tab.html() +\n    '</div>').appendTo($(\"#roles_tabs_content\", dialog));\n\n    _redo_service_networks_selector_role(dialog, role_section);\n\n    var a = $(\"<dd>\\\n      <a class='text-center' id='\"+html_role_id+\"' href='#\"+html_role_id+\"Tab'>\\\n        <span>\\\n          <i class='off-color fa fa-cube fa-3x'/>\\\n          <br>\\\n          <span id='role_name_text'>\"+Locale.tr(\"Role \")+role_id+\"</span>\\\n        </span>\\\n        <i class='fa fa-times-circle remove-tab'></i>\\\n      </a>\\\n    </dd>\").appendTo($(\"dl#roles_tabs\", dialog));\n\n    $(\"a\", a).trigger(\"click\");\n\n    role_tab.setup(role_section);\n    role_tab.onShow();\n  }\n\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/oneflow-templates-tab/form-panels/instantiate/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"service_name\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Service Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Defaults to template name when emtpy. You can use the wildcard &#37;i. When creating several Services, &#37;i will be replaced with a different number starting from 0 in each of them\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".</span>\\n      </label>\\n      <input type=\\\"text\\\" name=\\\"service_name\\\" id=\\\"service_name\\\" />\\n    </div>\\n    <div class=\\\"large-6 columns\\\">\\n      <label for=\\\"service_n_times\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of instances\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n        <span class=\\\"tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Number of Services that will be created using this template\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \".</span>\\n      </label>\\n      <input type=\\\"text\\\" name=\\\"service_n_times\\\" id=\\\"service_n_times\\\" value=\\\"1\\\">\\n    </div>\\n  </div>\\n  <div id=\\\"instantiate_service_user_inputs\\\">\\n    <i class=\\\"fa fa-spinner fa-spin\\\"></i>\\n  </div>\\n  <div class=\\\"row\\\" id=\\\"instantiate_service_role_user_inputs\\\">\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/oneflow-templates-tab/form-panels/instantiate/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/oneflow-templates-tab/form-panels/instantiate',['require','foundation.tab','utils/form-panels/form-panel','sunstone','utils/locale','utils/tips','opennebula/servicetemplate','opennebula/template','utils/notifier','utils/wizard-fields','utils/template-utils','utils/user-inputs','hbs!./instantiate/html','./instantiate/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Tips = require('utils/tips');\n  var OpenNebulaServiceTemplate = require('opennebula/servicetemplate');\n  var OpenNebulaTemplate = require('opennebula/template');\n  var Notifier = require('utils/notifier');\n  var WizardFields = require('utils/wizard-fields');\n  var TemplateUtils = require('utils/template-utils');\n  var UserInputs = require('utils/user-inputs');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateHTML = require('hbs!./instantiate/html');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var FORM_PANEL_ID = require('./instantiate/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'instantiate': {\n        'title': Locale.tr(\"Instantiate Service Template\"),\n        'buttonText': Locale.tr(\"Instantiate\"),\n        'resetButton': false\n      }\n    };\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _html;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.fill = _fill;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n  \n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'formPanelId': this.formPanelId\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    Tips.setup(context);\n    return false;\n  }\n\n  function _onShow(context) {\n    var that = this;\n\n    Sunstone.disableFormPanelSubmit(TAB_ID);\n\n    var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n    var template_id = \"\"+selected_nodes[0];\n\n    this.service_template_json = {};\n\n    OpenNebulaServiceTemplate.show({\n      data : {\n        id: template_id\n      },\n      timeout: true,\n      success: function (request, template_json){\n\n        that.service_template_json = template_json;\n\n        $(\"#instantiate_service_user_inputs\", context).empty();\n\n        UserInputs.serviceTemplateInsert(\n          $(\"#instantiate_service_user_inputs\", context),\n          template_json);\n\n        n_roles = template_json.DOCUMENT.TEMPLATE.BODY.roles.length;\n        n_roles_done = 0;\n\n        $.each(template_json.DOCUMENT.TEMPLATE.BODY.roles, function(index, role){\n          var div_id = \"user_input_role_\"+index;\n\n          $(\"#instantiate_service_role_user_inputs\", context).append(\n            '<div id=\"'+div_id+'\" class=\"large-6 columns\">\\\n            </div>'\n            );\n\n          OpenNebulaTemplate.show({\n            data : {\n              id: role.vm_template\n            },\n            timeout: true,\n            success: function (request, vm_template_json){\n\n              $(\"#\"+div_id, context).empty();\n\n              UserInputs.vmTemplateInsert(\n                $(\"#\"+div_id, context),\n                vm_template_json,\n                {\n                  text_header: Locale.tr(\"Role\") + \" \" + role.name\n                }\n              );\n\n              n_roles_done += 1;\n\n              if(n_roles_done == n_roles){\n                Sunstone.enableFormPanelSubmit(TAB_ID);\n              }\n            },\n            error: function(request,error_json, container){\n              Notifier.onError(request,error_json, container);\n              $(\"#instantiate_vm_user_inputs\", context).empty();\n            }\n          });\n        });\n      },\n      error: function(request,error_json, container){\n        Notifier.onError(request,error_json, container);\n        $(\"#instantiate_service_user_inputs\", context).empty();\n      }\n    });\n\n  }\n\n  function _submitWizard(context) {\n    var that = this;\n\n    var service_name = $('#service_name',context).val();\n    var n_times = $('#service_n_times',context).val();\n    var n_times_int=1;\n\n    var template_id;\n    if ($(\"#TEMPLATE_ID\", context).val()) {\n      template_id = $(\"#TEMPLATE_ID\", context).val();\n    } else {\n      var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n      template_id = \"\"+selected_nodes[0];\n    }\n\n    if (n_times.length){\n      n_times_int=parseInt(n_times,10);\n    }\n\n    var extra_msg = \"\";\n    if (n_times_int > 1) {\n      extra_msg = n_times_int+\" times\";\n    }\n\n    var extra_info = {\n      'merge_template': {}\n    };\n\n    var tmp_json = WizardFields.retrieve($(\"#instantiate_service_user_inputs\", context));\n\n    extra_info.merge_template.custom_attrs_values = tmp_json;\n\n    extra_info.merge_template.roles = [];\n\n    $.each(that.service_template_json.DOCUMENT.TEMPLATE.BODY.roles, function(index, role){\n      var div_id = \"user_input_role_\"+index;\n\n      tmp_json = {};\n\n      $.extend( tmp_json, WizardFields.retrieve($(\"#\"+div_id, context)) );\n\n      $.each(role.elasticity_policies, function(i, pol){\n        pol.expression = TemplateUtils.htmlDecode(pol.expression);\n      });\n\n      role.user_inputs_values = tmp_json;\n\n      extra_info.merge_template.roles.push(role);\n    });\n\n    if (!service_name.length){ //empty name\n      for (var i=0; i< n_times_int; i++){\n        Sunstone.runAction(\"ServiceTemplate.instantiate\", [template_id], extra_info);\n      }\n    } else {\n      if (service_name.indexOf(\"%i\") == -1){//no wildcard, all with the same name\n        extra_info['merge_template']['name'] = service_name;\n\n        for (var i=0; i< n_times_int; i++){\n          Sunstone.runAction(\n              \"ServiceTemplate.instantiate\",\n              [template_id], extra_info);\n        }\n      } else { //wildcard present: replace wildcard\n        for (var i=0; i< n_times_int; i++){\n          extra_info['merge_template']['name'] = service_name.replace(/%i/gi,i);\n\n          Sunstone.runAction(\n              \"ServiceTemplate.instantiate\",\n              [template_id], extra_info);\n        }\n      }\n    }\n\n    return false;\n  }\n\n  function _fill(context, element) {\n    var that = this;\n  }\n\n});\n\n","define('tabs/oneflow-templates-tab',['require','utils/locale','./oneflow-templates-tab/buttons','./oneflow-templates-tab/actions','./oneflow-templates-tab/datatable','./oneflow-templates-tab/tabId','./oneflow-templates-tab/panels/info','./oneflow-templates-tab/panels/roles','./oneflow-templates-tab/form-panels/create','./oneflow-templates-tab/form-panels/instantiate'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./oneflow-templates-tab/buttons');\n  var Actions = require('./oneflow-templates-tab/actions');\n  var Table = require('./oneflow-templates-tab/datatable');\n\n  var TAB_ID = require('./oneflow-templates-tab/tabId');\n  var DATATABLE_ID = \"dataTableServiceTemplates\";\n  var RESOURCE = \"ServiceTemplate\";\n\n  var _dialogs = [\n  ];\n\n  var _panels = [\n    require('./oneflow-templates-tab/panels/info'),\n    require('./oneflow-templates-tab/panels/roles')\n  ];\n\n  var _formPanels = [\n    require('./oneflow-templates-tab/form-panels/create'),\n    require('./oneflow-templates-tab/form-panels/instantiate')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    title: Locale.tr(\"Templates\"),\n    tabClass: \"subTab\",\n    parentTab: \"oneflow-dashboard\",\n    listHeader: '<i class=\"fa fa-fw fa-file-o\"></i>&emsp;'+Locale.tr(\"OneFlow - Templates\"),\n    infoHeader: '<i class=\"fa fa-fw fa-file-o\"></i>&emsp;'+Locale.tr(\"OneFlow - Template\"),\n    subheader: '',\n    content: '<div class=\"row oneflow_templates_error_message\" hidden>\\\n        <div class=\"small-6 columns small-centered text-center\">\\\n            <div class=\"alert-box alert radius\">'+Locale.tr(\"Cannot connect to OneFlow server\")+'</div>\\\n        </div>\\\n    </div>',\n    resource: RESOURCE,\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs\n  };\n\n  return Tab;\n});\n\n","define('tabs/support-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var Buttons = {\n    \"Support.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      text: '<i class=\"fa fa-refresh fa fa-lg\">',\n      alwaysActive: true\n    },\n    \"Support.upload\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: '<i class=\"fa fa-cloud-upload\" style=\"color: rgb(111, 111, 111)\"/> '+Locale.tr(\"Upload a file\"),\n      custom_classes: \"only-right-info\"\n    },\n    \"Support.signout\" : {\n      type: \"action\",\n      layout: \"main\",\n      text: '<i class=\"fa fa-sign-out fa fa-lg\">',\n      tip: \"Sign out of Commercial Support\",\n      alwaysActive: true\n    },\n    \"Support.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\",\n      text: \"Submit a Request\"\n    }\n  };\n\n  return Buttons;\n});\n","define('tabs/support-tab/tabId',['require'],function(require) {\n  return 'support-tab';\n});\n\n","define('tabs/support-tab/utils/common',['require','sunstone','../tabId'],function(require) {\n  /*\n    Common functions for the support tab\n   */\n\n  var Sunstone = require('sunstone');\n\n  var TAB_ID = require('../tabId');\n\n  var support_interval_function;\n\n  function _show_support_connect() {\n    $(\".support_info\").hide();\n    $(\"#\"+Sunstone.getDataTable(TAB_ID).dataTableId+\"Container\", \"#\"+TAB_ID).hide();\n    $(\".support_connect\").show();\n    $(\".actions_row\", \"#\"+TAB_ID).hide();\n  }\n\n  function _show_support_list() {\n    $(\".support_info\").show();\n    $(\".support_connect\").hide();\n    $(\".actions_row\", \"#\"+TAB_ID).show();\n    $(\"#\"+Sunstone.getDataTable(TAB_ID).dataTableId+\"Container\", \"#\"+TAB_ID).show();\n  }\n\n  function _startIntervalRefresh() {\n    Sunstone.runAction('Support.list');\n\n    support_interval_function = setInterval(function(){\n      Sunstone.runAction('Support.list');\n    }, Sunstone.TOP_INTERVAL);\n  }\n\n  function _stopIntervalRefresh() {\n    clearInterval(support_interval_function);\n  }\n\n  return {\n    'showSupportConnect': _show_support_connect,\n    'showSupportList': _show_support_list,\n    'startIntervalRefresh': _startIntervalRefresh,\n    'stopIntervalRefresh': _stopIntervalRefresh,\n  };\n});\n","define('tabs/support-tab/form-panels/create/formPanelId',['require'],function(require){\n  return 'createSupportRequestForm';\n});\n","define('tabs/support-tab/dialogs/upload/dialogId',['require'],function(require){\n  return 'uploadSupportRequestDialog';\n});\n","define('tabs/support-tab/actions',['require','sunstone','utils/notifier','opennebula/support','./utils/common','./tabId','./form-panels/create/formPanelId','./dialogs/upload/dialogId'],function(require) {\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var OpenNebulaSupport = require('opennebula/support');\n  var SupportUtils = require('./utils/common');\n\n  var RESOURCE = \"Support\";\n  var TAB_ID = require('./tabId');\n  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');\n  var UPLOAD_DIALOG_ID = require('./dialogs/upload/dialogId');\n\n  var _actions = {\n    \"Support.list\" : {\n      type: \"list\",\n      call: OpenNebulaSupport.list,\n      callback: function(req, list, res){\n        SupportUtils.showSupportList();\n        $(\".support_open_value\").text(res.open_requests);\n        $(\".support_pending_value\").text(res.pending_requests);\n\n        var elements = [];\n        if(res.REQUEST_POOL.REQUEST){\n          elements = res.REQUEST_POOL.REQUEST;\n        }\n\n        Sunstone.getDataTable(TAB_ID).updateView(req, elements);\n      },\n      error: function(request, error_json) {\n        if (error_json.error.http_status==\"401\") {\n          SupportUtils.stopIntervalRefresh();\n        }\n\n        SupportUtils.showSupportConnect();\n      }\n    },\n    \"Support.refresh\" : {\n      type: \"custom\",\n      call: function() {\n        var tab = $('#' + TAB_ID);\n        if (Sunstone.rightInfoVisible(tab)) {\n          Sunstone.runAction(RESOURCE+\".show\", Sunstone.rightInfoResourceId(tab));\n        } else {\n          Sunstone.getDataTable(TAB_ID).waitingNodes();\n          Sunstone.runAction(RESOURCE+\".list\", {force: true});\n        }\n      },\n      error: function(request, error_json) {\n        SupportUtils.showSupportConnect();\n      }\n    },\n    \"Support.show\" : {\n      type: \"single\",\n      call: OpenNebulaSupport.show,\n      callback: function(request, response) {\n        //Sunstone.getDataTable(TAB_ID).updateElement(request, response);\n        if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {\n          Sunstone.insertPanels(TAB_ID, response);\n        }\n      },\n      error: function(request, error_json) {\n        SupportUtils.showSupportConnect();\n      }\n    },\n    \"Support.create\" : {\n      type: \"create\",\n      call: OpenNebulaSupport.create,\n      callback: function(request, response){\n        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);\n        Sunstone.hideFormPanel(TAB_ID);\n        Sunstone.runAction(\"Support.refresh\");\n      },\n      error: function(request, error_json){\n        if (error_json.error.http_status==\"403\") {\n          Sunstone.hideFormPanelLoading(TAB_ID);\n          Notifier.notifyError(error_json.error.message);\n        } else {\n          Sunstone.hideFormPanel(TAB_ID);\n          SupportUtils.showSupportConnect();\n        }\n      }\n    },\n    \"Support.create_dialog\" : {\n      type: \"custom\",\n      call: function(){\n        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, \"create\");\n      }\n    },\n    \"Support.update\" : {\n      type: \"single\",\n      call: OpenNebulaSupport.update,\n      callback: function(request, response){\n        Sunstone.runAction(\"Support.refresh\");\n        Notifier.notifyMessage(\"Comment added correctly\");\n      },\n      error: function(request, response){\n        Sunstone.runAction(\"Support.refresh\");\n        //Notifier.onError(request, response);\n        Notifier.notifyError(\"Comment failed to be added\");\n      }\n    },\n    \"Support.signout\" : {\n      type: \"single\",\n      call: function() {\n        $.ajax({\n          url: 'support/credentials',\n          type: \"DELETE\",\n          dataType: \"text\",\n          success: function(){\n            SupportUtils.showSupportConnect();\n            Sunstone.runAction(\"Support.refresh\");\n          },\n          error: function(response){\n            if (response.status==\"401\") {\n              Notifier.notifyError(\"Support credentials are incorrect\");\n            } else {\n              Notifier.notifyError(response.responseText);\n            }\n          }\n        });\n      }\n    },\n    \"Support.upload\" : {\n      type: \"single\",\n      call: function() {\n        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();\n        var resource_id = \"\" + selected_nodes[0];\n\n        Sunstone.getDialog(UPLOAD_DIALOG_ID).setParams({requestId: resource_id});\n        Sunstone.getDialog(UPLOAD_DIALOG_ID).reset();\n        Sunstone.getDialog(UPLOAD_DIALOG_ID).show();\n      }\n    }\n  };\n\n  return _actions;\n});\n","define('tabs/support-tab/datatable',['require','utils/tab-datatable','sunstone-config','utils/locale','./tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var TabDataTable = require('utils/tab-datatable');\n  var SunstoneConfig = require('sunstone-config');\n  var Locale = require('utils/locale');\n\n  /*\n    CONSTANTS\n   */\n\n  var RESOURCE = \"Support\";\n  var XML_ROOT = \"REQUEST\";\n  var TAB_NAME = require('./tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Table(dataTableId, conf) {\n    this.conf = conf || {};\n    this.tabId = TAB_NAME;\n    this.dataTableId = dataTableId;\n    this.resource = RESOURCE;\n    this.xmlRoot = XML_ROOT;\n\n    this.dataTableOptions = {\n      \"bAutoWidth\": false,\n      \"bSortClasses\" : false,\n      \"bDeferRender\": true,\n      \"aoColumnDefs\": [\n          {\"bSortable\": false, \"aTargets\": [\"check\"]},\n          {\"sWidth\": \"35px\", \"aTargets\": [0]},\n          {\"bVisible\": true, \"aTargets\": SunstoneConfig.tabTableColumns(TAB_NAME)},\n          {\"bVisible\": false, \"aTargets\": ['_all']}\n      ]\n    };\n\n    this.columns = [\n      \"ID\",\n      \"Subject\",\n      \"Requested\",\n      \"Status\"\n    ];\n\n\n    TabDataTable.call(this);\n  }\n\n  Table.prototype = Object.create(TabDataTable.prototype);\n  Table.prototype.constructor = Table;\n  Table.prototype.elementArray = _elementArray;\n\n  return Table;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _elementArray(element) {\n    return [\n        '<input class=\"check_item\" type=\"checkbox\" id=\"'+RESOURCE.toLowerCase()+'_' +\n                             element.id + '\" name=\"selected_items\" value=\"' +\n                             element.id + '\"/>',\n        element.id,\n        element.subject,\n        element.created_at,\n        element.status\n    ];\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/support-tab/title',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  return \"<span class=\\\"support_title\\\"><i class=\\\"fa fa-lg fa-fw fa-support\\\"></i> Support</span>\\n<br>\\n<div class=\\\"support_info\\\" style=\\\"display: none;\\\">\\n  <span class=\\\"support_open\\\">Open</span><span class=\\\"label secondary right support_open_value\\\">-</span>\\n  <br>\\n  <span class=\\\"support_pending\\\">Pending</span><span class=\\\"label right support_pending_value\\\">-</span>\\n  <br>\\n  <button class=\\\"button tiny success radius support_button\\\">Submit a Request</button>\\n</div>\\n<div class=\\\"support_connect\\\" style=\\\"display: none;\\\">\\n  <span class=\\\"\\\">Not connected</span>\\n  <br>\\n  <button class=\\\"button tiny success radius support_connect_button\\\">Sign in</button>\\n</div>\";\n  },\"useData\":true});\nHandlebars.registerPartial('tabs/support-tab/title', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/support-tab/subheader',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  return \"<div class=\\\"row text-left support_connect\\\">\\n  <div class=\\\"large-6 columns\\\" style=\\\"font-\\\">\\n    <p>The Support Subscription provides expert integration and production support on supported platforms and include:</p>\\n    <ul class=\\\"fa-ul\\\" style=\\\"font-size: 14px;\\\">\\n      <li><i class=\\\"fa-li fa fa-check\\\"></i>Problem diagnosis, resolution and bug fixing</li>\\n      <li><i class=\\\"fa-li fa fa-check\\\"></i>Solving unexpected problems when using, installing or configuring the software</li>\\n      <li><i class=\\\"fa-li fa fa-check\\\"></i>Guidance about tuning for optimal and scalable performance in your environment</li>\\n      <li><i class=\\\"fa-li fa fa-check\\\"></i>Answering “how to” questions related to standard and intended product usage</li>\\n      <li><i class=\\\"fa-li fa fa-check\\\"></i>Offering hints about how to go around missing features</li>\\n      <li><i class=\\\"fa-li fa fa-check\\\"></i>Answering questions about product adaptation and integration</li>\\n    </ul>\\n    <p>For more info on support subcriptions, <a href=\\\"http://opennebula.systems/support/\\\" target=\\\"_blank\\\">click here</a></p>\\n  </div>\\n  <div class=\\\"large-6 columns\\\" style=\\\"padding: 0px 50px;\\\">\\n    <fieldset>\\n      <legend>Commercial Support</legend>\\n      <form id=\\\"support_credentials_form\\\">\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"support_email\\\">Email</label>\\n          <input id=\\\"support_email\\\" type=\\\"text\\\"></input>\\n        </div>\\n        <div class=\\\"large-12 columns\\\">\\n          <label for=\\\"support_password\\\">Password</label>\\n          <input id=\\\"support_password\\\" type=\\\"password\\\"></input>\\n        </div>\\n        <div class=\\\"large-12 columns\\\">\\n          <button class=\\\"button right radius success submit_support_credentials_button\\\" type=\\\"submit\\\">Sign in</button>\\n        </div>\\n        <div class=\\\"large-12 columns text-center\\\">\\n          <p>or</p>\\n        </div>\\n        <div class=\\\"large-12 columns\\\">\\n          <a  href=\\\"http://opennebula.systems/buy/\\\" target=\\\"_blank\\\" class=\\\"button large-12 radius\\\" style=\\\"color: #fff !important\\\">Get an account</a>\\n        </div>\\n      </form>\\n    </fieldset>\\n  </div>\\n</div>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns text-left\\\">\\n    <h3 class=\\\"subheader\\\"><i class=\\\"fa fa-fw fa-info-circle\\\"></i> Additional Help Resources</h3>\\n  </div>\\n</div>\\n<br>\\n<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <a href=\\\"http://docs.opennebula.org/4.12/\\\" target=\\\"_blank\\\">\\n      <span class=\\\"fa-stack fa-2x\\\" style=\\\"color: #cfcfcf;\\\">\\n       <i class=\\\"fa fa-circle fa-stack-2x\\\"></i>\\n       <i class=\\\"fa fa-book fa-stack-1x fa-inverse\\\"></i>\\n     </span>\\n     <br>\\n     Documentation\\n   </a>\\n </div>\\n <div class=\\\"large-6 columns\\\">\\n  <a href=\\\"http://opennebula.org/support/community/\\\" target=\\\"_blank\\\">\\n    <span class=\\\"fa-stack fa-2x\\\" style=\\\"color: #cfcfcf;\\\">\\n     <i class=\\\"fa fa-circle fa-stack-2x\\\"></i>\\n     <i class=\\\"fa fa-comments fa-stack-1x fa-inverse\\\"></i>\\n   </span>\\n   <br>\\n   Community\\n </a>\\n</div>\\n</div>\\n<br>\\n<p class=\\\"text-center\\\" style=\\\"font-size: 14px; color: #999;\\\">This tab can be disabled in the sunstone views configuration files</p>\";\n  },\"useData\":true});\nHandlebars.registerPartial('tabs/support-tab/subheader', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/support-tab/dialogs/upload/html',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal\\\" role=\\\"dialog\\\" data-reveal >\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">Upload File</h3>\\n  </div>\\n  <form id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Form\\\">\\n    <div class=\\\"row\\\">\\n      <div id=\\\"support_file-uploader\\\" class=\\\"large-12 columns text-center\\\">\\n        <label id=\\\"support_file-uploader-label\\\" for=\\\"support_file-uploader-input\\\"></label>\\n        <input id=\\\"support_file-uploader-input\\\" type=\\\"file\\\"/>\\n      </div>\\n    </div>\\n    <div class=\\\"form_buttons row\\\">\\n      <button class=\\\"button right radius success upload_support_file_form_button\\\" type=\\\"submit\\\" disabled>\\n        Upload\\n      </button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/support-tab/dialogs/upload/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/support-tab/dialogs/upload',['require','utils/dialogs/dialog','hbs!./upload/html','resumable','sunstone','utils/notifier','opennebula/error','utils/browser-info','./upload/dialogId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./upload/html');\n  var Resumable = require('resumable');\n  var Sunstone = require('sunstone');\n  var Notifier = require('utils/notifier');\n  var OpenNebulaError = require('opennebula/error');\n  var BrowserInfo = require('utils/browser-info');\n\n  /*\n    CONSTANTS\n   */\n\n  var DIALOG_ID = require('./upload/dialogId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n\n    BaseDialog.call(this);\n  }\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n  Dialog.prototype.setParams = _setParams;\n\n  return Dialog;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    return TemplateHTML({\n      'dialogId': this.dialogId\n    });\n  }\n\n  /**\n   * @param {object} params\n   *        - params.requestId : Support Request id\n   */\n  function _setParams(params) {\n    this.requestId = params.requestId;\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    var tabContext = $(\"#\"+TAB_ID);\n\n    if (BrowserInfo.getInternetExplorerVersion() > -1) {\n      $(\".upload_support_file_form_button\", context).text(\"Uploading files through IE is not supported\");\n      $(\".upload_support_file_form_button\", context).attr(\"disabled\", \"disabled\");\n    } else {\n      var uploader = new Resumable({\n        target: 'upload_chunk',\n        chunkSize: 10*1024*1024,\n        maxFiles: 1,\n        testChunks: false,\n        query: {\n          csrftoken: \"\"//TODO csrftoken\n        }\n      });\n\n      uploader.assignBrowse($('#support_file-uploader-input', context));\n\n      var fileName = '';\n      var file_input = false;\n\n      uploader.on('fileAdded', function(file){\n        $(\".upload_support_file_form_button\", context).removeAttr(\"disabled\");\n        fileName = file.fileName;\n        file_input = fileName;\n\n        $('#support_file-uploader-input', context).hide();\n        $(\"#support_file-uploader-label\", context).html(file.fileName);\n      });\n\n      uploader.on('uploadStart', function() {\n        $(\".upload_support_file_form_button\", context).attr(\"disabled\", \"disabled\");\n        $('.support_upload_progress_bars', tabContext).append(\n          '<div id=\"'+fileName+'progressBar\" class=\"row\" style=\"margin-bottom:10px\">\\\n            <div id=\"'+fileName+'-info\" class=\"large-2 columns dataTables_info\">\\\n              Uploading...\\\n            </div>\\\n            <div class=\"large-10 columns\">\\\n              <div id=\"upload_progress_container\" class=\"progress nine radius\" style=\"height:25px !important\">\\\n                <span class=\"meter\" style=\"width:0%\"></span>\\\n              </div>\\\n              <div class=\"progress-text\" style=\"margin-left:15px\">'+fileName+'</div>\\\n            </div>\\\n          </div>');\n      });\n\n      uploader.on('progress', function() {\n        $('span.meter', $('div[id=\"'+fileName+'progressBar\"]', tabContext)).css('width', uploader.progress()*100.0+'%')\n      });\n\n      uploader.on('fileSuccess', function(file) {\n        $('div[id=\"'+fileName+'-info\"]', tabContext).text('Registering in OpenNebula');\n        $.ajax({\n          url: 'support/request/' + that.requestId + '/upload',\n          type: \"POST\",\n          data: {\n            csrftoken: \"\",//TODO csrftoken,\n            file: fileName,\n            tempfile: file.uniqueIdentifier\n          },\n          success: function(){\n            Notifier.notifyMessage(\"File uploaded correctly\");\n            $('div[id=\"'+fileName+'progressBar\"]', tabContext).remove();\n            Sunstone.runAction(\"Support.refresh\");\n\n            Sunstone.getDialog(DIALOG_ID).hide();\n          },\n          error: function(response){\n            Notifier.onError({}, OpenNebulaError(response));\n            $('div[id=\"'+fileName+'progressBar\"]', tabContext).remove();\n          }\n        });\n      });\n\n      $('#' + DIALOG_ID + 'Form', context).on(\"submit\", function(){\n        uploader.upload();\n        Sunstone.getDialog(DIALOG_ID).hide();\n        return false;\n      });\n    }\n  }\n\n  function _onShow(context) {\n    return false;\n  }\n});\n\n","define('templates/helpers/htmlDecode',['require','hbs/handlebars','utils/template-utils'],function(require) {\n  /**\n   * Decodes an escaped html string back to html. For example,\n   * \"&lt;p&gt;This is a test&lt;/p&gt;\" -->\n   * \"<p>This is a test</p>\"\n   */\n\n  var Handlebars = require('hbs/handlebars');\n  var TemplateUtils = require('utils/template-utils');\n\n  var htmlDecode = function(value, options) {\n    return TemplateUtils.htmlDecode(value);\n  };\n\n  Handlebars.registerHelper('htmlDecode', htmlDecode);\n\n  return htmlDecode;\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/support-tab/panels/info/html',['hbs','hbs/handlebars','templates/helpers/htmlDecode','templates/helpers/advancedSection'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, buffer = \"\";\n  stack1 = ((helpers.advancedSection || (depth0 && depth0.advancedSection) || helperMissing).call(depth0, (depth0 != null ? depth0.title : depth0), {\"name\":\"advancedSection\",\"hash\":{},\"fn\":this.program(2, data),\"inverse\":this.noop,\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer;\n},\"2\":function(depth0,helpers,partials,data) {\n  var stack1, helperMissing=helpers.helperMissing, buffer = \"  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns comment\\\" style=\\\"font-size: 14px !important;\\\">\\n      \";\n  stack1 = ((helpers.htmlDecode || (depth0 && depth0.htmlDecode) || helperMissing).call(depth0, (depth0 != null ? depth0.html_body : depth0), {\"name\":\"htmlDecode\",\"hash\":{},\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n    </div>\\n  </div>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, lambda=this.lambda, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, functionType=\"function\", buffer = \"<div class=\\\"row\\\">\\n  <div class=\\\"large-6 columns\\\">\\n    <h5>\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.subject : stack1), depth0))\n    + \"</h5>\\n    <p class=\\\"subheader\\\" style=\\\"font-size: 14px;\\\">\\n      \";\n  stack1 = ((helpers.htmlDecode || (depth0 && depth0.htmlDecode) || helperMissing).call(depth0, ((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.html_description : stack1), {\"name\":\"htmlDecode\",\"hash\":{},\"data\":data}));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n    </p>\\n  </div>\\n  <div class=\\\"large-6 columns\\\">\\n    <table id=\\\"info_marketplace_table\\\" class=\\\"dataTable\\\">\\n      <thead>\\n        <tr>\\n          <th colspan=\\\"2\\\">Information</th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr>\\n          <td class=\\\"key_td\\\">Requested</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.created_at : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td class=\\\"key_td\\\">Status</td>\\n          <td class=\\\"value_td\\\">\"\n    + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.element : depth0)) != null ? stack1.status : stack1), depth0))\n    + \"</td>\\n        </tr>\\n        <tr>\\n          <td colspan=\\\"2\\\"><span class=\\\"large-12 label secondary radius\\\">\"\n    + escapeExpression(((helper = (helper = helpers.message || (depth0 != null ? depth0.message : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"message\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span></td>\\n        </tr>\\n      </tbody>\\n    </table>\\n  </div>\\n</div>\\n<br>\\n\";\n  stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.comments : depth0), {\"name\":\"each\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"<div class=\\\"row\\\">\\n  <div class=\\\"large-12 columns support_upload_progress_bars\\\">\\n  </div>\\n</div>\\n<form id=\\\"submit_support_comment\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <textarea class=\\\"comment\\\" placeholder=\\\"Add a comment to this request\\\" rows=\\\"4\\\"/>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <input id=\\\"solved\\\" type=\\\"checkbox\\\">\\n      <label for=\\\"solved\\\">Please consider this request resolved</label>\\n      <button class=\\\"button right radius success\\\" type=\\\"submit\\\">Submit</button>\\n    </div>\\n  </div>\\n</form>\\n\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/support-tab/panels/info/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/support-tab/panels/info',['require','utils/locale','sunstone','hbs!./info/html','../tabId','./info/panelId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  var Locale = require('utils/locale');\n  var Sunstone = require('sunstone');\n\n  var TemplateInfo = require('hbs!./info/html');\n\n  /*\n    CONSTANTS\n   */\n\n  var TAB_ID = require('../tabId');\n  var PANEL_ID = require('./info/panelId');\n  var RESOURCE = \"Support\";\n  var XML_ROOT = \"REQUEST\";\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Panel(info) {\n    this.title = \"Info\";\n    this.icon = \"fa-info-circle\";\n\n    this.element = info[XML_ROOT];\n\n    return this;\n  }\n\n  Panel.PANEL_ID = PANEL_ID;\n  Panel.prototype.html = _html;\n  Panel.prototype.setup = _setup;\n\n  return Panel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _html() {\n    var message;\n    if (this.element[\"status\"] == \"open\") {\n      message = \"This request is currently being processed by our staff\";\n    } else if (this.element[\"status\"] == \"pending\") {\n      message = \"This request is awaiting your response\";\n    }\n\n    var comments = [];\n    if (this.element[\"comments\"]) {\n      $.each(this.element[\"comments\"], function(index, comment){\n        var author = (comment[\"author_id\"] == 21231023 ? \"OpenNebula Support Team\" : 'Me');\n\n        comments.push({\n          title: '<span style=\"width: 100%;\">'+author+' <span style=\"color: #999;\"> - '+comment[\"created_at\"]+'</span></span>',\n          html_body: comment[\"html_body\"]\n        });\n      });\n    }\n\n    return TemplateInfo({\n      'element': this.element,\n      'message': message,\n      'comments': comments\n    });\n  }\n\n  function _setup(context) {\n    var that = this;\n\n    $(\"#submit_support_comment\").on(\"submit\", function(){\n      $(\"button[type=submit]\", context).attr(\"disabled\", \"disabled\");\n      $(\"button[type=submit]\", context).html('<i class=\"fa fa-spinner fa-spin\"></i>');\n\n      var request_id = that.element.id;\n      var request_json = {\n        \"comment\" : {\n          \"value\" : $(\".comment\", this).val()\n        },\n        \"solved\" : $(\"#solved:checked\", this).length > 0 ? true : false\n      };\n\n      Sunstone.runAction(\"Support.update\", request_id, request_json);\n      return false;\n    });\n\n    $(\".accordion_advanced_toggle\", context).trigger(\"click\");\n    $(\"dl.right-info-tabs\", context).hide();\n\n    return false;\n  }\n});\n\n","define('tabs/support-tab/panels/info/panelId',['require'],function(require){\n  return 'support_info_tab';\n});\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/support-tab/form-panels/create/wizard',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<form data-abide=\\\"ajax\\\" id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.formPanelId || (depth0 != null ? depth0.formPanelId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"formPanelId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"Wizard\\\" class=\\\"custom creation\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <label for=\\\"subject\\\">Subject</label>\\n      <input id=\\\"subject\\\" type=\\\"text\\\" required></input>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"medium-6 columns\\\">\\n      <label for=\\\"opennebula_version\\\">OpenNebula Version</label>\\n      <input id=\\\"opennebula_version\\\" type=\\\"text\\\" required></input>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <label for=\\\"description\\\">Description</label>\\n      <textarea id=\\\"description\\\" rows=\\\"5\\\" placeholder=\\\"Please enter the details of your request. A member of our support staff will respond as soon as possible.\\\" required></textarea>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <label for=\\\"severity\\\">Subject</label>\\n      <select id=\\\"severity\\\" name=\\\"severity\\\">\\n        <option value=\\\"severity_1\\\">Severity 1. Product Error: Catastrophic problem in running production systems</option>\\n        <option value=\\\"severity_2\\\">Severity 2. Product Error: High-impact problem in running production systems</option>\\n        <option value=\\\"severity_3\\\">Severity 3. Product Error: Low impact problem on a running production system </option>\\n        <option value=\\\"severity_4\\\" selected>Severity 4. Usage, Design, Configuration, or Integration Question</option>\\n      </select>\\n    </div>\\n  </div>\\n</form>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/support-tab/form-panels/create/wizard', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/support-tab/form-panels/create',['require','foundation.tab','utils/form-panels/form-panel','sunstone','hbs!./create/wizard','./create/formPanelId','../tabId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n\n  require('foundation.tab');\n  var BaseFormPanel = require('utils/form-panels/form-panel');\n  var Sunstone = require('sunstone');\n\n  /*\n    TEMPLATES\n   */\n\n  var TemplateWizardHTML = require('hbs!./create/wizard');\n\n  /*\n    CONSTANTS\n   */\n\n  var FORM_PANEL_ID = require('./create/formPanelId');\n  var TAB_ID = require('../tabId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function FormPanel() {\n    this.formPanelId = FORM_PANEL_ID;\n    this.tabId = TAB_ID;\n    this.actions = {\n      'create': {\n        'title': \"Submit a Request\",\n        'buttonText': \"Submit\",\n        'resetButton': true\n      }\n    };\n\n    BaseFormPanel.call(this);\n  }\n\n  FormPanel.FORM_PANEL_ID = FORM_PANEL_ID;\n  FormPanel.prototype = Object.create(BaseFormPanel.prototype);\n  FormPanel.prototype.constructor = FormPanel;\n  FormPanel.prototype.htmlWizard = _htmlWizard;\n  FormPanel.prototype.submitWizard = _submitWizard;\n  FormPanel.prototype.onShow = _onShow;\n  FormPanel.prototype.setup = _setup;\n\n  return FormPanel;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n\n  function _htmlWizard() {\n    return TemplateWizardHTML({\n      'formPanelId': this.formPanelId\n    });\n  }\n\n  function _onShow(context) {\n  }\n\n  function _setup(context) {\n    return false;\n  }\n\n  function _submitWizard(context) {\n    var template = {\n      \"subject\" : $('#subject', context).val(),\n      \"description\" : $('#description', context).val(),\n      \"opennebula_version\" : $('#opennebula_version', context).val(),\n      \"severity\" : $('#severity', context).val(),\n    };\n\n    Sunstone.runAction(\"Support.create\", template);\n    return false;\n  }\n});\n\n","define('tabs/support-tab',['require','./support-tab/buttons','./support-tab/actions','./support-tab/datatable','utils/notifier','./support-tab/utils/common','sunstone','hbs!./support-tab/title','hbs!./support-tab/subheader','./support-tab/tabId','./support-tab/dialogs/upload','./support-tab/panels/info','./support-tab/form-panels/create'],function(require) {\n  var Buttons = require('./support-tab/buttons');\n  var Actions = require('./support-tab/actions');\n  var Table = require('./support-tab/datatable');\n  var Notifier = require('utils/notifier');\n  var SupportUtils = require('./support-tab/utils/common');\n  var Sunstone = require('sunstone');\n\n  var TemplateTitle = require('hbs!./support-tab/title');\n  var TemplateSubheader = require('hbs!./support-tab/subheader');\n\n  var TAB_ID = require('./support-tab/tabId');\n  var DATATABLE_ID = \"dataTableSupport\";\n\n  var _dialogs = [\n    require('./support-tab/dialogs/upload')\n  ];\n\n  var _panels = [\n    require('./support-tab/panels/info')\n  ];\n\n  var _formPanels = [\n    require('./support-tab/form-panels/create')\n  ];\n\n  var Tab = {\n    tabId: TAB_ID,\n    resource: 'Support',\n    title: TemplateTitle(),\n    listHeader: '<i class=\"fa fa-fw fa-support\"></i> Commercial Support Requests',\n    infoHeader: '<i class=\"fa fa-fw fa-support\"></i> Commercial Support Request',\n    subheader: TemplateSubheader(),\n    buttons: Buttons,\n    actions: Actions,\n    dataTable: new Table(DATATABLE_ID, {actions: true, info: true, oneSelection: true}),\n    panels: _panels,\n    formPanels: _formPanels,\n    dialogs: _dialogs,\n    setup: _setup\n  };\n\n  return Tab;\n\n  function _setup(context) {\n\n    SupportUtils.showSupportConnect();\n    SupportUtils.startIntervalRefresh();\n\n    $(\".support_button\").on(\"click\", function(){\n      $(\"#li_support-tab > a\").trigger(\"click\");\n      $(\".create_dialog_button\", \"#support-tab\").trigger(\"click\");\n      return false;\n    });\n\n    $(\"#support_credentials_form\", context).on(\"submit\", function(){\n      $(\".submit_support_credentials_button\", context).attr(\"disabled\", \"disabled\");\n      $(\".submit_support_credentials_button\", context).html('<i class=\"fa fa-spinner fa-spin\"></i>');\n\n      var data = {\n        email : $(\"#support_email\", this).val(),\n        password : $(\"#support_password\", this).val()\n      };\n\n      $.ajax({\n        url: 'support/credentials',\n        type: \"POST\",\n        dataType: \"text\",\n        data: JSON.stringify(data),\n        success: function(){\n          $(\".submit_support_credentials_button\", context).removeAttr(\"disabled\");\n          $(\".submit_support_credentials_button\", context).html('Sign in');\n\n          Sunstone.runAction(\"Support.refresh\");\n\n          SupportUtils.showSupportList();\n          SupportUtils.startIntervalRefresh();\n        },\n        error: function(response){\n          if (response.status==\"401\") {\n            Notifier.notifyError(\"Support credentials are incorrect\");\n          } else {\n            Notifier.notifyError(response.responseText);\n          }\n\n          $(\".submit_support_credentials_button\", context).removeAttr(\"disabled\");\n          $(\".submit_support_credentials_button\", context).html('Sign in');\n        }\n      });\n\n      return false;\n    });\n  }\n\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/dialogs/confirm/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal\\\" data-reveal>\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Confirm\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <br>\\n      &emsp;\\n      <small class=\\\"confirm_action\\\"></small>\\n    </h3>\\n  </div>\\n  <form action=\\\"\\\">\\n    <div id=\\\"confirm_tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"You have to confirm this action.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</div>\\n    <br />\\n    <div id=\\\"question\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Do you want to proceed?\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</div>\\n    <br />\\n    <div class=\\\"form_buttons\\\">\\n      <button id=\\\"confirm_proceed\\\" class=\\\"action_button radius button right\\\" value=\\\"\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"OK\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/dialogs/confirm/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('utils/dialogs/confirm',['require','utils/dialogs/dialog','hbs!./confirm/html','sunstone','utils/locale','./confirm/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./confirm/html');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./confirm/dialogId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n\n  return Dialog;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n  function _html() {\n    return TemplateHTML({dialogId: this.dialogId});\n  }\n\n  function _setup(dialog) {\n    // Submit action is configured in sunstone.js since it's an action_button\n    return false;\n  }\n\n  function _onShow(dialog) {\n    var actionId = dialog.data('buttonAction');\n    var tabId = dialog.data('buttonTab');\n    var button = Sunstone.getButton(tabId, actionId);\n\n    var tip = Locale.tr(\"You have to confirm this action\");\n    if (button.tip) {\n      tip = button.tip\n    }\n\n    $('#confirm_proceed', dialog).val(actionId);\n    $('#confirm_tip', dialog).text(tip);\n\n    var action = Sunstone.getAction(actionId);\n    var elements = action.elements();\n    if (elements) {\n      var str = actionId.split('.');\n      $(\".confirm_action\", dialog).html(str[1] + ' ' + str[0] + ': ' + elements.join(', '))\n    }\n\n    return false;\n  }\n});\n\n","\n/* START_TEMPLATE */\ndefine('hbs!utils/dialogs/confirm-with-select/html',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.dialogId || (depth0 != null ? depth0.dialogId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"dialogId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"reveal-modal\\\" data-reveal>\\n  <div class=\\\"row\\\">\\n    <h3 class=\\\"subheader\\\">\\n      \"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Confirm\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"\\n      <br>\\n      &emsp;\\n      <small class=\\\"confirm_action\\\"></small>\\n    </h3>\\n  </div>\\n  <form action=\\\"\\\">\\n    <div class=\\\"row\\\">\\n      <div id=\\\"confirm_with_select_tip\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"You need to select something.\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</div>\\n    </div>\\n    <br />\\n    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\" id=\\\"confirm_select\\\"></div>\\n    </div>\\n    <br />\\n    <br />\\n    <div class=\\\"form_buttons\\\">\\n      <button id=\\\"confirm_with_select_proceed\\\" class=\\\"action_button radius button right\\\" value=\\\"\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"OK\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</button>\\n    </div>\\n    <a class=\\\"close-reveal-modal\\\">&#215;</a>\\n  </form>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('utils/dialogs/confirm-with-select/html', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('utils/dialogs/confirm-with-select',['require','utils/dialogs/dialog','hbs!./confirm-with-select/html','sunstone','utils/locale','utils/notifier','utils/resource-select','./confirm-with-select/dialogId'],function(require) {\n  /*\n    DEPENDENCIES\n   */\n  \n  var BaseDialog = require('utils/dialogs/dialog');\n  var TemplateHTML = require('hbs!./confirm-with-select/html');\n  var Sunstone = require('sunstone');\n  var Locale = require('utils/locale');\n  var Notifier = require('utils/notifier');\n  var ResourceSelect = require('utils/resource-select');\n  \n  /*\n    CONSTANTS\n   */\n  \n  var DIALOG_ID = require('./confirm-with-select/dialogId');\n\n  /*\n    CONSTRUCTOR\n   */\n\n  function Dialog() {\n    this.dialogId = DIALOG_ID;\n    BaseDialog.call(this);\n  };\n\n  Dialog.DIALOG_ID = DIALOG_ID;\n  Dialog.prototype = Object.create(BaseDialog.prototype);\n  Dialog.prototype.constructor = Dialog;\n  Dialog.prototype.html = _html;\n  Dialog.prototype.onShow = _onShow;\n  Dialog.prototype.setup = _setup;\n\n  return Dialog;\n\n  /*\n    FUNCTION DEFINITIONS\n   */\n  \n\n  function _html() {\n    return TemplateHTML({dialogId: this.dialogId});\n  }\n\n  function _setup(dialog) {\n    //when we proceed with a \"confirm with select\" we need to\n    //find out if we are running an action with a parametre on a datatable\n    //items or if its just an action\n    $('#confirm_with_select_proceed', dialog).click(function() {\n      var actionId = dialog.data('buttonAction');\n      var action = Sunstone.getAction(actionId);\n      var param = $('.resource_list_select', dialog).val();\n\n      if (!param.length) {\n        Notifier.notifyError(\"You must select a value\");\n        return false;\n      };\n\n      if (!action) { \n        Notifier.notifyError(\"Action \" + action + \" not defined.\"); \n        return false;\n      };\n\n      var error;\n      switch (action.type){\n      case \"multiple\": \n        error = Sunstone.runAction(actionId, action.elements(), param);\n        break;\n      default:\n        error = Sunstone.runAction(actionId, param);\n        break;\n      }\n\n      if (!error) {\n        dialog.foundation('reveal', 'close');\n      }\n\n      return false;\n    });\n\n    return false;\n  }\n\n  function _onShow(dialog) {\n    var actionId = dialog.data('buttonAction');\n    var tabId = dialog.data('buttonTab');\n    var button = Sunstone.getButton(tabId, actionId);\n\n    var tip = Locale.tr(\"You have to confirm this action\");\n    if (button.tip) {\n      tip = button.tip\n    }\n\n    if (button.custom_select) {\n      $('div#confirm_select', dialog).html(button.custom_select);\n    } else {\n      ResourceSelect.insert('#confirm_select', dialog, button.select, null, true);\n    }\n\n    $('#confirm_with_select_tip', dialog).text(tip);\n\n    var action = Sunstone.getAction(actionId);\n    var elements = action.elements();\n    if (elements) {\n      var str = actionId.split('.');\n      $(\".confirm_action\", dialog).html(str[1] + ' ' + str[0] + ': ' + elements.join(', '))\n    }\n\n    return false;\n  }\n});\n\n","define('app',['require','jquery','tabs/dashboard-tab/tabId','tabs/settings-tab/tabId','tabs/provision-tab/tabId','sunstone','sunstone-config','opennebula','utils/notifier','tabs/provision-tab','tabs/users-tab','tabs/settings-tab','tabs/dashboard-tab','tabs/system-tab','tabs/users-tab','tabs/groups-tab','tabs/vdcs-tab','tabs/acls-tab','tabs/vresources-tab','tabs/vms-tab','tabs/templates-tab','tabs/images-tab','tabs/files-tab','tabs/infra-tab','tabs/clusters-tab','tabs/hosts-tab','tabs/datastores-tab','tabs/vnets-tab','tabs/secgroups-tab','tabs/zones-tab','tabs/marketplace-tab','tabs/oneflow-dashboard','tabs/oneflow-services-tab','tabs/oneflow-templates-tab','tabs/settings-tab','tabs/support-tab','utils/dialogs/confirm','utils/dialogs/confirm-with-select'],function(require) {\n  require('jquery');\n\n  var DASHBOARD_TAB_ID = require('tabs/dashboard-tab/tabId');\n  var SETTINGS_TAB_ID = require('tabs/settings-tab/tabId');\n  var PROVISION_TAB_ID = require('tabs/provision-tab/tabId');\n  var Sunstone = require('sunstone');\n  var Config = require('sunstone-config');\n  var OpenNebula = require('opennebula');\n  var Notifier = require('utils/notifier');\n\n  var _tabs;\n  if (Config.isTabEnabled(PROVISION_TAB_ID)) {\n    _tabs = [\n      require('tabs/provision-tab'),\n      require('tabs/users-tab'),\n      require('tabs/settings-tab')\n    ];\n  } else {\n    _tabs = [\n      require('tabs/dashboard-tab'),\n      require('tabs/system-tab'),\n      require('tabs/users-tab'),\n      require('tabs/groups-tab'),\n      require('tabs/vdcs-tab'),\n      require('tabs/acls-tab'),\n      require('tabs/vresources-tab'),\n      require('tabs/vms-tab'),\n      require('tabs/templates-tab'),\n      require('tabs/images-tab'),\n      require('tabs/files-tab'),\n      require('tabs/infra-tab'),\n      require('tabs/clusters-tab'),\n      require('tabs/hosts-tab'),\n      require('tabs/datastores-tab'),\n      require('tabs/vnets-tab'),\n      require('tabs/secgroups-tab'),\n      require('tabs/zones-tab'),\n      require('tabs/marketplace-tab'),\n      require('tabs/oneflow-dashboard'),\n      require('tabs/oneflow-services-tab'),\n      require('tabs/oneflow-templates-tab'),\n      require('tabs/settings-tab'),\n      require('tabs/support-tab')\n    ];\n  }\n\n  var _commonDialogs = [\n    require('utils/dialogs/confirm'),\n    require('utils/dialogs/confirm-with-select')\n  ]\n\n  Sunstone.addDialogs(_commonDialogs);\n\n  $.each(_tabs, function(index, tab) {\n    Sunstone.addMainTab(tab);\n  });\n\n  //$(window).load(function() {\n  //   $('#loading').hide();\n  //});\n\n  $(document).ready(function() {\n    Sunstone.insertTabs();\n\n    _setupAccordion();\n    _insertUserAndZoneSelector();\n\n    if (Config.isTabEnabled(PROVISION_TAB_ID)) {\n      Sunstone.showTab(PROVISION_TAB_ID);\n      $('#loading').hide();\n    } else if (Config.isTabEnabled(DASHBOARD_TAB_ID)) {\n      Sunstone.showTab(DASHBOARD_TAB_ID);\n      $('#loading').hide();\n    }\n  });\n\n  function _setupAccordion() {\n    $(document).on(\"click\", \".accordion_advanced > a\", function() {\n      if ($(this).hasClass(\"active\")) {\n        $(this).removeClass(\"active\");\n      } else {\n        $(this).addClass(\"active\");\n      }\n\n      $(this).closest(\".accordion_advanced\").children(\".content\").toggle();\n\n      return false;\n    })\n  }\n\n  function _insertUserAndZoneSelector() {\n    var user_login_content =  '<a href=\"#\" data-dropdown=\"drop1\" class=\"button small radius secondary dropdown\" id=\"logout\">\\\n      <i class=\"fa fa-user fa-lg fa-fw header-icon\"></i> ' + config['display_name'] + '</a>\\\n      <ul id=\"drop1\" data-dropdown-content class=\"f-dropdown\">\\\n        <li><a href=\"#\" class=\"configuration\"><i class=\"fa fa-cog\"></i> Settings</a></li>\\\n        <li><a href=\"#\" class=\"logout\"><i class=\"fa fa-power-off\"></i> Sign Out</a></li>\\\n      </ul>\\\n    <a href=\"#\" data-dropdown=\"drop2\" class=\"button small radius secondary dropdown\" id=\"zonelector\">\\\n      <i class=\"fa fa-home fa-lg fa-fw header-icon\"></i> ' + config['zone_name'] + '</a>\\\n      <ul id=\"drop2\" data-dropdown-content class=\"zone-ul f-dropdown\"></ul>';\n\n    $(\".user-zone-info\").html(user_login_content);\n\n    function zoneRefresh() {\n      // Populate Zones dropdown\n      OpenNebula.Zone.list({\n        timeout: true,\n        success: function (request, obj_list) {\n          $('.zone-ul').empty();\n          $.each(obj_list, function() {\n            $('.zone-ul').append('<li><a id=\"' + this.ZONE.NAME + '\" class=\"zone-choice\">' + this.ZONE.NAME + '</a></li>');\n          });\n        },\n        error: Notifier.onError\n      });\n    }\n\n    $('#zonelector').on(\"click\", function() {\n      zoneRefresh();\n    });\n\n    $('a.zone-choice').on(\"click\", function() {\n       $.ajax({\n         url: 'config',\n         type: \"GET\",\n         headers: {\n           \"ZONE_NAME\" : this.id\n         },\n         dataType: \"json\",\n         success: function() {\n           window.location.href = \".\";\n         },\n         error: function(response) {\n           Notifier.onError(null, OpenNebula.Error(response))\n         }\n       });\n     });\n\n    $(\".user-zone-info\").foundation('reflow', 'dropdown');\n\n    $(\"a.logout\", $(\".user-zone-info \")).click(function() {\n      OpenNebula.Auth.logout({\n          success: function() {\n            window.location.href = \"login\";\n          },\n          error: Notifier.onError\n        });\n\n      return false;\n    });\n\n    $(\".user-zone-info a.configuration\").click(function() {\n      $(document).foundation('dropdown', 'closeall');\n      Sunstone.showTab(SETTINGS_TAB_ID);\n    });\n  }\n});\n\n"]}
\ No newline at end of file
diff --git a/src/sunstone/public/dist/main.min.js b/src/sunstone/public/dist/main.min.js
deleted file mode 100644
index 953d03b40d..0000000000
--- a/src/sunstone/public/dist/main.min.js
+++ /dev/null
@@ -1,10 +0,0 @@
-!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=e.length,n=Z.type(e);return"function"===n||Z.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function r(e,t,n){if(Z.isFunction(t))return Z.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return Z.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return Z.filter(t,e,n);t=Z.filter(t,e)}return Z.grep(e,function(e){return W.call(t,e)>=0!==n})}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function a(e){var t=dt[e]={};return Z.each(e.match(ht)||[],function(e,n){t[n]=!0}),t}function o(){K.removeEventListener("DOMContentLoaded",o,!1),e.removeEventListener("load",o,!1),Z.ready()}function s(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=Z.expando+s.uid++}function u(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(_t,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:bt.test(n)?Z.parseJSON(n):n}catch(i){}yt.set(e,t,n)}else n=void 0;return n}function l(){return!0}function c(){return!1}function p(){try{return K.activeElement}catch(e){}}function f(e,t){return Z.nodeName(e,"table")&&Z.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function h(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function d(e){var t=Lt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n=0,r=e.length;r>n;n++)vt.set(e[n],"globalEval",!t||vt.get(t[n],"globalEval"))}function g(e,t){var n,r,i,a,o,s,u,l;if(1===t.nodeType){if(vt.hasData(e)&&(a=vt.access(e),o=vt.set(t,a),l=a.events)){delete o.handle,o.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)Z.event.add(t,i,l[i][n])}yt.hasData(e)&&(s=yt.access(e),u=Z.extend({},s),yt.set(t,u))}}function v(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&Z.nodeName(e,t)?Z.merge([e],n):n}function y(e,t){var n=t.nodeName.toLowerCase();"input"===n&&St.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}function b(t,n){var r,i=Z(n.createElement(t)).appendTo(n.body),a=e.getDefaultComputedStyle&&(r=e.getDefaultComputedStyle(i[0]))?r.display:Z.css(i[0],"display");return i.detach(),a}function _(e){var t=K,n=Ft[e];return n||(n=b(e,t),"none"!==n&&n||(Ht=(Ht||Z("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=Ht[0].contentDocument,t.write(),t.close(),n=b(e,t),Ht.detach()),Ft[e]=n),n}function x(e,t,n){var r,i,a,o,s=e.style;return n=n||Bt(e),n&&(o=n.getPropertyValue(t)||n[t]),n&&(""!==o||Z.contains(e.ownerDocument,e)||(o=Z.style(e,t)),Ut.test(o)&&Mt.test(t)&&(r=s.width,i=s.minWidth,a=s.maxWidth,s.minWidth=s.maxWidth=s.width=o,o=n.width,s.width=r,s.minWidth=i,s.maxWidth=a)),void 0!==o?o+"":o}function w(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function E(e,t){if(t in e)return t;for(var n=t[0].toUpperCase()+t.slice(1),r=t,i=Jt.length;i--;)if(t=Jt[i]+n,t in e)return t;return r}function S(e,t,n){var r=Gt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function k(e,t,n,r,i){for(var a=n===(r?"border":"content")?4:"width"===t?1:0,o=0;4>a;a+=2)"margin"===n&&(o+=Z.css(e,n+wt[a],!0,i)),r?("content"===n&&(o-=Z.css(e,"padding"+wt[a],!0,i)),"margin"!==n&&(o-=Z.css(e,"border"+wt[a]+"Width",!0,i))):(o+=Z.css(e,"padding"+wt[a],!0,i),"padding"!==n&&(o+=Z.css(e,"border"+wt[a]+"Width",!0,i)));return o}function N(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,a=Bt(e),o="border-box"===Z.css(e,"boxSizing",!1,a);if(0>=i||null==i){if(i=x(e,t,a),(0>i||null==i)&&(i=e.style[t]),Ut.test(i))return i;r=o&&(Y.boxSizingReliable()||i===e.style[t]),i=parseFloat(i)||0}return i+k(e,t,n||(o?"border":"content"),r,a)+"px"}function T(e,t){for(var n,r,i,a=[],o=0,s=e.length;s>o;o++)r=e[o],r.style&&(a[o]=vt.get(r,"olddisplay"),n=r.style.display,t?(a[o]||"none"!==n||(r.style.display=""),""===r.style.display&&Et(r)&&(a[o]=vt.access(r,"olddisplay",_(r.nodeName)))):(i=Et(r),"none"===n&&i||vt.set(r,"olddisplay",i?n:Z.css(r,"display"))));for(o=0;s>o;o++)r=e[o],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?a[o]||"":"none"));return e}function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}function C(){return setTimeout(function(){Yt=void 0}),Yt=Z.now()}function A(e,t){var n,r=0,i={height:e};for(t=t?1:0;4>r;r+=2-t)n=wt[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function P(e,t,n){for(var r,i=(nn[t]||[]).concat(nn["*"]),a=0,o=i.length;o>a;a++)if(r=i[a].call(n,t,e))return r}function j(e,t,n){var r,i,a,o,s,u,l,c,p=this,f={},h=e.style,d=e.nodeType&&Et(e),m=vt.get(e,"fxshow");n.queue||(s=Z._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,u=s.empty.fire,s.empty.fire=function(){s.unqueued||u()}),s.unqueued++,p.always(function(){p.always(function(){s.unqueued--,Z.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],l=Z.css(e,"display"),c="none"===l?vt.get(e,"olddisplay")||_(e.nodeName):l,"inline"===c&&"none"===Z.css(e,"float")&&(h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Qt.exec(i)){if(delete t[r],a=a||"toggle"===i,i===(d?"hide":"show")){if("show"!==i||!m||void 0===m[r])continue;d=!0}f[r]=m&&m[r]||Z.style(e,r)}else l=void 0;if(Z.isEmptyObject(f))"inline"===("none"===l?_(e.nodeName):l)&&(h.display=l);else{m?"hidden"in m&&(d=m.hidden):m=vt.access(e,"fxshow",{}),a&&(m.hidden=!d),d?Z(e).show():p.done(function(){Z(e).hide()}),p.done(function(){var t;vt.remove(e,"fxshow");for(t in f)Z.style(e,t,f[t])});for(r in f)o=P(d?m[r]:0,r,p),r in m||(m[r]=o.start,d&&(o.end=o.start,o.start="width"===r||"height"===r?1:0))}}function I(e,t){var n,r,i,a,o;for(n in e)if(r=Z.camelCase(n),i=t[r],a=e[n],Z.isArray(a)&&(i=a[1],a=e[n]=a[0]),n!==r&&(e[r]=a,delete e[n]),o=Z.cssHooks[r],o&&"expand"in o){a=o.expand(a),delete e[r];for(n in a)n in e||(e[n]=a[n],t[n]=i)}else t[r]=i}function D(e,t,n){var r,i,a=0,o=tn.length,s=Z.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Yt||C(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,a=1-r,o=0,u=l.tweens.length;u>o;o++)l.tweens[o].run(a);return s.notifyWith(e,[l,a,n]),1>a&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:Z.extend({},t),opts:Z.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Yt||C(),duration:n.duration,tweens:[],createTween:function(t,n){var r=Z.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(I(c,l.opts.specialEasing);o>a;a++)if(r=tn[a].call(l,e,c,l.opts))return r;return Z.map(c,P,l),Z.isFunction(l.opts.start)&&l.opts.start.call(e,l),Z.fx.timer(Z.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function $(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,a=t.toLowerCase().match(ht)||[];if(Z.isFunction(n))for(;r=a[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function L(e,t,n,r){function i(s){var u;return a[s]=!0,Z.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||a[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),i(l),!1)}),u}var a={},o=e===_n;return i(t.dataTypes[0])||!a["*"]&&i("*")}function q(e,t){var n,r,i=Z.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&Z.extend(!0,e,r),e}function R(e,t,n){for(var r,i,a,o,s=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)a=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){a=i;break}o||(o=i)}a=a||o}return a?(a!==u[0]&&u.unshift(a),n[a]):void 0}function H(e,t,n,r){var i,a,o,s,u,l={},c=e.dataTypes.slice();if(c[1])for(o in e.converters)l[o.toLowerCase()]=e.converters[o];for(a=c.shift();a;)if(e.responseFields[a]&&(n[e.responseFields[a]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=a,a=c.shift())if("*"===a)a=u;else if("*"!==u&&u!==a){if(o=l[u+" "+a]||l["* "+a],!o)for(i in l)if(s=i.split(" "),s[1]===a&&(o=l[u+" "+s[0]]||l["* "+s[0]])){o===!0?o=l[i]:l[i]!==!0&&(a=s[0],c.unshift(s[1]));break}if(o!==!0)if(o&&e["throws"])t=o(t);else try{t=o(t)}catch(p){return{state:"parsererror",error:o?p:"No conversion from "+u+" to "+a}}}return{state:"success",data:t}}function F(e,t,n,r){var i;if(Z.isArray(t))Z.each(t,function(t,i){n||kn.test(e)?r(e,i):F(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==Z.type(t))r(e,t);else for(i in t)F(e+"["+i+"]",t[i],n,r)}function M(e){return Z.isWindow(e)?e:9===e.nodeType&&e.defaultView}var U=[],B=U.slice,z=U.concat,G=U.push,W=U.indexOf,V={},X=V.toString,J=V.hasOwnProperty,Y={},K=e.document,Q="2.1.3",Z=function(e,t){return new Z.fn.init(e,t)},et=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,tt=/^-ms-/,nt=/-([\da-z])/gi,rt=function(e,t){return t.toUpperCase()};Z.fn=Z.prototype={jquery:Q,constructor:Z,selector:"",length:0,toArray:function(){return B.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:B.call(this)},pushStack:function(e){var t=Z.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return Z.each(this,e,t)},map:function(e){return this.pushStack(Z.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(B.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:G,sort:U.sort,splice:U.splice},Z.extend=Z.fn.extend=function(){var e,t,n,r,i,a,o=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof o&&(l=o,o=arguments[s]||{},s++),"object"==typeof o||Z.isFunction(o)||(o={}),s===u&&(o=this,s--);u>s;s++)if(null!=(e=arguments[s]))for(t in e)n=o[t],r=e[t],o!==r&&(l&&r&&(Z.isPlainObject(r)||(i=Z.isArray(r)))?(i?(i=!1,a=n&&Z.isArray(n)?n:[]):a=n&&Z.isPlainObject(n)?n:{},o[t]=Z.extend(l,a,r)):void 0!==r&&(o[t]=r));return o},Z.extend({expando:"jQuery"+(Q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===Z.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!Z.isArray(e)&&e-parseFloat(e)+1>=0},isPlainObject:function(e){return"object"!==Z.type(e)||e.nodeType||Z.isWindow(e)?!1:e.constructor&&!J.call(e.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?V[X.call(e)]||"object":typeof e},globalEval:function(e){var t,n=eval;e=Z.trim(e),e&&(1===e.indexOf("use strict")?(t=K.createElement("script"),t.text=e,K.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(tt,"ms-").replace(nt,rt)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,r){var i,a=0,o=e.length,s=n(e);if(r){if(s)for(;o>a&&(i=t.apply(e[a],r),i!==!1);a++);else for(a in e)if(i=t.apply(e[a],r),i===!1)break}else if(s)for(;o>a&&(i=t.call(e[a],a,e[a]),i!==!1);a++);else for(a in e)if(i=t.call(e[a],a,e[a]),i===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(et,"")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?Z.merge(r,"string"==typeof e?[e]:e):G.call(r,e)),r},inArray:function(e,t,n){return null==t?-1:W.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;n>r;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],a=0,o=e.length,s=!n;o>a;a++)r=!t(e[a],a),r!==s&&i.push(e[a]);return i},map:function(e,t,r){var i,a=0,o=e.length,s=n(e),u=[];if(s)for(;o>a;a++)i=t(e[a],a,r),null!=i&&u.push(i);else for(a in e)i=t(e[a],a,r),null!=i&&u.push(i);return z.apply([],u)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),Z.isFunction(e)?(r=B.call(arguments,2),i=function(){return e.apply(t||this,r.concat(B.call(arguments)))},i.guid=e.guid=e.guid||Z.guid++,i):void 0},now:Date.now,support:Y}),Z.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){V["[object "+t+"]"]=t.toLowerCase()});var it=function(e){function t(e,t,n,r){var i,a,o,s,u,l,p,h,d,m;if((t?t.ownerDocument||t:F)!==j&&P(t),t=t||j,n=n||[],s=t.nodeType,"string"!=typeof e||!e||1!==s&&9!==s&&11!==s)return n;if(!r&&D){if(11!==s&&(i=yt.exec(e)))if(o=i[1]){if(9===s){if(a=t.getElementById(o),!a||!a.parentNode)return n;if(a.id===o)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(o))&&R(t,a)&&a.id===o)return n.push(a),n}else{if(i[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((o=i[3])&&x.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(o)),n}if(x.qsa&&(!$||!$.test(e))){if(h=p=H,d=t,m=1!==s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(l=k(e),(p=t.getAttribute("id"))?h=p.replace(_t,"\\$&"):t.setAttribute("id",h),h="[id='"+h+"'] ",u=l.length;u--;)l[u]=h+f(l[u]);d=bt.test(e)&&c(t.parentNode)||t,m=l.join(",")}if(m)try{return Q.apply(n,d.querySelectorAll(m)),n}catch(g){}finally{p||t.removeAttribute("id")}}}return T(e.replace(ut,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[H]=!0,e}function i(e){var t=j.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function a(e,t){for(var n=e.split("|"),r=e.length;r--;)w.attrHandle[n[r]]=t}function o(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,a=e([],n.length,t),o=a.length;o--;)n[i=a[o]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function f(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function h(e,t,n){var r=t.dir,i=n&&"parentNode"===r,a=U++;return t.first?function(t,n,a){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,a)}:function(t,n,o){var s,u,l=[M,a];if(o){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,o))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(u=t[H]||(t[H]={}),(s=u[r])&&s[0]===M&&s[1]===a)return l[2]=s[2];if(u[r]=l,l[2]=e(t,n,o))return!0}}}function d(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(e,n,r){for(var i=0,a=n.length;a>i;i++)t(e,n[i],r);return r}function g(e,t,n,r,i){for(var a,o=[],s=0,u=e.length,l=null!=t;u>s;s++)(a=e[s])&&(!n||n(a,r,i))&&(o.push(a),l&&t.push(s));return o}function v(e,t,n,i,a,o){return i&&!i[H]&&(i=v(i)),a&&!a[H]&&(a=v(a,o)),r(function(r,o,s,u){var l,c,p,f=[],h=[],d=o.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,f,e,s,u),b=n?a||(r?e:d||i)?[]:o:y;if(n&&n(y,b,s,u),i)for(l=g(b,h),i(l,[],s,u),c=l.length;c--;)(p=l[c])&&(b[h[c]]=!(y[h[c]]=p));if(r){if(a||e){if(a){for(l=[],c=b.length;c--;)(p=b[c])&&l.push(y[c]=p);a(null,b=[],l,u)}for(c=b.length;c--;)(p=b[c])&&(l=a?et(r,p):f[c])>-1&&(r[l]=!(o[l]=p))}}else b=g(b===o?b.splice(d,b.length):b),a?a(null,o,b,u):Q.apply(o,b)})}function y(e){for(var t,n,r,i=e.length,a=w.relative[e[0].type],o=a||w.relative[" "],s=a?1:0,u=h(function(e){return e===t},o,!0),l=h(function(e){return et(t,e)>-1},o,!0),c=[function(e,n,r){var i=!a&&(r||n!==O)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];i>s;s++)if(n=w.relative[e[s].type])c=[h(d(c),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[H]){for(r=++s;i>r&&!w.relative[e[r].type];r++);return v(s>1&&d(c),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ut,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&f(e))}c.push(n)}return d(c)}function b(e,n){var i=n.length>0,a=e.length>0,o=function(r,o,s,u,l){var c,p,f,h=0,d="0",m=r&&[],v=[],y=O,b=r||a&&w.find.TAG("*",l),_=M+=null==y?1:Math.random()||.1,x=b.length;for(l&&(O=o!==j&&o);d!==x&&null!=(c=b[d]);d++){if(a&&c){for(p=0;f=e[p++];)if(f(c,o,s)){u.push(c);break}l&&(M=_)}i&&((c=!f&&c)&&h--,r&&m.push(c))}if(h+=d,i&&d!==h){for(p=0;f=n[p++];)f(m,v,o,s);if(r){if(h>0)for(;d--;)m[d]||v[d]||(v[d]=Y.call(u));v=g(v)}Q.apply(u,v),l&&!r&&v.length>0&&h+n.length>1&&t.uniqueSort(u)}return l&&(M=_,O=y),m};return i?r(o):o}var _,x,w,E,S,k,N,T,O,C,A,P,j,I,D,$,L,q,R,H="sizzle"+1*new Date,F=e.document,M=0,U=0,B=n(),z=n(),G=n(),W=function(e,t){return e===t&&(A=!0),0},V=1<<31,X={}.hasOwnProperty,J=[],Y=J.pop,K=J.push,Q=J.push,Z=J.slice,et=function(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1},tt="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",nt="[\\x20\\t\\r\\n\\f]",rt="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",it=rt.replace("w","w#"),at="\\["+nt+"*("+rt+")(?:"+nt+"*([*^$|!~]?=)"+nt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+it+"))|)"+nt+"*\\]",ot=":("+rt+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+at+")*)|.*)\\)|)",st=new RegExp(nt+"+","g"),ut=new RegExp("^"+nt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+nt+"+$","g"),lt=new RegExp("^"+nt+"*,"+nt+"*"),ct=new RegExp("^"+nt+"*([>+~]|"+nt+")"+nt+"*"),pt=new RegExp("="+nt+"*([^\\]'\"]*?)"+nt+"*\\]","g"),ft=new RegExp(ot),ht=new RegExp("^"+it+"$"),dt={ID:new RegExp("^#("+rt+")"),CLASS:new RegExp("^\\.("+rt+")"),TAG:new RegExp("^("+rt.replace("w","w*")+")"),ATTR:new RegExp("^"+at),PSEUDO:new RegExp("^"+ot),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+nt+"*(even|odd|(([+-]|)(\\d*)n|)"+nt+"*(?:([+-]|)"+nt+"*(\\d+)|))"+nt+"*\\)|)","i"),bool:new RegExp("^(?:"+tt+")$","i"),needsContext:new RegExp("^"+nt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+nt+"*((?:-\\d)?\\d*)"+nt+"*\\)|)(?=[^-]|$)","i")},mt=/^(?:input|select|textarea|button)$/i,gt=/^h\d$/i,vt=/^[^{]+\{\s*\[native \w/,yt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,bt=/[+~]/,_t=/'|\\/g,xt=new RegExp("\\\\([\\da-f]{1,6}"+nt+"?|("+nt+")|.)","ig"),wt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Et=function(){P()};try{Q.apply(J=Z.call(F.childNodes),F.childNodes),J[F.childNodes.length].nodeType}catch(St){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=t.support={},S=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},P=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:F;return r!==j&&9===r.nodeType&&r.documentElement?(j=r,I=r.documentElement,n=r.defaultView,n&&n!==n.top&&(n.addEventListener?n.addEventListener("unload",Et,!1):n.attachEvent&&n.attachEvent("onunload",Et)),D=!S(r),x.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),x.getElementsByTagName=i(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),x.getElementsByClassName=vt.test(r.getElementsByClassName),x.getById=i(function(e){return I.appendChild(e).id=H,!r.getElementsByName||!r.getElementsByName(H).length}),x.getById?(w.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&D){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(e){var t=e.replace(xt,wt);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(xt,wt);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=x.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):x.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,a=t.getElementsByTagName(e);if("*"===e){for(;n=a[i++];)1===n.nodeType&&r.push(n);return r}return a},w.find.CLASS=x.getElementsByClassName&&function(e,t){return D?t.getElementsByClassName(e):void 0},L=[],$=[],(x.qsa=vt.test(r.querySelectorAll))&&(i(function(e){I.appendChild(e).innerHTML="<a id='"+H+"'></a><select id='"+H+"-\f]' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&$.push("[*^$]="+nt+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||$.push("\\["+nt+"*(?:value|"+tt+")"),e.querySelectorAll("[id~="+H+"-]").length||$.push("~="),e.querySelectorAll(":checked").length||$.push(":checked"),e.querySelectorAll("a#"+H+"+*").length||$.push(".#.+[+~]")}),i(function(e){var t=r.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&$.push("name"+nt+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||$.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),$.push(",.*:")})),(x.matchesSelector=vt.test(q=I.matches||I.webkitMatchesSelector||I.mozMatchesSelector||I.oMatchesSelector||I.msMatchesSelector))&&i(function(e){x.disconnectedMatch=q.call(e,"div"),q.call(e,"[s!='']:x"),L.push("!=",ot)}),$=$.length&&new RegExp($.join("|")),L=L.length&&new RegExp(L.join("|")),t=vt.test(I.compareDocumentPosition),R=t||vt.test(I.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},W=t?function(e,t){if(e===t)return A=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!x.sortDetached&&t.compareDocumentPosition(e)===n?e===r||e.ownerDocument===F&&R(F,e)?-1:t===r||t.ownerDocument===F&&R(F,t)?1:C?et(C,e)-et(C,t):0:4&n?-1:1)}:function(e,t){if(e===t)return A=!0,0;var n,i=0,a=e.parentNode,s=t.parentNode,u=[e],l=[t];if(!a||!s)return e===r?-1:t===r?1:a?-1:s?1:C?et(C,e)-et(C,t):0;if(a===s)return o(e,t);for(n=e;n=n.parentNode;)u.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;u[i]===l[i];)i++;return i?o(u[i],l[i]):u[i]===F?-1:l[i]===F?1:0},r):j},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==j&&P(e),n=n.replace(pt,"='$1']"),!(!x.matchesSelector||!D||L&&L.test(n)||$&&$.test(n)))try{var r=q.call(e,n);if(r||x.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,j,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==j&&P(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==j&&P(e);var n=w.attrHandle[t.toLowerCase()],r=n&&X.call(w.attrHandle,t.toLowerCase())?n(e,t,!D):void 0;return void 0!==r?r:x.attributes||!D?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!x.detectDuplicates,C=!x.sortStable&&e.slice(0),e.sort(W),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return C=null,e},E=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=E(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=E(t);return n},w=t.selectors={cacheLength:50,createPseudo:r,match:dt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xt,wt),e[3]=(e[3]||e[4]||e[5]||"").replace(xt,wt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return dt.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&ft.test(n)&&(t=k(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xt,wt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=B[e+" "];return t||(t=new RegExp("(^|"+nt+")"+e+"("+nt+"|$)"))&&B(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var a=t.attr(i,e);return null==a?"!="===n:n?(a+="","="===n?a===r:"!="===n?a!==r:"^="===n?r&&0===a.indexOf(r):"*="===n?r&&a.indexOf(r)>-1:"$="===n?r&&a.slice(-r.length)===r:"~="===n?(" "+a.replace(st," ")+" ").indexOf(r)>-1:"|="===n?a===r||a.slice(0,r.length+1)===r+"-":!1):!0}},CHILD:function(e,t,n,r,i){var a="nth"!==e.slice(0,3),o="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,m=a!==o?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!u&&!s;if(g){if(a){for(;m;){for(p=t;p=p[m];)if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;d=m="only"===e&&!d&&"nextSibling"}return!0}if(d=[o?g.firstChild:g.lastChild],o&&y){for(c=g[H]||(g[H]={}),l=c[e]||[],h=l[0]===M&&l[1],f=l[0]===M&&l[2],p=h&&g.childNodes[h];p=++h&&p&&p[m]||(f=h=0)||d.pop();)if(1===p.nodeType&&++f&&p===t){c[e]=[M,h,f];break}}else if(y&&(l=(t[H]||(t[H]={}))[e])&&l[0]===M)f=l[1];else for(;(p=++h&&p&&p[m]||(f=h=0)||d.pop())&&((s?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++f||(y&&((p[H]||(p[H]={}))[e]=[M,f]),p!==t)););return f-=i,f===r||f%r===0&&f/r>=0}}},PSEUDO:function(e,n){var i,a=w.pseudos[e]||w.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return a[H]?a(n):a.length>1?(i=[e,e,"",n],w.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=a(e,n),o=i.length;o--;)r=et(e,i[o]),e[r]=!(t[r]=i[o])}):function(e){return a(e,0,i)}):a}},pseudos:{not:r(function(e){var t=[],n=[],i=N(e.replace(ut,"$1"));return i[H]?r(function(e,t,n,r){for(var a,o=i(e,null,r,[]),s=e.length;s--;)(a=o[s])&&(e[s]=!(t[s]=a))}):function(e,r,a){return t[0]=e,i(t,null,a,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xt,wt),function(t){return(t.textContent||t.innerText||E(t)).indexOf(e)>-1}}),lang:r(function(e){return ht.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xt,wt).toLowerCase(),function(t){var n;do if(n=D?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===I},focus:function(e){return e===j.activeElement&&(!j.hasFocus||j.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return gt.test(e.nodeName)},input:function(e){return mt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[0>n?n+t:n]}),even:l(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:l(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:l(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}},w.pseudos.nth=w.pseudos.eq;for(_ in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[_]=s(_);for(_ in{submit:!0,reset:!0})w.pseudos[_]=u(_);return p.prototype=w.filters=w.pseudos,w.setFilters=new p,k=t.tokenize=function(e,n){var r,i,a,o,s,u,l,c=z[e+" "];if(c)return n?0:c.slice(0);for(s=e,u=[],l=w.preFilter;s;){(!r||(i=lt.exec(s)))&&(i&&(s=s.slice(i[0].length)||s),u.push(a=[])),r=!1,(i=ct.exec(s))&&(r=i.shift(),a.push({value:r,type:i[0].replace(ut," ")}),s=s.slice(r.length));for(o in w.filter)!(i=dt[o].exec(s))||l[o]&&!(i=l[o](i))||(r=i.shift(),a.push({value:r,type:o,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?t.error(e):z(e,u).slice(0)},N=t.compile=function(e,t){var n,r=[],i=[],a=G[e+" "];if(!a){for(t||(t=k(e)),n=t.length;n--;)a=y(t[n]),a[H]?r.push(a):i.push(a);a=G(e,b(i,r)),a.selector=e}return a},T=t.select=function(e,t,n,r){var i,a,o,s,u,l="function"==typeof e&&e,p=!r&&k(e=l.selector||e);if(n=n||[],1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(o=a[0]).type&&x.getById&&9===t.nodeType&&D&&w.relative[a[1].type]){if(t=(w.find.ID(o.matches[0].replace(xt,wt),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(a.shift().value.length)}for(i=dt.needsContext.test(e)?0:a.length;i--&&(o=a[i],!w.relative[s=o.type]);)if((u=w.find[s])&&(r=u(o.matches[0].replace(xt,wt),bt.test(a[0].type)&&c(t.parentNode)||t))){if(a.splice(i,1),e=r.length&&f(a),!e)return Q.apply(n,r),n;break}}return(l||N(e,p))(r,t,!D,n,bt.test(e)&&c(t.parentNode)||t),n},x.sortStable=H.split("").sort(W).join("")===H,x.detectDuplicates=!!A,P(),x.sortDetached=i(function(e){return 1&e.compareDocumentPosition(j.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||a("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),x.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||a("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||a(tt,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);Z.find=it,Z.expr=it.selectors,Z.expr[":"]=Z.expr.pseudos,Z.unique=it.uniqueSort,Z.text=it.getText,Z.isXMLDoc=it.isXML,Z.contains=it.contains;var at=Z.expr.match.needsContext,ot=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,st=/^.[^:#\[\.,]*$/;Z.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?Z.find.matchesSelector(r,e)?[r]:[]:Z.find.matches(e,Z.grep(t,function(e){return 1===e.nodeType}))},Z.fn.extend({find:function(e){var t,n=this.length,r=[],i=this;if("string"!=typeof e)return this.pushStack(Z(e).filter(function(){for(t=0;n>t;t++)if(Z.contains(i[t],this))return!0
-}));for(t=0;n>t;t++)Z.find(e,i[t],r);return r=this.pushStack(n>1?Z.unique(r):r),r.selector=this.selector?this.selector+" "+e:e,r},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,"string"==typeof e&&at.test(e)?Z(e):e||[],!1).length}});var ut,lt=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ct=Z.fn.init=function(e,t){var n,r;if(!e)return this;if("string"==typeof e){if(n="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:lt.exec(e),!n||!n[1]&&t)return!t||t.jquery?(t||ut).find(e):this.constructor(t).find(e);if(n[1]){if(t=t instanceof Z?t[0]:t,Z.merge(this,Z.parseHTML(n[1],t&&t.nodeType?t.ownerDocument||t:K,!0)),ot.test(n[1])&&Z.isPlainObject(t))for(n in t)Z.isFunction(this[n])?this[n](t[n]):this.attr(n,t[n]);return this}return r=K.getElementById(n[2]),r&&r.parentNode&&(this.length=1,this[0]=r),this.context=K,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):Z.isFunction(e)?"undefined"!=typeof ut.ready?ut.ready(e):e(Z):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),Z.makeArray(e,this))};ct.prototype=Z.fn,ut=Z(K);var pt=/^(?:parents|prev(?:Until|All))/,ft={children:!0,contents:!0,next:!0,prev:!0};Z.extend({dir:function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&Z(e).is(n))break;r.push(e)}return r},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}}),Z.fn.extend({has:function(e){var t=Z(e,this),n=t.length;return this.filter(function(){for(var e=0;n>e;e++)if(Z.contains(this,t[e]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,a=[],o=at.test(e)||"string"!=typeof e?Z(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(o?o.index(n)>-1:1===n.nodeType&&Z.find.matchesSelector(n,e))){a.push(n);break}return this.pushStack(a.length>1?Z.unique(a):a)},index:function(e){return e?"string"==typeof e?W.call(Z(e),this[0]):W.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(Z.unique(Z.merge(this.get(),Z(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),Z.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Z.dir(e,"parentNode")},parentsUntil:function(e,t,n){return Z.dir(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return Z.dir(e,"nextSibling")},prevAll:function(e){return Z.dir(e,"previousSibling")},nextUntil:function(e,t,n){return Z.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return Z.dir(e,"previousSibling",n)},siblings:function(e){return Z.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return Z.sibling(e.firstChild)},contents:function(e){return e.contentDocument||Z.merge([],e.childNodes)}},function(e,t){Z.fn[e]=function(n,r){var i=Z.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=Z.filter(r,i)),this.length>1&&(ft[e]||Z.unique(i),pt.test(e)&&i.reverse()),this.pushStack(i)}});var ht=/\S+/g,dt={};Z.Callbacks=function(e){e="string"==typeof e?dt[e]||a(e):Z.extend({},e);var t,n,r,i,o,s,u=[],l=!e.once&&[],c=function(a){for(t=e.memory&&a,n=!0,s=i||0,i=0,o=u.length,r=!0;u&&o>s;s++)if(u[s].apply(a[0],a[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,u&&(l?l.length&&c(l.shift()):t?u=[]:p.disable())},p={add:function(){if(u){var n=u.length;!function a(t){Z.each(t,function(t,n){var r=Z.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&a(n)})}(arguments),r?o=u.length:t&&(i=n,c(t))}return this},remove:function(){return u&&Z.each(arguments,function(e,t){for(var n;(n=Z.inArray(t,u,n))>-1;)u.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?Z.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],o=0,this},disable:function(){return u=l=t=void 0,this},disabled:function(){return!u},lock:function(){return l=void 0,t||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return!u||n&&!l||(t=t||[],t=[e,t.slice?t.slice():t],r?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!n}};return p},Z.extend({Deferred:function(e){var t=[["resolve","done",Z.Callbacks("once memory"),"resolved"],["reject","fail",Z.Callbacks("once memory"),"rejected"],["notify","progress",Z.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return Z.Deferred(function(n){Z.each(t,function(t,a){var o=Z.isFunction(e[t])&&e[t];i[a[1]](function(){var e=o&&o.apply(this,arguments);e&&Z.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a[0]+"With"](this===r?n.promise():this,o?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?Z.extend(e,r):r}},i={};return r.pipe=r.then,Z.each(t,function(e,a){var o=a[2],s=a[3];r[a[1]]=o.add,s&&o.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[a[0]]=function(){return i[a[0]+"With"](this===i?r:this,arguments),this},i[a[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,a=B.call(arguments),o=a.length,s=1!==o||e&&Z.isFunction(e.promise)?o:0,u=1===s?e:Z.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?B.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(o>1)for(t=new Array(o),n=new Array(o),r=new Array(o);o>i;i++)a[i]&&Z.isFunction(a[i].promise)?a[i].promise().done(l(i,r,a)).fail(u.reject).progress(l(i,n,t)):--s;return s||u.resolveWith(r,a),u.promise()}});var mt;Z.fn.ready=function(e){return Z.ready.promise().done(e),this},Z.extend({isReady:!1,readyWait:1,holdReady:function(e){e?Z.readyWait++:Z.ready(!0)},ready:function(e){(e===!0?--Z.readyWait:Z.isReady)||(Z.isReady=!0,e!==!0&&--Z.readyWait>0||(mt.resolveWith(K,[Z]),Z.fn.triggerHandler&&(Z(K).triggerHandler("ready"),Z(K).off("ready"))))}}),Z.ready.promise=function(t){return mt||(mt=Z.Deferred(),"complete"===K.readyState?setTimeout(Z.ready):(K.addEventListener("DOMContentLoaded",o,!1),e.addEventListener("load",o,!1))),mt.promise(t)},Z.ready.promise();var gt=Z.access=function(e,t,n,r,i,a,o){var s=0,u=e.length,l=null==n;if("object"===Z.type(n)){i=!0;for(s in n)Z.access(e,t,s,n[s],!0,a,o)}else if(void 0!==r&&(i=!0,Z.isFunction(r)||(o=!0),l&&(o?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(Z(e),n)})),t))for(;u>s;s++)t(e[s],n,o?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):a};Z.acceptData=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType},s.uid=1,s.accepts=Z.acceptData,s.prototype={key:function(e){if(!s.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=s.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,Z.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),a=this.cache[i];if("string"==typeof t)a[t]=n;else if(Z.isEmptyObject(a))Z.extend(this.cache[i],t);else for(r in t)a[r]=t[r];return a},get:function(e,t){var n=this.cache[this.key(e)];return void 0===t?n:n[t]},access:function(e,t,n){var r;return void 0===t||t&&"string"==typeof t&&void 0===n?(r=this.get(e,t),void 0!==r?r:this.get(e,Z.camelCase(t))):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r,i,a=this.key(e),o=this.cache[a];if(void 0===t)this.cache[a]={};else{Z.isArray(t)?r=t.concat(t.map(Z.camelCase)):(i=Z.camelCase(t),t in o?r=[t,i]:(r=i,r=r in o?[r]:r.match(ht)||[])),n=r.length;for(;n--;)delete o[r[n]]}},hasData:function(e){return!Z.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}};var vt=new s,yt=new s,bt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,_t=/([A-Z])/g;Z.extend({hasData:function(e){return yt.hasData(e)||vt.hasData(e)},data:function(e,t,n){return yt.access(e,t,n)},removeData:function(e,t){yt.remove(e,t)},_data:function(e,t,n){return vt.access(e,t,n)},_removeData:function(e,t){vt.remove(e,t)}}),Z.fn.extend({data:function(e,t){var n,r,i,a=this[0],o=a&&a.attributes;if(void 0===e){if(this.length&&(i=yt.get(a),1===a.nodeType&&!vt.get(a,"hasDataAttrs"))){for(n=o.length;n--;)o[n]&&(r=o[n].name,0===r.indexOf("data-")&&(r=Z.camelCase(r.slice(5)),u(a,r,i[r])));vt.set(a,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){yt.set(this,e)}):gt(this,function(t){var n,r=Z.camelCase(e);if(a&&void 0===t){if(n=yt.get(a,e),void 0!==n)return n;if(n=yt.get(a,r),void 0!==n)return n;if(n=u(a,r,void 0),void 0!==n)return n}else this.each(function(){var n=yt.get(this,r);yt.set(this,r,t),-1!==e.indexOf("-")&&void 0!==n&&yt.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){yt.remove(this,e)})}}),Z.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=vt.get(e,t),n&&(!r||Z.isArray(n)?r=vt.access(e,t,Z.makeArray(n)):r.push(n)),r||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=Z.queue(e,t),r=n.length,i=n.shift(),a=Z._queueHooks(e,t),o=function(){Z.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete a.stop,i.call(e,o,a)),!r&&a&&a.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return vt.get(e,n)||vt.access(e,n,{empty:Z.Callbacks("once memory").add(function(){vt.remove(e,[t+"queue",n])})})}}),Z.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?Z.queue(this[0],e):void 0===t?this:this.each(function(){var n=Z.queue(this,e,t);Z._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&Z.dequeue(this,e)})},dequeue:function(e){return this.each(function(){Z.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=Z.Deferred(),a=this,o=this.length,s=function(){--r||i.resolveWith(a,[a])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";o--;)n=vt.get(a[o],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var xt=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,wt=["Top","Right","Bottom","Left"],Et=function(e,t){return e=t||e,"none"===Z.css(e,"display")||!Z.contains(e.ownerDocument,e)},St=/^(?:checkbox|radio)$/i;!function(){var e=K.createDocumentFragment(),t=e.appendChild(K.createElement("div")),n=K.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),Y.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="<textarea>x</textarea>",Y.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var kt="undefined";Y.focusinBubbles="onfocusin"in e;var Nt=/^key/,Tt=/^(?:mouse|pointer|contextmenu)|click/,Ot=/^(?:focusinfocus|focusoutblur)$/,Ct=/^([^.]*)(?:\.(.+)|)$/;Z.event={global:{},add:function(e,t,n,r,i){var a,o,s,u,l,c,p,f,h,d,m,g=vt.get(e);if(g)for(n.handler&&(a=n,n=a.handler,i=a.selector),n.guid||(n.guid=Z.guid++),(u=g.events)||(u=g.events={}),(o=g.handle)||(o=g.handle=function(t){return typeof Z!==kt&&Z.event.triggered!==t.type?Z.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(ht)||[""],l=t.length;l--;)s=Ct.exec(t[l])||[],h=m=s[1],d=(s[2]||"").split(".").sort(),h&&(p=Z.event.special[h]||{},h=(i?p.delegateType:p.bindType)||h,p=Z.event.special[h]||{},c=Z.extend({type:h,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&Z.expr.match.needsContext.test(i),namespace:d.join(".")},a),(f=u[h])||(f=u[h]=[],f.delegateCount=0,p.setup&&p.setup.call(e,r,d,o)!==!1||e.addEventListener&&e.addEventListener(h,o,!1)),p.add&&(p.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?f.splice(f.delegateCount++,0,c):f.push(c),Z.event.global[h]=!0)},remove:function(e,t,n,r,i){var a,o,s,u,l,c,p,f,h,d,m,g=vt.hasData(e)&&vt.get(e);if(g&&(u=g.events)){for(t=(t||"").match(ht)||[""],l=t.length;l--;)if(s=Ct.exec(t[l])||[],h=m=s[1],d=(s[2]||"").split(".").sort(),h){for(p=Z.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],s=s[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),o=a=f.length;a--;)c=f[a],!i&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(a,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));o&&!f.length&&(p.teardown&&p.teardown.call(e,d,g.handle)!==!1||Z.removeEvent(e,h,g.handle),delete u[h])}else for(h in u)Z.event.remove(e,h+t[l],n,r,!0);Z.isEmptyObject(u)&&(delete g.handle,vt.remove(e,"events"))}},trigger:function(t,n,r,i){var a,o,s,u,l,c,p,f=[r||K],h=J.call(t,"type")?t.type:t,d=J.call(t,"namespace")?t.namespace.split("."):[];if(o=s=r=r||K,3!==r.nodeType&&8!==r.nodeType&&!Ot.test(h+Z.event.triggered)&&(h.indexOf(".")>=0&&(d=h.split("."),h=d.shift(),d.sort()),l=h.indexOf(":")<0&&"on"+h,t=t[Z.expando]?t:new Z.Event(h,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=d.join("."),t.namespace_re=t.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:Z.makeArray(n,[t]),p=Z.event.special[h]||{},i||!p.trigger||p.trigger.apply(r,n)!==!1)){if(!i&&!p.noBubble&&!Z.isWindow(r)){for(u=p.delegateType||h,Ot.test(u+h)||(o=o.parentNode);o;o=o.parentNode)f.push(o),s=o;s===(r.ownerDocument||K)&&f.push(s.defaultView||s.parentWindow||e)}for(a=0;(o=f[a++])&&!t.isPropagationStopped();)t.type=a>1?u:p.bindType||h,c=(vt.get(o,"events")||{})[t.type]&&vt.get(o,"handle"),c&&c.apply(o,n),c=l&&o[l],c&&c.apply&&Z.acceptData(o)&&(t.result=c.apply(o,n),t.result===!1&&t.preventDefault());return t.type=h,i||t.isDefaultPrevented()||p._default&&p._default.apply(f.pop(),n)!==!1||!Z.acceptData(r)||l&&Z.isFunction(r[h])&&!Z.isWindow(r)&&(s=r[l],s&&(r[l]=null),Z.event.triggered=h,r[h](),Z.event.triggered=void 0,s&&(r[l]=s)),t.result}},dispatch:function(e){e=Z.event.fix(e);var t,n,r,i,a,o=[],s=B.call(arguments),u=(vt.get(this,"events")||{})[e.type]||[],l=Z.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(o=Z.event.handlers.call(this,e,u),t=0;(i=o[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(a=i.handlers[n++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(a.namespace))&&(e.handleObj=a,e.data=a.data,r=((Z.event.special[a.origType]||{}).handle||a.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,a,o=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;s>n;n++)a=t[n],i=a.selector+" ",void 0===r[i]&&(r[i]=a.needsContext?Z(i,this).index(u)>=0:Z.find(i,this,null,[u]).length),r[i]&&r.push(a);r.length&&o.push({elem:u,handlers:r})}return s<t.length&&o.push({elem:this,handlers:t.slice(s)}),o},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,a=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||K,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||void 0===a||(e.which=1&a?1:2&a?3:4&a?2:0),e}},fix:function(e){if(e[Z.expando])return e;var t,n,r,i=e.type,a=e,o=this.fixHooks[i];for(o||(this.fixHooks[i]=o=Tt.test(i)?this.mouseHooks:Nt.test(i)?this.keyHooks:{}),r=o.props?this.props.concat(o.props):this.props,e=new Z.Event(a),t=r.length;t--;)n=r[t],e[n]=a[n];return e.target||(e.target=K),3===e.target.nodeType&&(e.target=e.target.parentNode),o.filter?o.filter(e,a):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==p()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===p()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&Z.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(e){return Z.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=Z.extend(new Z.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?Z.event.trigger(i,null,t):Z.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},Z.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},Z.Event=function(e,t){return this instanceof Z.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?l:c):this.type=e,t&&Z.extend(this,t),this.timeStamp=e&&e.timeStamp||Z.now(),void(this[Z.expando]=!0)):new Z.Event(e,t)},Z.Event.prototype={isDefaultPrevented:c,isPropagationStopped:c,isImmediatePropagationStopped:c,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=l,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=l,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=l,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},Z.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){Z.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,a=e.handleObj;return(!i||i!==r&&!Z.contains(r,i))&&(e.type=a.origType,n=a.handler.apply(this,arguments),e.type=t),n}}}),Y.focusinBubbles||Z.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){Z.event.simulate(t,e.target,Z.event.fix(e),!0)};Z.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=vt.access(r,t);i||r.addEventListener(e,n,!0),vt.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=vt.access(r,t)-1;i?vt.access(r,t,i):(r.removeEventListener(e,n,!0),vt.remove(r,t))}}}),Z.fn.extend({on:function(e,t,n,r,i){var a,o;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=void 0);for(o in e)this.on(o,t,n,e[o],i);return this}if(null==n&&null==r?(r=t,n=t=void 0):null==r&&("string"==typeof t?(r=n,n=void 0):(r=n,n=t,t=void 0)),r===!1)r=c;else if(!r)return this;return 1===i&&(a=r,r=function(e){return Z().off(e),a.apply(this,arguments)},r.guid=a.guid||(a.guid=Z.guid++)),this.each(function(){Z.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,Z(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=void 0),n===!1&&(n=c),this.each(function(){Z.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){Z.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?Z.event.trigger(e,t,n,!0):void 0}});var At=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Pt=/<([\w:]+)/,jt=/<|&#?\w+;/,It=/<(?:script|style|link)/i,Dt=/checked\s*(?:[^=]|=\s*.checked.)/i,$t=/^$|\/(?:java|ecma)script/i,Lt=/^true\/(.*)/,qt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Rt={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Rt.optgroup=Rt.option,Rt.tbody=Rt.tfoot=Rt.colgroup=Rt.caption=Rt.thead,Rt.th=Rt.td,Z.extend({clone:function(e,t,n){var r,i,a,o,s=e.cloneNode(!0),u=Z.contains(e.ownerDocument,e);if(!(Y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||Z.isXMLDoc(e)))for(o=v(s),a=v(e),r=0,i=a.length;i>r;r++)y(a[r],o[r]);if(t)if(n)for(a=a||v(e),o=o||v(s),r=0,i=a.length;i>r;r++)g(a[r],o[r]);else g(e,s);return o=v(s,"script"),o.length>0&&m(o,!u&&v(e,"script")),s},buildFragment:function(e,t,n,r){for(var i,a,o,s,u,l,c=t.createDocumentFragment(),p=[],f=0,h=e.length;h>f;f++)if(i=e[f],i||0===i)if("object"===Z.type(i))Z.merge(p,i.nodeType?[i]:i);else if(jt.test(i)){for(a=a||c.appendChild(t.createElement("div")),o=(Pt.exec(i)||["",""])[1].toLowerCase(),s=Rt[o]||Rt._default,a.innerHTML=s[1]+i.replace(At,"<$1></$2>")+s[2],l=s[0];l--;)a=a.lastChild;Z.merge(p,a.childNodes),a=c.firstChild,a.textContent=""}else p.push(t.createTextNode(i));for(c.textContent="",f=0;i=p[f++];)if((!r||-1===Z.inArray(i,r))&&(u=Z.contains(i.ownerDocument,i),a=v(c.appendChild(i),"script"),u&&m(a),n))for(l=0;i=a[l++];)$t.test(i.type||"")&&n.push(i);return c},cleanData:function(e){for(var t,n,r,i,a=Z.event.special,o=0;void 0!==(n=e[o]);o++){if(Z.acceptData(n)&&(i=n[vt.expando],i&&(t=vt.cache[i]))){if(t.events)for(r in t.events)a[r]?Z.event.remove(n,r):Z.removeEvent(n,r,t.handle);vt.cache[i]&&delete vt.cache[i]}delete yt.cache[n[yt.expando]]}}}),Z.fn.extend({text:function(e){return gt(this,function(e){return void 0===e?Z.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=e)})},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=f(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=f(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,r=e?Z.filter(e,this):this,i=0;null!=(n=r[i]);i++)t||1!==n.nodeType||Z.cleanData(v(n)),n.parentNode&&(t&&Z.contains(n.ownerDocument,n)&&m(v(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(Z.cleanData(v(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return Z.clone(this,e,t)})},html:function(e){return gt(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!It.test(e)&&!Rt[(Pt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(At,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(Z.cleanData(v(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=arguments[0];return this.domManip(arguments,function(t){e=this.parentNode,Z.cleanData(v(this)),e&&e.replaceChild(t,this)}),e&&(e.length||e.nodeType)?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t){e=z.apply([],e);var n,r,i,a,o,s,u=0,l=this.length,c=this,p=l-1,f=e[0],m=Z.isFunction(f);if(m||l>1&&"string"==typeof f&&!Y.checkClone&&Dt.test(f))return this.each(function(n){var r=c.eq(n);m&&(e[0]=f.call(this,n,r.html())),r.domManip(e,t)});if(l&&(n=Z.buildFragment(e,this[0].ownerDocument,!1,this),r=n.firstChild,1===n.childNodes.length&&(n=r),r)){for(i=Z.map(v(n,"script"),h),a=i.length;l>u;u++)o=n,u!==p&&(o=Z.clone(o,!0,!0),a&&Z.merge(i,v(o,"script"))),t.call(this[u],o,u);if(a)for(s=i[i.length-1].ownerDocument,Z.map(i,d),u=0;a>u;u++)o=i[u],$t.test(o.type||"")&&!vt.access(o,"globalEval")&&Z.contains(s,o)&&(o.src?Z._evalUrl&&Z._evalUrl(o.src):Z.globalEval(o.textContent.replace(qt,"")))}return this}}),Z.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){Z.fn[e]=function(e){for(var n,r=[],i=Z(e),a=i.length-1,o=0;a>=o;o++)n=o===a?this:this.clone(!0),Z(i[o])[t](n),G.apply(r,n.get());return this.pushStack(r)}});var Ht,Ft={},Mt=/^margin/,Ut=new RegExp("^("+xt+")(?!px)[a-z%]+$","i"),Bt=function(t){return t.ownerDocument.defaultView.opener?t.ownerDocument.defaultView.getComputedStyle(t,null):e.getComputedStyle(t,null)};!function(){function t(){o.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",o.innerHTML="",i.appendChild(a);var t=e.getComputedStyle(o,null);n="1%"!==t.top,r="4px"===t.width,i.removeChild(a)}var n,r,i=K.documentElement,a=K.createElement("div"),o=K.createElement("div");o.style&&(o.style.backgroundClip="content-box",o.cloneNode(!0).style.backgroundClip="",Y.clearCloneStyle="content-box"===o.style.backgroundClip,a.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",a.appendChild(o),e.getComputedStyle&&Z.extend(Y,{pixelPosition:function(){return t(),n},boxSizingReliable:function(){return null==r&&t(),r},reliableMarginRight:function(){var t,n=o.appendChild(K.createElement("div"));return n.style.cssText=o.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",n.style.marginRight=n.style.width="0",o.style.width="1px",i.appendChild(a),t=!parseFloat(e.getComputedStyle(n,null).marginRight),i.removeChild(a),o.removeChild(n),t}}))}(),Z.swap=function(e,t,n,r){var i,a,o={};for(a in t)o[a]=e.style[a],e.style[a]=t[a];i=n.apply(e,r||[]);for(a in t)e.style[a]=o[a];return i};var zt=/^(none|table(?!-c[ea]).+)/,Gt=new RegExp("^("+xt+")(.*)$","i"),Wt=new RegExp("^([+-])=("+xt+")","i"),Vt={position:"absolute",visibility:"hidden",display:"block"},Xt={letterSpacing:"0",fontWeight:"400"},Jt=["Webkit","O","Moz","ms"];Z.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=x(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,a,o,s=Z.camelCase(t),u=e.style;return t=Z.cssProps[s]||(Z.cssProps[s]=E(u,s)),o=Z.cssHooks[t]||Z.cssHooks[s],void 0===n?o&&"get"in o&&void 0!==(i=o.get(e,!1,r))?i:u[t]:(a=typeof n,"string"===a&&(i=Wt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(Z.css(e,t)),a="number"),void(null!=n&&n===n&&("number"!==a||Z.cssNumber[s]||(n+="px"),Y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),o&&"set"in o&&void 0===(n=o.set(e,n,r))||(u[t]=n))))}},css:function(e,t,n,r){var i,a,o,s=Z.camelCase(t);return t=Z.cssProps[s]||(Z.cssProps[s]=E(e.style,s)),o=Z.cssHooks[t]||Z.cssHooks[s],o&&"get"in o&&(i=o.get(e,!0,n)),void 0===i&&(i=x(e,t,r)),"normal"===i&&t in Xt&&(i=Xt[t]),""===n||n?(a=parseFloat(i),n===!0||Z.isNumeric(a)?a||0:i):i}}),Z.each(["height","width"],function(e,t){Z.cssHooks[t]={get:function(e,n,r){return n?zt.test(Z.css(e,"display"))&&0===e.offsetWidth?Z.swap(e,Vt,function(){return N(e,t,r)}):N(e,t,r):void 0},set:function(e,n,r){var i=r&&Bt(e);return S(e,n,r?k(e,t,r,"border-box"===Z.css(e,"boxSizing",!1,i),i):0)}}}),Z.cssHooks.marginRight=w(Y.reliableMarginRight,function(e,t){return t?Z.swap(e,{display:"inline-block"},x,[e,"marginRight"]):void 0}),Z.each({margin:"",padding:"",border:"Width"},function(e,t){Z.cssHooks[e+t]={expand:function(n){for(var r=0,i={},a="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+wt[r]+t]=a[r]||a[r-2]||a[0];return i}},Mt.test(e)||(Z.cssHooks[e+t].set=S)}),Z.fn.extend({css:function(e,t){return gt(this,function(e,t,n){var r,i,a={},o=0;if(Z.isArray(t)){for(r=Bt(e),i=t.length;i>o;o++)a[t[o]]=Z.css(e,t[o],!1,r);return a}return void 0!==n?Z.style(e,t,n):Z.css(e,t)},e,t,arguments.length>1)},show:function(){return T(this,!0)},hide:function(){return T(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Et(this)?Z(this).show():Z(this).hide()})}}),Z.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,a){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=a||(Z.cssNumber[n]?"":"px")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.pos=t=this.options.duration?Z.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=Z.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){Z.fx.step[e.prop]?Z.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[Z.cssProps[e.prop]]||Z.cssHooks[e.prop])?Z.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},Z.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},Z.fx=O.prototype.init,Z.fx.step={};var Yt,Kt,Qt=/^(?:toggle|show|hide)$/,Zt=new RegExp("^(?:([+-])=|)("+xt+")([a-z%]*)$","i"),en=/queueHooks$/,tn=[j],nn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Zt.exec(t),a=i&&i[3]||(Z.cssNumber[e]?"":"px"),o=(Z.cssNumber[e]||"px"!==a&&+r)&&Zt.exec(Z.css(n.elem,e)),s=1,u=20;if(o&&o[3]!==a){a=a||o[3],i=i||[],o=+r||1;do s=s||".5",o/=s,Z.style(n.elem,e,o+a);while(s!==(s=n.cur()/r)&&1!==s&&--u)}return i&&(o=n.start=+o||+r||0,n.unit=a,n.end=i[1]?o+(i[1]+1)*i[2]:+i[2]),n}]};Z.Animation=Z.extend(D,{tweener:function(e,t){Z.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,r=0,i=e.length;i>r;r++)n=e[r],nn[n]=nn[n]||[],nn[n].unshift(t)},prefilter:function(e,t){t?tn.unshift(e):tn.push(e)}}),Z.speed=function(e,t,n){var r=e&&"object"==typeof e?Z.extend({},e):{complete:n||!n&&t||Z.isFunction(e)&&e,duration:e,easing:n&&t||t&&!Z.isFunction(t)&&t};return r.duration=Z.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in Z.fx.speeds?Z.fx.speeds[r.duration]:Z.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){Z.isFunction(r.old)&&r.old.call(this),r.queue&&Z.dequeue(this,r.queue)},r},Z.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Et).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=Z.isEmptyObject(e),a=Z.speed(t,n,r),o=function(){var t=D(this,Z.extend({},e),a);(i||vt.get(this,"finish"))&&t.stop(!0)};return o.finish=o,i||a.queue===!1?this.each(o):this.queue(a.queue,o)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",a=Z.timers,o=vt.get(this);if(i)o[i]&&o[i].stop&&r(o[i]);else for(i in o)o[i]&&o[i].stop&&en.test(i)&&r(o[i]);for(i=a.length;i--;)a[i].elem!==this||null!=e&&a[i].queue!==e||(a[i].anim.stop(n),t=!1,a.splice(i,1));(t||!n)&&Z.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=vt.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],a=Z.timers,o=r?r.length:0;for(n.finish=!0,Z.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=a.length;t--;)a[t].elem===this&&a[t].queue===e&&(a[t].anim.stop(!0),a.splice(t,1));for(t=0;o>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);
-delete n.finish})}}),Z.each(["toggle","show","hide"],function(e,t){var n=Z.fn[t];Z.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(A(t,!0),e,r,i)}}),Z.each({slideDown:A("show"),slideUp:A("hide"),slideToggle:A("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){Z.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),Z.timers=[],Z.fx.tick=function(){var e,t=0,n=Z.timers;for(Yt=Z.now();t<n.length;t++)e=n[t],e()||n[t]!==e||n.splice(t--,1);n.length||Z.fx.stop(),Yt=void 0},Z.fx.timer=function(e){Z.timers.push(e),e()?Z.fx.start():Z.timers.pop()},Z.fx.interval=13,Z.fx.start=function(){Kt||(Kt=setInterval(Z.fx.tick,Z.fx.interval))},Z.fx.stop=function(){clearInterval(Kt),Kt=null},Z.fx.speeds={slow:600,fast:200,_default:400},Z.fn.delay=function(e,t){return e=Z.fx?Z.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},function(){var e=K.createElement("input"),t=K.createElement("select"),n=t.appendChild(K.createElement("option"));e.type="checkbox",Y.checkOn=""!==e.value,Y.optSelected=n.selected,t.disabled=!0,Y.optDisabled=!n.disabled,e=K.createElement("input"),e.value="t",e.type="radio",Y.radioValue="t"===e.value}();var rn,an,on=Z.expr.attrHandle;Z.fn.extend({attr:function(e,t){return gt(this,Z.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){Z.removeAttr(this,e)})}}),Z.extend({attr:function(e,t,n){var r,i,a=e.nodeType;return e&&3!==a&&8!==a&&2!==a?typeof e.getAttribute===kt?Z.prop(e,t,n):(1===a&&Z.isXMLDoc(e)||(t=t.toLowerCase(),r=Z.attrHooks[t]||(Z.expr.match.bool.test(t)?an:rn)),void 0===n?r&&"get"in r&&null!==(i=r.get(e,t))?i:(i=Z.find.attr(e,t),null==i?void 0:i):null!==n?r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:(e.setAttribute(t,n+""),n):void Z.removeAttr(e,t)):void 0},removeAttr:function(e,t){var n,r,i=0,a=t&&t.match(ht);if(a&&1===e.nodeType)for(;n=a[i++];)r=Z.propFix[n]||n,Z.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!Y.radioValue&&"radio"===t&&Z.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}}}),an={set:function(e,t,n){return t===!1?Z.removeAttr(e,n):e.setAttribute(n,n),n}},Z.each(Z.expr.match.bool.source.match(/\w+/g),function(e,t){var n=on[t]||Z.find.attr;on[t]=function(e,t,r){var i,a;return r||(a=on[t],on[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,on[t]=a),i}});var sn=/^(?:input|select|textarea|button)$/i;Z.fn.extend({prop:function(e,t){return gt(this,Z.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[Z.propFix[e]||e]})}}),Z.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,a,o=e.nodeType;return e&&3!==o&&8!==o&&2!==o?(a=1!==o||!Z.isXMLDoc(e),a&&(t=Z.propFix[t]||t,i=Z.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]):void 0},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||sn.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),Y.optSelected||(Z.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),Z.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){Z.propFix[this.toLowerCase()]=this});var un=/[\t\r\n\f]/g;Z.fn.extend({addClass:function(e){var t,n,r,i,a,o,s="string"==typeof e&&e,u=0,l=this.length;if(Z.isFunction(e))return this.each(function(t){Z(this).addClass(e.call(this,t,this.className))});if(s)for(t=(e||"").match(ht)||[];l>u;u++)if(n=this[u],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(un," "):" ")){for(a=0;i=t[a++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");o=Z.trim(r),n.className!==o&&(n.className=o)}return this},removeClass:function(e){var t,n,r,i,a,o,s=0===arguments.length||"string"==typeof e&&e,u=0,l=this.length;if(Z.isFunction(e))return this.each(function(t){Z(this).removeClass(e.call(this,t,this.className))});if(s)for(t=(e||"").match(ht)||[];l>u;u++)if(n=this[u],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(un," "):"")){for(a=0;i=t[a++];)for(;r.indexOf(" "+i+" ")>=0;)r=r.replace(" "+i+" "," ");o=e?Z.trim(r):"",n.className!==o&&(n.className=o)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):this.each(Z.isFunction(e)?function(n){Z(this).toggleClass(e.call(this,n,this.className,t),t)}:function(){if("string"===n)for(var t,r=0,i=Z(this),a=e.match(ht)||[];t=a[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else(n===kt||"boolean"===n)&&(this.className&&vt.set(this,"__className__",this.className),this.className=this.className||e===!1?"":vt.get(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,r=this.length;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(un," ").indexOf(t)>=0)return!0;return!1}});var ln=/\r/g;Z.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=Z.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,Z(this).val()):e,null==i?i="":"number"==typeof i?i+="":Z.isArray(i)&&(i=Z.map(i,function(e){return null==e?"":e+""})),t=Z.valHooks[this.type]||Z.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))})):i?(t=Z.valHooks[i.type]||Z.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(ln,""):null==n?"":n)):void 0}}),Z.extend({valHooks:{option:{get:function(e){var t=Z.find.attr(e,"value");return null!=t?t:Z.trim(Z.text(e))}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,a="select-one"===e.type||0>i,o=a?null:[],s=a?i+1:r.length,u=0>i?s:a?i:0;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(Y.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&Z.nodeName(n.parentNode,"optgroup"))){if(t=Z(n).val(),a)return t;o.push(t)}return o},set:function(e,t){for(var n,r,i=e.options,a=Z.makeArray(t),o=i.length;o--;)r=i[o],(r.selected=Z.inArray(r.value,a)>=0)&&(n=!0);return n||(e.selectedIndex=-1),a}}}}),Z.each(["radio","checkbox"],function(){Z.valHooks[this]={set:function(e,t){return Z.isArray(t)?e.checked=Z.inArray(Z(e).val(),t)>=0:void 0}},Y.checkOn||(Z.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),Z.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){Z.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),Z.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var cn=Z.now(),pn=/\?/;Z.parseJSON=function(e){return JSON.parse(e+"")},Z.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=void 0}return(!t||t.getElementsByTagName("parsererror").length)&&Z.error("Invalid XML: "+e),t};var fn=/#.*$/,hn=/([?&])_=[^&]*/,dn=/^(.*?):[ \t]*([^\r\n]*)$/gm,mn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,gn=/^(?:GET|HEAD)$/,vn=/^\/\//,yn=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,bn={},_n={},xn="*/".concat("*"),wn=e.location.href,En=yn.exec(wn.toLowerCase())||[];Z.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:wn,type:"GET",isLocal:mn.test(En[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":xn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":Z.parseJSON,"text xml":Z.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?q(q(e,Z.ajaxSettings),t):q(Z.ajaxSettings,e)},ajaxPrefilter:$(bn),ajaxTransport:$(_n),ajax:function(e,t){function n(e,t,n,o){var u,c,v,y,_,w=t;2!==b&&(b=2,s&&clearTimeout(s),r=void 0,a=o||"",x.readyState=e>0?4:0,u=e>=200&&300>e||304===e,n&&(y=R(p,x,n)),y=H(p,y,x,u),u?(p.ifModified&&(_=x.getResponseHeader("Last-Modified"),_&&(Z.lastModified[i]=_),_=x.getResponseHeader("etag"),_&&(Z.etag[i]=_)),204===e||"HEAD"===p.type?w="nocontent":304===e?w="notmodified":(w=y.state,c=y.data,v=y.error,u=!v)):(v=w,(e||!w)&&(w="error",0>e&&(e=0))),x.status=e,x.statusText=(t||w)+"",u?d.resolveWith(f,[c,w,x]):d.rejectWith(f,[x,w,v]),x.statusCode(g),g=void 0,l&&h.trigger(u?"ajaxSuccess":"ajaxError",[x,p,u?c:v]),m.fireWith(f,[x,w]),l&&(h.trigger("ajaxComplete",[x,p]),--Z.active||Z.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,i,a,o,s,u,l,c,p=Z.ajaxSetup({},t),f=p.context||p,h=p.context&&(f.nodeType||f.jquery)?Z(f):Z.event,d=Z.Deferred(),m=Z.Callbacks("once memory"),g=p.statusCode||{},v={},y={},b=0,_="canceled",x={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!o)for(o={};t=dn.exec(a);)o[t[1].toLowerCase()]=t[2];t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=y[n]=y[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)g[t]=[g[t],e[t]];else x.always(e[x.status]);return this},abort:function(e){var t=e||_;return r&&r.abort(t),n(0,t),this}};if(d.promise(x).complete=m.add,x.success=x.done,x.error=x.fail,p.url=((e||p.url||wn)+"").replace(fn,"").replace(vn,En[1]+"//"),p.type=t.method||t.type||p.method||p.type,p.dataTypes=Z.trim(p.dataType||"*").toLowerCase().match(ht)||[""],null==p.crossDomain&&(u=yn.exec(p.url.toLowerCase()),p.crossDomain=!(!u||u[1]===En[1]&&u[2]===En[2]&&(u[3]||("http:"===u[1]?"80":"443"))===(En[3]||("http:"===En[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=Z.param(p.data,p.traditional)),L(bn,p,t,x),2===b)return x;l=Z.event&&p.global,l&&0===Z.active++&&Z.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!gn.test(p.type),i=p.url,p.hasContent||(p.data&&(i=p.url+=(pn.test(i)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=hn.test(i)?i.replace(hn,"$1_="+cn++):i+(pn.test(i)?"&":"?")+"_="+cn++)),p.ifModified&&(Z.lastModified[i]&&x.setRequestHeader("If-Modified-Since",Z.lastModified[i]),Z.etag[i]&&x.setRequestHeader("If-None-Match",Z.etag[i])),(p.data&&p.hasContent&&p.contentType!==!1||t.contentType)&&x.setRequestHeader("Content-Type",p.contentType),x.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+xn+"; q=0.01":""):p.accepts["*"]);for(c in p.headers)x.setRequestHeader(c,p.headers[c]);if(p.beforeSend&&(p.beforeSend.call(f,x,p)===!1||2===b))return x.abort();_="abort";for(c in{success:1,error:1,complete:1})x[c](p[c]);if(r=L(_n,p,t,x)){x.readyState=1,l&&h.trigger("ajaxSend",[x,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){x.abort("timeout")},p.timeout));try{b=1,r.send(v,n)}catch(w){if(!(2>b))throw w;n(-1,w)}}else n(-1,"No Transport");return x},getJSON:function(e,t,n){return Z.get(e,t,n,"json")},getScript:function(e,t){return Z.get(e,void 0,t,"script")}}),Z.each(["get","post"],function(e,t){Z[t]=function(e,n,r,i){return Z.isFunction(n)&&(i=i||r,r=n,n=void 0),Z.ajax({url:e,type:t,dataType:i,data:n,success:r})}}),Z._evalUrl=function(e){return Z.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},Z.fn.extend({wrapAll:function(e){var t;return Z.isFunction(e)?this.each(function(t){Z(this).wrapAll(e.call(this,t))}):(this[0]&&(t=Z(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return this.each(Z.isFunction(e)?function(t){Z(this).wrapInner(e.call(this,t))}:function(){var t=Z(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=Z.isFunction(e);return this.each(function(n){Z(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){Z.nodeName(this,"body")||Z(this).replaceWith(this.childNodes)}).end()}}),Z.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0},Z.expr.filters.visible=function(e){return!Z.expr.filters.hidden(e)};var Sn=/%20/g,kn=/\[\]$/,Nn=/\r?\n/g,Tn=/^(?:submit|button|image|reset|file)$/i,On=/^(?:input|select|textarea|keygen)/i;Z.param=function(e,t){var n,r=[],i=function(e,t){t=Z.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=Z.ajaxSettings&&Z.ajaxSettings.traditional),Z.isArray(e)||e.jquery&&!Z.isPlainObject(e))Z.each(e,function(){i(this.name,this.value)});else for(n in e)F(n,e[n],t,i);return r.join("&").replace(Sn,"+")},Z.fn.extend({serialize:function(){return Z.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=Z.prop(this,"elements");return e?Z.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!Z(this).is(":disabled")&&On.test(this.nodeName)&&!Tn.test(e)&&(this.checked||!St.test(e))}).map(function(e,t){var n=Z(this).val();return null==n?null:Z.isArray(n)?Z.map(n,function(e){return{name:t.name,value:e.replace(Nn,"\r\n")}}):{name:t.name,value:n.replace(Nn,"\r\n")}}).get()}}),Z.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var Cn=0,An={},Pn={0:200,1223:204},jn=Z.ajaxSettings.xhr();e.attachEvent&&e.attachEvent("onunload",function(){for(var e in An)An[e]()}),Y.cors=!!jn&&"withCredentials"in jn,Y.ajax=jn=!!jn,Z.ajaxTransport(function(e){var t;return Y.cors||jn&&!e.crossDomain?{send:function(n,r){var i,a=e.xhr(),o=++Cn;if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)a[i]=e.xhrFields[i];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)a.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete An[o],t=a.onload=a.onerror=null,"abort"===e?a.abort():"error"===e?r(a.status,a.statusText):r(Pn[a.status]||a.status,a.statusText,"string"==typeof a.responseText?{text:a.responseText}:void 0,a.getAllResponseHeaders()))}},a.onload=t(),a.onerror=t("error"),t=An[o]=t("abort");try{a.send(e.hasContent&&e.data||null)}catch(s){if(t)throw s}},abort:function(){t&&t()}}:void 0}),Z.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return Z.globalEval(e),e}}}),Z.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),Z.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=Z("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),K.head.appendChild(t[0])},abort:function(){n&&n()}}}});var In=[],Dn=/(=)\?(?=&|$)|\?\?/;Z.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=In.pop()||Z.expando+"_"+cn++;return this[e]=!0,e}}),Z.ajaxPrefilter("json jsonp",function(t,n,r){var i,a,o,s=t.jsonp!==!1&&(Dn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(t.data)&&"data");return s||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=Z.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Dn,"$1"+i):t.jsonp!==!1&&(t.url+=(pn.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return o||Z.error(i+" was not called"),o[0]},t.dataTypes[0]="json",a=e[i],e[i]=function(){o=arguments},r.always(function(){e[i]=a,t[i]&&(t.jsonpCallback=n.jsonpCallback,In.push(i)),o&&Z.isFunction(a)&&a(o[0]),o=a=void 0}),"script"):void 0}),Z.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||K;var r=ot.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=Z.buildFragment([e],t,i),i&&i.length&&Z(i).remove(),Z.merge([],r.childNodes))};var $n=Z.fn.load;Z.fn.load=function(e,t,n){if("string"!=typeof e&&$n)return $n.apply(this,arguments);var r,i,a,o=this,s=e.indexOf(" ");return s>=0&&(r=Z.trim(e.slice(s)),e=e.slice(0,s)),Z.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),o.length>0&&Z.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){a=arguments,o.html(r?Z("<div>").append(Z.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){o.each(n,a||[e.responseText,t,e])}),this},Z.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){Z.fn[t]=function(e){return this.on(t,e)}}),Z.expr.filters.animated=function(e){return Z.grep(Z.timers,function(t){return e===t.elem}).length};var Ln=e.document.documentElement;Z.offset={setOffset:function(e,t,n){var r,i,a,o,s,u,l,c=Z.css(e,"position"),p=Z(e),f={};"static"===c&&(e.style.position="relative"),s=p.offset(),a=Z.css(e,"top"),u=Z.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(a+u).indexOf("auto")>-1,l?(r=p.position(),o=r.top,i=r.left):(o=parseFloat(a)||0,i=parseFloat(u)||0),Z.isFunction(t)&&(t=t.call(e,n,s)),null!=t.top&&(f.top=t.top-s.top+o),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):p.css(f)}},Z.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){Z.offset.setOffset(this,e,t)});var t,n,r=this[0],i={top:0,left:0},a=r&&r.ownerDocument;return a?(t=a.documentElement,Z.contains(t,r)?(typeof r.getBoundingClientRect!==kt&&(i=r.getBoundingClientRect()),n=M(a),{top:i.top+n.pageYOffset-t.clientTop,left:i.left+n.pageXOffset-t.clientLeft}):i):void 0},position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===Z.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),Z.nodeName(e[0],"html")||(r=e.offset()),r.top+=Z.css(e[0],"borderTopWidth",!0),r.left+=Z.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-Z.css(n,"marginTop",!0),left:t.left-r.left-Z.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||Ln;e&&!Z.nodeName(e,"html")&&"static"===Z.css(e,"position");)e=e.offsetParent;return e||Ln})}}),Z.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;Z.fn[t]=function(i){return gt(this,function(t,i,a){var o=M(t);return void 0===a?o?o[n]:t[i]:void(o?o.scrollTo(r?e.pageXOffset:a,r?a:e.pageYOffset):t[i]=a)},t,i,arguments.length,null)}}),Z.each(["top","left"],function(e,t){Z.cssHooks[t]=w(Y.pixelPosition,function(e,n){return n?(n=x(e,t),Ut.test(n)?Z(e).position()[t]+"px":n):void 0})}),Z.each({Height:"height",Width:"width"},function(e,t){Z.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){Z.fn[r]=function(r,i){var a=arguments.length&&(n||"boolean"!=typeof r),o=n||(r===!0||i===!0?"margin":"border");return gt(this,function(t,n,r){var i;return Z.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?Z.css(t,n,o):Z.style(t,n,r,o)},t,a?r:void 0,a,null)}})}),Z.fn.size=function(){return this.length},Z.fn.andSelf=Z.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return Z});var qn=e.jQuery,Rn=e.$;return Z.noConflict=function(t){return e.$===Z&&(e.$=Rn),t&&e.jQuery===Z&&(e.jQuery=qn),Z},typeof t===kt&&(e.jQuery=e.$=Z),Z}),window.Modernizr=function(e,t,n){function r(e){b.cssText=e}function i(e,t){return r(E.join(e+";")+(t||""))}function a(e,t){return typeof e===t}function o(e,t){return!!~(""+e).indexOf(t)}function s(e,t){for(var r in e){var i=e[r];if(!o(i,"-")&&b[i]!==n)return"pfx"==t?i:!0}return!1}function u(e,t,r){for(var i in e){var o=t[e[i]];if(o!==n)return r===!1?e[i]:a(o,"function")?o.bind(r||t):o}return!1}function l(e,t,n){var r=e.charAt(0).toUpperCase()+e.slice(1),i=(e+" "+k.join(r+" ")+r).split(" ");return a(t,"string")||a(t,"undefined")?s(i,t):(i=(e+" "+N.join(r+" ")+r).split(" "),u(i,t,n))}function c(){d.input=function(n){for(var r=0,i=n.length;i>r;r++)A[n[r]]=!!(n[r]in _);return A.list&&(A.list=!(!t.createElement("datalist")||!e.HTMLDataListElement)),A}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),d.inputtypes=function(e){for(var r,i,a,o=0,s=e.length;s>o;o++)_.setAttribute("type",i=e[o]),r="text"!==_.type,r&&(_.value=x,_.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(i)&&_.style.WebkitAppearance!==n?(g.appendChild(_),a=t.defaultView,r=a.getComputedStyle&&"textfield"!==a.getComputedStyle(_,null).WebkitAppearance&&0!==_.offsetHeight,g.removeChild(_)):/^(search|tel)$/.test(i)||(r=/^(url|email)$/.test(i)?_.checkValidity&&_.checkValidity()===!1:_.value!=x)),C[e[o]]=!!r;return C}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var p,f,h="2.8.3",d={},m=!0,g=t.documentElement,v="modernizr",y=t.createElement(v),b=y.style,_=t.createElement("input"),x=":)",w={}.toString,E=" -webkit- -moz- -o- -ms- ".split(" "),S="Webkit Moz O ms",k=S.split(" "),N=S.toLowerCase().split(" "),T={svg:"http://www.w3.org/2000/svg"},O={},C={},A={},P=[],j=P.slice,I=function(e,n,r,i){var a,o,s,u,l=t.createElement("div"),c=t.body,p=c||t.createElement("body");if(parseInt(r,10))for(;r--;)s=t.createElement("div"),s.id=i?i[r]:v+(r+1),l.appendChild(s);return a=["&#173;",'<style id="s',v,'">',e,"</style>"].join(""),l.id=v,(c?l:p).innerHTML+=a,p.appendChild(l),c||(p.style.background="",p.style.overflow="hidden",u=g.style.overflow,g.style.overflow="hidden",g.appendChild(p)),o=n(l,e),c?l.parentNode.removeChild(l):(p.parentNode.removeChild(p),g.style.overflow=u),!!o},D=function(t){var n=e.matchMedia||e.msMatchMedia;if(n)return n(t)&&n(t).matches||!1;var r;return I("@media "+t+" { #"+v+" { position: absolute; } }",function(t){r="absolute"==(e.getComputedStyle?getComputedStyle(t,null):t.currentStyle).position}),r},$=function(){function e(e,i){i=i||t.createElement(r[e]||"div"),e="on"+e;var o=e in i;return o||(i.setAttribute||(i=t.createElement("div")),i.setAttribute&&i.removeAttribute&&(i.setAttribute(e,""),o=a(i[e],"function"),a(i[e],"undefined")||(i[e]=n),i.removeAttribute(e))),i=null,o}var r={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return e}(),L={}.hasOwnProperty;f=a(L,"undefined")||a(L.call,"undefined")?function(e,t){return t in e&&a(e.constructor.prototype[t],"undefined")}:function(e,t){return L.call(e,t)},Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError;var n=j.call(arguments,1),r=function(){if(this instanceof r){var i=function(){};i.prototype=t.prototype;var a=new i,o=t.apply(a,n.concat(j.call(arguments)));return Object(o)===o?o:a}return t.apply(e,n.concat(j.call(arguments)))};return r}),O.flexbox=function(){return l("flexWrap")},O.flexboxlegacy=function(){return l("boxDirection")},O.canvas=function(){var e=t.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))},O.canvastext=function(){return!(!d.canvas||!a(t.createElement("canvas").getContext("2d").fillText,"function"))},O.webgl=function(){return!!e.WebGLRenderingContext},O.touch=function(){var n;return"ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch?n=!0:I(["@media (",E.join("touch-enabled),("),v,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(e){n=9===e.offsetTop}),n},O.geolocation=function(){return"geolocation"in navigator},O.postmessage=function(){return!!e.postMessage},O.websqldatabase=function(){return!!e.openDatabase},O.indexedDB=function(){return!!l("indexedDB",e)},O.hashchange=function(){return $("hashchange",e)&&(t.documentMode===n||t.documentMode>7)},O.history=function(){return!(!e.history||!history.pushState)},O.draganddrop=function(){var e=t.createElement("div");return"draggable"in e||"ondragstart"in e&&"ondrop"in e},O.websockets=function(){return"WebSocket"in e||"MozWebSocket"in e},O.rgba=function(){return r("background-color:rgba(150,255,150,.5)"),o(b.backgroundColor,"rgba")},O.hsla=function(){return r("background-color:hsla(120,40%,100%,.5)"),o(b.backgroundColor,"rgba")||o(b.backgroundColor,"hsla")},O.multiplebgs=function(){return r("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(b.background)},O.backgroundsize=function(){return l("backgroundSize")},O.borderimage=function(){return l("borderImage")},O.borderradius=function(){return l("borderRadius")},O.boxshadow=function(){return l("boxShadow")},O.textshadow=function(){return""===t.createElement("div").style.textShadow},O.opacity=function(){return i("opacity:.55"),/^0.55$/.test(b.opacity)},O.cssanimations=function(){return l("animationName")},O.csscolumns=function(){return l("columnCount")},O.cssgradients=function(){var e="background-image:",t="gradient(linear,left top,right bottom,from(#9f9),to(white));",n="linear-gradient(left top,#9f9, white);";return r((e+"-webkit- ".split(" ").join(t+e)+E.join(n+e)).slice(0,-e.length)),o(b.backgroundImage,"gradient")},O.cssreflections=function(){return l("boxReflect")},O.csstransforms=function(){return!!l("transform")},O.csstransforms3d=function(){var e=!!l("perspective");return e&&"webkitPerspective"in g.style&&I("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(t){e=9===t.offsetLeft&&3===t.offsetHeight}),e},O.csstransitions=function(){return l("transition")},O.fontface=function(){var e;return I('@font-face {font-family:"font";src:url("https://")}',function(n,r){var i=t.getElementById("smodernizr"),a=i.sheet||i.styleSheet,o=a?a.cssRules&&a.cssRules[0]?a.cssRules[0].cssText:a.cssText||"":"";e=/src/i.test(o)&&0===o.indexOf(r.split(" ")[0])}),e},O.generatedcontent=function(){var e;return I(["#",v,"{font:0/0 a}#",v,':after{content:"',x,'";visibility:hidden;font:3px/1 a}'].join(""),function(t){e=t.offsetHeight>=3}),e},O.video=function(){var e=t.createElement("video"),n=!1;try{(n=!!e.canPlayType)&&(n=new Boolean(n),n.ogg=e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),n.h264=e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),n.webm=e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(r){}return n},O.audio=function(){var e=t.createElement("audio"),n=!1;try{(n=!!e.canPlayType)&&(n=new Boolean(n),n.ogg=e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),n.mp3=e.canPlayType("audio/mpeg;").replace(/^no$/,""),n.wav=e.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),n.m4a=(e.canPlayType("audio/x-m4a;")||e.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(r){}return n},O.localstorage=function(){try{return localStorage.setItem(v,v),localStorage.removeItem(v),!0}catch(e){return!1}},O.sessionstorage=function(){try{return sessionStorage.setItem(v,v),sessionStorage.removeItem(v),!0}catch(e){return!1}},O.webworkers=function(){return!!e.Worker},O.applicationcache=function(){return!!e.applicationCache},O.svg=function(){return!!t.createElementNS&&!!t.createElementNS(T.svg,"svg").createSVGRect},O.inlinesvg=function(){var e=t.createElement("div");return e.innerHTML="<svg/>",(e.firstChild&&e.firstChild.namespaceURI)==T.svg},O.smil=function(){return!!t.createElementNS&&/SVGAnimate/.test(w.call(t.createElementNS(T.svg,"animate")))},O.svgclippaths=function(){return!!t.createElementNS&&/SVGClipPath/.test(w.call(t.createElementNS(T.svg,"clipPath")))};for(var q in O)f(O,q)&&(p=q.toLowerCase(),d[p]=O[q](),P.push((d[p]?"":"no-")+p));return d.input||c(),d.addTest=function(e,t){if("object"==typeof e)for(var r in e)f(e,r)&&d.addTest(r,e[r]);else{if(e=e.toLowerCase(),d[e]!==n)return d;t="function"==typeof t?t():t,"undefined"!=typeof m&&m&&(g.className+=" "+(t?"":"no-")+e),d[e]=t}return d},r(""),y=_=null,function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x<style>"+t+"</style>",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=y.elements;return"string"==typeof e?e.split(" "):e}function i(e){var t=v[e[m]];return t||(t={},g++,e[m]=g,v[g]=t),t}function a(e,n,r){if(n||(n=t),c)return n.createElement(e);r||(r=i(n));var a;return a=r.cache[e]?r.cache[e].cloneNode():d.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!a.canHaveChildren||h.test(e)||a.tagUrn?a:r.frag.appendChild(a)}function o(e,n){if(e||(e=t),c)return e.createDocumentFragment();n=n||i(e);for(var a=n.frag.cloneNode(),o=0,s=r(),u=s.length;u>o;o++)a.createElement(s[o]);return a}function s(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return y.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(y,t.frag)}function u(e){e||(e=t);var r=i(e);return!y.shivCSS||l||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),c||s(e,r),e}var l,c,p="3.7.0",f=e.html5||{},h=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,d=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,m="_html5shiv",g=0,v={};!function(){try{var e=t.createElement("a");e.innerHTML="<xyz></xyz>",l="hidden"in e,c=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){l=!0,c=!0}}();var y={elements:f.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:p,shivCSS:f.shivCSS!==!1,supportsUnknownElements:c,shivMethods:f.shivMethods!==!1,type:"default",shivDocument:u,createElement:a,createDocumentFragment:o};e.html5=y,u(t)}(this,t),d._version=h,d._prefixes=E,d._domPrefixes=N,d._cssomPrefixes=k,d.mq=D,d.hasEvent=$,d.testProp=function(e){return s([e])},d.testAllProps=l,d.testStyles=I,d.prefixed=function(e,t,n){return t?l(e,t,n):l(e,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(m?" js "+P.join(" "):""),d}(this,this.document),define("modernizr",function(e){return function(){var t;return t||e.Modernizr}}(this)),function(e,t,n,r){"use strict";function i(e){return("string"==typeof e||e instanceof String)&&(e=e.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g,"")),e}var a=function(t){for(var n=t.length,r=e("head");n--;)0===r.has("."+t[n]).length&&r.append('<meta class="'+t[n]+'" />')};a(["foundation-mq-small","foundation-mq-small-only","foundation-mq-medium","foundation-mq-medium-only","foundation-mq-large","foundation-mq-large-only","foundation-mq-xlarge","foundation-mq-xlarge-only","foundation-mq-xxlarge","foundation-data-attribute-namespace"]),e(function(){"undefined"!=typeof FastClick&&"undefined"!=typeof n.body&&FastClick.attach(n.body)});var o=function(t,r){if("string"==typeof t){if(r){var i;if(r.jquery){if(i=r[0],!i)return r}else i=r;return e(i.querySelectorAll(t))}return e(n.querySelectorAll(t))
-}return e(t,r)},s=function(e){var t=[];return e||t.push("data"),this.namespace.length>0&&t.push(this.namespace),t.push(this.name),t.join("-")},u=function(e){for(var t=e.split("-"),n=t.length,r=[];n--;)0!==n?r.push(t[n]):this.namespace.length>0?r.push(this.namespace,t[n]):r.push(t[n]);return r.reverse().join("-")},l=function(t,n){var r=this,i=function(){var i=o(this),a=!i.data(r.attr_name(!0)+"-init");i.data(r.attr_name(!0)+"-init",e.extend({},r.settings,n||t,r.data_options(i))),a&&r.events(this)};return o(this.scope).is("["+this.attr_name()+"]")?i.call(this.scope):o("["+this.attr_name()+"]",this.scope).each(i),"string"==typeof t?this[t].call(this,n):void 0},c=function(e,t){function n(){t(e[0])}function r(){if(this.one("load",n),/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var e=this.attr("src"),t=e.match(/\?/)?"&":"?";t+="random="+(new Date).getTime(),this.attr("src",e+t)}}return e.attr("src")?void(e[0].complete||4===e[0].readyState?n():r.call(e)):void n()};t.matchMedia=t.matchMedia||function(e){var t,n=e.documentElement,r=n.firstElementChild||n.firstChild,i=e.createElement("body"),a=e.createElement("div");return a.id="mq-test-1",a.style.cssText="position:absolute;top:-100em",i.style.background="none",i.appendChild(a),function(e){return a.innerHTML='&shy;<style media="'+e+'"> #mq-test-1 { width: 42px; }</style>',n.insertBefore(i,r),t=42===a.offsetWidth,n.removeChild(i),{matches:t,media:e}}}(n),function(e){function n(){r&&(o(n),u&&e.fx.tick())}for(var r,i=0,a=["webkit","moz"],o=t.requestAnimationFrame,s=t.cancelAnimationFrame,u="undefined"!=typeof e.fx;i<a.length&&!o;i++)o=t[a[i]+"RequestAnimationFrame"],s=s||t[a[i]+"CancelAnimationFrame"]||t[a[i]+"CancelRequestAnimationFrame"];o?(t.requestAnimationFrame=o,t.cancelAnimationFrame=s,u&&(e.fx.timer=function(t){t()&&e.timers.push(t)&&!r&&(r=!0,n())},e.fx.stop=function(){r=!1})):(t.requestAnimationFrame=function(e){var n=(new Date).getTime(),r=Math.max(0,16-(n-i)),a=t.setTimeout(function(){e(n+r)},r);return i=n+r,a},t.cancelAnimationFrame=function(e){clearTimeout(e)})}(e),t.Foundation={name:"Foundation",version:"5.5.1",media_queries:{small:o(".foundation-mq-small").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),"small-only":o(".foundation-mq-small-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),medium:o(".foundation-mq-medium").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),"medium-only":o(".foundation-mq-medium-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),large:o(".foundation-mq-large").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),"large-only":o(".foundation-mq-large-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),xlarge:o(".foundation-mq-xlarge").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),"xlarge-only":o(".foundation-mq-xlarge-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),xxlarge:o(".foundation-mq-xxlarge").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,"")},stylesheet:e("<style></style>").appendTo("head")[0].sheet,global:{namespace:r},init:function(e,n,r,i,a){var s=[e,r,i,a],u=[];if(this.rtl=/rtl/i.test(o("html").attr("dir")),this.scope=e||this.scope,this.set_namespace(),n&&"string"==typeof n&&!/reflow/i.test(n))this.libs.hasOwnProperty(n)&&u.push(this.init_lib(n,s));else for(var l in this.libs)u.push(this.init_lib(l,n));return o(t).load(function(){o(t).trigger("resize.fndtn.clearing").trigger("resize.fndtn.dropdown").trigger("resize.fndtn.equalizer").trigger("resize.fndtn.interchange").trigger("resize.fndtn.joyride").trigger("resize.fndtn.magellan").trigger("resize.fndtn.topbar").trigger("resize.fndtn.slider")}),e},init_lib:function(t,n){return this.libs.hasOwnProperty(t)?(this.patch(this.libs[t]),n&&n.hasOwnProperty(t)?("undefined"!=typeof this.libs[t].settings?e.extend(!0,this.libs[t].settings,n[t]):"undefined"!=typeof this.libs[t].defaults&&e.extend(!0,this.libs[t].defaults,n[t]),this.libs[t].init.apply(this.libs[t],[this.scope,n[t]])):(n=n instanceof Array?n:new Array(n),this.libs[t].init.apply(this.libs[t],n))):function(){}},patch:function(e){e.scope=this.scope,e.namespace=this.global.namespace,e.rtl=this.rtl,e.data_options=this.utils.data_options,e.attr_name=s,e.add_namespace=u,e.bindings=l,e.S=this.utils.S},inherit:function(e,t){for(var n=t.split(" "),r=n.length;r--;)this.utils.hasOwnProperty(n[r])&&(e[n[r]]=this.utils[n[r]])},set_namespace:function(){var t=this.global.namespace===r?e(".foundation-data-attribute-namespace").css("font-family"):this.global.namespace;this.global.namespace=t===r||/false/i.test(t)?"":t},libs:{},utils:{S:o,throttle:function(e,t){var n=null;return function(){var r=this,i=arguments;null==n&&(n=setTimeout(function(){e.apply(r,i),n=null},t))}},debounce:function(e,t,n){var r,i;return function(){var a=this,o=arguments,s=function(){r=null,n||(i=e.apply(a,o))},u=n&&!r;return clearTimeout(r),r=setTimeout(s,t),u&&(i=e.apply(a,o)),i}},data_options:function(t,n){function r(e){return!isNaN(e-0)&&null!==e&&""!==e&&e!==!1&&e!==!0}function i(t){return"string"==typeof t?e.trim(t):t}n=n||"options";var a,o,s,u={},l=function(e){var t=Foundation.global.namespace;return e.data(t.length>0?t+"-"+n:n)},c=l(t);if("object"==typeof c)return c;for(s=(c||":").split(";"),a=s.length;a--;)o=s[a].split(":"),o=[o[0],o.slice(1).join(":")],/true/i.test(o[1])&&(o[1]=!0),/false/i.test(o[1])&&(o[1]=!1),r(o[1])&&(o[1]=-1===o[1].indexOf(".")?parseInt(o[1],10):parseFloat(o[1])),2===o.length&&o[0].length>0&&(u[i(o[0])]=i(o[1]));return u},register_media:function(t,n){Foundation.media_queries[t]===r&&(e("head").append('<meta class="'+n+'"/>'),Foundation.media_queries[t]=i(e("."+n).css("font-family")))},add_custom_rule:function(e,t){if(t===r&&Foundation.stylesheet)Foundation.stylesheet.insertRule(e,Foundation.stylesheet.cssRules.length);else{var n=Foundation.media_queries[t];n!==r&&Foundation.stylesheet.insertRule("@media "+Foundation.media_queries[t]+"{ "+e+" }")}},image_loaded:function(e,t){var n=this,r=e.length;0===r&&t(e),e.each(function(){c(n.S(this),function(){r-=1,0===r&&t(e)})})},random_str:function(){return this.fidx||(this.fidx=0),this.prefix=this.prefix||[this.name||"F",(+new Date).toString(36)].join("-"),this.prefix+(this.fidx++).toString(36)},match:function(e){return t.matchMedia(e).matches},is_small_up:function(){return this.match(Foundation.media_queries.small)},is_medium_up:function(){return this.match(Foundation.media_queries.medium)},is_large_up:function(){return this.match(Foundation.media_queries.large)},is_xlarge_up:function(){return this.match(Foundation.media_queries.xlarge)},is_xxlarge_up:function(){return this.match(Foundation.media_queries.xxlarge)},is_small_only:function(){return!(this.is_medium_up()||this.is_large_up()||this.is_xlarge_up()||this.is_xxlarge_up())},is_medium_only:function(){return this.is_medium_up()&&!this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_large_only:function(){return this.is_medium_up()&&this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xxlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&this.is_xxlarge_up()}}},e.fn.foundation=function(){var e=Array.prototype.slice.call(arguments,0);return this.each(function(){return Foundation.init.apply(Foundation,[this].concat(e)),this})}}(jQuery,window,window.document),define("foundation.core",["jquery","modernizr"],function(e){return function(){var t;return t||e.Foundation}}(this)),define("sunstone-config",["require","jquery"],function(e){e("jquery");var t=$.extend(!0,{},config),n={isTabEnabled:function(e){var n=t.view.enabled_tabs[e];return n},isTabActionEnabled:function(e,n,r){var i=!1,a=t.view.tabs[e];return void 0!=a&&(i=r?a.panel_tabs_actions[r][n]:a.actions[n]),i},isTabPanelEnabled:function(e,n){if(t.view.tabs[e]){var r=t.view.tabs[e].panel_tabs[n];return r}return!1},isFeatureEnabled:function(e){return t.view.features&&t.view.features[e]?!0:!1},tabTableColumns:function(e){var n=t.view.tabs[e].table_columns;return n?n:[]},isTemplateCreationTabEnabled:function(e){if(t.view.tabs["templates-tab"]){var n=t.view.tabs["templates-tab"].template_creation_tabs[e];return n}return!1},dashboardWidgets:function(e){var n=t.view.tabs["dashboard-tab"][e];return n?n:[]},tableOrder:function(){return t.user_config.table_order},provision:{dashboard:{isEnabled:function(e){if(t.view.tabs["provision-tab"]){var n=t.view.tabs["provision-tab"].dashboard[e];return n}return!1}},create_vm:{isEnabled:function(e){return t.view.tabs["provision-tab"]&&t.view.tabs["provision-tab"].create_vm?t.view.tabs["provision-tab"].create_vm[e]:!1}},logo:t.view.provision_logo||"images/one_small_logo.png"},autoRefresh:t.view.autorefresh};return n}),define("utils/locale",["require"],function(){var e=function(e){var t;return(null==t||""==t)&&(t=e),t};return{tr:e}}),function(e,t){"function"==typeof define&&define.amd?define("hbs/handlebars",[],t):"object"==typeof exports?module.exports=t():e.Handlebars=e.Handlebars||t()}(this,function(){var e=function(){"use strict";function e(e){this.string=e}var t;return e.prototype.toString=function(){return""+this.string},t=e}(),t=function(e){"use strict";function t(e){return u[e]}function n(e){for(var t=1;t<arguments.length;t++)for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e}function r(e){return e instanceof s?e.toString():null==e?"":e?(e=""+e,c.test(e)?e.replace(l,t):e):e+""}function i(e){return e||0===e?h(e)&&0===e.length?!0:!1:!0}function a(e,t){return(e?e+".":"")+t}var o={},s=e,u={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},l=/[&<>"'`]/g,c=/[&<>"'`]/;o.extend=n;var p=Object.prototype.toString;o.toString=p;var f=function(e){return"function"==typeof e};f(/x/)&&(f=function(e){return"function"==typeof e&&"[object Function]"===p.call(e)});var f;o.isFunction=f;var h=Array.isArray||function(e){return e&&"object"==typeof e?"[object Array]"===p.call(e):!1};return o.isArray=h,o.escapeExpression=r,o.isEmpty=i,o.appendContextPath=a,o}(e),n=function(){"use strict";function e(e,t){var r;t&&t.firstLine&&(r=t.firstLine,e+=" - "+r+":"+t.firstColumn);for(var i=Error.prototype.constructor.call(this,e),a=0;a<n.length;a++)this[n[a]]=i[n[a]];r&&(this.lineNumber=r,this.column=t.firstColumn)}var t,n=["description","fileName","lineNumber","message","name","number","stack"];return e.prototype=new Error,t=e}(),r=function(e,t){"use strict";function n(e,t){this.helpers=e||{},this.partials=t||{},r(this)}function r(e){e.registerHelper("helperMissing",function(){if(1===arguments.length)return void 0;throw new o("Missing helper: '"+arguments[arguments.length-1].name+"'")}),e.registerHelper("blockHelperMissing",function(t,n){var r=n.inverse,i=n.fn;if(t===!0)return i(this);if(t===!1||null==t)return r(this);if(c(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):r(this);if(n.data&&n.ids){var o=g(n.data);o.contextPath=a.appendContextPath(n.data.contextPath,n.name),n={data:o}}return i(t,n)}),e.registerHelper("each",function(e,t){if(!t)throw new o("Must pass iterator to #each");var n,r,i=t.fn,s=t.inverse,u=0,l="";if(t.data&&t.ids&&(r=a.appendContextPath(t.data.contextPath,t.ids[0])+"."),p(e)&&(e=e.call(this)),t.data&&(n=g(t.data)),e&&"object"==typeof e)if(c(e))for(var f=e.length;f>u;u++)n&&(n.index=u,n.first=0===u,n.last=u===e.length-1,r&&(n.contextPath=r+u)),l+=i(e[u],{data:n});else for(var h in e)e.hasOwnProperty(h)&&(n&&(n.key=h,n.index=u,n.first=0===u,r&&(n.contextPath=r+h)),l+=i(e[h],{data:n}),u++);return 0===u&&(l=s(this)),l}),e.registerHelper("if",function(e,t){return p(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||a.isEmpty(e)?t.inverse(this):t.fn(this)}),e.registerHelper("unless",function(t,n){return e.helpers["if"].call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})}),e.registerHelper("with",function(e,t){p(e)&&(e=e.call(this));var n=t.fn;if(a.isEmpty(e))return t.inverse(this);if(t.data&&t.ids){var r=g(t.data);r.contextPath=a.appendContextPath(t.data.contextPath,t.ids[0]),t={data:r}}return n(e,t)}),e.registerHelper("log",function(t,n){var r=n.data&&null!=n.data.level?parseInt(n.data.level,10):1;e.log(r,t)}),e.registerHelper("lookup",function(e,t){return e&&e[t]})}var i={},a=e,o=t,s="2.0.0";i.VERSION=s;var u=6;i.COMPILER_REVISION=u;var l={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1"};i.REVISION_CHANGES=l;var c=a.isArray,p=a.isFunction,f=a.toString,h="[object Object]";i.HandlebarsEnvironment=n,n.prototype={constructor:n,logger:d,log:m,registerHelper:function(e,t){if(f.call(e)===h){if(t)throw new o("Arg not supported with multiple helpers");a.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){f.call(e)===h?a.extend(this.partials,e):this.partials[e]=t},unregisterPartial:function(e){delete this.partials[e]}};var d={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(e,t){if(d.level<=e){var n=d.methodMap[e];"undefined"!=typeof console&&console[n]&&console[n].call(console,t)}}};i.logger=d;var m=d.log;i.log=m;var g=function(e){var t=a.extend({},e);return t._parent=e,t};return i.createFrame=g,i}(t,n),i=function(e,t,n){"use strict";function r(e){var t=e&&e[0]||1,n=f;if(t!==n){if(n>t){var r=h[n],i=h[t];throw new p("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+r+") or downgrade your runtime to an older version ("+i+").")}throw new p("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}}function i(e,t){if(!t)throw new p("No environment passed to template");if(!e||!e.main)throw new p("Unknown template object: "+typeof e);t.VM.checkRevision(e.compiler);var n=function(n,r,i,a,o,s,u,l,f){o&&(a=c.extend({},a,o));var h=t.VM.invokePartial.call(this,n,i,a,s,u,l,f);if(null==h&&t.compile){var d={helpers:s,partials:u,data:l,depths:f};u[i]=t.compile(n,{data:void 0!==l,compat:e.compat},t),h=u[i](a,d)}if(null!=h){if(r){for(var m=h.split("\n"),g=0,v=m.length;v>g&&(m[g]||g+1!==v);g++)m[g]=r+m[g];h=m.join("\n")}return h}throw new p("The partial "+i+" could not be compiled when running in runtime-only mode")},r={lookup:function(e,t){for(var n=e.length,r=0;n>r;r++)if(e[r]&&null!=e[r][t])return e[r][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:c.escapeExpression,invokePartial:n,fn:function(t){return e[t]},programs:[],program:function(e,t,n){var r=this.programs[e],i=this.fn(e);return t||n?r=a(this,e,i,t,n):r||(r=this.programs[e]=a(this,e,i)),r},data:function(e,t){for(;e&&t--;)e=e._parent;return e},merge:function(e,t){var n=e||t;return e&&t&&e!==t&&(n=c.extend({},t,e)),n},noop:t.VM.noop,compilerInfo:e.compiler},i=function(t,n){n=n||{};var a=n.data;i._setup(n),!n.partial&&e.useData&&(a=u(t,a));var o;return e.useDepths&&(o=n.depths?[t].concat(n.depths):[t]),e.main.call(r,t,r.helpers,r.partials,a,o)};return i.isTop=!0,i._setup=function(n){n.partial?(r.helpers=n.helpers,r.partials=n.partials):(r.helpers=r.merge(n.helpers,t.helpers),e.usePartial&&(r.partials=r.merge(n.partials,t.partials)))},i._child=function(t,n,i){if(e.useDepths&&!i)throw new p("must pass parent depths");return a(r,t,e[t],n,i)},i}function a(e,t,n,r,i){var a=function(t,a){return a=a||{},n.call(e,t,e.helpers,e.partials,a.data||r,i&&[t].concat(i))};return a.program=t,a.depth=i?i.length:0,a}function o(e,t,n,r,i,a,o){var s={partial:!0,helpers:r,partials:i,data:a,depths:o};if(void 0===e)throw new p("The partial "+t+" could not be found");return e instanceof Function?e(n,s):void 0}function s(){return""}function u(e,t){return t&&"root"in t||(t=t?d(t):{},t.root=e),t}var l={},c=e,p=t,f=n.COMPILER_REVISION,h=n.REVISION_CHANGES,d=n.createFrame;return l.checkRevision=r,l.template=i,l.program=a,l.invokePartial=o,l.noop=s,l}(t,n,r),a=function(e,t,n,r,i){"use strict";var a,o=e,s=t,u=n,l=r,c=i,p=function(){var e=new o.HandlebarsEnvironment;return l.extend(e,o),e.SafeString=s,e.Exception=u,e.Utils=l,e.escapeExpression=l.escapeExpression,e.VM=c,e.template=function(t){return c.template(t,e)},e},f=p();return f.create=p,f["default"]=f,a=f}(r,e,n,t,i),o=function(e){"use strict";function t(e){e=e||{},this.firstLine=e.first_line,this.firstColumn=e.first_column,this.lastColumn=e.last_column,this.lastLine=e.last_line}var n,r=e,i={ProgramNode:function(e,n,r){t.call(this,r),this.type="program",this.statements=e,this.strip=n},MustacheNode:function(e,n,r,a,o){if(t.call(this,o),this.type="mustache",this.strip=a,null!=r&&r.charAt){var s=r.charAt(3)||r.charAt(2);this.escaped="{"!==s&&"&"!==s}else this.escaped=!!r;this.sexpr=e instanceof i.SexprNode?e:new i.SexprNode(e,n),this.id=this.sexpr.id,this.params=this.sexpr.params,this.hash=this.sexpr.hash,this.eligibleHelper=this.sexpr.eligibleHelper,this.isHelper=this.sexpr.isHelper},SexprNode:function(e,n,r){t.call(this,r),this.type="sexpr",this.hash=n;var i=this.id=e[0],a=this.params=e.slice(1);this.isHelper=!(!a.length&&!n),this.eligibleHelper=this.isHelper||i.isSimple},PartialNode:function(e,n,r,i,a){t.call(this,a),this.type="partial",this.partialName=e,this.context=n,this.hash=r,this.strip=i,this.strip.inlineStandalone=!0},BlockNode:function(e,n,r,i,a){t.call(this,a),this.type="block",this.mustache=e,this.program=n,this.inverse=r,this.strip=i,r&&!n&&(this.isInverse=!0)},RawBlockNode:function(e,n,a,o){if(t.call(this,o),e.sexpr.id.original!==a)throw new r(e.sexpr.id.original+" doesn't match "+a,this);n=new i.ContentNode(n,o),this.type="block",this.mustache=e,this.program=new i.ProgramNode([n],{},o)},ContentNode:function(e,n){t.call(this,n),this.type="content",this.original=this.string=e},HashNode:function(e,n){t.call(this,n),this.type="hash",this.pairs=e},IdNode:function(e,n){t.call(this,n),this.type="ID";for(var i="",a=[],o=0,s="",u=0,l=e.length;l>u;u++){var c=e[u].part;if(i+=(e[u].separator||"")+c,".."===c||"."===c||"this"===c){if(a.length>0)throw new r("Invalid path: "+i,this);".."===c?(o++,s+="../"):this.isScoped=!0}else a.push(c)}this.original=i,this.parts=a,this.string=a.join("."),this.depth=o,this.idName=s+this.string,this.isSimple=1===e.length&&!this.isScoped&&0===o,this.stringModeValue=this.string},PartialNameNode:function(e,n){t.call(this,n),this.type="PARTIAL_NAME",this.name=e.original},DataNode:function(e,n){t.call(this,n),this.type="DATA",this.id=e,this.stringModeValue=e.stringModeValue,this.idName="@"+e.stringModeValue},StringNode:function(e,n){t.call(this,n),this.type="STRING",this.original=this.string=this.stringModeValue=e},NumberNode:function(e,n){t.call(this,n),this.type="NUMBER",this.original=this.number=e,this.stringModeValue=Number(e)},BooleanNode:function(e,n){t.call(this,n),this.type="BOOLEAN",this.bool=e,this.stringModeValue="true"===e},CommentNode:function(e,n){t.call(this,n),this.type="comment",this.comment=e,this.strip={inlineStandalone:!0}}};return n=i}(n),s=function(){"use strict";var e,t=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,CONTENT:12,COMMENT:13,openRawBlock:14,END_RAW_BLOCK:15,OPEN_RAW_BLOCK:16,sexpr:17,CLOSE_RAW_BLOCK:18,openBlock:19,block_option0:20,closeBlock:21,openInverse:22,block_option1:23,OPEN_BLOCK:24,CLOSE:25,OPEN_INVERSE:26,inverseAndProgram:27,INVERSE:28,OPEN_ENDBLOCK:29,path:30,OPEN:31,OPEN_UNESCAPED:32,CLOSE_UNESCAPED:33,OPEN_PARTIAL:34,partialName:35,param:36,partial_option0:37,partial_option1:38,sexpr_repetition0:39,sexpr_option0:40,dataName:41,STRING:42,NUMBER:43,BOOLEAN:44,OPEN_SEXPR:45,CLOSE_SEXPR:46,hash:47,hash_repetition_plus0:48,hashSegment:49,ID:50,EQUALS:51,DATA:52,pathSegments:53,SEP:54,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",12:"CONTENT",13:"COMMENT",15:"END_RAW_BLOCK",16:"OPEN_RAW_BLOCK",18:"CLOSE_RAW_BLOCK",24:"OPEN_BLOCK",25:"CLOSE",26:"OPEN_INVERSE",28:"INVERSE",29:"OPEN_ENDBLOCK",31:"OPEN",32:"OPEN_UNESCAPED",33:"CLOSE_UNESCAPED",34:"OPEN_PARTIAL",42:"STRING",43:"NUMBER",44:"BOOLEAN",45:"OPEN_SEXPR",46:"CLOSE_SEXPR",50:"ID",51:"EQUALS",52:"DATA",54:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[10,3],[14,3],[9,4],[9,4],[19,3],[22,3],[27,2],[21,3],[8,3],[8,3],[11,5],[11,4],[17,3],[17,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,3],[47,1],[49,3],[35,1],[35,1],[35,1],[41,2],[30,1],[53,3],[53,1],[6,0],[6,2],[20,0],[20,1],[23,0],[23,1],[37,0],[37,1],[38,0],[38,1],[39,0],[39,2],[40,0],[40,1],[48,1],[48,2]],performAction:function(e,t,n,r,i,a){var o=a.length-1;switch(i){case 1:return r.prepareProgram(a[o-1].statements,!0),a[o-1];case 2:this.$=new r.ProgramNode(r.prepareProgram(a[o]),{},this._$);break;case 3:this.$=a[o];break;case 4:this.$=a[o];break;case 5:this.$=a[o];break;case 6:this.$=a[o];break;case 7:this.$=new r.ContentNode(a[o],this._$);break;case 8:this.$=new r.CommentNode(a[o],this._$);break;case 9:this.$=new r.RawBlockNode(a[o-2],a[o-1],a[o],this._$);break;case 10:this.$=new r.MustacheNode(a[o-1],null,"","",this._$);break;case 11:this.$=r.prepareBlock(a[o-3],a[o-2],a[o-1],a[o],!1,this._$);break;case 12:this.$=r.prepareBlock(a[o-3],a[o-2],a[o-1],a[o],!0,this._$);break;case 13:this.$=new r.MustacheNode(a[o-1],null,a[o-2],r.stripFlags(a[o-2],a[o]),this._$);break;case 14:this.$=new r.MustacheNode(a[o-1],null,a[o-2],r.stripFlags(a[o-2],a[o]),this._$);break;case 15:this.$={strip:r.stripFlags(a[o-1],a[o-1]),program:a[o]};break;case 16:this.$={path:a[o-1],strip:r.stripFlags(a[o-2],a[o])};break;case 17:this.$=new r.MustacheNode(a[o-1],null,a[o-2],r.stripFlags(a[o-2],a[o]),this._$);break;case 18:this.$=new r.MustacheNode(a[o-1],null,a[o-2],r.stripFlags(a[o-2],a[o]),this._$);break;case 19:this.$=new r.PartialNode(a[o-3],a[o-2],a[o-1],r.stripFlags(a[o-4],a[o]),this._$);break;case 20:this.$=new r.PartialNode(a[o-2],void 0,a[o-1],r.stripFlags(a[o-3],a[o]),this._$);break;case 21:this.$=new r.SexprNode([a[o-2]].concat(a[o-1]),a[o],this._$);break;case 22:this.$=new r.SexprNode([a[o]],null,this._$);break;case 23:this.$=a[o];break;case 24:this.$=new r.StringNode(a[o],this._$);break;case 25:this.$=new r.NumberNode(a[o],this._$);break;case 26:this.$=new r.BooleanNode(a[o],this._$);break;case 27:this.$=a[o];break;case 28:a[o-1].isHelper=!0,this.$=a[o-1];break;case 29:this.$=new r.HashNode(a[o],this._$);break;case 30:this.$=[a[o-2],a[o]];break;case 31:this.$=new r.PartialNameNode(a[o],this._$);break;case 32:this.$=new r.PartialNameNode(new r.StringNode(a[o],this._$),this._$);break;case 33:this.$=new r.PartialNameNode(new r.NumberNode(a[o],this._$));break;case 34:this.$=new r.DataNode(a[o],this._$);break;case 35:this.$=new r.IdNode(a[o],this._$);break;case 36:a[o-2].push({part:a[o],separator:a[o-1]}),this.$=a[o-2];break;case 37:this.$=[{part:a[o]}];break;case 38:this.$=[];break;case 39:a[o-1].push(a[o]);break;case 48:this.$=[];break;case 49:a[o-1].push(a[o]);break;case 52:this.$=[a[o]];break;case 53:a[o-1].push(a[o])}},table:[{3:1,4:2,5:[2,38],6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],31:[2,38],32:[2,38],34:[2,38]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:[1,10],13:[1,11],14:16,16:[1,20],19:14,22:15,24:[1,18],26:[1,19],28:[2,2],29:[2,2],31:[1,12],32:[1,13],34:[1,17]},{1:[2,1]},{5:[2,39],12:[2,39],13:[2,39],16:[2,39],24:[2,39],26:[2,39],28:[2,39],29:[2,39],31:[2,39],32:[2,39],34:[2,39]},{5:[2,3],12:[2,3],13:[2,3],16:[2,3],24:[2,3],26:[2,3],28:[2,3],29:[2,3],31:[2,3],32:[2,3],34:[2,3]},{5:[2,4],12:[2,4],13:[2,4],16:[2,4],24:[2,4],26:[2,4],28:[2,4],29:[2,4],31:[2,4],32:[2,4],34:[2,4]},{5:[2,5],12:[2,5],13:[2,5],16:[2,5],24:[2,5],26:[2,5],28:[2,5],29:[2,5],31:[2,5],32:[2,5],34:[2,5]},{5:[2,6],12:[2,6],13:[2,6],16:[2,6],24:[2,6],26:[2,6],28:[2,6],29:[2,6],31:[2,6],32:[2,6],34:[2,6]},{5:[2,7],12:[2,7],13:[2,7],16:[2,7],24:[2,7],26:[2,7],28:[2,7],29:[2,7],31:[2,7],32:[2,7],34:[2,7]},{5:[2,8],12:[2,8],13:[2,8],16:[2,8],24:[2,8],26:[2,8],28:[2,8],29:[2,8],31:[2,8],32:[2,8],34:[2,8]},{17:21,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:27,30:22,41:23,50:[1,26],52:[1,25],53:24},{4:28,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{4:29,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{12:[1,30]},{30:32,35:31,42:[1,33],43:[1,34],50:[1,26],53:24},{17:35,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:36,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:37,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[1,38]},{18:[2,48],25:[2,48],33:[2,48],39:39,42:[2,48],43:[2,48],44:[2,48],45:[2,48],46:[2,48],50:[2,48],52:[2,48]},{18:[2,22],25:[2,22],33:[2,22],46:[2,22]},{18:[2,35],25:[2,35],33:[2,35],42:[2,35],43:[2,35],44:[2,35],45:[2,35],46:[2,35],50:[2,35],52:[2,35],54:[1,40]},{30:41,50:[1,26],53:24},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],52:[2,37],54:[2,37]},{33:[1,42]},{20:43,27:44,28:[1,45],29:[2,40]},{23:46,27:47,28:[1,45],29:[2,42]},{15:[1,48]},{25:[2,46],30:51,36:49,38:50,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],47:57,48:58,49:60,50:[1,59],52:[1,25],53:24},{25:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],50:[2,31],52:[2,31]},{25:[2,32],42:[2,32],43:[2,32],44:[2,32],45:[2,32],50:[2,32],52:[2,32]},{25:[2,33],42:[2,33],43:[2,33],44:[2,33],45:[2,33],50:[2,33],52:[2,33]},{25:[1,61]},{25:[1,62]},{18:[1,63]},{5:[2,17],12:[2,17],13:[2,17],16:[2,17],24:[2,17],26:[2,17],28:[2,17],29:[2,17],31:[2,17],32:[2,17],34:[2,17]},{18:[2,50],25:[2,50],30:51,33:[2,50],36:65,40:64,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],46:[2,50],47:66,48:58,49:60,50:[1,59],52:[1,25],53:24},{50:[1,67]},{18:[2,34],25:[2,34],33:[2,34],42:[2,34],43:[2,34],44:[2,34],45:[2,34],46:[2,34],50:[2,34],52:[2,34]},{5:[2,18],12:[2,18],13:[2,18],16:[2,18],24:[2,18],26:[2,18],28:[2,18],29:[2,18],31:[2,18],32:[2,18],34:[2,18]},{21:68,29:[1,69]},{29:[2,41]},{4:70,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{21:71,29:[1,69]},{29:[2,43]},{5:[2,9],12:[2,9],13:[2,9],16:[2,9],24:[2,9],26:[2,9],28:[2,9],29:[2,9],31:[2,9],32:[2,9],34:[2,9]},{25:[2,44],37:72,47:73,48:58,49:60,50:[1,74]},{25:[1,75]},{18:[2,23],25:[2,23],33:[2,23],42:[2,23],43:[2,23],44:[2,23],45:[2,23],46:[2,23],50:[2,23],52:[2,23]},{18:[2,24],25:[2,24],33:[2,24],42:[2,24],43:[2,24],44:[2,24],45:[2,24],46:[2,24],50:[2,24],52:[2,24]},{18:[2,25],25:[2,25],33:[2,25],42:[2,25],43:[2,25],44:[2,25],45:[2,25],46:[2,25],50:[2,25],52:[2,25]},{18:[2,26],25:[2,26],33:[2,26],42:[2,26],43:[2,26],44:[2,26],45:[2,26],46:[2,26],50:[2,26],52:[2,26]},{18:[2,27],25:[2,27],33:[2,27],42:[2,27],43:[2,27],44:[2,27],45:[2,27],46:[2,27],50:[2,27],52:[2,27]},{17:76,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[2,47]},{18:[2,29],25:[2,29],33:[2,29],46:[2,29],49:77,50:[1,74]},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],51:[1,78],52:[2,37],54:[2,37]},{18:[2,52],25:[2,52],33:[2,52],46:[2,52],50:[2,52]},{12:[2,13],13:[2,13],16:[2,13],24:[2,13],26:[2,13],28:[2,13],29:[2,13],31:[2,13],32:[2,13],34:[2,13]},{12:[2,14],13:[2,14],16:[2,14],24:[2,14],26:[2,14],28:[2,14],29:[2,14],31:[2,14],32:[2,14],34:[2,14]},{12:[2,10]},{18:[2,21],25:[2,21],33:[2,21],46:[2,21]},{18:[2,49],25:[2,49],33:[2,49],42:[2,49],43:[2,49],44:[2,49],45:[2,49],46:[2,49],50:[2,49],52:[2,49]},{18:[2,51],25:[2,51],33:[2,51],46:[2,51]},{18:[2,36],25:[2,36],33:[2,36],42:[2,36],43:[2,36],44:[2,36],45:[2,36],46:[2,36],50:[2,36],52:[2,36],54:[2,36]},{5:[2,11],12:[2,11],13:[2,11],16:[2,11],24:[2,11],26:[2,11],28:[2,11],29:[2,11],31:[2,11],32:[2,11],34:[2,11]},{30:79,50:[1,26],53:24},{29:[2,15]},{5:[2,12],12:[2,12],13:[2,12],16:[2,12],24:[2,12],26:[2,12],28:[2,12],29:[2,12],31:[2,12],32:[2,12],34:[2,12]},{25:[1,80]},{25:[2,45]},{51:[1,78]},{5:[2,20],12:[2,20],13:[2,20],16:[2,20],24:[2,20],26:[2,20],28:[2,20],29:[2,20],31:[2,20],32:[2,20],34:[2,20]},{46:[1,81]},{18:[2,53],25:[2,53],33:[2,53],46:[2,53],50:[2,53]},{30:51,36:82,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],50:[1,26],52:[1,25],53:24},{25:[1,83]},{5:[2,19],12:[2,19],13:[2,19],16:[2,19],24:[2,19],26:[2,19],28:[2,19],29:[2,19],31:[2,19],32:[2,19],34:[2,19]},{18:[2,28],25:[2,28],33:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],50:[2,28],52:[2,28]},{18:[2,30],25:[2,30],33:[2,30],46:[2,30],50:[2,30]},{5:[2,16],12:[2,16],13:[2,16],16:[2,16],24:[2,16],26:[2,16],28:[2,16],29:[2,16],31:[2,16],32:[2,16],34:[2,16]}],defaultActions:{4:[2,1],44:[2,41],47:[2,43],57:[2,47],63:[2,10],70:[2,15],73:[2,45]},parseError:function(e){throw new Error(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,r=[0],i=[null],a=[],o=this.table,s="",u=0,l=0,c=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;a.push(p);var f=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var h,d,m,g,v,y,b,_,x,w={};;){if(m=r[r.length-1],this.defaultActions[m]?g=this.defaultActions[m]:((null===h||"undefined"==typeof h)&&(h=t()),g=o[m]&&o[m][h]),"undefined"==typeof g||!g.length||!g[0]){var E="";if(!c){x=[];for(y in o[m])this.terminals_[y]&&y>2&&x.push("'"+this.terminals_[y]+"'");E=this.lexer.showPosition?"Parse error on line "+(u+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+x.join(", ")+", got '"+(this.terminals_[h]||h)+"'":"Parse error on line "+(u+1)+": Unexpected "+(1==h?"end of input":"'"+(this.terminals_[h]||h)+"'"),this.parseError(E,{text:this.lexer.match,token:this.terminals_[h]||h,line:this.lexer.yylineno,loc:p,expected:x})}}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+h);switch(g[0]){case 1:r.push(h),i.push(this.lexer.yytext),a.push(this.lexer.yylloc),r.push(g[1]),h=null,d?(h=d,d=null):(l=this.lexer.yyleng,s=this.lexer.yytext,u=this.lexer.yylineno,p=this.lexer.yylloc,c>0&&c--);break;case 2:if(b=this.productions_[g[1]][1],w.$=i[i.length-b],w._$={first_line:a[a.length-(b||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(b||1)].first_column,last_column:a[a.length-1].last_column},f&&(w._$.range=[a[a.length-(b||1)].range[0],a[a.length-1].range[1]]),v=this.performAction.call(w,s,l,u,this.yy,g[1],i,a),"undefined"!=typeof v)return v;b&&(r=r.slice(0,-1*b*2),i=i.slice(0,-1*b),a=a.slice(0,-1*b)),r.push(this.productions_[g[1]][0]),i.push(w.$),a.push(w._$),_=o[r[r.length-2]][r[r.length-1]],r.push(_);break;case 3:return!0}}return!0}},n=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this
-},more:function(){return this._more=!0,this},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r,i;this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),o=0;o<a.length&&(n=this._input.match(this.rules[a[o]]),!n||t&&!(n[0].length>t[0].length)||(t=n,r=o,this.options.flex));o++);return t?(i=t[0].match(/(?:\r\n?|\n).*/g),i&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,a[r],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,r){function i(e,n){return t.yytext=t.yytext.substr(e,t.yyleng-n)}switch(n){case 0:if("\\\\"===t.yytext.slice(-2)?(i(0,1),this.begin("mu")):"\\"===t.yytext.slice(-1)?(i(0,1),this.begin("emu")):this.begin("mu"),t.yytext)return 12;break;case 1:return 12;case 2:return this.popState(),12;case 3:return t.yytext=t.yytext.substr(5,t.yyleng-9),this.popState(),15;case 4:return 12;case 5:return i(0,4),this.popState(),13;case 6:return 45;case 7:return 46;case 8:return 16;case 9:return this.popState(),this.begin("raw"),18;case 10:return 34;case 11:return 24;case 12:return 29;case 13:return this.popState(),28;case 14:return this.popState(),28;case 15:return 26;case 16:return 26;case 17:return 32;case 18:return 31;case 19:this.popState(),this.begin("com");break;case 20:return i(3,5),this.popState(),13;case 21:return 31;case 22:return 51;case 23:return 50;case 24:return 50;case 25:return 54;case 26:break;case 27:return this.popState(),33;case 28:return this.popState(),25;case 29:return t.yytext=i(1,2).replace(/\\"/g,'"'),42;case 30:return t.yytext=i(1,2).replace(/\\'/g,"'"),42;case 31:return 52;case 32:return 44;case 33:return 44;case 34:return 43;case 35:return 50;case 36:return t.yytext=i(1,2),50;case 37:return"INVALID";case 38:return 5}},e.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{\/)))/,/^(?:[\s\S]*?--\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{!--)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{(~)?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)]))))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/],e.conditions={mu:{rules:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[5],inclusive:!1},raw:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,1,38],inclusive:!0}},e}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();return e=t}(),u=function(e){"use strict";function t(e,t){return{left:"~"===e.charAt(2),right:"~"===t.charAt(t.length-3)}}function n(e,t,n,r,u,c){if(e.sexpr.id.original!==r.path.original)throw new l(e.sexpr.id.original+" doesn't match "+r.path.original,e);var p=n&&n.program,f={left:e.strip.left,right:r.strip.right,openStandalone:a(t.statements),closeStandalone:i((p||t).statements)};if(e.strip.right&&o(t.statements,null,!0),p){var h=n.strip;h.left&&s(t.statements,null,!0),h.right&&o(p.statements,null,!0),r.strip.left&&s(p.statements,null,!0),i(t.statements)&&a(p.statements)&&(s(t.statements),o(p.statements))}else r.strip.left&&s(t.statements,null,!0);return u?new this.BlockNode(e,p,t,f,c):new this.BlockNode(e,t,p,f,c)}function r(e,t){for(var n=0,r=e.length;r>n;n++){var u=e[n],l=u.strip;if(l){var c=i(e,n,t,"partial"===u.type),p=a(e,n,t),f=l.openStandalone&&c,h=l.closeStandalone&&p,d=l.inlineStandalone&&c&&p;l.right&&o(e,n,!0),l.left&&s(e,n,!0),d&&(o(e,n),s(e,n)&&"partial"===u.type&&(u.indent=/([ \t]+$)/.exec(e[n-1].original)?RegExp.$1:"")),f&&(o((u.program||u.inverse).statements),s(e,n)),h&&(o(e,n),s((u.inverse||u.program).statements))}}return e}function i(e,t,n){void 0===t&&(t=e.length);var r=e[t-1],i=e[t-2];return r?"content"===r.type?(i||!n?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(r.original):void 0:n}function a(e,t,n){void 0===t&&(t=-1);var r=e[t+1],i=e[t+2];return r?"content"===r.type?(i||!n?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(r.original):void 0:n}function o(e,t,n){var r=e[null==t?0:t+1];if(r&&"content"===r.type&&(n||!r.rightStripped)){var i=r.string;r.string=r.string.replace(n?/^\s+/:/^[ \t]*\r?\n?/,""),r.rightStripped=r.string!==i}}function s(e,t,n){var r=e[null==t?e.length-1:t-1];if(r&&"content"===r.type&&(n||!r.leftStripped)){var i=r.string;return r.string=r.string.replace(n?/\s+$/:/[ \t]+$/,""),r.leftStripped=r.string!==i,r.leftStripped}}var u={},l=e;return u.stripFlags=t,u.prepareBlock=n,u.prepareProgram=r,u}(n),l=function(e,t,n,r){"use strict";function i(e){return e.constructor===s.ProgramNode?e:(o.yy=c,o.parse(e))}var a={},o=e,s=t,u=n,l=r.extend;a.parser=o;var c={};return l(c,u,s),a.parse=i,a}(s,o,u,t),c=function(e,t){"use strict";function n(){}function r(e,t,n){if(null==e||"string"!=typeof e&&e.constructor!==n.AST.ProgramNode)throw new s("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+e);t=t||{},"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var r=n.parse(e),i=(new n.Compiler).compile(r,t);return(new n.JavaScriptCompiler).compile(i,t)}function i(e,t,n){function r(){var r=n.parse(e),i=(new n.Compiler).compile(r,t),a=(new n.JavaScriptCompiler).compile(i,t,void 0,!0);return n.template(a)}if(null==e||"string"!=typeof e&&e.constructor!==n.AST.ProgramNode)throw new s("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+e);t=t||{},"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var i,a=function(e,t){return i||(i=r()),i.call(this,e,t)};return a._setup=function(e){return i||(i=r()),i._setup(e)},a._child=function(e,t,n){return i||(i=r()),i._child(e,t,n)},a}function a(e,t){if(e===t)return!0;if(u(e)&&u(t)&&e.length===t.length){for(var n=0;n<e.length;n++)if(!a(e[n],t[n]))return!1;return!0}}var o={},s=e,u=t.isArray,l=[].slice;return o.Compiler=n,n.prototype={compiler:n,equals:function(e){var t=this.opcodes.length;if(e.opcodes.length!==t)return!1;for(var n=0;t>n;n++){var r=this.opcodes[n],i=e.opcodes[n];if(r.opcode!==i.opcode||!a(r.args,i.args))return!1}for(t=this.children.length,n=0;t>n;n++)if(!this.children[n].equals(e.children[n]))return!1;return!0},guid:0,compile:function(e,t){this.opcodes=[],this.children=[],this.depths={list:[]},this.options=t,this.stringParams=t.stringParams,this.trackIds=t.trackIds;var n=this.options.knownHelpers;if(this.options.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},n)for(var r in n)this.options.knownHelpers[r]=n[r];return this.accept(e)},accept:function(e){return this[e.type](e)},program:function(e){for(var t=e.statements,n=0,r=t.length;r>n;n++)this.accept(t[n]);return this.isSimple=1===r,this.depths.list=this.depths.list.sort(function(e,t){return e-t}),this},compileProgram:function(e){var t,n=(new this.compiler).compile(e,this.options),r=this.guid++;this.usePartial=this.usePartial||n.usePartial,this.children[r]=n;for(var i=0,a=n.depths.list.length;a>i;i++)t=n.depths.list[i],2>t||this.addDepth(t-1);return r},block:function(e){var t=e.mustache,n=e.program,r=e.inverse;n&&(n=this.compileProgram(n)),r&&(r=this.compileProgram(r));var i=t.sexpr,a=this.classifySexpr(i);"helper"===a?this.helperSexpr(i,n,r):"simple"===a?(this.simpleSexpr(i),this.opcode("pushProgram",n),this.opcode("pushProgram",r),this.opcode("emptyHash"),this.opcode("blockValue",i.id.original)):(this.ambiguousSexpr(i,n,r),this.opcode("pushProgram",n),this.opcode("pushProgram",r),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},hash:function(e){var t,n,r=e.pairs;for(this.opcode("pushHash"),t=0,n=r.length;n>t;t++)this.pushParam(r[t][1]);for(;t--;)this.opcode("assignToHash",r[t][0]);this.opcode("popHash")},partial:function(e){var t=e.partialName;this.usePartial=!0,e.hash?this.accept(e.hash):this.opcode("push","undefined"),e.context?this.accept(e.context):(this.opcode("getContext",0),this.opcode("pushContext")),this.opcode("invokePartial",t.name,e.indent||""),this.opcode("append")},content:function(e){e.string&&this.opcode("appendContent",e.string)},mustache:function(e){this.sexpr(e.sexpr),this.opcode(e.escaped&&!this.options.noEscape?"appendEscaped":"append")},ambiguousSexpr:function(e,t,n){var r=e.id,i=r.parts[0],a=null!=t||null!=n;this.opcode("getContext",r.depth),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.ID(r),this.opcode("invokeAmbiguous",i,a)},simpleSexpr:function(e){var t=e.id;"DATA"===t.type?this.DATA(t):t.parts.length?this.ID(t):(this.addDepth(t.depth),this.opcode("getContext",t.depth),this.opcode("pushContext")),this.opcode("resolvePossibleLambda")},helperSexpr:function(e,t,n){var r=this.setupFullMustacheParams(e,t,n),i=e.id,a=i.parts[0];if(this.options.knownHelpers[a])this.opcode("invokeKnownHelper",r.length,a);else{if(this.options.knownHelpersOnly)throw new s("You specified knownHelpersOnly, but used the unknown helper "+a,e);i.falsy=!0,this.ID(i),this.opcode("invokeHelper",r.length,i.original,i.isSimple)}},sexpr:function(e){var t=this.classifySexpr(e);"simple"===t?this.simpleSexpr(e):"helper"===t?this.helperSexpr(e):this.ambiguousSexpr(e)},ID:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var t=e.parts[0];t?this.opcode("lookupOnContext",e.parts,e.falsy,e.isScoped):this.opcode("pushContext")},DATA:function(e){this.options.data=!0,this.opcode("lookupData",e.id.depth,e.id.parts)},STRING:function(e){this.opcode("pushString",e.string)},NUMBER:function(e){this.opcode("pushLiteral",e.number)},BOOLEAN:function(e){this.opcode("pushLiteral",e.bool)},comment:function(){},opcode:function(e){this.opcodes.push({opcode:e,args:l.call(arguments,1)})},addDepth:function(e){0!==e&&(this.depths[e]||(this.depths[e]=!0,this.depths.list.push(e)))},classifySexpr:function(e){var t=e.isHelper,n=e.eligibleHelper,r=this.options;if(n&&!t){var i=e.id.parts[0];r.knownHelpers[i]?t=!0:r.knownHelpersOnly&&(n=!1)}return t?"helper":n?"ambiguous":"simple"},pushParams:function(e){for(var t=0,n=e.length;n>t;t++)this.pushParam(e[t])},pushParam:function(e){this.stringParams?(e.depth&&this.addDepth(e.depth),this.opcode("getContext",e.depth||0),this.opcode("pushStringParam",e.stringModeValue,e.type),"sexpr"===e.type&&this.sexpr(e)):(this.trackIds&&this.opcode("pushId",e.type,e.idName||e.stringModeValue),this.accept(e))},setupFullMustacheParams:function(e,t,n){var r=e.params;return this.pushParams(r),this.opcode("pushProgram",t),this.opcode("pushProgram",n),e.hash?this.hash(e.hash):this.opcode("emptyHash"),r}},o.precompile=r,o.compile=i,o}(n,t),p=function(e,t){"use strict";function n(e){this.value=e}function r(){}var i,a=e.COMPILER_REVISION,o=e.REVISION_CHANGES,s=t;r.prototype={nameLookup:function(e,t){return r.isValidJavaScriptVariableName(t)?e+"."+t:e+"['"+t+"']"},depthedLookup:function(e){return this.aliases.lookup="this.lookup",'lookup(depths, "'+e+'")'},compilerInfo:function(){var e=a,t=o[e];return[e,t]},appendToBuffer:function(e){return this.environment.isSimple?"return "+e+";":{appendToBuffer:!0,content:e,toString:function(){return"buffer += "+e+";"}}},initializeBuffer:function(){return this.quotedString("")},namespace:"Handlebars",compile:function(e,t,n,r){this.environment=e,this.options=t,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!r,this.name=this.environment.name,this.isChild=!!n,this.context=n||{programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.compileChildren(e,t),this.useDepths=this.useDepths||e.depths.list.length||this.options.compat;var i,a,o,u=e.opcodes;for(a=0,o=u.length;o>a;a++)i=u[a],this[i.opcode].apply(this,i.args);if(this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new s("Compile completed with content left on stack");var l=this.createFunctionContext(r);if(this.isChild)return l;var c={compiler:this.compilerInfo(),main:l},p=this.context.programs;for(a=0,o=p.length;o>a;a++)p[a]&&(c[a]=p[a]);return this.environment.usePartial&&(c.usePartial=!0),this.options.data&&(c.useData=!0),this.useDepths&&(c.useDepths=!0),this.options.compat&&(c.compat=!0),r||(c.compiler=JSON.stringify(c.compiler),c=this.objectLiteral(c)),c},preamble:function(){this.lastContext=0,this.source=[]},createFunctionContext:function(e){var t="",n=this.stackVars.concat(this.registers.list);n.length>0&&(t+=", "+n.join(", "));for(var r in this.aliases)this.aliases.hasOwnProperty(r)&&(t+=", "+r+"="+this.aliases[r]);var i=["depth0","helpers","partials","data"];this.useDepths&&i.push("depths");var a=this.mergeSource(t);return e?(i.push(a),Function.apply(this,i)):"function("+i.join(",")+") {\n  "+a+"}"},mergeSource:function(e){for(var t,n,r="",i=!this.forceBuffer,a=0,o=this.source.length;o>a;a++){var s=this.source[a];s.appendToBuffer?t=t?t+"\n    + "+s.content:s.content:(t&&(r?r+="buffer += "+t+";\n  ":(n=!0,r=t+";\n  "),t=void 0),r+=s+"\n  ",this.environment.isSimple||(i=!1))}return i?(t||!r)&&(r+="return "+(t||'""')+";\n"):(e+=", buffer = "+(n?"":this.initializeBuffer()),r+=t?"return buffer + "+t+";\n":"return buffer;\n"),e&&(r="var "+e.substring(2)+(n?"":";\n  ")+r),r},blockValue:function(e){this.aliases.blockHelperMissing="helpers.blockHelperMissing";var t=[this.contextName(0)];this.setupParams(e,0,t);var n=this.popStack();t.splice(1,0,n),this.push("blockHelperMissing.call("+t.join(", ")+")")},ambiguousBlockValue:function(){this.aliases.blockHelperMissing="helpers.blockHelperMissing";var e=[this.contextName(0)];this.setupParams("",0,e,!0),this.flushInline();var t=this.topStack();e.splice(1,0,t),this.pushSource("if (!"+this.lastHelper+") { "+t+" = blockHelperMissing.call("+e.join(", ")+"); }")},appendContent:function(e){this.pendingContent&&(e=this.pendingContent+e),this.pendingContent=e},append:function(){this.flushInline();var e=this.popStack();this.pushSource("if ("+e+" != null) { "+this.appendToBuffer(e)+" }"),this.environment.isSimple&&this.pushSource("else { "+this.appendToBuffer("''")+" }")},appendEscaped:function(){this.aliases.escapeExpression="this.escapeExpression",this.pushSource(this.appendToBuffer("escapeExpression("+this.popStack()+")"))},getContext:function(e){this.lastContext=e},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(e,t,n){var r=0,i=e.length;for(n||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(e[r++]));i>r;r++)this.replaceStack(function(n){var i=this.nameLookup(n,e[r],"context");return t?" && "+i:" != null ? "+i+" : "+n})},lookupData:function(e,t){this.pushStackLiteral(e?"this.data(data, "+e+")":"data");for(var n=t.length,r=0;n>r;r++)this.replaceStack(function(e){return" && "+this.nameLookup(e,t[r],"data")})},resolvePossibleLambda:function(){this.aliases.lambda="this.lambda",this.push("lambda("+this.popStack()+", "+this.contextName(0)+")")},pushStringParam:function(e,t){this.pushContext(),this.pushString(t),"sexpr"!==t&&("string"==typeof e?this.pushString(e):this.pushStackLiteral(e))},emptyHash:function(){this.pushStackLiteral("{}"),this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}"))},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var e=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push("{"+e.ids.join(",")+"}"),this.stringParams&&(this.push("{"+e.contexts.join(",")+"}"),this.push("{"+e.types.join(",")+"}")),this.push("{\n    "+e.values.join(",\n    ")+"\n  }")},pushString:function(e){this.pushStackLiteral(this.quotedString(e))},push:function(e){return this.inlineStack.push(e),e},pushLiteral:function(e){this.pushStackLiteral(e)},pushProgram:function(e){this.pushStackLiteral(null!=e?this.programExpression(e):null)},invokeHelper:function(e,t,n){this.aliases.helperMissing="helpers.helperMissing";var r=this.popStack(),i=this.setupHelper(e,t),a=(n?i.name+" || ":"")+r+" || helperMissing";this.push("(("+a+").call("+i.callParams+"))")},invokeKnownHelper:function(e,t){var n=this.setupHelper(e,t);this.push(n.name+".call("+n.callParams+")")},invokeAmbiguous:function(e,t){this.aliases.functionType='"function"',this.aliases.helperMissing="helpers.helperMissing",this.useRegister("helper");var n=this.popStack();this.emptyHash();var r=this.setupHelper(0,e,t),i=this.lastHelper=this.nameLookup("helpers",e,"helper");this.push("((helper = (helper = "+i+" || "+n+") != null ? helper : helperMissing"+(r.paramsInit?"),("+r.paramsInit:"")+"),(typeof helper === functionType ? helper.call("+r.callParams+") : helper))")},invokePartial:function(e,t){var n=[this.nameLookup("partials",e,"partial"),"'"+t+"'","'"+e+"'",this.popStack(),this.popStack(),"helpers","partials"];this.options.data?n.push("data"):this.options.compat&&n.push("undefined"),this.options.compat&&n.push("depths"),this.push("this.invokePartial("+n.join(", ")+")")},assignToHash:function(e){var t,n,r,i=this.popStack();this.trackIds&&(r=this.popStack()),this.stringParams&&(n=this.popStack(),t=this.popStack());var a=this.hash;t&&a.contexts.push("'"+e+"': "+t),n&&a.types.push("'"+e+"': "+n),r&&a.ids.push("'"+e+"': "+r),a.values.push("'"+e+"': ("+i+")")},pushId:function(e,t){"ID"===e||"DATA"===e?this.pushString(t):this.pushStackLiteral("sexpr"===e?"true":"null")},compiler:r,compileChildren:function(e,t){for(var n,r,i=e.children,a=0,o=i.length;o>a;a++){n=i[a],r=new this.compiler;var s=this.matchExistingProgram(n);null==s?(this.context.programs.push(""),s=this.context.programs.length,n.index=s,n.name="program"+s,this.context.programs[s]=r.compile(n,t,this.context,!this.precompile),this.context.environments[s]=n,this.useDepths=this.useDepths||r.useDepths):(n.index=s,n.name="program"+s)}},matchExistingProgram:function(e){for(var t=0,n=this.context.environments.length;n>t;t++){var r=this.context.environments[t];if(r&&r.equals(e))return t}},programExpression:function(e){var t=this.environment.children[e],n=(t.depths.list,this.useDepths),r=[t.index,"data"];return n&&r.push("depths"),"this.program("+r.join(", ")+")"},useRegister:function(e){this.registers[e]||(this.registers[e]=!0,this.registers.list.push(e))},pushStackLiteral:function(e){return this.push(new n(e))},pushSource:function(e){this.pendingContent&&(this.source.push(this.appendToBuffer(this.quotedString(this.pendingContent))),this.pendingContent=void 0),e&&this.source.push(e)},pushStack:function(e){this.flushInline();var t=this.incrStack();return this.pushSource(t+" = "+e+";"),this.compileStack.push(t),t},replaceStack:function(e){{var t,r,i,a="";this.isInline()}if(!this.isInline())throw new s("replaceStack on non-inline");var o=this.popStack(!0);if(o instanceof n)a=t=o.value,i=!0;else{r=!this.stackSlot;var u=r?this.incrStack():this.topStackName();a="("+this.push(u)+" = "+o+")",t=this.topStack()}var l=e.call(this,t);i||this.popStack(),r&&this.stackSlot--,this.push("("+a+l+")")},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var e=this.inlineStack;if(e.length){this.inlineStack=[];for(var t=0,r=e.length;r>t;t++){var i=e[t];i instanceof n?this.compileStack.push(i):this.pushStack(i)}}},isInline:function(){return this.inlineStack.length},popStack:function(e){var t=this.isInline(),r=(t?this.inlineStack:this.compileStack).pop();if(!e&&r instanceof n)return r.value;if(!t){if(!this.stackSlot)throw new s("Invalid stack pop");this.stackSlot--}return r},topStack:function(){var e=this.isInline()?this.inlineStack:this.compileStack,t=e[e.length-1];return t instanceof n?t.value:t},contextName:function(e){return this.useDepths&&e?"depths["+e+"]":"depth"+e},quotedString:function(e){return'"'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(this.quotedString(n)+":"+e[n]);return"{"+t.join(",")+"}"},setupHelper:function(e,t,n){var r=[],i=this.setupParams(t,e,r,n),a=this.nameLookup("helpers",t,"helper");return{params:r,paramsInit:i,name:a,callParams:[this.contextName(0)].concat(r).join(", ")}},setupOptions:function(e,t,n){var r,i,a,o={},s=[],u=[],l=[];o.name=this.quotedString(e),o.hash=this.popStack(),this.trackIds&&(o.hashIds=this.popStack()),this.stringParams&&(o.hashTypes=this.popStack(),o.hashContexts=this.popStack()),i=this.popStack(),a=this.popStack(),(a||i)&&(a||(a="this.noop"),i||(i="this.noop"),o.fn=a,o.inverse=i);for(var c=t;c--;)r=this.popStack(),n[c]=r,this.trackIds&&(l[c]=this.popStack()),this.stringParams&&(u[c]=this.popStack(),s[c]=this.popStack());return this.trackIds&&(o.ids="["+l.join(",")+"]"),this.stringParams&&(o.types="["+u.join(",")+"]",o.contexts="["+s.join(",")+"]"),this.options.data&&(o.data="data"),o},setupParams:function(e,t,n,r){var i=this.objectLiteral(this.setupOptions(e,t,n));return r?(this.useRegister("options"),n.push("options"),"options="+i):(n.push(i),"")}};for(var u="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield".split(" "),l=r.RESERVED_WORDS={},c=0,p=u.length;p>c;c++)l[u[c]]=!0;return r.isValidJavaScriptVariableName=function(e){return!r.RESERVED_WORDS[e]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e)},i=r}(r,n),f=function(e,t,n,r,i){"use strict";var a,o=e,s=t,u=n.parser,l=n.parse,c=r.Compiler,p=r.compile,f=r.precompile,h=i,d=o.create,m=function(){var e=d();return e.compile=function(t,n){return p(t,n,e)},e.precompile=function(t,n){return f(t,n,e)},e.AST=s,e.Compiler=c,e.JavaScriptCompiler=h,e.Parser=u,e.parse=l,e};return o=m(),o.create=m,o["default"]=o,a=o}(a,o,l,c,p);return f}),define("hbs/underscore",[],function(){function e(t,n,r){if(t===n)return 0!==t||1/t==1/n;if(null==t||null==n)return t===n;if(t._chain&&(t=t._wrapped),n._chain&&(n=n._wrapped),t.isEqual&&x.isFunction(t.isEqual))return t.isEqual(n);if(n.isEqual&&x.isFunction(n.isEqual))return n.isEqual(t);var i=s.call(t);if(i!=s.call(n))return!1;switch(i){case"[object String]":return t==String(n);case"[object Number]":return t!=+t?n!=+n:0==t?1/t==1/n:t==+n;case"[object Date]":case"[object Boolean]":return+t==+n;case"[object RegExp]":return t.source==n.source&&t.global==n.global&&t.multiline==n.multiline&&t.ignoreCase==n.ignoreCase}if("object"!=typeof t||"object"!=typeof n)return!1;for(var a=r.length;a--;)if(r[a]==t)return!0;r.push(t);var o=0,u=!0;if("[object Array]"==i){if(o=t.length,u=o==n.length)for(;o--&&(u=o in t==o in n&&e(t[o],n[o],r)););}else{if("constructor"in t!="constructor"in n||t.constructor!=n.constructor)return!1;for(var l in t)if(x.has(t,l)&&(o++,!(u=x.has(n,l)&&e(t[l],n[l],r))))break;if(u){for(l in n)if(x.has(n,l)&&!o--)break;u=!o}}return r.pop(),u}var t={},n=Array.prototype,r=Object.prototype,i=Function.prototype,a=n.slice,o=n.unshift,s=r.toString,u=r.hasOwnProperty,l=n.forEach,c=n.map,p=n.reduce,f=n.reduceRight,h=n.filter,d=n.every,m=n.some,g=n.indexOf,v=n.lastIndexOf,y=Array.isArray,b=Object.keys,_=i.bind,x=function(e){return new j(e)};x.VERSION="1.3.3";var w=x.each=x.forEach=function(e,n,r){if(null!=e)if(l&&e.forEach===l)e.forEach(n,r);else if(e.length===+e.length){for(var i=0,a=e.length;a>i;i++)if(i in e&&n.call(r,e[i],i,e)===t)return}else for(var o in e)if(x.has(e,o)&&n.call(r,e[o],o,e)===t)return};x.map=x.collect=function(e,t,n){var r=[];return null==e?r:c&&e.map===c?e.map(t,n):(w(e,function(e,i,a){r[r.length]=t.call(n,e,i,a)}),e.length===+e.length&&(r.length=e.length),r)},x.reduce=x.foldl=x.inject=function(e,t,n,r){var i=arguments.length>2;if(null==e&&(e=[]),p&&e.reduce===p)return r&&(t=x.bind(t,r)),i?e.reduce(t,n):e.reduce(t);if(w(e,function(e,a,o){i?n=t.call(r,n,e,a,o):(n=e,i=!0)}),!i)throw new TypeError("Reduce of empty array with no initial value");return n},x.reduceRight=x.foldr=function(e,t,n,r){var i=arguments.length>2;if(null==e&&(e=[]),f&&e.reduceRight===f)return r&&(t=x.bind(t,r)),i?e.reduceRight(t,n):e.reduceRight(t);var a=x.toArray(e).reverse();return r&&!i&&(t=x.bind(t,r)),i?x.reduce(a,t,n,r):x.reduce(a,t)},x.find=x.detect=function(e,t,n){var r;return E(e,function(e,i,a){return t.call(n,e,i,a)?(r=e,!0):void 0}),r},x.filter=x.select=function(e,t,n){var r=[];return null==e?r:h&&e.filter===h?e.filter(t,n):(w(e,function(e,i,a){t.call(n,e,i,a)&&(r[r.length]=e)}),r)},x.reject=function(e,t,n){var r=[];return null==e?r:(w(e,function(e,i,a){t.call(n,e,i,a)||(r[r.length]=e)}),r)},x.every=x.all=function(e,n,r){var i=!0;return null==e?i:d&&e.every===d?e.every(n,r):(w(e,function(e,a,o){return(i=i&&n.call(r,e,a,o))?void 0:t}),!!i)};var E=x.some=x.any=function(e,n,r){n||(n=x.identity);var i=!1;return null==e?i:m&&e.some===m?e.some(n,r):(w(e,function(e,a,o){return i||(i=n.call(r,e,a,o))?t:void 0}),!!i)};x.include=x.contains=function(e,t){var n=!1;return null==e?n:g&&e.indexOf===g?-1!=e.indexOf(t):n=E(e,function(e){return e===t})},x.invoke=function(e,t){var n=a.call(arguments,2);return x.map(e,function(e){return(x.isFunction(t)?t||e:e[t]).apply(e,n)})},x.pluck=function(e,t){return x.map(e,function(e){return e[t]})},x.max=function(e,t,n){if(!t&&x.isArray(e)&&e[0]===+e[0])return Math.max.apply(Math,e);if(!t&&x.isEmpty(e))return-1/0;var r={computed:-1/0};return w(e,function(e,i,a){var o=t?t.call(n,e,i,a):e;o>=r.computed&&(r={value:e,computed:o})}),r.value},x.min=function(e,t,n){if(!t&&x.isArray(e)&&e[0]===+e[0])return Math.min.apply(Math,e);if(!t&&x.isEmpty(e))return 1/0;var r={computed:1/0};return w(e,function(e,i,a){var o=t?t.call(n,e,i,a):e;o<r.computed&&(r={value:e,computed:o})}),r.value},x.shuffle=function(e){var t,n=[];return w(e,function(e,r){t=Math.floor(Math.random()*(r+1)),n[r]=n[t],n[t]=e}),n},x.sortBy=function(e,t,n){var r=x.isFunction(t)?t:function(e){return e[t]};return x.pluck(x.map(e,function(e,t,i){return{value:e,criteria:r.call(n,e,t,i)}}).sort(function(e,t){var n=e.criteria,r=t.criteria;return void 0===n?1:void 0===r?-1:r>n?-1:n>r?1:0}),"value")},x.groupBy=function(e,t){var n={},r=x.isFunction(t)?t:function(e){return e[t]};return w(e,function(e,t){var i=r(e,t);(n[i]||(n[i]=[])).push(e)}),n},x.sortedIndex=function(e,t,n){n||(n=x.identity);for(var r=0,i=e.length;i>r;){var a=r+i>>1;n(e[a])<n(t)?r=a+1:i=a}return r},x.toArray=function(e){return e?x.isArray(e)?a.call(e):x.isArguments(e)?a.call(e):e.toArray&&x.isFunction(e.toArray)?e.toArray():x.values(e):[]},x.size=function(e){return x.isArray(e)?e.length:x.keys(e).length},x.first=x.head=x.take=function(e,t,n){return null==t||n?e[0]:a.call(e,0,t)},x.initial=function(e,t,n){return a.call(e,0,e.length-(null==t||n?1:t))},x.last=function(e,t,n){return null==t||n?e[e.length-1]:a.call(e,Math.max(e.length-t,0))},x.rest=x.tail=function(e,t,n){return a.call(e,null==t||n?1:t)},x.compact=function(e){return x.filter(e,function(e){return!!e})},x.flatten=function(e,t){return x.reduce(e,function(e,n){return x.isArray(n)?e.concat(t?n:x.flatten(n)):(e[e.length]=n,e)},[])},x.without=function(e){return x.difference(e,a.call(arguments,1))},x.uniq=x.unique=function(e,t,n){var r=n?x.map(e,n):e,i=[];return e.length<3&&(t=!0),x.reduce(r,function(n,r,a){return(t?x.last(n)===r&&n.length:x.include(n,r))||(n.push(r),i.push(e[a])),n},[]),i},x.union=function(){return x.uniq(x.flatten(arguments,!0))},x.intersection=x.intersect=function(e){var t=a.call(arguments,1);return x.filter(x.uniq(e),function(e){return x.every(t,function(t){return x.indexOf(t,e)>=0})})},x.difference=function(e){var t=x.flatten(a.call(arguments,1),!0);return x.filter(e,function(e){return!x.include(t,e)})},x.zip=function(){for(var e=a.call(arguments),t=x.max(x.pluck(e,"length")),n=new Array(t),r=0;t>r;r++)n[r]=x.pluck(e,""+r);return n},x.indexOf=function(e,t,n){if(null==e)return-1;var r,i;if(n)return r=x.sortedIndex(e,t),e[r]===t?r:-1;if(g&&e.indexOf===g)return e.indexOf(t);for(r=0,i=e.length;i>r;r++)if(r in e&&e[r]===t)return r;return-1},x.lastIndexOf=function(e,t){if(null==e)return-1;if(v&&e.lastIndexOf===v)return e.lastIndexOf(t);for(var n=e.length;n--;)if(n in e&&e[n]===t)return n;return-1},x.range=function(e,t,n){arguments.length<=1&&(t=e||0,e=0),n=arguments[2]||1;for(var r=Math.max(Math.ceil((t-e)/n),0),i=0,a=new Array(r);r>i;)a[i++]=e,e+=n;return a};var S=function(){};x.bind=function(e,t){var n,r;if(e.bind===_&&_)return _.apply(e,a.call(arguments,1));if(!x.isFunction(e))throw new TypeError;return r=a.call(arguments,2),n=function(){if(!(this instanceof n))return e.apply(t,r.concat(a.call(arguments)));S.prototype=e.prototype;var i=new S,o=e.apply(i,r.concat(a.call(arguments)));return Object(o)===o?o:i}},x.bindAll=function(e){var t=a.call(arguments,1);return 0==t.length&&(t=x.functions(e)),w(t,function(t){e[t]=x.bind(e[t],e)}),e},x.memoize=function(e,t){var n={};return t||(t=x.identity),function(){var r=t.apply(this,arguments);return x.has(n,r)?n[r]:n[r]=e.apply(this,arguments)}},x.delay=function(e,t){var n=a.call(arguments,2);return setTimeout(function(){return e.apply(null,n)},t)},x.defer=function(e){return x.delay.apply(x,[e,1].concat(a.call(arguments,1)))},x.throttle=function(e,t){var n,r,i,a,o,s,u=x.debounce(function(){o=a=!1},t);return function(){n=this,r=arguments;var l=function(){i=null,o&&e.apply(n,r),u()};return i||(i=setTimeout(l,t)),a?o=!0:s=e.apply(n,r),u(),a=!0,s}},x.debounce=function(e,t,n){var r;return function(){var i=this,a=arguments,o=function(){r=null,n||e.apply(i,a)};n&&!r&&e.apply(i,a),clearTimeout(r),r=setTimeout(o,t)}},x.once=function(e){var t,n=!1;return function(){return n?t:(n=!0,t=e.apply(this,arguments))}},x.wrap=function(e,t){return function(){var n=[e].concat(a.call(arguments,0));return t.apply(this,n)}},x.compose=function(){var e=arguments;
-return function(){for(var t=arguments,n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},x.after=function(e,t){return 0>=e?t():function(){return--e<1?t.apply(this,arguments):void 0}},x.keys=b||function(e){if(e!==Object(e))throw new TypeError("Invalid object");var t=[];for(var n in e)x.has(e,n)&&(t[t.length]=n);return t},x.values=function(e){return x.map(e,x.identity)},x.functions=x.methods=function(e){var t=[];for(var n in e)x.isFunction(e[n])&&t.push(n);return t.sort()},x.extend=function(e){return w(a.call(arguments,1),function(t){for(var n in t)e[n]=t[n]}),e},x.pick=function(e){var t={};return w(x.flatten(a.call(arguments,1)),function(n){n in e&&(t[n]=e[n])}),t},x.defaults=function(e){return w(a.call(arguments,1),function(t){for(var n in t)null==e[n]&&(e[n]=t[n])}),e},x.clone=function(e){return x.isObject(e)?x.isArray(e)?e.slice():x.extend({},e):e},x.tap=function(e,t){return t(e),e},x.isEqual=function(t,n){return e(t,n,[])},x.isEmpty=function(e){if(null==e)return!0;if(x.isArray(e)||x.isString(e))return 0===e.length;for(var t in e)if(x.has(e,t))return!1;return!0},x.isElement=function(e){return!(!e||1!=e.nodeType)},x.isArray=y||function(e){return"[object Array]"==s.call(e)},x.isObject=function(e){return e===Object(e)},x.isArguments=function(e){return"[object Arguments]"==s.call(e)},x.isArguments(arguments)||(x.isArguments=function(e){return!(!e||!x.has(e,"callee"))}),x.isFunction=function(e){return"[object Function]"==s.call(e)},x.isString=function(e){return"[object String]"==s.call(e)},x.isNumber=function(e){return"[object Number]"==s.call(e)},x.isFinite=function(e){return x.isNumber(e)&&isFinite(e)},x.isNaN=function(e){return e!==e},x.isBoolean=function(e){return e===!0||e===!1||"[object Boolean]"==s.call(e)},x.isDate=function(e){return"[object Date]"==s.call(e)},x.isRegExp=function(e){return"[object RegExp]"==s.call(e)},x.isNull=function(e){return null===e},x.isUndefined=function(e){return void 0===e},x.has=function(e,t){return u.call(e,t)},x.noConflict=function(){return root._=previousUnderscore,this},x.identity=function(e){return e},x.times=function(e,t,n){for(var r=0;e>r;r++)t.call(n,r)},x.escape=function(e){return(""+e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")},x.result=function(e,t){if(null==e)return null;var n=e[t];return x.isFunction(n)?n.call(e):n},x.mixin=function(e){w(x.functions(e),function(t){D(t,x[t]=e[t])})};var k=0;x.uniqueId=function(e){var t=k++;return e?e+t:t},x.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var N=/.^/,T={"\\":"\\","'":"'",r:"\r",n:"\n",t:"	",u2028:"\u2028",u2029:"\u2029"};for(var O in T)T[T[O]]=O;var C=/\\|'|\r|\n|\t|\u2028|\u2029/g,A=/\\(\\|'|r|n|t|u2028|u2029)/g,P=function(e){return e.replace(A,function(e,t){return T[t]})};x.template=function(e,t,n){n=x.defaults(n||{},x.templateSettings);var r="__p+='"+e.replace(C,function(e){return"\\"+T[e]}).replace(n.escape||N,function(e,t){return"'+\n_.escape("+P(t)+")+\n'"}).replace(n.interpolate||N,function(e,t){return"'+\n("+P(t)+")+\n'"}).replace(n.evaluate||N,function(e,t){return"';\n"+P(t)+"\n;__p+='"})+"';\n";n.variable||(r="with(obj||{}){\n"+r+"}\n"),r="var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};\n"+r+"return __p;\n";var i=new Function(n.variable||"obj","_",r);if(t)return i(t,x);var a=function(e){return i.call(this,e,x)};return a.source="function("+(n.variable||"obj")+"){\n"+r+"}",a},x.chain=function(e){return x(e).chain()};var j=function(e){this._wrapped=e};x.prototype=j.prototype;var I=function(e,t){return t?x(e).chain():e},D=function(e,t){j.prototype[e]=function(){var e=a.call(arguments);return o.call(e,this._wrapped),I(t.apply(x,e),this._chain)}};return x.mixin(x),w(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=n[e];j.prototype[e]=function(){var n=this._wrapped;t.apply(n,arguments);var r=n.length;return"shift"!=e&&"splice"!=e||0!==r||delete n[0],I(n,this._chain)}}),w(["concat","join","slice"],function(e){var t=n[e];j.prototype[e]=function(){return I(t.apply(this._wrapped,arguments),this._chain)}}),j.prototype.chain=function(){return this._chain=!0,this},j.prototype.value=function(){return this._wrapped},x}),define("hbs/i18nprecompile",["hbs/handlebars","hbs/underscore"],function(e,t){function n(r,i,a){return a=a||{},i=i||{},r&&"program"===r.type&&r.statements&&(t(r.statements).forEach(function(t,o){var s="<!-- i18n error -->";if("mustache"===t.type&&t.id&&"$"===t.id.original){if(t.params.length&&t.params[0].string){var u=t.params[0].string;s=i[u]||(a.originalKeyFallback?u:s)}r.statements[o]=new e.AST.ContentNode(s)}else t.program&&(t.program=n(t.program,i,a))}),r.inverse&&n(r.inverse,i,a)),r}return function(t,r,i){var a,o;return i=i||{},"data"in i||(i.data=!0),i.compat&&(i.useDepths=!0),a=e.parse(t),r!==!1&&(a=n(a,r,i)),o=(new e.Compiler).compile(a,i),(new e.JavaScriptCompiler).compile(o,i)}}),function(window){var JSON=window.JSON||{};!function(){"use strict";function f(e){return 10>e?"0"+e:e}function quote(e){return escapable.lastIndex=0,escapable.test(e)?'"'+e.replace(escapable,function(e){var t=meta[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function str(e,t){var n,r,i,a,o,s=gap,u=t[e];switch(u&&"object"==typeof u&&"function"==typeof u.toJSON&&(u=u.toJSON(e)),"function"==typeof rep&&(u=rep.call(t,e,u)),typeof u){case"string":return quote(u);case"number":return isFinite(u)?String(u):"null";case"boolean":case"null":return String(u);case"object":if(!u)return"null";if(gap+=indent,o=[],"[object Array]"===Object.prototype.toString.apply(u)){for(a=u.length,n=0;a>n;n+=1)o[n]=str(n,u)||"null";return i=0===o.length?"[]":gap?"[\n"+gap+o.join(",\n"+gap)+"\n"+s+"]":"["+o.join(",")+"]",gap=s,i}if(rep&&"object"==typeof rep)for(a=rep.length,n=0;a>n;n+=1)"string"==typeof rep[n]&&(r=rep[n],i=str(r,u),i&&o.push(quote(r)+(gap?": ":":")+i));else for(r in u)Object.prototype.hasOwnProperty.call(u,r)&&(i=str(r,u),i&&o.push(quote(r)+(gap?": ":":")+i));return i=0===o.length?"{}":gap?"{\n"+gap+o.join(",\n"+gap)+"\n"+s+"}":"{"+o.join(",")+"}",gap=s,i}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","	":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;"function"!=typeof JSON.stringify&&(JSON.stringify=function(e,t,n){var r;if(gap="",indent="","number"==typeof n)for(r=0;n>r;r+=1)indent+=" ";else"string"==typeof n&&(indent=n);if(rep=t,t&&"function"!=typeof t&&("object"!=typeof t||"number"!=typeof t.length))throw new Error("JSON.stringify");return str("",{"":e})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){function walk(e,t){var n,r,i=e[t];if(i&&"object"==typeof i)for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(r=walk(i,n),void 0!==r?i[n]=r:delete i[n]);return reviver.call(e,t,i)}var j;if(text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}(),define("hbs/json2",[],function(){return JSON})}.call(this,this),define("hbs",["hbs/handlebars","hbs/underscore","hbs/i18nprecompile","hbs/json2"],function(e,t,n,r){var i,a,o=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],s=function(){throw new Error("Environment unsupported.")},u=[],l="w+",c="hbs",p="@hbs",f="/styles/",h="/demo-build/styles/",d="templates/helpers/",m="templates/i18n/",g="screen.build.css",v="onHbsRead";e.registerHelper("$",function(){}),"undefined"!=typeof window&&window.navigator&&window.document&&!window.navigator.userAgent.match(/Node.js/)?(a=function(){var e,t,n;if("undefined"!=typeof XMLHttpRequest)return arguments[0]===!0?new XDomainRequest:new XMLHttpRequest;for(t=0;3>t;t++){n=o[t];try{e=new ActiveXObject(n)}catch(r){}if(e){o=[n];break}}if(!e)throw new Error("getXhr(): XMLHttpRequest not available");return e},getIEVersion=function(){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,n=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=n.exec(t)&&(e=parseFloat(RegExp.$1))}return e},s=function(e,t){var n=!1;if(0!=e.indexOf("http"))n=!1;else{var r="https"===e.substr(0,5)?8:7,i="https"===window.location.href.substr(0,5)?8:7,o=e.substr(r).split("/").shift(),s=getIEVersion();n=o!=window.location.href.substr(i).split("/").shift()&&s>=7}if(n){var u=a(!0);u.open("GET",e),u.onload=function(){t(u.responseText,e)},u.onprogress=function(){},u.ontimeout=function(){},u.onerror=function(){},setTimeout(function(){u.send()},0)}else{var l=a();l.open("GET",e,!0),l.onreadystatechange=function(){4===l.readyState&&t(l.responseText,e)},l.send(null)}}):"undefined"!=typeof process&&process.versions&&process.versions.node?(i=require.nodeRequire("fs"),s=function(e,t){var n=i.readFileSync(e,"utf8")||"";n=n.replace(/^\uFEFF/,""),t(n,e)}):"undefined"!=typeof java&&"undefined"!=typeof java.io&&(s=function(e,t){for(var n,r=new java.io.FileInputStream(e),i=new java.io.InputStreamReader(r,"UTF-8"),a=new java.io.BufferedReader(i),o="";null!==(n=a.readLine());)o+=new String(n)+"\n";a.close(),t(o,e)});var y,b={},_=function(e,t){b[e]?t(b[e]):s(e,function(e,n){b[n]=e,t.call(this,e)})},x=[],w={},E=[];return{get:function(){return e},write:function(e,t,n){if(t+p in u){var r=u[t+p];n.asModule(e+"!"+t,r)}},version:"2.0.0",load:function(i,a,o,b){function S(e,n){return t(e).forEach(function(e){e&&e.type&&"partial"===e.type&&n.push(e.partialName.name),e&&e.program&&e.program.statements&&S(e.program.statements,n),e&&e.inverse&&e.inverse.statements&&S(e.inverse.statements,n)}),n}function k(e){var n=[];return e&&e.statements&&(n=S(e.statements,[])),t.unique(n)}function N(e){var t,n,i;if(e&&e.statements&&(t=e.statements[0],t&&"comment"===t.type))try{return n=t.comment.replace(new RegExp("^[\\s]+|[\\s]+$","g"),""),i=r.parse(n),n}catch(a){return r.stringify({description:n})}return"{}"}function T(e){if(!e)return[];var t,n=[e[0]],r=e[0];for(t=1;t<e.length;++t)e.hasOwnProperty(t)&&(r+="."+e[t],n.push(r));return n}function O(n,r,i,a){i=i?i+".":"";var o="";return t(n).forEach(function(n){var s,u,l;if(n&&n.type&&"mustache"===n.type){if(!n.params||!n.params.length){s=T(n.id.parts);for(u in s)s[u]&&(o=s[u]||o,r.push(i+s[u]));r.push(i+n.id.string)}var c=["this",".","..","./..","../..","../../.."];n.params&&"undefined"==typeof e.helpers[n.id.string]&&(t(n.params).forEach(function(u){(t(c).contains(u.original)||u instanceof e.AST.StringNode||u instanceof e.AST.NumberNode||u instanceof e.AST.BooleanNode||u instanceof e.AST.DataNode||u instanceof e.AST.SexprNode)&&(a.push(n.id.string),"undefined"!=typeof n.params&&t(n.params).forEach(function(e){"sexpr"===e.type&&e.isHelper===!0&&a.push(e.id.string)}),null!=n.hash&&"undefined"!=typeof n.hash&&"undefined"!=typeof n.hash.pairs&&t(n.hash.pairs).forEach(function(e){var t=(e[0],e[1]);"sexpr"===t.type&&t.isHelper===!0&&a.push(t.id.string)})),s=T(u.parts);for(var l in s)s[l]&&(o=s[l]||o,a.push(n.id.string),r.push(i+s[l]))}),null!=n.hash&&"undefined"!=typeof n.hash&&"undefined"!=typeof n.hash.pairs&&t(n.hash.pairs).forEach(function(t){var r=t[1];(r instanceof e.AST.StringNode||r instanceof e.AST.NumberNode||r instanceof e.AST.BooleanNode||r instanceof e.AST.IdNode)&&a.push(n.id.string)}))}n&&n.mustache&&O([n.mustache],r,i+o,a),n&&n.program&&n.program.statements&&(l=O([n.mustache],[],"",a)[0]||"",n.inverse&&n.inverse.statements&&O(n.inverse.statements,r,i+o+(l?i+o?"."+l:l:""),a),O(n.program.statements,r,i+o+(l?i+o?"."+l:l:""),a))}),r}function C(e){var n=[],r=[];e&&e.statements&&(n=O(e.statements,[],void 0,r));var i=["helperMissing","blockHelperMissing","each","if","unless","with","log","lookup"];return{vars:t(n).chain().unique().map(function(e){return""===e?".":e.length&&"."===e[e.length-1]?e.substr(0,e.length-1)+"[]":e}).value(),helpers:t(r).chain().unique().map(function(e){return t(i).contains(e)?void 0:e}).compact().value()}}function A(e){for(var t=e.split("/"),n=0;n<t.length;n++)".."===t[n]?(delete t[n-1],delete t[n]):"."===t[n]&&delete t[n];return t.join("/").replace(/\/\/+/g,"/")}function P(c){s(L,function(s,p){var m,b,_,S,T,O=y.isBuild&&y[v]?y[v]:function(e,t,n){return n},P=e.parse(O(i,p,s)),L=k(P),q=N(P),R=C(P),H=R.vars,F=R.helpers||[],M="",U="",B="",z=[],G=i.substr(0,i.lastIndexOf("/")+1);if(require.config.hbs=require.config.hbs||{},require.config.hbs._partials=require.config.hbs._partials||{},"{}"!==q)try{_=r.parse(q)}catch(W){console.log("couldn't parse meta for %s",p)}for(var V in L)if(L.hasOwnProperty(V)&&"string"==typeof L[V]){var p,X=L[V];p=A(X.match(/^(\.|\/)+/)?G+X:$+X),require.config.hbs._partials[p]=require.config.hbs._partials[p]||[],require.config.hbs._partials[p].references=require.config.hbs._partials[p].references||[],require.config.hbs._partials[p].references.push(X),require.config.hbs._loadedDeps=require.config.hbs._loadedDeps||{},z[V]="hbs!"+p}if(m=z.join("', '"),F=F.concat(_&&_.helpers?_.helpers:[]),b=D?"":function(){var e,t=[],n=y.hbs&&y.hbs.helperPathCallback?y.hbs.helperPathCallback:function(e){return(y.hbs&&y.hbs.helperDirectory?y.hbs.helperDirectory:d)+e};for(e=0;e<F.length;e++)t[e]="'"+n(F[e],p)+"'";return t}().join(","),b&&(b=","+b),_)try{_.styles&&(x=t.union(x,_.styles),require.isBrowser&&!y.isBuild?(S=document.head||document.getElementsByTagName("head")[0],t(_.styles).forEach(function(e){w[e]||(T=document.createElement("link"),T.href=y.baseUrl+f+e+".css",T.media="all",T.rel="stylesheet",T.type="text/css",S.appendChild(T),w[e]=T)})):y.isBuild&&!function(){var e=require.nodeRequire("fs"),n=t(_.styles).map(function(e){return w[e]?"":(w[e]=!0,"@import url("+e+".css);\n")}).join("\n");e.open(__dirname+h+g,l,"0666",function(t,r){e.writeSync(r,n,null,encoding="utf8"),e.close(r)}),l="a"}())}catch(W){console.log("error injecting styles")}y.isBuild||y.serverRender||(M="<!-- START - "+i+" -->",U="<!-- END - "+i+" -->",B="t.meta = "+q+";\nt.helpers = "+r.stringify(F)+";\nt.deps = "+r.stringify(z)+";\nt.vars = "+r.stringify(H)+";\n");var J=I?!1:t.extend(c,y.localeMapping),Y=y.hbs||{},K=t.extend(Y.compileOptions||{},{originalKeyFallback:Y.originalKeyFallback}),Q=n(s,J,K),Z="'hbs!"+i+"',";m&&(m=", '"+m+"'");var et=[];require.config.hbs._partials[i]&&(et=require.config.hbs._partials[i].references),s="/* START_TEMPLATE */\ndefine("+Z+"['hbs','hbs/handlebars'"+m+b+"], function( hbs, Handlebars ){ \nvar t = Handlebars.template("+Q+");\nHandlebars.registerPartial('"+i+"', t);\n";for(var V=0;V<et.length;V++)s+="Handlebars.registerPartial('"+et[V]+"', t);\n";s+=B+"return t;\n});\n/* END_TEMPLATE */\n",y.isBuild&&(u[j]=s),y.isBuild||(s+="\r\n//# sourceURL="+p),y.isBuild?(o.fromText(i,s),a([i],function(e){o(e)})):require(z,function(){o.fromText(s),a([i],function(e){o(e)})}),y.removeCombined&&p&&E.push(p)})}y=y||b;var j=i+p;y.hbs=y.hbs||{};var I=!(1==y.hbs.i18n),D=0==y.hbs.helpers,$="";y.hbs.partialsUrl&&($=y.hbs.partialsUrl,$.match(/\/$/)||($+="/")),y.hbs.fetchText&&(s=y.hbs.fetchText);var L,q=y.hbs&&y.hbs.templateExtension===!1;if(L=a.toUrl(q?i:i+"."+(y.hbs&&y.hbs.templateExtension?y.hbs.templateExtension:c)),I)P(!1);else{var R=(y.hbs&&y.hbs.i18nDirectory?y.hbs.i18nDirectory:m)+(y.locale||"en_us")+".json";try{_(a.toUrl(R),function(e){P(r.parse(e))})}catch(H){if(y.hbs)throw H;console.warn("hbs: Error reading "+R+", disabling i18n. Ignore this if you're using jam, otherwise check your i18n configuration.\n"),y.hbs={i18n:!1,helpers:!0},P(!1)}}},onLayerEnd:function(){y.removeCombined&&i&&E.forEach(function(e){i.existsSync(e)&&i.unlinkSync(e)})}}}),define("hbs!sunstone/tab",["hbs","hbs/handlebars"],function(e,t){var n=t.template({1:function(e,t,n,r){var i,a,o="function",s=t.helperMissing,u='  <div class="row header-row">\n    <div class="large-12 columns">\n      <h2 class="subheader header-title only-right-list">\n        <span class="header-resource">';return a=null!=(a=t.listHeader||(null!=e?e.listHeader:e))?a:s,i=typeof a===o?a.call(e,{name:"listHeader",hash:{},data:r}):a,null!=i&&(u+=i),u+='</span>\n      </h2>\n      <h2 class="subheader header-title only-right-info" hidden>\n        <span class="header-resource">',a=null!=(a=t.infoHeader||(null!=e?e.infoHeader:e))?a:s,i=typeof a===o?a.call(e,{name:"infoHeader",hash:{},data:r}):a,null!=i&&(u+=i),u+'</span>\n        &emsp;\n        <span class="resource-id"></span>\n        &emsp;\n        <span class="resource-info-header"></span>\n      </h2>\n      <h2 class="subheader header-title only-right-form" hidden>\n        <span class="right-form-title"></span>\n      </h2>\n    </div>\n  </div>\n'},3:function(e,t,n,r){var i,a='  <div class="row actions_row">\n    <div class="small-12 large-12 columns">\n      <div class="action_blocks"></div>\n      <div class="small-3 large-3 columns only-right-list" style="margin-top: 2px">\n';return i=t["if"].call(e,null!=e?e.searchInput:e,{name:"if",hash:{},fn:this.program(4,r),inverse:this.noop,data:r}),null!=i&&(a+=i),a+"      </div>\n    </div>\n  </div>\n"},4:function(e,t,n,r){var i,a,o="function",s=t.helperMissing,u="          ";return a=null!=(a=t.searchInput||(null!=e?e.searchInput:e))?a:s,i=typeof a===o?a.call(e,{name:"searchInput",hash:{},data:r}):a,null!=i&&(u+=i),u+"\n"},6:function(e,t,n,r){var i,a,o="function",s=t.helperMissing,u='    <div class="row">\n      <div class="large-12 columns">';return a=null!=(a=t.table||(null!=e?e.table:e))?a:s,i=typeof a===o?a.call(e,{name:"table",hash:{},data:r}):a,null!=i&&(u+=i),u+"</div>\n    </div>\n"},8:function(e,t,n,r){var i,a,o="function",s=t.helperMissing,u="    ";return a=null!=(a=t.content||(null!=e?e.content:e))?a:s,i=typeof a===o?a.call(e,{name:"content",hash:{},data:r}):a,null!=i&&(u+=i),u+"\n"},10:function(e,t,n,r){var i,a='    <div class="row header-info">\n      <div class="large-12 columns text-center totals-info">\n        <h3 class="subheader">\n';return i=t["if"].call(e,null!=e?e.subheader:e,{name:"if",hash:{},fn:this.program(11,r),inverse:this.noop,data:r}),null!=i&&(a+=i),a+"        </h3>\n      </div>\n    </div>\n"},11:function(e,t,n,r){var i,a,o="function",s=t.helperMissing,u="            ";return a=null!=(a=t.subheader||(null!=e?e.subheader:e))?a:s,i=typeof a===o?a.call(e,{name:"subheader",hash:{},data:r}):a,null!=i&&(u+=i),u+"\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,r){var i,a,o="function",s=t.helperMissing,u=this.escapeExpression,l='<div id="'+u((a=null!=(a=t.tabName||(null!=e?e.tabName:e))?a:s,typeof a===o?a.call(e,{name:"tabName",hash:{},data:r}):a))+'" class="tab" style="display:none;">\n';return i=t["if"].call(e,null!=e?e.listHeader:e,{name:"if",hash:{},fn:this.program(1,r),inverse:this.noop,data:r}),null!=i&&(l+=i),l+="\n",i=t["if"].call(e,null!=e?e.buttons:e,{name:"if",hash:{},fn:this.program(3,r),inverse:this.noop,data:r}),null!=i&&(l+=i),l+='  <div class="right-list">\n',i=t["if"].call(e,null!=e?e.table:e,{name:"if",hash:{},fn:this.program(6,r),inverse:this.noop,data:r}),null!=i&&(l+=i),l+="\n",i=t["if"].call(e,null!=e?e.content:e,{name:"if",hash:{},fn:this.program(8,r),inverse:this.noop,data:r}),null!=i&&(l+=i),l+="\n",i=t["if"].call(e,null!=e?e.subheader:e,{name:"if",hash:{},fn:this.program(10,r),inverse:this.noop,data:r}),null!=i&&(l+=i),l+'  </div>\n\n  <div class="right-info" hidden></div>\n\n  <div class="large-12 small-12 right-form" hidden>\n    <div class="loadingForm">\n      <br>\n      <br>\n      <span class="fa-stack fa-5x" style="color: #dfdfdf"> <i class="fa fa-cloud fa-stack-2x"/><i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"/>\n      </span>\n      <br>\n      <br></div>\n    <div class="tabs-content tabs-contentForm  ">\n      <div class="content active" id="wizardForms"></div>\n      <div class="content" id="advancedForms"></div>\n    </div>\n  </div>\n</div>'},useData:!0});return t.registerPartial("sunstone/tab",n),n}),define("templates/helpers/tr",["require","hbs/handlebars","utils/locale"],function(e){var t=e("hbs/handlebars"),n=e("utils/locale"),r=function(e){return n.tr(e)};return t.registerHelper("tr",r),r}),define("hbs!sunstone/buttons",["hbs","hbs/handlebars","templates/helpers/tr"],function(e,t){var n=t.template({1:function(e,t,n,r){var i,a="function",o=t.helperMissing,s=this.escapeExpression;return'    <span id="'+s((i=null!=(i=t.customId||(null!=e?e.customId:e))?i:o,typeof i===a?i.call(e,{name:"customId",hash:{},data:r}):i))+'back_button" class="only-right-info only-right-form">\n      <a class="button small radius" href="back"> <i class="fa fa-arrow-left"></i>\n        &emsp;&emsp; <i class="fa fa-list"></i>\n      </a>\n    </span>\n'},compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,r){var i,a,o="function",s=t.helperMissing,u=this.escapeExpression,l='<div class="text-center">\n  <span class="left">\n\n    <span id="'+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+'refresh_buttons" class="only-right-info only-right-list"></span>\n';return i=t.unless.call(e,null!=e?e.customContext:e,{name:"unless",hash:{},fn:this.program(1,r),inverse:this.noop,data:r}),null!=i&&(l+=i),l+'    <span id="'+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+'create_buttons" class="only-right-list"></span>\n  </span>\n\n  <span class="right" style="margin-left: 20px">\n    <a href=\'#\' data-dropdown=\''+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"user_buttons' class='only-right-info only-right-list top_button small  secondary button dropdown radius'>\n      <i class='fa fa-user'/></a>\n    <ul id='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"user_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <a href='#' data-dropdown='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmsdelete_buttons' class='only-right-info only-right-list top_button small  button alert dropdown radius'>\n      <i class='fa fa-trash-o'/></a>\n    <ul id='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmsdelete_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <span id='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"delete_buttons' class='only-right-info only-right-list'></span>\n  </span>\n\n  <span class=\"right\">\n    <span id=\""+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmsplay_buttons\"></span>\n\n    <a href='#' data-dropdown='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmspause_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\n      <i class='fa fa-pause'/>\n    </a>\n    <ul id='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmspause_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <a href='#' data-dropdown='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmsstop_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\n      <i class='fa fa-stop'/>\n    </a>\n    <ul id='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmsstop_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <a href='#' data-dropdown='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmsrepeat_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\n      <i class='fa fa-repeat'/>\n    </a>\n    <ul id='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmsrepeat_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <a href='#' data-dropdown='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmsplanification_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\n      <i class='fa fa-th-list'/>\n    </a>\n    <ul id='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"vmsplanification_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n\n    <span id=\""+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"main_buttons\" class=\"only-right-info only-right-list\"></span>\n\n    <a href='#' data-dropdown='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"more_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\n      <i class='fa fa-ellipsis-v'/>\n    </a>\n    <ul id='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"more_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\n  </span>\n\n  <span id='"+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+"form_buttons' class='only-right-form' style='display: none'>\n    <span id=\""+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+'reset_button" class="left" style="margin-left: 10px;">\n      <a class="button small secondary radius reset_button" href="submit">'+u((t.tr||e&&e.tr||s).call(e,"Reset",{name:"tr",hash:{},data:r}))+'</a>\n    </span>\n    <span id="'+u((a=null!=(a=t.customId||(null!=e?e.customId:e))?a:s,typeof a===o?a.call(e,{name:"customId",hash:{},data:r}):a))+'submit_button" class="left" style="margin-left: 10px;">\n      <a class="button small success radius submit_button" href="submit">'+u((t.tr||e&&e.tr||s).call(e,"Create",{name:"tr",hash:{},data:r}))+'</a>\n    </span>\n    <dl class="tabs right wizard_tabs" data-tab style="margin-left: 10px;">\n      <dd id="wizard_mode" class="active">\n        <a style="padding: 0.3rem 1rem;" href="#wizardForms">'+u((t.tr||e&&e.tr||s).call(e,"Wizard",{name:"tr",hash:{},data:r}))+'</a>\n      </dd>\n      <dd id="advanced_mode">\n        <a style="padding: 0.3rem 1rem;" id="advanced_mode_a" href="#advancedForms">'+u((t.tr||e&&e.tr||s).call(e,"Advanced",{name:"tr",hash:{},data:r}))+'</a>\n      </dd>\n    </dl>\n  </span>\n</div>\n"'},useData:!0});return t.registerPartial("sunstone/buttons",n),n}),define("sunstone",["require","jquery","foundation.core","sunstone-config","utils/locale","hbs!sunstone/tab","hbs!./sunstone/buttons"],function(e){e("jquery"),e("foundation.core");var t=e("sunstone-config"),n=(e("utils/locale"),{actions:{},tabs:{},info_panels:{},form_panels:{}}),r=function(){for(tab in n.tabs)i(tab),a(tab);o()},i=function(t){var r=n.tabs[t],i=r.condition,a=r.tabClass?r.tabClass:"topTab",o=r.parentTab?r.parentTab:"";if(!i||i()){if(r.no_content===!0)a+=" tab_with_no_content";else{r.tabName=t;var s=e("hbs!sunstone/tab");$("div.right-content").append(s(r))}var l='<li id="li_'+t+'" class="'+a+" "+o+'"><a href="#">'+r.title+"</a></li>";if($("div#menu ul#navigation").append(l),o.length){var c=$("div#menu ul#navigation #li_"+o);c.length&&($("div#menu li#li_"+t).hide(),$("div#menu li#li_"+o+" span").css("display","inline-block"))}r.forms&&$.each(r.forms,function(e,n){u.addFormPanel(t,e,n)})}},a=function(r,i,a,o){var s,l,c=a?a:n.tabs[r].buttons,p="";o?(l=o.attr("id"),s=o):(l=r,s=$("div#"+r,$("div.right-content")));var f=$("div.action_blocks",s);if(f.length){var h=e("hbs!./sunstone/buttons"),d=$(h({customId:l,customContext:o}));for(buttonName in c)if(p="",button=c[buttonName],0!=t.isTabActionEnabled(r,buttonName,i)){var m=button.type+"_button",g=[m];switch(button.type){case"select":break;case"image":g.push("action_button");break;case"create_dialog":g.push("action_button"),g.push("top_button");break;default:g.push("top_button")}button.alwaysActive&&g.push("alwaysActive"),button.custom_classes&&g.push(button.custom_classes);var v,y;switch(button.layout){case"create":v=$("#"+l+"create_buttons",d),y=button.text?'<i class="fa fa-plus"/>  '+button.text:'<i class="fa fa-plus"/>',g.push("success","button","small","radius"),p='<button class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</button>";break;case"refresh":v=$("#"+l+"refresh_buttons",d),y='<span class="fa-stack"><i class="fa fa-refresh fa-stack-lg" style="font-size: 1.5em"></i></span>',g.push("white_button","refresh","secondary","button","small","radius"),p='<a class="'+g.join(" ")+'" href="'+buttonName+'" style="padding-left: 5px">'+y+"</a>";break;case"top":v=$("#"+l+"refresh_buttons",d),y='<span class="fa-stack"><i class="fa fa-refresh fa-stack-2x" style="color: #dfdfdf"></i><i class="fa fa-play fa-stack-1x"></i></span>',g.push("white_button","toggle_top_button","only-right-list","secondary","button","small","radius"),p='<a class="'+g.join(" ")+'" style="padding-left:0px; margin-right: 20px">'+y+"</a>";break;case"main":v=$("#"+l+"main_buttons",d),y=button.text,g.push("secondary","button","small","radius"),p='<button class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</button>";break;case"vmsplay_buttons":v=$("#"+l+"vmsplay_buttons",d),y=button.text,g.push("secondary","button","small","radius"),p='<button class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</button>";break;case"vmspause_buttons":v=$("#"+l+"vmspause_buttons",d),y=button.text,p='<li><a class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</a></li>";break;case"vmsstop_buttons":v=$("#"+l+"vmsstop_buttons",d),y=button.text,p='<li><a class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</a></li>";break;case"vmsrepeat_buttons":v=$("#"+l+"vmsrepeat_buttons",d),y=button.text,p='<li><a class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</a></li>";break;case"vmsdelete_buttons":v=$("#"+l+"vmsdelete_buttons",d),y=button.text,p='<li><a class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</a></li>";break;case"vmsplanification_buttons":v=$("#"+l+"vmsplanification_buttons",d),y=button.text,p='<li><a class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</a></li>";break;case"more_select":v=$("#"+l+"more_buttons",d),y=button.text,p='<li><a class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</a></li>";break;case"user_select":v=$("#"+l+"user_buttons",d),y=button.text,p='<li><a class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</a></li>";break;case"del":v=$("#"+l+"delete_buttons",d),y='<i class=" fa fa-trash-o"/> ',g.push("alert","button","small","radius"),p='<button class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</button>";
-break;default:v=$("#"+l+"main_buttons",d),y=button.text,g.push("secondary","button","small","radius"),p='<button class="'+g.join(" ")+'" href="'+buttonName+'">'+y+"</button>"}v.append(p)}f.append(d),0==$("#"+l+"more_buttons li",f).length&&$("a[data-dropdown="+l+"more_buttons]",f).remove(),0==$("#"+l+"user_buttons li",f).length&&$("a[data-dropdown="+l+"user_buttons]",f).remove(),0==$("#"+l+"vmsplanification_buttons li",f).length&&$("a[data-dropdown="+l+"vmsplanification_buttons]",f).remove(),0==$("#"+l+"vmsdelete_buttons li",f).length&&$("a[data-dropdown="+l+"vmsdelete_buttons]",f).remove(),0==$("#"+l+"vmsstop_buttons li",f).length&&$("a[data-dropdown="+l+"vmsstop_buttons]",f).remove(),0==$("#"+l+"vmspause_buttons li",f).length&&$("a[data-dropdown="+l+"vmspause_buttons]",f).remove(),0==$("#"+l+"vmsrepeat_buttons li",f).length&&$("a[data-dropdown="+l+"vmsrepeat_buttons]",f).remove(),0==$("#"+l+"user_buttons li",f).length&&$("a[data-dropdown="+l+"user_buttons]",f).remove(),$(".top_button, .list_button",f).attr("disabled",!1),$(".top_button, .list_button",f).attr("disabled",!0),$(".create_dialog_button",f).attr("disabled",!1),$(".alwaysActive",f).attr("disabled",!1),$("#"+l+"reset_button",f).on("click",function(){var e=$(".right-form",s).attr("form_name"),t=$(".right-form",s).data("initialize_func");return u.popUpFormPanel(e,r,null,!0,t),!1}),$("#"+l+"submit_button",f).on("click",function(){var e=$(".right-form",s).attr("form_name");return u.submitFormPanel(e,r),!1}),$(document).foundation()}},o=function(){var e=$(".left-content ul li.topTab"),t=$(".left-content ul li.subTab");t.on("click",function(){if($(this).hasClass("topTab"))return!1;var e=$(this).attr("id").substring(3);return s(e),!1}),e.on("click",function(){var e=$(this).attr("id").substring(3);if($(this).hasClass("tab_with_no_content")){var t=$("div#menu li."+e);return t.fadeToggle("fast"),!1}return s(e),!1})},s=function(e){if(!n.tabs[e])return!1;0==e.indexOf("#")&&(e=e.substring(1)),$("#navigation li").removeClass("navigation-active-li");var t=$("#navigation li#li_"+e);t.addClass("navigation-active-li");var r=$("#"+e);$(".tab").hide(),r.show(),$(".right-info",r).hide(),$(".right-form",r).hide(),$(".right-list",r).show(),$(".only-right-info",r).hide(),$(".only-right-form",r).hide(),$(".only-right-list",r).show()},u={showAction:function(){return n.actions},addActions:function(e){for(action in e)n.actions[action]=e[action]},addMainTab:function(e,r){t.isTabEnabled(e)&&(n.tabs[e]=r)},addFormPanel:function(e,t,r){n.form_panels[t]=r},addInfoPanel:function(e,t){n.info_panels[e]=t},popUpInfoPanel:function(e,r){var i=$("dd.active a",$("#"+e));if(i)var a=i.attr("href");var o=$('<div id="'+e+'" class="bordered-tabs">              <dl class="tabs right-info-tabs text-center" data-tab>              </dl>              <div class="tabs-content"></div>              </div>          </div>'),s=n.info_panels[e],u=null,l=!1;for(panelTabName in s)if(0!=t.isTabPanelEnabled(r,panelTabName)){u=s[panelTabName];var c=$('<dd><a href="#'+panelTabName+'">'+(u.icon?'<i class="fa '+u.icon+'"></i><br>':"")+u.title+"</a></dd>").appendTo($("dl",o)),p=$('<div id="'+panelTabName+'" class="content">'+u.content+"</div>").appendTo($(".tabs-content",o));a?a=="#"+panelTabName&&(c.addClass("active"),p.addClass("active")):l||(c.addClass("active"),p.addClass("active"),l=!0)}popDialog(o,$("#"+r))},updateInfoPanelTab:function(e,t,r,i){if(n.info_panels[e][t]=r,i){var a=r.content;$("div#"+e+" div#"+t,info_panel_context).html(a)}},popUpFormPanel:function(e,t,r,i,a){var o=$("#"+t);popFormDialogLoading(o);var s=n.form_panels[e];$(".right-form",o).data("initialize_func",a),$(".reset_button",o).show(),s.advancedHtml?$(".wizard_tabs",o).show():$(".wizard_tabs",o).hide(),r&&($(".right-form-title",o).text(s.actions[r].title),$(".submit_button",o).text(s.actions[r].submit_text),0==s.actions[r].reset_button&&$(".reset_button",o).hide()),setTimeout(function(){i&&(r||(r=$("#"+e+"_wizard",o).attr("action")),$("#advancedForms",o).empty(),$("#wizardForms",o).empty()),0==$("#"+e+"_wizard",o).length&&($("#advancedForms",o).append(s.advancedHtml),$("#wizardForms",o).append(s.wizardHtml),s.setup(o)),a&&a(o),r&&($("#"+e+"_wizard",o).attr("action",r),$("#"+e+"_advanced",o).attr("action",r)),popFormDialog(e,o)},13)},submitFormPanel:function(e,t){var n=$("#"+t);popFormDialogLoading(n),$("#wizardForms.active",n).length>0?$("#"+e+"_wizard",n).submit():$("#advancedForms.active",n).length>0&&$("#"+e+"_advanced",n).submit()},runAction:function(e,t,r){var i=n.actions;if(!i[e])return notifyError("Action "+e+" not defined"),1;var a=i[e],o=a.notify,s=a.condition;if(s&&!s())return o&&notifyError("This action cannot be run"),1;var u=a.call,l=a.callback,c=a.error;switch(a.type){case"create":case"register":u({data:t,success:l,error:c});break;case"single":u(r?{data:{id:t,extraParam:r},success:l,error:c}:{data:{id:t},success:l,error:c});break;case"list":u({success:l,error:c,options:t});break;case"monitor_global":u({timeout:!0,success:l,error:c,data:{monitor:t}});break;case"monitor":case"monitor_single":u({timeout:!0,success:l,error:c,data:{id:t,monitor:r}});break;case"multiple":$.each(t,function(){u(r?{data:{id:this,extraParam:r},success:l,error:c}:{data:{id:this},success:l,error:c})});break;default:t&&r?u(t,r):t?u(t):u()}return o&&notifySubmit(e,t,r),0},getButton:function(e,t){var r=null,i=n.tabs[e].buttons;return r=i[t],!r&&i.action_list&&(r=i.action_list.actions[t]),r},rightInfoVisible:function(e){return $(".right-info",e).is(":visible")},rightListVisible:function(e){return $(".right-list",e).is(":visible")},rightInfoResourceId:function(e){return $(".resource-id",e).text()},insertTabs:r};return u}),define("tabs/infra-tab",["require","utils/locale"],function(e){var t=e("utils/locale"),n={title:'<i class="fa fa-lg fa-fw fa-sitemap"></i>&emsp;'+t.tr("Infrastructure"),no_content:!0};return{definition:n}}),define("tabs/zones-tab/buttons",["require","utils/locale"],function(e){var t=e("utils/locale"),n={"Zone.refresh":{type:"action",layout:"refresh",alwaysActive:!0},"Zone.create_dialog":{type:"create_dialog",layout:"create"},"Zone.delete":{type:"confirm",layout:"del",text:t.tr("Delete")}};return n}),define("hbs!tabs/zones-tab/table",["hbs","hbs/handlebars","templates/helpers/tr"],function(e,t){var n=t.template({compiler:[6,">= 2.0.0-beta.1"],main:function(e,t,n,r){var i=t.helperMissing,a=this.escapeExpression;return'<table id="datatable_zones" class="datatable twelve">\n  <thead>\n    <tr>\n      <th class="check">\n        <input type="checkbox" class="check_all" value=""/>\n      </th>\n      <th>'+a((t.tr||e&&e.tr||i).call(e,"ID",{name:"tr",hash:{},data:r}))+"</th>\n      <th>"+a((t.tr||e&&e.tr||i).call(e,"Name",{name:"tr",hash:{},data:r}))+"</th>\n      <th>"+a((t.tr||e&&e.tr||i).call(e,"Endpoint",{name:"tr",hash:{},data:r}))+'</th>\n    </tr>\n  </thead>\n  <tbody id="tbodyzones"></tbody>\n</table>'},useData:!0});return t.registerPartial("tabs/zones-tab/table",n),n}),define("tabs/zones-tab",["require","utils/locale","./zones-tab/buttons","hbs!./zones-tab/table"],function(e){var t=e("utils/locale"),n=e("./zones-tab/buttons"),r=e("hbs!./zones-tab/table"),i={title:t.tr("Zones"),resource:"Zone",buttons:n,tabClass:"subTab",parentTab:"infra-tab",searchInput:'<input id="zone_search" type="search" placeholder="'+t.tr("Search")+'" />',listHeader:'<i class="fa fa-fw fa-files-o"></i>&emsp;'+t.tr("Zones"),infoHeader:'<i class="fa fa-fw fa-files-o"></i>&emsp;'+t.tr("Zone"),subheader:"<span/> <small></small>&emsp;",table:r()};return{definition:i}}),define("opennebula/helper",["require"],function(){var e={resource_state:function(e,t){var n;switch(e){case"HOST":case"host":n=tr(["INIT","MONITORING_MONITORED","MONITORED","ERROR","DISABLED","MONITORING_ERROR","MONITORING_INIT","MONITORING_DISABLED"][t]);break;case"HOST_SIMPLE":case"host_simple":n=tr(["INIT","UPDATE","ON","ERROR","OFF","RETRY","INIT","OFF"][t]);break;case"VM":case"vm":n=tr(["INIT","PENDING","HOLD","ACTIVE","STOPPED","SUSPENDED","DONE","FAILED","POWEROFF","UNDEPLOYED"][t]);break;case"VM_LCM":case"vm_lcm":n=tr(["LCM_INIT","PROLOG","BOOT","RUNNING","MIGRATE","SAVE","SAVE","SAVE","MIGRATE","PROLOG","EPILOG","EPILOG","SHUTDOWN","SHUTDOWN","FAILURE","CLEANUP","UNKNOWN","HOTPLUG","SHUTDOWN","BOOT","BOOT","BOOT","BOOT","CLEANUP","SNAPSHOT","HOTPLUG","HOTPLUG","HOTPLUG","HOTPLUG","SHUTDOWN","EPILOG","PROLOG","BOOT"][t]);break;case"IMAGE":case"image":n=tr(["INIT","READY","USED","DISABLED","LOCKED","ERROR","CLONE","DELETE","USED_PERS"][t]);break;case"DATASTORE":case"datastore":n=tr(["ON","OFF"][t]);break;case"VM_MIGRATE_REASON":case"vm_migrate_reason":n=tr(["NONE","ERROR","USER"][t]);break;case"VM_MIGRATE_ACTION":case"vm_migrate_action":n=tr(["none","migrate","live-migrate","shutdown","shutdown-hard","undeploy","undeploy-hard","hold","release","stop","suspend","resume","boot","delete","delete-recreate","reboot","reboot-hard","resched","unresched","poweroff","poweroff-hard"][t]);break;default:return t}return n||(n=t),n},image_type:function(e){return["OS","CDROM","DATABLOCK","KERNEL","RAMDISK","CONTEXT"][e]},action:function(e,t){return obj={action:{perform:e}},t&&(obj.action.params=t),obj},request:function(e,t,n){var r={request:{resource:e,method:t}};return n&&("array"!=typeof n&&(n=[n]),r.request.data=n),r},pool:function(e,t){var n,r=e+"_POOL",a=e;if("undefined"==typeof r)return Error("Incorrect Pool");var o=[];if(n=t[r]?t[r][a]:null,null==n)return o;if(n.length){for(i=0;i<n.length;i++)o[i]={},o[i][a]=n[i];return o}return o[0]={},o[0][a]=n,o},pool_hash_processing:function(e,t,n){var r;if("undefined"==typeof e)return Error("Incorrect Pool");var a={};if(r=n[e]?n[e][t]:null,null==r)return a;if(r.length){for(i=0;i<r.length;i++){var o={};o[t]=r[i],a[o[t].ID]=o}return a}var o={};return o[t]=r,a[o[t].ID]=o,a}};return e}),define("opennebula/action",["require","./helper"],function(e){var t=e("./helper"),n={},r={},i={},a=6e4,o=function(e){n[e]=null},s={create:function(e,n,r){var i=e.success,a=e.error,s=e.data,u=t.request(n,"create",s),l=r?r:n.toLowerCase(),c=e.cache_name?e.cache_name:n;$.ajax({url:l,type:"POST",dataType:"json",data:JSON.stringify(s),contentType:"application/json; charset=utf-8",success:function(e){return o(c),i?i(u,e):null},error:function(e){return a?a(u,OpenNebula.Error(e)):null}})},del:function(e,n,r){var i=e.success,a=e.error,s=e.data.id,u=t.request(n,"delete",s),l=r?r:n.toLowerCase(),c=e.cache_name?e.cache_name:n;$.ajax({url:l+"/"+s,type:"DELETE",success:function(){return o(c),i?i(u):null},error:function(e){return a?a(u,OpenNebula.Error(e)):null}})},list:function(e,s,u){var l=e.success,c=e.error,p=e.timeout||!1,f=t.request(s,"list"),h=u?u:s.toLowerCase(),d=e.cache_name?e.cache_name:s,m=e.options,g=!1;return m&&(g=m.force),g&&o(d),!g&&n[d]&&n[d].timestamp+a>(new Date).getTime()?l?l(f,n[d].data):null:(i[d]||(i[d]=[]),i[d].push({success:l,error:c}),void(r[d]||(r[d]=!0,$.ajax({url:h,type:"GET",data:{timeout:p},dataType:"json",success:function(e){var a=t.pool(s,e);n[d]={timestamp:(new Date).getTime(),data:a},r[d]=!1;for(var o=0;o<i[d].length;o++){var u=i[d][o].success;u&&u(f,a,e)}i[d]=[]},error:function(e){r[d]=!1;for(var t=0;t<i[d].length;t++){var n=i[d][t].error;n&&n(f,OpenNebula.Error(e))}i[d]=[]}}))))},list_in_zone:function(e,n,r){var i=e.success,a=e.error,o=e.timeout||!1,s=t.request(n,"list"),u=r?r:n.toLowerCase();$.ajax({url:u,type:"GET",data:{timeout:o,zone_id:e.data.zone_id},dataType:"json",success:function(e){var r=t.pool(n,e);return i?i(s,r):null},error:function(e){return a?a(s,OpenNebula.Error(e)):null}})},show:function(e,n,r,i){var a=e.success,o=e.error,s=e.data.id,u=r?t.request(n,r,s):t.request(n,"show",s),l=i?i:n.toLowerCase(),c=l+"/"+s;c=r?c+"/"+r:c,$.ajax({url:c,type:"GET",dataType:"json",success:function(e){return a?a(u,e):null},error:function(e){return o?o(u,OpenNebula.Error(e)):null}})},chown:function(e,t,n){var r=e.data.extra_param,i={owner_id:r,group_id:"-1"};OpenNebula.Action.simple_action(e,t,"chown",i,n)},chgrp:function(e,t,n){var r=e.data.extra_param,i={owner_id:"-1",group_id:r};OpenNebula.Action.simple_action(e,t,"chown",i,n)},simple_action:function(e,n,r,i,a){var s,u,l=e.success,c=e.error,p=e.data.id;i?(s=t.action(r,i),u=t.request(n,r,[p,i])):(s=t.action(r),u=t.request(n,r,p));var f=a?a:n.toLowerCase(),h=e.cache_name?e.cache_name:n;$.ajax({url:f+"/"+p+"/action",type:"POST",contentType:"application/json; charset=utf-8",data:JSON.stringify(s),success:function(){return o(h),l?l(u):null},error:function(e){return c?c(u,OpenNebula.Error(e)):null}})},monitor:function(e,n,r,i){var a=e.success,o=e.error,s=e.data,u="monitor",l=t.request(n,u,s),c=i?i:n.toLowerCase();c=r?c+"/monitor":c+"/"+e.data.id+"/monitor",$.ajax({url:c,type:"GET",data:s.monitor,dataType:"json",success:function(e){return a?a(l,e):null},error:function(e){return o?o(l,OpenNebula.Error(e)):null}})},accounting:function(e,n,r){var i=e.success,a=e.error,o=e.data,s="accounting",u=t.request(n,s,o),l=r?r:n.toLowerCase()+"/accounting";$.ajax({url:l,type:"GET",data:o,dataType:"json",success:function(e){return i?i(u,e):null},error:function(e){return a?a(u,OpenNebula.Error(e)):null}})},showback:function(e,n,r){var i=e.success,a=e.error,o=e.data,s="showback",u=t.request(n,s,o),l=r?r:n.toLowerCase()+"/showback";$.ajax({url:l,type:"GET",data:o,dataType:"json",success:function(e){return i?i(u,e):null},error:function(e){return a?a(u,OpenNebula.Error(e)):null}})},clear_cache:o};return s}),define("opennebula/auth",["require","./helper"],function(e){var t=e("./helper"),n="AUTH",r={login:function(e){var r=e.success,i=e.error,a=e.data.username,o=e.data.password,s=e.remember,u=t.request(n,"login");$.ajax({url:"login",type:"POST",data:{remember:s},beforeSend:function(e){var t=a+":"+o,n="Basic ";"function"==typeof btoa?n+=btoa(unescape(encodeURIComponent(t))):(t=CryptoJS.enc.Utf8.parse(t),n+=CryptoJS.enc.Base64.stringify(t)),e.setRequestHeader("Authorization",n)},success:function(e){return r?r(u,e):null},error:function(e){return i?i(u,OpenNebula.Error(e)):null}})},logout:function(e){var r=e.success,i=e.error,a=t.request(n,"logout");$.ajax({url:"logout",type:"POST",success:function(e){return $.cookie("one-user",null),r?r(a,e):null},error:function(e){return i?i(a,OpenNebula.Error(e)):null}})}};return r}),define("opennebula/error",["require"],function(){var e=function(e){var t={};if(e.responseText)try{t=JSON.parse(e.responseText)}catch(n){t.error={message:"It appears there was a server exception. Please check server's log."}}else t.error={};return t.error.http_status=e.status,t};return e}),define("opennebula/acl",["require","./action"],function(e){var t=e("./action"),n="ACL",r={create:function(e){t.create(e,n)},del:function(e){t.del(e,n)},list:function(e){t.list(e,n)}};return r}),define("opennebula/cluster",["require","./action"],function(e){var t=e("./action"),n="CLUSTER",r={create:function(e){t.create(e,n)},del:function(e){t.del(e,n)},list:function(e){t.list(e,n)},list_in_zone:function(e){t.list_in_zone(e,n)},show:function(e){t.show(e,n)},addhost:function(e){var r={host_id:e.data.extra_param};t.simple_action(e,n,"addhost",r)},delhost:function(e){var r={host_id:e.data.extra_param};t.simple_action(e,n,"delhost",r)},adddatastore:function(e){var r={ds_id:e.data.extra_param};t.simple_action(e,n,"adddatastore",r)},deldatastore:function(e){var r={ds_id:e.data.extra_param};t.simple_action(e,n,"deldatastore",r)},addvnet:function(e){var r={vnet_id:e.data.extra_param};t.simple_action(e,n,"addvnet",r)},delvnet:function(e){var r={vnet_id:e.data.extra_param};t.simple_action(e,n,"delvnet",r)},fetch_template:function(e){t.show(e,n,"template")},update:function(e){var r={template_raw:e.data.extra_param};t.simple_action(e,n,"update",r)},rename:function(e){var r=e.data.extra_param;t.simple_action(e,n,"rename",r)}};return r}),define("opennebula/datastore",["require","./action"],function(e){var t=e("./action"),n="DATASTORE",r={create:function(e){t.create(e,n)},del:function(e){t.del(e,n)},list:function(e){t.list(e,n)},list_in_zone:function(e){t.list_in_zone(e,n)},show:function(e){t.show(e,n)},chown:function(e){t.chown(e,n)},chgrp:function(e){t.chgrp(e,n)},chmod:function(e){var r=e.data.extra_param;t.simple_action(e,n,"chmod",r)},update:function(e){var r={template_raw:e.data.extra_param};t.simple_action(e,n,"update",r)},fetch_template:function(e){t.show(e,n,"template")},rename:function(e){var r=e.data.extra_param;t.simple_action(e,n,"rename",r)},enable:function(e){t.simple_action(e,n,"enable")},disable:function(e){t.simple_action(e,n,"disable")}};return r}),define("opennebula/group",["require","./action","./helper","./error"],function(e){var t=e("./action"),n=e("./helper"),r=e("./error"),i="GROUP",a={create:function(e){t.create(e,i)},del:function(e){t.del(e,i)},list:function(e){var t=i.toLowerCase(),a=e.success,o=e.error,s=e.timeout||!1,u=n.request(i,"list");$.ajax({url:t,type:"GET",data:{timeout:s},dataType:"json",success:function(e){default_group_quotas=Quotas.default_quotas(e.GROUP_POOL.DEFAULT_GROUP_QUOTAS);var t=n.pool(i,e),r=n.pool_hash_processing("GROUP_POOL","QUOTAS",e);return a?a(u,t,r):null},error:function(e){return o?o(u,r(e)):null}})},update:function(e){var n={template_raw:e.data.extra_param};t.simple_action(e,i,"update",n)},set_quota:function(e){var n={quotas:e.data.extra_param};t.simple_action(e,i,"set_quota",n)},show:function(e){t.show(e,i)},accounting:function(e){t.monitor(e,i,!1)},add_admin:function(e){var n=e.data.extra_param;t.simple_action(e,i,"add_admin",n)},del_admin:function(e){var n=e.data.extra_param;t.simple_action(e,i,"del_admin",n)}};return a}),define("opennebula/host",["require","./action"],function(e){var t=e("./action"),n="HOST",r={create:function(e){t.create(e,n)},del:function(e){t.del(e,n)},list:function(e){t.list(e,n)},list_in_zone:function(e){t.list_in_zone(e,n)},show:function(e){t.show(e,n)},update:function(e){var r={template_raw:e.data.extra_param};t.simple_action(e,n,"update",r)},fetch_template:function(e){t.show(e,n,"template")},enable:function(e){t.simple_action(e,n,"enable")},disable:function(e){t.simple_action(e,n,"disable")},monitor:function(e){t.monitor(e,n,!1)},pool_monitor:function(e){t.monitor(e,n,!0)},rename:function(e){var r=e.data.extra_param;t.simple_action(e,n,"rename",r)}};return r}),define("opennebula/Image",["require","./action"],function(e){var t=e("./action"),n="IMAGE",r={create:function(e){t.create(e,n)},del:function(e){t.del(e,n)},list:function(e){t.list(e,n)},show:function(e){t.show(e,n)},chown:function(e){t.chown(e,n)},chgrp:function(e){t.chgrp(e,n)},chmod:function(e){var r=e.data.extra_param;t.simple_action(e,n,"chmod",r)},update:function(e){var r={template_raw:e.data.extra_param};t.simple_action(e,n,"update",r)},fetch_template:function(e){t.show(e,n,"template")},enable:function(e){t.simple_action(e,n,"enable")},disable:function(e){t.simple_action(e,n,"disable")},persistent:function(e){t.simple_action(e,n,"persistent")},nonpersistent:function(e){t.simple_action(e,n,"nonpersistent")},chtype:function(e){var r={type:e.data.extra_param};t.simple_action(e,n,"chtype",r)},clone:function(e){var r=e.data.extra_param?e.data.extra_param:{};t.simple_action(e,n,"clone",r)},rename:function(e){var r=e.data.extra_param;t.simple_action(e,n,"rename",r)}};return r}),define("opennebula/marketplace",["require","./action","./error"],function(e){var t=e("./action"),n=e("./error"),r="MARKETPLACE",i={show:function(e){e.error=function(){return notifyError("Cannot connect to OpenNebula Marketplace")},t.show(e,r)},list:function(e){var t=e.success,r=e.error,i=e.timeout||!1,a=OpenNebula.Helper.request("MARKETPLACE","list");$.ajax({url:"marketplace",type:"GET",data:{timeout:i},dataType:"json",success:function(e){return $(".marketplace_error_message").hide(),t?t(a,e):null},error:function(e){return $(".marketplace_error_message").show(),r?r(a,n(e)):null}})}};return i}),define("opennebula/network",["require","./action"],function(e){var t=e("./action"),n="VNET",r={create:function(e){t.create(e,n)},del:function(e){t.del(e,n)},list:function(e){t.list(e,n)},list_in_zone:function(e){t.list_in_zone(e,n)},show:function(e){t.show(e,n)},chown:function(e){t.chown(e,n)},chgrp:function(e){t.chgrp(e,n)},chmod:function(e){var r=e.data.extra_param;t.simple_action(e,n,"chmod",r)},publish:function(e){t.simple_action(e,n,"publish")},unpublish:function(e){t.simple_action(e,n,"unpublish")},hold:function(e){var r=e.data.extra_param;t.simple_action(e,n,"hold",r)},release:function(e){var r=e.data.extra_param;t.simple_action(e,n,"release",r)},add_ar:function(e){var r={ar_template:e.data.extra_param};t.simple_action(e,n,"add_ar",r)},rm_ar:function(e){var r=e.data.extra_param;t.simple_action(e,n,"rm_ar",r)},update_ar:function(e){var r={ar_template:e.data.extra_param};t.simple_action(e,n,"update_ar",r)},reserve:function(e){var r=e.data.extra_param;t.simple_action(e,n,"reserve",r)},update:function(e){var r={template_raw:e.data.extra_param};t.simple_action(e,n,"update",r)},fetch_template:function(e){t.show(e,n,"template")},rename:function(e){var r=e.data.extra_param;t.simple_action(e,n,"rename",r)}};return r}),define("opennebula/role",["require","./action","./error"],function(e){var t=e("./action"),n=e("./error"),r="DOCUMENT",i="service",a=function(){return{}},o={state:function(e){e=e?e:0;var t=[tr("PENDING"),tr("DEPLOYING"),tr("RUNNING"),tr("UNDEPLOYING"),tr("WARNING"),tr("DONE"),tr("FAILED_UNDEPLOYING"),tr("FAILED_DEPLOYING"),tr("SCALING"),tr("FAILED_SCALING"),tr("COOLDOWN")][e];return t?t:e},hold:function(e){t.simple_action(e,r,"hold",a(),i)},release:function(e){t.simple_action(e,r,"release",a(),i)},suspend:function(e){t.simple_action(e,r,"suspend",a(),i)},resume:function(e){t.simple_action(e,r,"resume",a(),i)},stop:function(e){t.simple_action(e,r,"stop",a(),i)},boot:function(e){t.simple_action(e,r,"boot",a(),i)},delete_recreate:function(e){t.simple_action(e,r,"delete-recreate",a(),i)},reboot:function(e){t.simple_action(e,r,"reboot",a(),i)},reboot_hard:function(e){t.simple_action(e,r,"reboot-hard",a(),i)},poweroff:function(e){t.simple_action(e,r,"poweroff",a(),i)},poweroff_hard:function(e){t.simple_action(e,r,"poweroff-hard",a(),i)},undeploy:function(e){t.simple_action(e,r,"undeploy",a(),i)},undeploy_hard:function(e){t.simple_action(e,r,"undeploy-hard",a(),i)},snapshot_create:function(e){t.simple_action(e,r,"snapshot-create",a(),i)},shutdown:function(e){t.simple_action(e,r,"shutdown",a(),i)},cancel:function(e){t.simple_action(e,r,"shutdown-hard",a(),i)},del:function(e){t.simple_action(e,r,"delete",a(),i)},recover:function(e){t.simple_action(e,r,"recover",null,i)},update:function(e){var t=OpenNebula.Helper.request(r,"update",e.data.id);$.ajax({url:i+"/"+e.data.id,type:"PUT",dataType:"json",contentType:"application/json; charset=utf-8",data:JSON.stringify(e.data.extra_param),success:function(n){return e.success?e.success(t,n):null},error:function(r){return e.error?e.error(t,n(r)):null}})}};return o}),define("opennebula/securitygroup",["require","./action"],function(e){var t=e("./action"),n="SECURITY_GROUP",r={resource:"SECURITY_GROUP",create:function(e){t.create(e,n)},del:function(e){t.del(e,n)},list:function(e){t.list(e,n)},show:function(e){t.show(e,n)},chown:function(e){t.chown(e,n)},chgrp:function(e){t.chgrp(e,n)},chmod:function(e){var r=e.data.extra_param;t.simple_action(e,n,"chmod",r)},update:function(e){var r={template_raw:e.data.extra_param};t.simple_action(e,n,"update",r)},fetch_template:function(e){t.show(e,n,"template")},clone:function(e){var r=e.data.extra_param?e.data.extra_param:"",i={name:r};t.simple_action(e,n,"clone",i)},rename:function(e){var r=e.data.extra_param;t.simple_action(e,n,"rename",r)}};return r}),define("opennebula/service",["require","./action"],function(e){var t=e("./action"),n="DOCUMENT",r="service",i="SERVICE",a={del:function(e){e.cache_name=i,t.del(e,n,r)},list:function(e){e.cache_name=i,t.list(e,n,r)},show:function(e){e.cache_name=i,t.show(e,n,!1,r)},chown:function(e){e.cache_name=i,t.chown(e,n,r)},chgrp:function(e){e.cache_name=i,t.chgrp(e,n,r)},chmod:function(e){e.cache_name=i;var a=e.data.extra_param;t.simple_action(e,n,"chmod",a,r)},shutdown:function(e){e.cache_name=i,t.simple_action(e,n,"shutdown",null,r)},recover:function(e){e.cache_name=i,t.simple_action(e,n,"recover",null,r)},state:function(e){var t=[tr("PENDING"),tr("DEPLOYING"),tr("RUNNING"),tr("UNDEPLOYING"),tr("WARNING"),tr("DONE"),tr("FAILED_UNDEPLOYING"),tr("FAILED_DEPLOYING"),tr("SCALING"),tr("FAILED_SCALING"),tr("COOLDOWN")][e];return t?t:e}};return a}),define("opennebula/servicetemplate",["require","./action"],function(e){var t=e("./action"),n="DOCUMENT",r="service_template",i=i,a={create:function(e){e.cache_name=i,t.create(e,n,r)},instantiate:function(e){e.cache_name=i;var a=e.data.extra_param;t.simple_action(e,n,"instantiate",a,r)},update:function(e){e.cache_name=i;var a={template_json:e.data.extra_param};t.simple_action(e,n,"update",a,r)},del:function(e){e.cache_name=i,t.del(e,n,r)},list:function(e){e.cache_name=i,t.list(e,n,r)},show:function(e){e.cache_name=i,t.show(e,n,!1,r)},chown:function(e){e.cache_name=i,t.chown(e,n,r)},chgrp:function(e){e.cache_name=i,t.chgrp(e,n,r)},chmod:function(e){e.cache_name=i;var a=e.data.extra_param;t.simple_action(e,n,"chmod",a,r)}};return a}),define("opennebula/support",["require","./action"],function(e){var t=e("./action"),n="REQUEST",r="support/request",i="REQUEST",a={create:function(e){t.create(e,n,r)},update:function(e){t.simple_action(e,n,"update",e.data.extra_param,r)},list:function(e){e.cache_name=i,t.clear_cache(e.cache_name),t.list(e,n,r)},show:function(e){t.show(e,n,!1,r)}};return a}),define("opennebula/Template",["require","./action"],function(e){var t=e("./action"),n="TEMPLATE",r={create:function(e){t.create(e,n)},del:function(e){t.del(e,n)},list:function(e){t.list(e,n)},show:function(e){t.show(e,n)},chown:function(e){t.chown(e,n)},chgrp:function(e){t.chgrp(e,n)},chmod:function(e){var r=e.data.extra_param;t.simple_action(e,n,"chmod",r)},update:function(e){var r=e.data.extra_param;t.simple_action(e,n,"update",r)},fetch_template:function(e){t.show(e,n,"template")},publish:function(e){t.simple_action(e,n,"publish")},unpublish:function(e){t.simple_action(e,n,"unpublish")},instantiate:function(e){var r=e.data.extra_param?e.data.extra_param:{};t.simple_action(e,n,"instantiate",r)},clone:function(e){var r=e.data.extra_param?e.data.extra_param:"",i={name:r};t.simple_action(e,n,"clone",i)},rename:function(e){var r=e.data.extra_param;t.simple_action(e,n,"rename",r)}};return r}),define("opennebula/user",["require","./action","./helper","./error"],function(e){var t=e("./action"),n=e("./helper"),r=e("./error"),i="USER",a={create:function(e){t.create(e,i)},del:function(e){t.del(e,i)},list:function(e){var t=i.toLowerCase(),a=e.success,o=e.error,s=e.timeout||!1,u=n.request(i,"list");$.ajax({url:t,type:"GET",data:{timeout:s},dataType:"json",success:function(e){default_user_quotas=Quotas.default_quotas(e.USER_POOL.DEFAULT_USER_QUOTAS);var t=n.pool(i,e),r=n.pool_hash_processing("USER_POOL","QUOTAS",e);return a?a(u,t,r):null},error:function(e){return o?o(u,r(e)):null}})},show:function(e){t.show(e,i)},passwd:function(e){var n={password:e.data.extra_param};t.simple_action(e,i,"passwd",n)},chgrp:function(e){var n={group_id:e.data.extra_param};t.simple_action(e,i,"chgrp",n)},chauth:function(e){var n={auth_driver:e.data.extra_param};t.simple_action(e,i,"chauth",n)},update:function(e){var n={template_raw:e.data.extra_param};t.simple_action(e,i,"update",n)},fetch_template:function(e){t.show(e,i,"template")},accounting:function(e){t.monitor(e,i,!1)},set_quota:function(e){var n={quotas:e.data.extra_param};t.simple_action(e,i,"set_quota",n)},addgroup:function(e){var n={group_id:e.data.extra_param};t.simple_action(e,i,"addgroup",n)},delgroup:function(e){var n={group_id:e.data.extra_param};t.simple_action(e,i,"delgroup",n)}};return a}),define("opennebula/vdc",["require","./action"],function(e){var t=e("./action"),n="VDC",r={create:function(e){t.create(e,n)},del:function(e){t.del(e,n)},list:function(e){t.list(e,n)},show:function(e){t.show(e,n)},update:function(e){var r={template_raw:e.data.extra_param};t.simple_action(e,n,"update",r)},fetch_template:function(e){t.show(e,n,"template")},rename:function(e){var r=e.data.extra_param;t.simple_action(e,n,"rename",r)},add_group:function(e){var r=e.data.extra_param;t.simple_action(e,n,"add_group",r)},del_group:function(e){var r=e.data.extra_param;t.simple_action(e,n,"del_group",r)},add_cluster:function(e){var r=e.data.extra_param;t.simple_action(e,n,"add_cluster",r)},del_cluster:function(e){var r=e.data.extra_param;t.simple_action(e,n,"del_cluster",r)},add_host:function(e){var r=e.data.extra_param;t.simple_action(e,n,"add_host",r)},del_host:function(e){var r=e.data.extra_param;t.simple_action(e,n,"del_host",r)},add_datastore:function(e){var r=e.data.extra_param;t.simple_action(e,n,"add_datastore",r)},del_datastore:function(e){var r=e.data.extra_param;t.simple_action(e,n,"del_datastore",r)},add_vnet:function(e){var r=e.data.extra_param;t.simple_action(e,n,"add_vnet",r)},del_vnet:function(e){var r=e.data.extra_param;t.simple_action(e,n,"del_vnet",r)}};return r}),define("opennebula/vm",["require","./action","./helper","./error"],function(e){var t=e("./action"),n=e("./helper"),r=e("./error"),i="VM",a={state:{INIT:0,PENDING:1,HOLD:2,ACTIVE:3,STOPPED:4,SUSPENDED:5,DONE:6,FAILED:7,POWEROFF:8,UNDEPLOYED:9},lcm_state:{LCM_INIT:0,PROLOG:1,BOOT:2,RUNNING:3,MIGRATE:4,SAVE_STOP:5,SAVE_SUSPEND:6,SAVE_MIGRATE:7,PROLOG_MIGRATE:8,PROLOG_RESUME:9,EPILOG_STOP:10,EPILOG:11,SHUTDOWN:12,CANCEL:13,FAILURE:14,CLEANUP_RESUBMIT:15,UNKNOWN:16,HOTPLUG:17,SHUTDOWN_POWEROFF:18,BOOT_UNKNOWN:19,BOOT_POWEROFF:20,BOOT_SUSPENDED:21,BOOT_STOPPED:22,CLEANUP_DELETE:23,HOTPLUG_SNAPSHOT:24,HOTPLUG_NIC:25,HOTPLUG_SAVEAS:26,HOTPLUG_SAVEAS_POWEROFF:27,HOTPLUG_SAVEAS_SUSPENDED:28,SHUTDOWN_UNDEPLOY:29,EPILOG_UNDEPLOY:30,PROLOG_UNDEPLOY:31,BOOT_UNDEPLOY:32,HOTPLUG_PROLOG_POWEROFF:33,HOTPLUG_EPILOG_POWEROFF:34},create:function(e){t.create(e,i)},del:function(e){t.del(e,i)},list:function(e){t.list(e,i)},show:function(e){t.show(e,i)},chown:function(e){t.chown(e,i)},chgrp:function(e){t.chgrp(e,i)},chmod:function(e){var n=e.data.extra_param;t.simple_action(e,i,"chmod",n)},shutdown:function(e){t.simple_action(e,i,"shutdown")},hold:function(e){t.simple_action(e,i,"hold")},release:function(e){t.simple_action(e,i,"release")},stop:function(e){t.simple_action(e,i,"stop")},cancel:function(e){t.simple_action(e,i,"cancel")},suspend:function(e){t.simple_action(e,i,"suspend")},resume:function(e){t.simple_action(e,i,"resume")},restart:function(e){t.simple_action(e,i,"restart")},resubmit:function(e){t.simple_action(e,i,"resubmit")},poweroff:function(e){var n={hard:!1};t.simple_action(e,i,"poweroff",n)},poweroff_hard:function(e){var n={hard:!0};t.simple_action(e,i,"poweroff",n)},undeploy:function(e){var n={hard:!1};t.simple_action(e,i,"undeploy",n)},undeploy_hard:function(e){var n={hard:!0};t.simple_action(e,i,"undeploy",n)},reboot:function(e){t.simple_action(e,i,"reboot")},reset:function(e){t.simple_action(e,i,"reset")},log:function(e){t.show(e,i,"log")},deploy:function(e){var n=e.data.extra_param;t.simple_action(e,i,"deploy",n)},livemigrate:function(e){var n=e.data.extra_param;t.simple_action(e,i,"livemigrate",n)},migrate:function(e){var n=e.data.extra_param;t.simple_action(e,i,"migrate",n)},saveas:function(e){var n=e.data.extra_param;t.simple_action(e,i,"saveas",n)},snapshot_create:function(e){var n=e.data.extra_param;t.simple_action(e,i,"snapshot_create",n)},snapshot_revert:function(e){var n=e.data.extra_param;t.simple_action(e,i,"snapshot_revert",n)},snapshot_delete:function(e){var n=e.data.extra_param;t.simple_action(e,i,"snapshot_delete",n)},vnc:function(e,t){var a=e.success,o=e.error,s=e.data.id,u=i,l=t,c=(n.action(l),n.request(u,l,s));$.ajax({url:"vm/"+s+"/"+l,type:"POST",dataType:"json",success:function(e){return a?a(c,e):null},error:function(e){return o?o(c,r(e)):null}})},startvnc:function(e){OpenNebula.VM.vnc(e,"startvnc")},update:function(e){var n={template_raw:e.data.extra_param};
-t.simple_action(e,i,"update",n)},monitor:function(e){t.monitor(e,i,!1)},pool_monitor:function(e){t.monitor(e,i,!0)},resize:function(e){var n=e.data.extra_param;t.simple_action(e,i,"resize",n)},attachdisk:function(e){var n={disk_template:e.data.extra_param};t.simple_action(e,i,"attachdisk",n)},detachdisk:function(e){var n={disk_id:e.data.extra_param};t.simple_action(e,i,"detachdisk",n)},attachnic:function(e){var n={nic_template:e.data.extra_param};t.simple_action(e,i,"attachnic",n)},detachnic:function(e){var n={nic_id:e.data.extra_param};t.simple_action(e,i,"detachnic",n)},rename:function(e){var n=e.data.extra_param;t.simple_action(e,i,"rename",n)},resched:function(e){t.simple_action(e,i,"resched")},unresched:function(e){t.simple_action(e,i,"unresched")},recover:function(e){var n={"with":e.data.extra_param};t.simple_action(e,i,"recover",n)},accounting:function(e){t.accounting(e,i)},showback:function(e){t.showback(e,i)}};return a}),define("opennebula/zone",["require","./action"],function(e){var t=e("./action"),n="ZONE",r={create:function(e){t.create(e,n)},del:function(e){t.del(e,n)},list:function(e){t.list(e,n)},show:function(e){t.show(e,n)},update:function(e){var r={template_raw:e.data.extra_param};t.simple_action(e,n,"update",r)},fetch_template:function(e){t.show(e,n,"template")},rename:function(e){var r=e.data.extra_param;t.simple_action(e,n,"rename",r)}};return r}),define("opennebula",["require","jquery","./opennebula/helper","./opennebula/action","./opennebula/auth","./opennebula/error","./opennebula/acl","./opennebula/cluster","./opennebula/datastore","./opennebula/group","./opennebula/host","./opennebula/Image","./opennebula/marketplace","./opennebula/network","./opennebula/role","./opennebula/securitygroup","./opennebula/service","./opennebula/servicetemplate","./opennebula/support","./opennebula/Template","./opennebula/user","./opennebula/vdc","./opennebula/vm","./opennebula/zone"],function(e){e("jquery");var t=e("./opennebula/helper"),n=e("./opennebula/action"),r=e("./opennebula/auth"),i=e("./opennebula/error"),a=e("./opennebula/acl"),o=e("./opennebula/cluster"),s=e("./opennebula/datastore"),u=e("./opennebula/group"),l=e("./opennebula/host"),c=e("./opennebula/Image"),p=e("./opennebula/marketplace"),f=e("./opennebula/network"),h=e("./opennebula/role"),d=e("./opennebula/securitygroup"),m=e("./opennebula/service"),g=e("./opennebula/servicetemplate"),v=e("./opennebula/support"),y=e("./opennebula/Template"),b=e("./opennebula/user"),_=e("./opennebula/vdc"),x=e("./opennebula/vm"),w=e("./opennebula/zone");"undefined"!=typeof csrftoken&&$.ajaxPrefilter(function(e,t){var n=t.data;"string"==typeof n?(n=JSON.parse(n),n.csrftoken=csrftoken,e.data=JSON.stringify(n)):(n=n||{},n.csrftoken=csrftoken,e.data=$.param(n))}),$.ajaxSetup({converters:{"text json":function(e){return jQuery.parseJSON(jQuery("<div/>").text(e).html())}}});var E={Helper:t,Action:n,Auth:r,Error:i,Acl:a,Cluster:o,Datastore:s,Group:u,Host:l,Image:c,Marketplace:p,Network:f,Role:h,SecurityGroup:d,Service:m,ServiceTemplate:g,Support:v,Template:y,User:b,Vdc:_,Vm:x,Zone:w};return E}),define("app",["require","jquery","sunstone","tabs/infra-tab","tabs/zones-tab","opennebula"],function(e){e("jquery");var t=e("sunstone");e("tabs/infra-tab"),e("tabs/zones-tab");var n=e("opennebula");n.Zone.list({success:function(e,t){console.log(t)}});var r,i=["infra-tab","zones-tab"];$.each(i,function(n,i){r=e("tabs/"+i),t.addMainTab(i,r.definition)}),$(document).ready(function(){t.insertTabs()})}),require.config({paths:{jquery:"../bower_components/jquery/dist/jquery.min","foundation.core":"../bower_components/foundation/js/foundation/foundation","foundation.abide":"../bower_components/foundation/js/foundation/foundation.abide","foundation.accordion":"../bower_components/foundation/js/foundation/foundation.accordion","foundation.alert":"../bower_components/foundation/js/foundation/foundation.alert","foundation.clearing":"../bower_components/foundation/js/foundation/foundation.clearing","foundation.dropdown":"../bower_components/foundation/js/foundation/foundation.dropdown","foundation.equalizer":"../bower_components/foundation/js/foundation/foundation.equalizer","foundation.interchange":"../bower_components/foundation/js/foundation/foundation.interchange","foundation.joyride":"../bower_components/foundation/js/foundation/foundation.joyride","foundation.magellan":"../bower_components/foundation/js/foundation/foundation.magellan","foundation.offcanvas":"../bower_components/foundation/js/foundation/foundation.offcanvas","foundation.orbit":"../bower_components/foundation/js/foundation/foundation.orbit","foundation.reveal":"../bower_components/foundation/js/foundation/foundation.reveal","foundation.tab":"../bower_components/foundation/js/foundation/foundation.tab","foundation.tooltip":"../bower_components/foundation/js/foundation/foundation.tooltip","foundation.topbar":"../bower_components/foundation/js/foundation/foundation.topbar",hbs:"../bower_components/require-handlebars-plugin/hbs","jquery.cookie":"../bower_components/foundation/js/vendor/jquery.cookie",fastclick:"../bower_components/foundation/js/vendor/fastclick",modernizr:"../bower_components/foundation/js/vendor/modernizr",placeholder:"../bower_components/foundation/js/vendor/placeholder"},shim:{jquery:{exports:"$"},"foundation.core":{deps:["jquery","modernizr"],exports:"Foundation"},"foundation.abide":{deps:["foundation.core"]},"foundation.accordion":{deps:["foundation.core"]},"foundation.alert":{deps:["foundation.core"]},"foundation.clearing":{deps:["foundation.core"]},"foundation.dropdown":{deps:["foundation.core"]},"foundation.equalizer":{deps:["foundation.core"]},"foundation.interchange":{deps:["foundation.core"]},"foundation.joyride":{deps:["foundation.core","foundation.cookie"]},"foundation.magellan":{deps:["foundation.core"]},"foundation.offcanvas":{deps:["foundation.core"]},"foundation.orbit":{deps:["foundation.core"]},"foundation.reveal":{deps:["foundation.core"]},"foundation.tab":{deps:["foundation.core"]},"foundation.tooltip":{deps:["foundation.core"]},"foundation.topbar":{deps:["foundation.core"]},"jquery.cookie":{deps:["jquery"]},fastclick:{exports:"FastClick"},modernizr:{exports:"Modernizr"},placeholder:{exports:"Placeholders"}}}),require(["app"],function(){}),define("main",function(){});
-//# sourceMappingURL=main.min.js
-//# sourceMappingURL=main.min.js.map
\ No newline at end of file
diff --git a/src/sunstone/public/dist/main.min.js.map b/src/sunstone/public/dist/main.min.js.map
deleted file mode 100644
index ac297292fd..0000000000
--- a/src/sunstone/public/dist/main.min.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"main.min.js","sources":["../bower_components/jquery/dist/jquery.min.js","../bower_components/foundation/js/vendor/modernizr.js","../bower_components/foundation/js/foundation/foundation.js","sunstone-config.js","utils/locale.js","../bower_components/require-handlebars-plugin/hbs/handlebars.js","../bower_components/require-handlebars-plugin/hbs/underscore.js","../bower_components/require-handlebars-plugin/hbs/i18nprecompile.js","../bower_components/require-handlebars-plugin/hbs/json2.js","../bower_components/require-handlebars-plugin/hbs.js","sunstone/tab!hbs","templates/helpers/tr.js","sunstone/buttons!hbs","sunstone.js","tabs/infra-tab.js","tabs/zones-tab/buttons.js","hbs!tabs/zones-tab/table","tabs/zones-tab.js","opennebula/helper.js","opennebula/action.js","opennebula/auth.js","opennebula/error.js","opennebula/acl.js","opennebula/cluster.js","opennebula/datastore.js","opennebula/group.js","opennebula/host.js","opennebula/Image.js","opennebula/marketplace.js","opennebula/network.js","opennebula/role.js","opennebula/securitygroup.js","opennebula/service.js","opennebula/servicetemplate.js","opennebula/support.js","opennebula/Template.js","opennebula/user.js","opennebula/vdc.js","opennebula/vm.js","opennebula/zone.js","opennebula.js","app.js","main.js"],"names":["a","b","module","exports","document","Error","window","this","s","length","c","n","type","isWindow","nodeType","x","isFunction","grep","d","call","w","test","filter","g","D","G","F","each","match","E","I","l","removeEventListener","ready","K","Object","defineProperty","cache","get","expando","uid","P","replace","O","toLowerCase","getAttribute","N","parseJSON","e","M","set","Z","$","_","activeElement","jb","nodeName","firstChild","getElementsByTagName","appendChild","ownerDocument","createElement","kb","lb","gb","exec","removeAttribute","mb","L","nb","f","h","i","j","hasData","access","events","handle","event","add","extend","ob","querySelectorAll","merge","pb","T","checked","defaultValue","sb","appendTo","body","getDefaultComputedStyle","display","css","detach","tb","rb","qb","documentElement","contentDocument","write","close","xb","style","wb","getPropertyValue","contains","vb","ub","width","minWidth","maxWidth","yb","apply","arguments","Fb","toUpperCase","slice","Eb","Gb","Ab","Math","max","Hb","R","Ib","offsetWidth","offsetHeight","k","boxSizingReliable","parseFloat","Jb","S","Kb","prototype","init","Sb","setTimeout","Lb","now","Tb","height","opacity","Ub","Rb","concat","Vb","m","o","p","q","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","Nb","isEmptyObject","hidden","show","done","hide","remove","start","end","Wb","camelCase","isArray","cssHooks","expand","Xb","Qb","Deferred","elem","startTime","duration","tweens","run","notifyWith","resolveWith","promise","props","opts","specialEasing","originalProperties","originalOptions","createTween","Tween","easing","push","stop","rejectWith","map","fx","timer","anim","progress","complete","fail","qc","unshift","rc","dataTypes","mc","sc","ajaxSettings","flatOptions","tc","contents","shift","mimeType","getResponseHeader","converters","uc","responseFields","dataFilter","dataType","split","state","error","data","Ac","wc","Jc","defaultView","indexOf","toString","hasOwnProperty","fn","r","jquery","constructor","selector","toArray","pushStack","prevObject","context","first","eq","last","sort","splice","isPlainObject","random","isReady","noop","Array","isNumeric","globalEval","eval","trim","text","head","parentNode","removeChild","makeArray","inArray","guid","proxy","Date","support","t","v","getElementById","id","H","getElementsByClassName","qsa","u","bb","setAttribute","ab","join","y","hb","cacheLength","ib","attrHandle","sourceIndex","C","nextSibling","value","dir","J","relative","matches","find","TAG","uniqueSort","z","A","B","pop","Q","RegExp","U","V","W","X","ID","CLASS","ATTR","PSEUDO","CHILD","bool","needsContext","Y","cb","db","String","fromCharCode","eb","childNodes","fb","isXML","setDocument","top","addEventListener","attachEvent","attributes","className","createComment","getById","getElementsByName","getAttributeNode","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","sortDetached","attr","specified","detectDuplicates","sortStable","getText","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","preFilter","lastChild","pseudos","setFilters","not","has","innerText","lang","target","location","hash","root","focus","hasFocus","href","tabIndex","enabled","disabled","selected","selectedIndex","parent","header","input","button","even","odd","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","filters","tokenize","compile","select","expr","unique","isXMLDoc","is","parseHTML","children","next","prev","sibling","closest","index","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","once","memory","stopOnFalse","disable","lock","locked","fireWith","fired","then","resolve","reject","notify","pipe","when","readyWait","holdReady","triggerHandler","off","readyState","acceptData","accepts","key","defineProperties","discard","removeData","_data","_removeData","name","dequeue","clearQueue","source","createDocumentFragment","checkClone","cloneNode","noCloneChecked","focusinBubbles","global","handler","triggered","dispatch","special","delegateType","bindType","origType","namespace","delegateCount","setup","teardown","removeEvent","trigger","Event","isTrigger","namespace_re","result","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","delegateTarget","preDispatch","handlers","currentTarget","isImmediatePropagationStopped","handleObj","stopPropagation","postDispatch","fixHooks","keyHooks","which","charCode","keyCode","mouseHooks","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","load","blur","click","beforeunload","originalEvent","returnValue","simulate","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","relatedTarget","on","one","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","clone","buildFragment","createTextNode","cleanData","append","domManip","prepend","insertBefore","before","after","html","replaceWith","replaceChild","src","_evalUrl","prependTo","insertAfter","replaceAll","opener","getComputedStyle","cssText","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginRight","marginRight","swap","zb","Bb","Cb","position","visibility","Db","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","margin","padding","border","toggle","prop","options","cur","unit","propHooks","pos","step","linear","swing","cos","PI","Mb","Ob","Pb","*","Animation","tweener","prefilter","speed","speeds","old","fadeTo","animate","finish","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","tick","interval","setInterval","clearInterval","slow","fast","delay","clearTimeout","checkOn","optSelected","optDisabled","radioValue","Yb","Zb","$b","removeAttr","attrHooks","propFix","_b","removeProp","for","class","hasAttribute","ac","addClass","removeClass","toggleClass","hasClass","bc","val","valHooks","hover","bind","unbind","delegate","undelegate","cc","dc","JSON","parse","parseXML","DOMParser","parseFromString","ec","fc","gc","hc","ic","jc","kc","lc","nc","oc","pc","active","lastModified","etag","url","isLocal","processData","async","contentType","xml","json","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","ifModified","status","statusText","statusCode","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","success","method","crossDomain","param","traditional","hasContent","headers","beforeSend","timeout","send","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","wrap","unwrap","visible","vc","xc","yc","zc","encodeURIComponent","serialize","serializeArray","xhr","XMLHttpRequest","Bc","Cc","Dc",1223,"Ec","cors","open","username","xhrFields","onload","onerror","responseText","script","text script","charset","scriptCharset","Fc","Gc","jsonp","jsonpCallback","Hc","animated","Ic","offset","setOffset","left","using","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","scrollTo","Height","Width","content","size","andSelf","define","amd","Kc","jQuery","Lc","noConflict","Modernizr","charAt","list","HTMLDataListElement","inputtypes","WebkitAppearance","checkValidity","svg","parseInt","background","matchMedia","msMatchMedia","currentStyle","change","Function","TypeError","flexbox","flexboxlegacy","canvas","getContext","canvastext","fillText","webgl","WebGLRenderingContext","touch","DocumentTouch","offsetTop","geolocation","navigator","postmessage","postMessage","websqldatabase","openDatabase","indexedDB","hashchange","documentMode","history","pushState","draganddrop","websockets","rgba","backgroundColor","hsla","multiplebgs","backgroundsize","borderimage","borderradius","boxshadow","textshadow","textShadow","cssanimations","csscolumns","cssgradients","backgroundImage","cssreflections","csstransforms","csstransforms3d","offsetLeft","csstransitions","fontface","sheet","styleSheet","cssRules","generatedcontent","video","canPlayType","Boolean","ogg","h264","webm","audio","mp3","wav","m4a","localstorage","localStorage","setItem","removeItem","sessionstorage","sessionStorage","webworkers","Worker","applicationcache","applicationCache","createElementNS","createSVGRect","inlinesvg","namespaceURI","smil","svgclippaths","addTest","elements","createElem","canHaveChildren","tagUrn","frag","createFrag","shivMethods","shivCSS","hasCSS","html5","version","supportsUnknownElements","shivDocument","_version","_prefixes","_domPrefixes","_cssomPrefixes","mq","hasEvent","testProp","testAllProps","testStyles","prefixed","ret","undefined","removeQuotes","string","header_helpers","class_array","FastClick","attach","cont","attr_name","arr","add_namespace","str","parts","bindings","self","$this","should_bind_events","settings","data_options","scope","single_image_loaded","callback","loaded","bindLoad","userAgent","getTime","doc","docElem","refNode","fakeBody","div","media","raf","animating","requestAnimationFrame","jqueryFxAvailable","lastTime","vendors","cancelAnimationFrame","currTime","timeToCall","Foundation","media_queries","small","small-only","medium","medium-only","large","large-only","xlarge","xlarge-only","xxlarge","stylesheet","libraries","response","args","responses","rtl","set_namespace","libs","init_lib","lib","patch","defaults","utils","inherit","methods","methods_arr","throttle","func","debounce","immediate","later","callNow","el","data_attr_name","isNumber","isNaN","ii","opts_arr","cached_options","register_media","media_class","add_custom_rule","rule","insertRule","query","image_loaded","images","unloaded","random_str","fidx","prefix","is_small_up","is_medium_up","is_large_up","is_xlarge_up","is_xxlarge_up","is_small_only","is_medium_only","is_large_only","is_xlarge_only","is_xxlarge_only","foundation","require","_config","config","Config","isTabEnabled","tabName","isTabActionEnabled","actionName","panelName","configTab","isTabPanelEnabled","panelTabName","isFeatureEnabled","featureName","tabTableColumns","columns","isTemplateCreationTabEnabled","templateTabName","dashboardWidgets","perRow","widgets","tableOrder","provision","dashboard","isEnabled","widget","create_vm","logo","autoRefresh","tmp","factory","Handlebars","__module4__","SafeString","__exports__","__module3__","__dependency1__","escapeChar","chr","escape","obj","escapeExpression","possible","badChars","isEmpty","appendContextPath","contextPath","&","<","\"","'","`","__module5__","Exception","message","node","line","firstLine","firstColumn","idx","errorProps","lineNumber","column","__module2__","__dependency2__","HandlebarsEnvironment","helpers","partials","registerDefaultHelpers","instance","registerHelper","inverse","ids","createFrame","Utils","conditional","includeZero","level","log","field","VERSION","COMPILER_REVISION","REVISION_CHANGES",1,2,3,4,5,6,"objectType","logger","unregisterHelper","registerPartial","partial","unregisterPartial","methodMap","DEBUG","INFO","WARN","ERROR","console","object","frame","_parent","__module6__","__dependency3__","checkRevision","compilerInfo","compilerRevision","currentRevision","runtimeVersions","compilerVersions","template","templateSpec","env","main","VM","compiler","invokePartialWrapper","indent","depths","invokePartial","compat","lines","container","lookup","len","lambda","current","programs","program","programWrapper","depth","common","_setup","useData","initData","useDepths","isTop","usePartial","_child","prog","__module1__","__dependency4__","__dependency5__","base","runtime","create","spec","__module7__","LocationInfo","locInfo","first_line","first_column","lastColumn","last_column","lastLine","last_line","AST","ProgramNode","statements","strip","MustacheNode","rawParams","escapeFlag","escaped","sexpr","SexprNode","params","eligibleHelper","isHelper","isSimple","PartialNode","partialName","inlineStandalone","BlockNode","mustache","isInverse","RawBlockNode","original","ContentNode","HashNode","pairs","IdNode","dig","depthString","part","separator","isScoped","idName","stringModeValue","PartialNameNode","DataNode","StringNode","NumberNode","number","Number","BooleanNode","CommentNode","comment","__module9__","handlebars","Parser","yy","parser","trace","symbols_","EOF","program_repetition0","statement","block","rawBlock","CONTENT","COMMENT","openRawBlock","END_RAW_BLOCK","OPEN_RAW_BLOCK","CLOSE_RAW_BLOCK","openBlock","block_option0","closeBlock","openInverse","block_option1","OPEN_BLOCK","CLOSE","OPEN_INVERSE","inverseAndProgram","INVERSE","OPEN_ENDBLOCK","path","OPEN","OPEN_UNESCAPED","CLOSE_UNESCAPED","OPEN_PARTIAL","partial_option0","partial_option1","sexpr_repetition0","sexpr_option0","dataName","STRING","NUMBER","BOOLEAN","OPEN_SEXPR","CLOSE_SEXPR","hash_repetition_plus0","hashSegment","EQUALS","DATA","pathSegments","SEP","$accept","$end","terminals_",12,13,15,16,18,24,25,26,28,29,31,32,33,34,42,43,44,45,46,50,51,52,54,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","$0","prepareProgram","_$","prepareBlock","stripFlags","table",7,8,9,10,11,14,19,22,17,30,41,53,35,39,20,27,23,36,38,47,48,49,40,21,37,"defaultActions",57,63,70,73,"parseError","lex","token","lexer","stack","vstack","lstack","recovering","setInput","yylloc","yyloc","ranges","symbol","preErrorSymbol","action","newState","expected","yyval","errStr","showPosition","loc","range","_input","_more","_less","matched","conditionStack","ch","unput","substr","oldLines","more","less","pastInput","past","upcomingInput","pre","tempMatch","rules","_currentRules","flex","begin","condition","popState","conditions","topState","yy_","$avoiding_name_collisions","YY_START","mu","inclusive","emu","com","raw","INITIAL","__module10__","right","inverted","openStandalone","isNextWhitespace","closeStandalone","isPrevWhitespace","omitRight","inverseStrip","omitLeft","isRoot","_isPrevWhitespace","_isNextWhitespace","$1","multiple","rightStripped","leftStripped","__module8__","Helpers","__module11__","Compiler","precompile","ast","environment","JavaScriptCompiler","compileInput","compiled","argEquals","equals","other","opcodes","opcode","otherOpcode","stringParams","trackIds","knownHelpers","helperMissing","blockHelperMissing","if","unless","with","accept","compileProgram","addDepth","classifySexpr","helperSexpr","simpleSexpr","ambiguousSexpr","pushParam","noEscape","isBlock","setupFullMustacheParams","knownHelpersOnly","falsy","isEligible","pushParams","__module12__","Literal","nameLookup","isValidJavaScriptVariableName","depthedLookup","aliases","revision","versions","appendToBuffer","initializeBuffer","quotedString","asObject","isChild","environments","preamble","stackSlot","stackVars","registers","hashes","compileStack","inlineStack","compileChildren","pushSource","createFunctionContext","stringify","objectLiteral","lastContext","varDeclarations","locals","alias","mergeSource","buffer","appendFirst","appendOnly","forceBuffer","substring","blockValue","contextName","setupParams","blockName","popStack","ambiguousBlockValue","flushInline","topStack","lastHelper","appendContent","pendingContent","local","appendEscaped","pushContext","pushStackLiteral","lookupOnContext","scoped","replaceStack","lookupData","resolvePossibleLambda","pushStringParam","pushString","emptyHash","pushHash","values","types","contexts","popHash","pushLiteral","pushProgram","programExpression","invokeHelper","paramSize","nonHelper","helper","setupHelper","callParams","invokeKnownHelper","invokeAmbiguous","helperCall","functionType","useRegister","helperName","paramsInit","assignToHash","pushId","child","matchExistingProgram","programParams","item","incrStack","createdStack","usedLiteral","isInline","topStackName","entry","wrapped","inline","blockHelper","foundHelper","setupOptions","hashIds","hashTypes","hashContexts","reservedWords","compilerWords","RESERVED_WORDS","__module0__","_create","_chain","_wrapped","isEqual","multiline","ignoreCase","breaker","ArrayProto","ObjProto","FuncProto","nativeForEach","forEach","nativeMap","nativeReduce","reduce","nativeReduceRight","reduceRight","nativeFilter","nativeEvery","every","nativeSome","some","nativeIndexOf","nativeLastIndexOf","lastIndexOf","nativeIsArray","nativeKeys","keys","nativeBind","wrapper","iterator","collect","results","foldl","inject","memo","initial","foldr","reversed","detect","any","all","identity","include","found","invoke","pluck","Infinity","computed","min","shuffle","rand","shuffled","floor","sortBy","criteria","groupBy","sortedIndex","array","low","high","mid","isArguments","take","guard","rest","tail","compact","flatten","shallow","without","difference","uniq","isSorted","union","intersection","intersect","zip","ceil","ctor","bound","bindAll","funcs","functions","memoize","hasher","wait","defer","throttling","whenDone","ran","compose","times","names","pick","isObject","tap","interceptor","isString","isElement","isFinite","isBoolean","isDate","isRegExp","isNull","isUndefined","previousUnderscore","property","mixin","addToWrapper","idCounter","uniqueId","templateSettings","evaluate","interpolate","noMatch","escapes","\\","u2028","u2029","escaper","unescaper","unescape","code","variable","render","chain","replaceLocaleStrings","mapping","newString","originalKeyFallback","quote","escapable","lastIndex","meta","charCodeAt","holder","mind","gap","toJSON","rep","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","cx","\b","\t","\n","\f","\r","replacer","space","reviver","walk","SyntaxError","fs","getXhr","progIds","fetchText","buildMap","filecode","templateExtension","customNameExtension","devStyleDirectory","buildStyleDirectory","helperDirectory","i18nDirectory","buildCSSFileName","onHbsReadMethod","progId","XDomainRequest","ActiveXObject","getIEVersion","rv","appName","ua","re","xdm","uidx","hidx","dom","msie","xdr","onprogress","ontimeout","onreadystatechange","process","nodeRequire","readFileSync","java","io","fis","FileInputStream","streamReader","InputStreamReader","reader","BufferedReader","readLine","fetchOrGetCached","styleList","styleMap","filesToRemove","pluginName","asModule","parentRequire","recursiveNodeSearch","res","findPartialDeps","nodes","getMetaData","description","composeParts","recursiveVarSearch","helpersres","newprefix","sideways","paramsWithoutParts","pair","pairValue","getExternalDeps","defaultHelpers","vars","cleanPath","tokens","fetchAndRegister","langMap","depStr","helpDepStr","metaObj","linkElem","readCallback","isBuild","extDeps","helps","debugOutputStart","debugOutputEnd","debugProperties","deps","baseDir","hbs","_partials","partialReference","partialsUrl","references","_loadedDeps","disableHelpers","paths","pathGetter","helperPathCallback","styles","isBrowser","baseUrl","rel","__dirname","writeSync","encoding","serverRender","disableI18n","localeMapping","configHbs","compileOptions","prec","tmplName","partialReferences","compiledName","fromText","removeCombined","i18n","omitExtension","toUrl","langMapPath","locale","er","warn","onLayerEnd","existsSync","unlinkSync","depth0","stack1","listHeader","infoHeader","searchInput","subheader","buttons","Locale","customId","customContext","SunstoneCfg","actions","tabs","info_panels","form_panels","insertTabs","tab","_insertTab","insertButtonsInTab","_setupTabs","tabInfo","tabClass","no_content","TabTemplate","liItem","title","forms","Sunstone","addFormPanel","panelButtons","buttonCode","actionBlock","ButtonsTemplate","buttonsRow","buttonName","strClass","alwaysActive","custom_classes","buttonContext","layout","formName","initializeFunc","popUpFormPanel","submitFormPanel","topTabs","subTabs","showTab","subtabs","li","showAction","addActions","addMainTab","tadId","tabObj","formObj","addInfoPanel","panelObj","popUpInfoPanel","selectedTab","activaTab","activaTabHref","dlTabs","dd","icon","popDialog","updateInfoPanelTab","panelTabId","panelTabObj","refresh","tabContent","info_panel_context","initalizeFunc","popFormDialogLoading","advancedHtml","wizardHtml","popFormDialog","runAction","dataArg","extraParam","notifyError","actionCfg","err","monitor","notifySubmit","getButton","rightInfoVisible","rightListVisible","rightInfoResourceId","infraTab","definition","zoneButtons","Zone.refresh","Zone.create_dialog","Zone.delete","Buttons","TableTemplate","zonesTab","resource","parentTab","Helper","resource_state","image_type","perform","request","pool","pool_name","p_pool","pool_hash_processing","resource_name","OpenNebulaHelper","listCache","listWaiting","listCallbacks","CACHE_EXPIRE","clearCache","cache_name","Action","callbackError","reqPath","OpenNebula","del","force","timestamp","list_in_zone","zone_id","subresource","chown","extra_param","action_obj","owner_id","group_id","simple_action","chgrp","accounting","showback","clear_cache","RESOURCE","Auth","login","remember","req","authString","btoa","CryptoJS","enc","Utf8","Base64","logout","cookie","resp","http_status","OpenNebulaAction","Acl","Cluster","addhost","host_id","delhost","adddatastore","ds_id","deldatastore","addvnet","vnet_id","delvnet","fetch_template","update","template_raw","rename","Datastore","chmod","enable","OpenNebulaError","Group","req_path","callback_error","default_group_quotas","Quotas","default_quotas","GROUP_POOL","DEFAULT_GROUP_QUOTAS","quotas_hash","set_quota","quotas","add_admin","del_admin","Host","pool_monitor","Image","persistent","nonpersistent","chtype","Marketplace","Network","publish","unpublish","hold","release","add_ar","ar_template","rm_ar","update_ar","reserve","PATH","generate_batch_action_params","Role","state_int","suspend","resume","boot","delete_recreate","reboot","reboot_hard","poweroff","poweroff_hard","undeploy","undeploy_hard","snapshot_create","shutdown","cancel","recover","SecurityGroup","CACHE_NAME","Service","ServiceTemplate","instantiate","template_json","Support","Template","User","default_user_quotas","USER_POOL","DEFAULT_USER_QUOTAS","passwd","chauth","auth_driver","addgroup","delgroup","Vdc","add_group","del_group","add_cluster","del_cluster","add_host","del_host","add_datastore","del_datastore","add_vnet","del_vnet","INIT","PENDING","HOLD","ACTIVE","STOPPED","SUSPENDED","DONE","FAILED","POWEROFF","UNDEPLOYED","lcm_state","LCM_INIT","PROLOG","BOOT","RUNNING","MIGRATE","SAVE_STOP","SAVE_SUSPEND","SAVE_MIGRATE","PROLOG_MIGRATE","PROLOG_RESUME","EPILOG_STOP","EPILOG","SHUTDOWN","CANCEL","FAILURE","CLEANUP_RESUBMIT","UNKNOWN","HOTPLUG","SHUTDOWN_POWEROFF","BOOT_UNKNOWN","BOOT_POWEROFF","BOOT_SUSPENDED","BOOT_STOPPED","CLEANUP_DELETE","HOTPLUG_SNAPSHOT","HOTPLUG_NIC","HOTPLUG_SAVEAS","HOTPLUG_SAVEAS_POWEROFF","HOTPLUG_SAVEAS_SUSPENDED","SHUTDOWN_UNDEPLOY","EPILOG_UNDEPLOY","PROLOG_UNDEPLOY","BOOT_UNDEPLOY","HOTPLUG_PROLOG_POWEROFF","HOTPLUG_EPILOG_POWEROFF","restart","resubmit","hard","deploy","livemigrate","migrate","saveas","snapshot_revert","snapshot_delete","vnc","startstop","startvnc","resize","attachdisk","disk_template","detachdisk","disk_id","attachnic","nic_template","detachnic","nic_id","resched","unresched","Zone","securitygroup","Vm","csrftoken","textValue","foundation.core","foundation.abide","foundation.accordion","foundation.alert","foundation.clearing","foundation.dropdown","foundation.equalizer","foundation.interchange","foundation.joyride","foundation.magellan","foundation.offcanvas","foundation.orbit","foundation.reveal","foundation.tab","foundation.tooltip","foundation.topbar","jquery.cookie","fastclick","modernizr","placeholder","shim"],"mappings":"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ACAkN,EAAAsS,IAAA,OACA,uBACA,YACA,QACA,WACA,mBACA,kBCtBA,uBAAAvO,GACA,MACA,KAAA,cACA,IAAA,cACA/D,EAAAsS,IAAA,OACA,SACA,KACA,QACA,MACA,QACA,OACA,OAAAvO,GACA,MACA,KAAA,KACA,IAAA,KACA/D,EAAAsS,IAAA,OACA,UACA,OACA,SACA,UACA,YACA,OACA,SACA,WACA,cAAAvO,GACA,MACA,KAAA,SACA,IAAA,SACA/D,EAAAsS,IAAA,WACA,SACA,OACA,UACA,UACA,OACA,OACA,OACA,UACA,SACA,SACA,SACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,OACA,OACA,OACA,OACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,SACA,SACA,QAAAvO,GACA,MACA,KAAA,QACA,IAAA,QACA/D,EAAAsS,IAAA,OACA,QACA,OACA,WACA,SACA,QACA,QACA,SACA,aAAAvO,GACA,MACA,KAAA,YACA,IAAA,YACA/D,EAAAsS,IAAA,KACA,OAAAvO,GACA,MACA,KAAA,oBACA,IAAA,oBACA/D,EAAAsS,IAAA,OACA,QACA,QAAAvO,GACA,MACA,KAAA,oBACA,IAAA,oBACA/D,EAAAsS,IAAA,OACA,UACA,eACA,WACA,gBACA,WACA,gBACA,OACA,UACA,OACA,UACA,SACA,OACA,SACA,kBACA,SACA,cACA,UACA,YACA,WACA,iBAAAvO,GACA,MACA,SACA,MAAAA,GAGA,MADA/D,KAAAA,EAAA+D,GACA/D,GAGAuoD,WAAA,SAAAxkD,GACA,OAAA,KAAA,QAAA,YAAA,SAAA,UAAA,WAAAA,IAGAigC,OAAA,SAAAA,EAAArK,GASA,MARAhI,MACAqS,QACAwkB,QAAAxkB,IAGArK,IACAhI,IAAAqS,OAAArK,OAAAA,GAEAhI,KAGA82B,QAAA,SAAAN,EAAAjrC,EAAAhd,GACA,GAAAS,IACA8nD,SACAN,SAAAA,EACAjrC,OAAAA,GASA,OANAhd,KACA,eAAA,KACAA,GAAAA,IAEAS,EAAA8nD,QAAAvoD,KAAAA,GAEAS,GAGA+nD,KAAA,SAAAP,EAAAl8B,GACA,GAEAy8B,GAFAC,EAAAR,EAAA,QACAr1D,EAAAq1D,CAGA,IAAA,mBAAA,GACA,MAAA51D,OAAA,iBAGA,IAAAq2D,KAQA,IALAF,EADAz8B,EAAA08B,GACA18B,EAAA08B,GAAA71D,GAEA,KAGA,MAAA41D,EACA,MAAAE,EACA,IAAAF,EAAA/1D,OAAA,CACA,IAAA+D,EAAA,EAAAA,EAAAgyD,EAAA/1D,OAAA+D,IACAkyD,EAAAlyD,MACAkyD,EAAAlyD,GAAA5D,GAAA41D,EAAAhyD,EAEA,OAAA,GAIA,MAFAkyD,GAAA,MACAA,EAAA,GAAA91D,GAAA41D,EACA,GAIAG,qBAAA,SAAAF,EAAAG,EAAA78B,GACA,GAAAy8B,EAEA,IAAA,mBAAA,GACA,MAAAn2D,OAAA,iBAGA,IAAAq2D,KAQA,IALAF,EADAz8B,EAAA08B,GACA18B,EAAA08B,GAAAG,GAEA,KAGA,MAAAJ,EACA,MAAAE,EACA,IAAAF,EAAA/1D,OAAA,CACA,IAAA+D,EAAA,EAAAA,EAAAgyD,EAAA/1D,OAAA+D,IAAA,CACA,GAAAinD,KACAA,GAAAmL,GAAAJ,EAAAhyD,GAEAkyD,EAAAjL,EAAAmL,GAAA,IAAAnL,EAEA,MAAA,GAEA,GAAAA,KAKA,OAJAA,GAAAmL,GAAAJ,EAEAE,EAAAjL,EAAAmL,GAAA,IAAAnL,EAEA,GAYA,OAAA0K,KAGAnnC,OAAA,qBAAA,UAAA,YAAA,SAAAiO,GACA,GAAA45B,GAAA55B,EAAA,YAEA65B,KACAC,KACAC,KAEAC,EAAA,IAEAC,EAAA,SAAAC,GACAL,EAAAK,GAAA,MAIAC,GChPAhxB,OAAA,SAAAqB,EAAAwuB,EAAA3qB,GACA,GAAAxT,GAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MACAC,EAAAy5B,EAAAz5B,KACAuoD,EAAAM,EAAAN,QAAAN,EAAA,SAAAjoD,GACAspD,EAAAhsB,EAAAA,EAAA2qB,EAAArzD,cACAu0D,EAAA1vB,EAAA0vB,WAAA1vB,EAAA0vB,WAAAlB,CAEA7yD,GAAAknB,MACAd,IAAA8tC,EACA12D,KAAA,OACAgN,SAAA,OACAI,KAAAqa,KAAAkxB,UAAAvrC,GACA4b,YAAA,kCACAmB,QAAA,SAAAgP,GAGA,MAFAm9B,GAAAC,GAEAr/B,EAAAA,EAAAy+B,EAAAx8B,GAAA,MAEAhsB,MAAA,SAAAgsB,GACA,MAAAs9B,GACAA,EAAAd,EAAAgB,WAAAl3D,MAAA05B,IAAA,SAKAy9B,IAAA,SAAA/vB,EAAAwuB,EAAA3qB,GACA,GAAAxT,GAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MACA6C,EAAA62B,EAAAz5B,KAAA4C,GACA2lD,EAAAM,EAAAN,QAAAN,EAAA,SAAArlD,GACA0mD,EAAAhsB,EAAAA,EAAA2qB,EAAArzD,cACAu0D,EAAA1vB,EAAA0vB,WAAA1vB,EAAA0vB,WAAAlB,CAEA7yD,GAAAknB,MACAd,IAAA8tC,EAAA,IAAA1mD,EACAhQ,KAAA,SACAmqB,QAAA,WAGA,MAFAmsC,GAAAC,GAEAr/B,EAAAA,EAAAy+B,GAAA,MAEAxoD,MAAA,SAAAgsB,GACA,MAAAs9B,GACAA,EAAAd,EAAAgB,WAAAl3D,MAAA05B,IAAA,SAKAvK,KAAA,SAAAiY,EAAAwuB,EAAA3qB,GACA,GAAAxT,GAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MACAwd,EAAAkc,EAAAlc,UAAA,EACAgrC,EAAAM,EAAAN,QAAAN,EAAA,QACAqB,EAAAhsB,EAAAA,EAAA2qB,EAAArzD,cACAu0D,EAAA1vB,EAAA0vB,WAAA1vB,EAAA0vB,WAAAlB,EAEAhyC,EAAAwjB,EAAAxjB,QACAwzC,GAAA,CASA,OARAxzC,KACAwzC,EAAAxzC,EAAAwzC,OAGAA,GACAP,EAAAC,IAGAM,GACAX,EAAAK,IACAL,EAAAK,GAAA,UAAAF,GAAA,GAAA1mD,OAAA2nB,UAIAJ,EACAA,EAAAy+B,EAAAO,EAAAK,GAAA,MAAA,MAMAH,EAAAG,KACAH,EAAAG,OAGAH,EAAAG,GAAAlrD,MACA8e,QAAA+M,EACA/pB,MAAAspD,SAKAN,EAAAI,KAIAJ,EAAAI,IAAA,EAIA/zD,EAAAknB,MACAd,IAAA8tC,EACA12D,KAAA,MACAoN,MAAAud,QAAAA,GACA3d,SAAA,OACAmd,QAAA,SAAAgP,GACA,GAAAvK,GAAAqnC,EAAAL,KAAAP,EAAAl8B,EAEA+8B,GAAAK,IACAO,WAAA,GAAAnnD,OAAA2nB,UACAlqB,KAAAwhB,GAGAunC,EAAAI,IAAA,CAEA,KAAA,GAAA3yD,GAAA,EAAAA,EAAAwyD,EAAAG,GAAA12D,OAAA+D,IAAA,CACA,GAAAszB,GAAAk/B,EAAAG,GAAA3yD,GAAAumB,OAEA+M,IAEAA,EAAAy+B,EAAA/mC,EAAAuK,GAIAi9B,EAAAG,OAIAppD,MAAA,SAAAgsB,GACAg9B,EAAAI,IAAA,CAEA,KAAA,GAAA3yD,GAAA,EAAAA,EAAAwyD,EAAAG,GAAA12D,OAAA+D,IAAA,CACA,GAAAszB,GAAAk/B,EAAAG,GAAA3yD,GAAAuJ,KAEA+pB,IAEAA,EAAAy+B,EAAAgB,WAAAl3D,MAAA05B,IAIAi9B,EAAAG,aAOAQ,aAAA,SAAAlwB,EAAAwuB,EAAA3qB,GACA,GAAAxT,GAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MACAwd,EAAAkc,EAAAlc,UAAA,EACAgrC,EAAAM,EAAAN,QAAAN,EAAA,QACAqB,EAAAhsB,EAAAA,EAAA2qB,EAAArzD,aAEAQ,GAAAknB,MACAd,IAAA8tC,EACA12D,KAAA,MACAoN,MAAAud,QAAAA,EAAAqsC,QAAAnwB,EAAAz5B,KAAA4pD,SACAhqD,SAAA,OACAmd,QAAA,SAAAgP,GACA,GAAAvK,GAAAqnC,EAAAL,KAAAP,EAAAl8B,EACA,OAAAjC,GACAA,EAAAy+B,EAAA/mC,GAAA,MAEAzhB,MAAA,SAAAgsB,GACA,MAAAs9B,GACAA,EAAAd,EAAAgB,WAAAl3D,MAAA05B,IAAA,SAMA5vB,KAAA,SAAAs9B,EAAAwuB,EAAA4B,EAAAvsB,GACA,GAAAxT,GAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MACA6C,EAAA62B,EAAAz5B,KAAA4C,GACA2lD,EAAAsB,EACAhB,EAAAN,QAAAN,EAAA4B,EAAAjnD,GACAimD,EAAAN,QAAAN,EAAA,OAAArlD,GAEA0mD,EAAAhsB,EAAAA,EAAA2qB,EAAArzD,cACA4mB,EAAA8tC,EAAA,IAAA1mD,CACA4Y,GAAAquC,EAAAruC,EAAA,IAAAquC,EAAAruC,EAEApmB,EAAAknB,MACAd,IAAAA,EACA5oB,KAAA,MACAgN,SAAA,OACAmd,QAAA,SAAAgP,GACA,MAAAjC,GAAAA,EAAAy+B,EAAAx8B,GAAA,MAEAhsB,MAAA,SAAAgsB,GACA,MAAAs9B,GACAA,EAAAd,EAAAgB,WAAAl3D,MAAA05B,IAAA,SAKA+9B,MAAA,SAAArwB,EAAAwuB,EAAA3qB,GACA,GAAA16B,GAAA62B,EAAAz5B,KAAA+pD,YACAC,GAAAC,SAAArnD,EACAsnD,SAAA,KAEAX,YAAAH,OAAAe,cAAA1wB,EACAwuB,EACA,QACA+B,EACA1sB,IAGA8sB,MAAA,SAAA3wB,EAAAwuB,EAAA3qB,GACA,GAAA16B,GAAA62B,EAAAz5B,KAAA+pD,YACAC,GAAAC,SAAA,KACAC,SAAAtnD,EAEA2mD,YAAAH,OAAAe,cAAA1wB,EACAwuB,EACA,QACA+B,EACA1sB,IAIA6sB,cAAA,SAAA1wB,EAAAwuB,EAAAjrC,EAAAgtC,EAAA1sB,GACA,GAIAwG,GAAAykB,EAJAz+B,EAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MACA6C,EAAA62B,EAAAz5B,KAAA4C,EAGAonD,IACAlmB,EAAA+kB,EAAA/kB,OAAA9mB,EAAAgtC,GACAzB,EAAAM,EAAAN,QAAAN,EAAAjrC,GAAApa,EAAAonD,MAEAlmB,EAAA+kB,EAAA/kB,OAAA9mB,GACAurC,EAAAM,EAAAN,QAAAN,EAAAjrC,EAAApa,GAGA,IAAA0mD,GAAAhsB,EAAAA,EAAA2qB,EAAArzD,cACAu0D,EAAA1vB,EAAA0vB,WAAA1vB,EAAA0vB,WAAAlB,CAEA7yD,GAAAknB,MACAd,IAAA8tC,EAAA,IAAA1mD,EAAA,UACAhQ,KAAA,OACAgpB,YAAA,kCACA5b,KAAAqa,KAAAkxB,UAAAzH,GACA/mB,QAAA,WAGA,MAFAmsC,GAAAC,GAEAr/B,EAAAA,EAAAy+B,GAAA,MAEAxoD,MAAA,SAAAgsB,GACA,MAAAs9B,GACAA,EAAAd,EAAAgB,WAAAl3D,MAAA05B,IAAA,SAKAm7B,QAAA,SAAAztB,EAAAwuB,EAAAjV,EAAA1V,GACA,GAAAxT,GAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MACAC,EAAAy5B,EAAAz5B,KAEAgd,EAAA,UACAurC,EAAAM,EAAAN,QAAAN,EAAAjrC,EAAAhd,GAEAwb,EAAA8hB,EAAAA,EAAA2qB,EAAArzD,aACA4mB,GAAAw3B,EAAAx3B,EAAA,WAAAA,EAAA,IAAAie,EAAAz5B,KAAA4C,GAAA,WAEAxN,EAAAknB,MACAd,IAAAA,EACA5oB,KAAA,MACAoN,KAAAA,EAAA,QACAJ,SAAA,OACAmd,QAAA,SAAAgP,GACA,MAAAjC,GAAAA,EAAAy+B,EAAAx8B,GAAA,MAEAhsB,MAAA,SAAAgsB,GACA,MAAAs9B,GACAA,EAAAd,EAAAgB,WAAAl3D,MAAA05B,IAAA,SAKAs+B,WAAA,SAAA5wB,EAAAwuB,EAAA3qB,GACA,GAAAxT,GAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MACAC,EAAAy5B,EAAAz5B,KAEAgd,EAAA,aACAurC,EAAAM,EAAAN,QAAAN,EAAAjrC,EAAAhd,GAEAwb,EAAA8hB,EAAAA,EAAA2qB,EAAArzD,cAAA,aAEAQ,GAAAknB,MACAd,IAAAA,EACA5oB,KAAA,MACAoN,KAAAA,EACAJ,SAAA,OACAmd,QAAA,SAAAgP,GACA,MAAAjC,GAAAA,EAAAy+B,EAAAx8B,GAAA,MAEAhsB,MAAA,SAAAgsB,GACA,MAAAs9B,GACAA,EAAAd,EAAAgB,WAAAl3D,MAAA05B,IAAA,SAKAu+B,SAAA,SAAA7wB,EAAAwuB,EAAA3qB,GACA,GAAAxT,GAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MACAC,EAAAy5B,EAAAz5B,KAEAgd,EAAA,WACAurC,EAAAM,EAAAN,QAAAN,EAAAjrC,EAAAhd,GAEAwb,EAAA8hB,EAAAA,EAAA2qB,EAAArzD,cAAA,WAEAQ,GAAAknB,MACAd,IAAAA,EACA5oB,KAAA,MACAoN,KAAAA,EACAJ,SAAA,OACAmd,QAAA,SAAAgP,GACA,MAAAjC,GAAAA,EAAAy+B,EAAAx8B,GAAA,MAEAhsB,MAAA,SAAAgsB,GACA,MAAAs9B,GACAA,EAAAd,EAAAgB,WAAAl3D,MAAA05B,IAAA,SAKAw+B,YAAArB,EAGA,OAAAE,KAGApoC,OAAA,mBAAA,UAAA,YAAA,SAAAiO,GACA,GAAA45B,GAAA55B,EAAA,YAEAu7B,EAAA,OAEAC,GACAC,MAAA,SAAAjxB,GACA,GAAA3P,GAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MACAmf,EAAAua,EAAAz5B,KAAAkf,SACAnV,EAAA0vB,EAAAz5B,KAAA+J,SACA4gD,EAAAlxB,EAAAkxB,SAEApC,EAAAM,EAAAN,QAAAiC,EAAA,QC/VAp1D,GAAAknB,MACAd,IAAA,QACA5oB,KAAA,OACAoN,MAAA2qD,SAAAA,GACArtC,WAAA,SAAAstC,GACA,GAAA1nB,GAAAhkB,EAAA,IAAAnV,EACA8gD,EAAA,QACA,mBAAA,MACAA,GAAAC,KAAA7S,SAAA35B,mBAAA4kB,MAEAA,EAAA6nB,SAAAC,IAAAC,KAAA3wC,MAAA4oB,GACA2nB,GAAAE,SAAAC,IAAAE,OAAA3f,UAAArI,IAGA0nB,EAAAhuC,iBAAA,gBAAAiuC,IAEA9tC,QAAA,SAAAgP,GACA,MAAAjC,GAAAA,EAAAy+B,EAAAx8B,GAAA,MAEAhsB,MAAA,SAAAgsB,GACA,MAAAs9B,GACAA,EAAAd,EAAAgB,WAAAl3D,MAAA05B,IAAA,SAKAo/B,OAAA,SAAA1xB,GACA,GAAA3P,GAAA2P,EAAA1c,QACAssC,EAAA5vB,EAAA15B,MAEAwoD,EAAAM,EAAAN,QAAAiC,EAAA,SAEAp1D,GAAAknB,MACAd,IAAA,SACA5oB,KAAA,OACAmqB,QAAA,SAAAgP,GAEA,MADA32B,GAAAg2D,OAAA,WAAA,MACAthC,EAAAA,EAAAy+B,EAAAx8B,GAAA,MAEAhsB,MAAA,SAAAgsB,GACA,MAAAs9B,GACAA,EAAAd,EAAAgB,WAAAl3D,MAAA05B,IAAA,SAMA,OAAA0+B,KAGAzpC,OAAA,oBAAA,WAAA,WACA,GAAA3uB,GAAA,SAAAg5D,GACA,GAAAtrD,KACA,IAAAsrD,EAAA/rC,aACA,IACAvf,EAAAsa,KAAAC,MAAA+wC,EAAA/rC,cAEA,MAAAtqB,GACA+K,EAAAA,OAAAwyB,QAAA,2EAGAxyB,GAAAA,QC9DA,ODgEAA,GAAAA,MAAAurD,YAAAD,EAAA7uC,OChEAzc,EAGA,OAAA1N,KAGA2uB,OAAA,kBAAA,UAAA,YAAA,SAAAiO,GACA,GAAAs8B,GAAAt8B,EAAA,YAEAu7B,EAAA,MAEAgB,GACApzB,OAAA,SAAAqB,GACA8xB,EAAAnzB,OAAAqB,EAAA+wB,IAEAhB,IAAA,SAAA/vB,GACA8xB,EAAA/B,IAAA/vB,EAAA+wB,IAEAhpC,KAAA,SAAAiY,GACA8xB,EAAA/pC,KAAAiY,EAAA+wB,IChBA,OAAAgB,KAGAxqC,OAAA,sBAAA,UAAA,YAAA,SAAAiO,GACA,GAAAs8B,GAAAt8B,EAAA,YAEAu7B,EAAA,UAEAiB,GACArzB,OAAA,SAAAqB,GACA8xB,EAAAnzB,OAAAqB,EAAA+wB,IAEAhB,IAAA,SAAA/vB,GACA8xB,EAAA/B,IAAA/vB,EAAA+wB,IAEAhpC,KAAA,SAAAiY,GACA8xB,EAAA/pC,KAAAiY,EAAA+wB,IClBAb,aAAA,SAAAlwB,GACA8xB,EAAA5B,aAAAlwB,EAAA+wB,IAEAruD,KAAA,SAAAs9B,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,IAEAkB,QAAA,SAAAjyB,GACA,GAAAuwB,IAAA2B,QAAAlyB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,UAAAR,IAEA4B,QAAA,SAAAnyB,GACA,GAAAuwB,IAAA2B,QAAAlyB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,UAAAR,IAEA6B,aAAA,SAAApyB,GACA,GAAAuwB,IAAA8B,MAAAryB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,eAAAR,IAEA+B,aAAA,SAAAtyB,GACA,GAAAuwB,IAAA8B,MAAAryB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,eAAAR,IAEAgC,QAAA,SAAAvyB,GACA,GAAAuwB,IAAAiC,QAAAxyB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,UAAAR,IAEAkC,QAAA,SAAAzyB,GACA,GAAAuwB,IAAAiC,QAAAxyB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,UAAAR,IAEAmC,eAAA,SAAA1yB,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,EAAA,aAEA4B,OAAA,SAAA3yB,GACA,GAAAuwB,IAAAqC,aAAA5yB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAEAsC,OAAA,SAAA7yB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAIA,OAAAyB,KAGAzqC,OAAA,wBAAA,UAAA,YAAA,SAAAiO,GACA,GAAAs8B,GAAAt8B,EAAA,YAEAu7B,EAAA,YAEA+B,GACAn0B,OAAA,SAAAqB,GACA8xB,EAAAnzB,OAAAqB,EAAA+wB,IAEAhB,IAAA,SAAA/vB,GACA8xB,EAAA/B,IAAA/vB,EAAA+wB,IAEAhpC,KAAA,SAAAiY,GACA8xB,EAAA/pC,KAAAiY,EAAA+wB,IC3DAb,aAAA,SAAAlwB,GACA8xB,EAAA5B,aAAAlwB,EAAA+wB,IAEAruD,KAAA,SAAAs9B,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,IAEAV,MAAA,SAAArwB,GACA8xB,EAAAzB,MAAArwB,EAAA+wB,IAEAJ,MAAA,SAAA3wB,GACA8xB,EAAAnB,MAAA3wB,EAAA+wB,IAEAgC,MAAA,SAAA/yB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,QAAAR,IAEAoC,OAAA,SAAA3yB,GACA,GAAAuwB,IAAAqC,aAAA5yB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAEAmC,eAAA,SAAA1yB,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,EAAA,aAEA8B,OAAA,SAAA7yB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAEAyC,OAAA,SAAAhzB,GACA8xB,EAAApB,cAAA1wB,EAAA+wB,EAAA,WAEAz+C,QAAA,SAAA0tB,GACA8xB,EAAApB,cAAA1wB,EAAA+wB,EAAA,YAIA,OAAA+B,KAGAvrC,OAAA,oBAAA,UAAA,WAAA,WAAA,WAAA,SAAAiO,GACA,GAAAs8B,GAAAt8B,EAAA,YACA45B,EAAA55B,EAAA,YACAy9B,EAAAz9B,EAAA,WAEAu7B,EAAA,QAEAmC,GACAv0B,OAAA,SAAAqB,GACA8xB,EAAAnzB,OAAAqB,EAAA+wB,IAEAhB,IAAA,SAAA/vB,GACA8xB,EAAA/B,IAAA/vB,EAAA+wB,ICnDAhpC,KAAA,SAAAiY,GACA,GAAAmzB,GAAApC,EAAA51D,cACAk1B,EAAA2P,EAAA1c,QACA8vC,EAAApzB,EAAA15B,MACAwd,EAAAkc,EAAAlc,UAAA,EACAgrC,EAAAM,EAAAN,QAAAiC,EAAA,OAEAp1D,GAAAknB,MACAd,IAAAoxC,EACAh6D,KAAA,MACAoN,MAAAud,QAAAA,GACA3d,SAAA,OACAmd,QAAA,SAAAgP,GAEA+gC,qBAAAC,OAAAC,eAAAjhC,EAAAkhC,WAAAC,qBAEA,IAAA1rC,GAAAqnC,EAAAL,KAAAgC,EAAAz+B,GACAohC,EAAAtE,EAAAF,qBACA,aAAA,SAAA58B,EAEA,OAAAjC,GACAA,EAAAy+B,EAAA/mC,EAAA2rC,GAAA,MAEAptD,MAAA,SAAAgsB,GACA,MAAA8gC,GACAA,EAAAtE,EAAAmE,EAAA3gC,IAAA,SAIAqgC,OAAA,SAAA3yB,GACA,GAAAuwB,IAAAqC,aAAA5yB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAEAoD,UAAA,SAAA3zB,GACA,GAAAuwB,IAAAqD,OAAA5zB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,YAAAR,IAEA7tD,KAAA,SAAAs9B,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,IAEAH,WAAA,SAAA5wB,GACA8xB,EAAArE,QAAAztB,EAAA+wB,GAAA,IAEA8C,UAAA,SAAA7zB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,YAAAR,IAEAuD,UAAA,SAAA9zB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,YAAAR,IAIA,OAAA2C,KAGA3rC,OAAA,mBAAA,UAAA,YAAA,SAAAiO,GACA,GAAAs8B,GAAAt8B,EAAA,YAEAu7B,EAAA,OAEAgD,GACAp1B,OAAA,SAAAqB,GACA8xB,EAAAnzB,OAAAqB,EAAA+wB,IAEAhB,IAAA,SAAA/vB,GACA8xB,EAAA/B,IAAA/vB,EAAA+wB,IAEAhpC,KAAA,SAAAiY,GACA8xB,EAAA/pC,KAAAiY,EAAA+wB,ICpEAb,aAAA,SAAAlwB,GACA8xB,EAAA5B,aAAAlwB,EAAA+wB,IAEAruD,KAAA,SAAAs9B,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,IAEA4B,OAAA,SAAA3yB,GACA,GAAAuwB,IAAAqC,aAAA5yB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAEAmC,eAAA,SAAA1yB,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,EAAA,aAEAiC,OAAA,SAAAhzB,GACA8xB,EAAApB,cAAA1wB,EAAA+wB,EAAA,WAEAz+C,QAAA,SAAA0tB,GACA8xB,EAAApB,cAAA1wB,EAAA+wB,EAAA,YAEAtD,QAAA,SAAAztB,GACA8xB,EAAArE,QAAAztB,EAAA+wB,GAAA,IAEAiD,aAAA,SAAAh0B,GACA8xB,EAAArE,QAAAztB,EAAA+wB,GAAA,IAEA8B,OAAA,SAAA7yB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAIA,OAAAwD,KAGAxsC,OAAA,oBAAA,UAAA,YAAA,SAAAiO,GACA,GAAAs8B,GAAAt8B,EAAA,YAEAu7B,EAAA,QAEAkD,GACAt1B,OAAA,SAAAqB,GACA8xB,EAAAnzB,OAAAqB,EAAA+wB,IAEAhB,IAAA,SAAA/vB,GACA8xB,EAAA/B,IAAA/vB,EAAA+wB,IAEAhpC,KAAA,SAAAiY,GACA8xB,EAAA/pC,KAAAiY,EAAA+wB,IC/CAruD,KAAA,SAAAs9B,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,IAEAV,MAAA,SAAArwB,GACA8xB,EAAAzB,MAAArwB,EAAA+wB,IAEAJ,MAAA,SAAA3wB,GACA8xB,EAAAnB,MAAA3wB,EAAA+wB,IAEAgC,MAAA,SAAA/yB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,QAAAR,IAEAoC,OAAA,SAAA3yB,GACA,GAAAuwB,IAAAqC,aAAA5yB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAEAmC,eAAA,SAAA1yB,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,EAAA,aAEAiC,OAAA,SAAAhzB,GACA8xB,EAAApB,cAAA1wB,EAAA+wB,EAAA,WAEAz+C,QAAA,SAAA0tB,GACA8xB,EAAApB,cAAA1wB,EAAA+wB,EAAA,YAEAmD,WAAA,SAAAl0B,GACA8xB,EAAApB,cAAA1wB,EAAA+wB,EAAA,eAEAoD,cAAA,SAAAn0B,GACA8xB,EAAApB,cAAA1wB,EAAA+wB,EAAA,kBAEAqD,OAAA,SAAAp0B,GACA,GAAAuwB,IAAAp3D,KAAA6mC,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAEAp3C,MAAA,SAAA6mB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,YAAAtwB,EAAAz5B,KAAA+pD,cACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,QAAAR,IAEAsC,OAAA,SAAA7yB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAIA,OAAA0D,KAGA1sC,OAAA,0BAAA,UAAA,WAAA,WAAA,SAAAiO,GACA,GAAAs8B,GAAAt8B,EAAA,YACAy9B,EAAAz9B,EAAA,WAEAu7B,EAAA,cAEAsD,GACA3xD,KAAA,SAAAs9B,GACAA,EAAA15B,MAAA,WACA,MAAAgnD,aAAA,6CAEAwE,EAAApvD,KAAAs9B,EAAA+wB,IAEAhpC,KAAA,SAAAiY,GC7DA,GAAA3P,GAAA2P,EAAA1c,QACA8vC,EAAApzB,EAAA15B,MACAwd,EAAAkc,EAAAlc,UAAA,EACAgrC,EAAAgB,WAAApB,OAAAI,QAAA,cAAA,OAEAnzD,GAAAknB,MACAd,IAAA,cACA5oB,KAAA,MACAoN,MAAAud,QAAAA,GACA3d,SAAA,OACAmd,QAAA,SAAAgP,GAEA,MADA32B,GAAA,8BAAAiH,OACAytB,EAAAA,EAAAy+B,EAAAx8B,GAAA,MAEAhsB,MAAA,SAAA09C,GAEA,MADAroD,GAAA,8BAAA+G,OACA0wD,EAAAA,EAAAtE,EAAAmE,EAAAjP,IAAA,SAMA,OAAAqQ,KAGA9sC,OAAA,sBAAA,UAAA,YAAA,SAAAiO,GACA,GAAAs8B,GAAAt8B,EAAA,YAEAu7B,EAAA,OAEAuD,GACA31B,OAAA,SAAAqB,GACA8xB,EAAAnzB,OAAAqB,EAAA+wB,IAEAhB,IAAA,SAAA/vB,GACA8xB,EAAA/B,IAAA/vB,EAAA+wB,IAEAhpC,KAAA,SAAAiY,GACA8xB,EAAA/pC,KAAAiY,EAAA+wB,ICvCAb,aAAA,SAAAlwB,GACA8xB,EAAA5B,aAAAlwB,EAAA+wB,IAEAruD,KAAA,SAAAs9B,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,IAEAV,MAAA,SAAArwB,GACA8xB,EAAAzB,MAAArwB,EAAA+wB,IAEAJ,MAAA,SAAA3wB,GACA8xB,EAAAnB,MAAA3wB,EAAA+wB,IAEAgC,MAAA,SAAA/yB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,QAAAR,IAEAgE,QAAA,SAAAv0B,GACA8xB,EAAApB,cAAA1wB,EAAA+wB,EAAA,YAEAyD,UAAA,SAAAx0B,GACA8xB,EAAApB,cAAA1wB,EAAA+wB,EAAA,cAEA0D,KAAA,SAAAz0B,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,OAAAR,IAEAmE,QAAA,SAAA10B,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,UAAAR,IAEAoE,OAAA,SAAA30B,GACA,GAAAuwB,IAAAqE,YAAA50B,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAEAsE,MAAA,SAAA70B,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,QAAAR,IAEAuE,UAAA,SAAA90B,GACA,GAAAuwB,IAAAqE,YAAA50B,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,YAAAR,IAEAwE,QAAA,SAAA/0B,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,UAAAR,IAEAoC,OAAA,SAAA3yB,GACA,GAAAuwB,IAAAqC,aAAA5yB,EAAAz5B,KAAA+pD,YACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAEAmC,eAAA,SAAA1yB,GACA8xB,EAAApvD,KAAAs9B,EAAA+wB,EAAA,aAEA8B,OAAA,SAAA7yB,GACA,GAAAuwB,GAAAvwB,EAAAz5B,KAAA+pD,WACAwB,GAAApB,cAAA1wB,EAAA+wB,EAAA,SAAAR,IAIA,OAAA+D,KAGA/sC,OAAA,mBAAA,UAAA,WAAA,WAAA,SAAAiO,GACA,GAAAs8B,GAAAt8B,EAAA,YACAy9B,EAAAz9B,EAAA,WAEAu7B,EAAA,WACAiE,EAAA,UAEAC,EAAA,WCpEA,UAGAC,GACA7uD,MAAA,SAAA8uD,GACAA,EAAAA,EAAAA,EAAA,CACA,IAAA9uD,IACAsS,GAAA,WACAA,GAAA,aACAA,GAAA,WACAA,GAAA,eACAA,GAAA,WACAA,GAAA,QACAA,GAAA,sBACAA,GAAA,oBACAA,GAAA,WACAA,GAAA,kBACAA,GAAA,aACAw8C,EACA,OAAA9uD,GAAAA,EAAA8uD,GAEAV,KAAA,SAAAz0B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,OACAkE,IACAD,IAEAN,QAAA,SAAA10B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,UACAkE,IACAD,IAEAI,QAAA,SAAAp1B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,UACAkE,IACAD,IAEAK,OAAA,SAAAr1B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,SACAkE,IACAD,IAEAvwD,KAAA,SAAAu7B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,OACAkE,IACAD,IAEAM,KAAA,SAAAt1B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,OACAkE,IACAD,IAEAO,gBAAA,SAAAv1B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,kBACAkE,IACAD,IAEAQ,OAAA,SAAAx1B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,SACAkE,IACAD,IAEAS,YAAA,SAAAz1B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,cACAkE,IACAD,IAEAU,SAAA,SAAA11B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,WACAkE,IACAD,IAEAW,cAAA,SAAA31B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,gBACAkE,IACAD,IAEAY,SAAA,SAAA51B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,WACAkE,IACAD,IAEAa,cAAA,SAAA71B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,gBACAkE,IACAD,IAEAc,gBAAA,SAAA91B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,kBACAkE,IACAD,IAEAe,SAAA,SAAA/1B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,WACAkE,IACAD,IAEAgB,OAAA,SAAAh2B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,gBACAkE,IACAD,IAEAjF,IAAA,SAAA/vB,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,SACAkE,IACAD,IAEAiB,QAAA,SAAAj2B,GACA8xB,EAAApB,cAAA1wB,EACA+wB,EACA,UACA,KACAiE,IAEArC,OA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","sourcesContent":["/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */\n!function(a,b){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error(\"jQuery requires a window with a document\");return b(a)}:b(a)}(\"undefined\"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m=\"2.1.3\",n=function(a,b){return new n.fn.init(a,b)},o=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,p=/^-ms-/,q=/-([\\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:\"\",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(\"boolean\"==typeof g&&(j=g,g=arguments[h]||{},h++),\"object\"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:\"jQuery\"+(m+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return\"function\"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return\"object\"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,\"isPrototypeOf\")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+\"\":\"object\"==typeof a||\"function\"==typeof a?h[i.call(a)]||\"object\":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf(\"use strict\")?(b=l.createElement(\"script\"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,\"ms-\").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?\"\":(a+\"\").replace(o,\"\")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,\"string\"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return\"string\"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),function(a,b){h[\"[object \"+b+\"]\"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return\"function\"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:\"array\"===c||0===b||\"number\"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u=\"sizzle\"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",L=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",M=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",N=M.replace(\"w\",\"w#\"),O=\"\\\\[\"+L+\"*(\"+M+\")(?:\"+L+\"*([*^$|!~]?=)\"+L+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+N+\"))|)\"+L+\"*\\\\]\",P=\":(\"+M+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+O+\")*)|.*)\\\\)|)\",Q=new RegExp(L+\"+\",\"g\"),R=new RegExp(\"^\"+L+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+L+\"+$\",\"g\"),S=new RegExp(\"^\"+L+\"*,\"+L+\"*\"),T=new RegExp(\"^\"+L+\"*([>+~]|\"+L+\")\"+L+\"*\"),U=new RegExp(\"=\"+L+\"*([^\\\\]'\\\"]*?)\"+L+\"*\\\\]\",\"g\"),V=new RegExp(P),W=new RegExp(\"^\"+N+\"$\"),X={ID:new RegExp(\"^#(\"+M+\")\"),CLASS:new RegExp(\"^\\\\.(\"+M+\")\"),TAG:new RegExp(\"^(\"+M.replace(\"w\",\"w*\")+\")\"),ATTR:new RegExp(\"^\"+O),PSEUDO:new RegExp(\"^\"+P),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+L+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+L+\"*(?:([+-]|)\"+L+\"*(\\\\d+)|))\"+L+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+K+\")$\",\"i\"),needsContext:new RegExp(\"^\"+L+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+L+\"*((?:-\\\\d)?\\\\d*)\"+L+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\\d$/i,$=/^[^{]+\\{\\s*\\[native \\w/,_=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ab=/[+~]/,bb=/'|\\\\/g,cb=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+L+\"?|(\"+L+\")|.)\",\"ig\"),db=function(a,b,c){var d=\"0x\"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,\"string\"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&\"object\"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute(\"id\"))?s=r.replace(bb,\"\\\\$&\"):b.setAttribute(\"id\",s),s=\"[id='\"+s+\"'] \",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(\",\")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute(\"id\")}}}return i(a.replace(R,\"$1\"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+\" \")>d.cacheLength&&delete b[a.shift()],b[c+\" \"]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement(\"div\");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split(\"|\"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return\"input\"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return(\"input\"===c||\"button\"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&\"undefined\"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?\"HTML\"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener(\"unload\",eb,!1):e.attachEvent&&e.attachEvent(\"onunload\",eb)),p=!f(g),c.attributes=jb(function(a){return a.className=\"i\",!a.getAttribute(\"className\")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute(\"id\")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=\"undefined\"!=typeof a.getAttributeNode&&a.getAttributeNode(\"id\");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return\"undefined\"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if(\"*\"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML=\"<a id='\"+u+\"'></a><select id='\"+u+\"-\\f]' msallowcapture=''><option selected=''></option></select>\",a.querySelectorAll(\"[msallowcapture^='']\").length&&q.push(\"[*^$]=\"+L+\"*(?:''|\\\"\\\")\"),a.querySelectorAll(\"[selected]\").length||q.push(\"\\\\[\"+L+\"*(?:value|\"+K+\")\"),a.querySelectorAll(\"[id~=\"+u+\"-]\").length||q.push(\"~=\"),a.querySelectorAll(\":checked\").length||q.push(\":checked\"),a.querySelectorAll(\"a#\"+u+\"+*\").length||q.push(\".#.+[+~]\")}),jb(function(a){var b=g.createElement(\"input\");b.setAttribute(\"type\",\"hidden\"),a.appendChild(b).setAttribute(\"name\",\"D\"),a.querySelectorAll(\"[name=d]\").length&&q.push(\"name\"+L+\"*[*^$|!~]?=\"),a.querySelectorAll(\":enabled\").length||q.push(\":enabled\",\":disabled\"),a.querySelectorAll(\"*,:x\"),q.push(\",.*:\")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,\"div\"),s.call(a,\"[s!='']:x\"),r.push(\"!=\",P)}),q=q.length&&new RegExp(q.join(\"|\")),r=r.length&&new RegExp(r.join(\"|\")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,\"='$1']\"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c=\"\",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if(\"string\"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||\"\").replace(cb,db),\"~=\"===a[2]&&(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),\"nth\"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*(\"even\"===a[3]||\"odd\"===a[3])),a[5]=+(a[7]+a[8]||\"odd\"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||\"\":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(\")\",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return\"*\"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+\" \"];return b||(b=new RegExp(\"(^|\"+L+\")\"+a+\"(\"+L+\"|$)\"))&&y(a,function(a){return b.test(\"string\"==typeof a.className&&a.className||\"undefined\"!=typeof a.getAttribute&&a.getAttribute(\"class\")||\"\")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?\"!=\"===b:b?(e+=\"\",\"=\"===b?e===c:\"!=\"===b?e!==c:\"^=\"===b?c&&0===e.indexOf(c):\"*=\"===b?c&&e.indexOf(c)>-1:\"$=\"===b?c&&e.slice(-c.length)===c:\"~=\"===b?(\" \"+e.replace(Q,\" \")+\" \").indexOf(c)>-1:\"|=\"===b?e===c||e.slice(0,c.length+1)===c+\"-\":!1):!0}},CHILD:function(a,b,c,d,e){var f=\"nth\"!==a.slice(0,3),g=\"last\"!==a.slice(-4),h=\"of-type\"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?\"nextSibling\":\"previousSibling\",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p=\"only\"===a&&!o&&\"nextSibling\"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error(\"unsupported pseudo: \"+a);return e[u]?e(b):e.length>1?(c=[a,a,\"\",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,\"$1\"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||\"\")||gb.error(\"unsupported lang: \"+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute(\"xml:lang\")||b.getAttribute(\"lang\"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+\"-\");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&!!a.checked||\"option\"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&\"button\"===a.type||\"button\"===b},text:function(a){var b;return\"input\"===a.nodeName.toLowerCase()&&\"text\"===a.type&&(null==(b=a.getAttribute(\"type\"))||\"text\"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+\" \"];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R,\" \")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d=\"\";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&\"parentNode\"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||\"*\",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[\" \"],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:\" \"===a[i-2].type?\"*\":\"\"})).replace(R,\"$1\"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q=\"0\",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG(\"*\",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+\" \"];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n=\"function\"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&\"ID\"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split(\"\").sort(B).join(\"\")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement(\"div\"))}),jb(function(a){return a.innerHTML=\"<a href='#'></a>\",\"#\"===a.firstChild.getAttribute(\"href\")})||kb(\"type|href|height|width\",function(a,b,c){return c?void 0:a.getAttribute(b,\"type\"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML=\"<input/>\",a.firstChild.setAttribute(\"value\",\"\"),\"\"===a.firstChild.getAttribute(\"value\")})||kb(\"value\",function(a,b,c){return c||\"input\"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute(\"disabled\")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[\":\"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,w=/^.[^:#\\[\\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if(\"string\"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=\":not(\"+a+\")\"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if(\"string\"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+\" \"+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,\"string\"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if(\"string\"==typeof a){if(c=\"<\"===a[0]&&\">\"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?\"undefined\"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||\"string\"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?\"string\"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return n.dir(a,\"parentNode\",c)},next:function(a){return D(a,\"nextSibling\")},prev:function(a){return D(a,\"previousSibling\")},nextAll:function(a){return n.dir(a,\"nextSibling\")},prevAll:function(a){return n.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return n.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return n.dir(a,\"previousSibling\",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return\"Until\"!==a.slice(-5)&&(d=c),d&&\"string\"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a=\"string\"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);\"function\"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&\"string\"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[[\"resolve\",\"done\",n.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",n.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",n.Callbacks(\"memory\")]],c=\"pending\",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+\"With\"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+\"With\"](this===e?d:this,arguments),this},e[f[0]+\"With\"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler(\"ready\"),n(l).off(\"ready\"))))}});function I(){l.removeEventListener(\"DOMContentLoaded\",I,!1),a.removeEventListener(\"load\",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),\"complete\"===l.readyState?setTimeout(n.ready):(l.addEventListener(\"DOMContentLoaded\",I,!1),a.addEventListener(\"load\",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if(\"object\"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if(\"string\"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&\"string\"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d=\"data-\"+b.replace(O,\"-$1\").toLowerCase(),c=a.getAttribute(d),\"string\"==typeof c){try{c=\"true\"===c?!0:\"false\"===c?!1:\"null\"===c?null:+c+\"\"===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)\n},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,\"hasDataAttrs\"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf(\"data-\")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,\"hasDataAttrs\",!0)}return e}return\"object\"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf(\"-\")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||\"fx\")+\"queue\",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||\"fx\";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};\"inprogress\"===e&&(e=c.shift(),d--),e&&(\"fx\"===b&&c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks(\"once memory\").add(function(){L.remove(a,[b+\"queue\",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return\"string\"!=typeof a&&(b=a,a=\"fx\",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),\"fx\"===a&&\"inprogress\"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};\"string\"!=typeof a&&(b=a,a=void 0),a=a||\"fx\";while(g--)c=L.get(f[g],a+\"queueHooks\"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,R=[\"Top\",\"Right\",\"Bottom\",\"Left\"],S=function(a,b){return a=b||a,\"none\"===n.css(a,\"display\")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement(\"div\")),c=l.createElement(\"input\");c.setAttribute(\"type\",\"radio\"),c.setAttribute(\"checked\",\"checked\"),c.setAttribute(\"name\",\"t\"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML=\"<textarea>x</textarea>\",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U=\"undefined\";k.focusinBubbles=\"onfocusin\"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||\"\").match(E)||[\"\"],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||\"\").split(\".\").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(\".\")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||\"\").match(E)||[\"\"],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||\"\").split(\".\").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp(\"(^|\\\\.)\"+p.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&(\"**\"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,\"events\"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,\"type\")?b.type:b,r=j.call(b,\"namespace\")?b.namespace.split(\".\"):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(\".\")>=0&&(r=q.split(\".\"),q=r.shift(),r.sort()),k=q.indexOf(\":\")<0&&\"on\"+q,b=b[n.expando]?b:new n.Event(q,\"object\"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join(\".\"),b.namespace_re=b.namespace?new RegExp(\"(^|\\\\.)\"+r.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,\"events\")||{})[b.type]&&L.get(g,\"handle\"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,\"events\")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||\"click\"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||\"click\"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+\" \",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:\"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:\"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:\"focusin\"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:\"focusout\"},click:{trigger:function(){return\"checkbox\"===this.type&&this.click&&n.nodeName(this,\"input\")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,\"a\")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if(\"object\"==typeof a){\"string\"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&(\"string\"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+\".\"+d.namespace:d.origType,d.selector,d.handler),this;if(\"object\"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||\"function\"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,bb=/<([\\w:]+)/,cb=/<|&#?\\w+;/,db=/<(?:script|style|link)/i,eb=/checked\\s*(?:[^=]|=\\s*.checked.)/i,fb=/^$|\\/(?:java|ecma)script/i,gb=/^true\\/(.*)/,hb=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,ib={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,\"table\")&&n.nodeName(11!==b.nodeType?b:b.firstChild,\"tr\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function kb(a){return a.type=(null!==a.getAttribute(\"type\"))+\"/\"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute(\"type\"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],\"globalEval\",!b||L.get(b[c],\"globalEval\"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||\"*\"):a.querySelectorAll?a.querySelectorAll(b||\"*\"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();\"input\"===c&&T.test(a.type)?b.checked=a.checked:(\"input\"===c||\"textarea\"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,\"script\"),g.length>0&&mb(g,!i&&ob(a,\"script\")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if(\"object\"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement(\"div\")),g=(bb.exec(e)||[\"\",\"\"])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,\"<$1></$2>\")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=\"\"}else l.push(b.createTextNode(e));k.textContent=\"\",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),\"script\"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||\"\")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,\"script\")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent=\"\");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if(\"string\"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(ab,\"<$1></$2>\");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&\"string\"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,\"script\"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,\"script\"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||\"\")&&!L.access(h,\"globalEval\")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,\"\")))}return this}}),n.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],\"display\");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),\"none\"!==c&&c||(qb=(qb||n(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp(\"^(\"+Q+\")(?!px)[a-z%]+$\",\"i\"),wb=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(\"\"!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+\"\":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement(\"div\"),f=l.createElement(\"div\");if(f.style){f.style.backgroundClip=\"content-box\",f.cloneNode(!0).style.backgroundClip=\"\",k.clearCloneStyle=\"content-box\"===f.style.backgroundClip,e.style.cssText=\"border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute\",e.appendChild(f);function g(){f.style.cssText=\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute\",f.innerHTML=\"\",d.appendChild(e);var g=a.getComputedStyle(f,null);b=\"1%\"!==g.top,c=\"4px\"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement(\"div\"));return c.style.cssText=f.style.cssText=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0\",c.style.marginRight=c.style.width=\"0\",f.style.width=\"1px\",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp(\"^(\"+Q+\")(.*)$\",\"i\"),Bb=new RegExp(\"^([+-])=(\"+Q+\")\",\"i\"),Cb={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Db={letterSpacing:\"0\",fontWeight:\"400\"},Eb=[\"Webkit\",\"O\",\"Moz\",\"ms\"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||\"px\"):b}function Hb(a,b,c,d,e){for(var f=c===(d?\"border\":\"content\")?4:\"width\"===b?1:0,g=0;4>f;f+=2)\"margin\"===c&&(g+=n.css(a,c+R[f],!0,e)),d?(\"content\"===c&&(g-=n.css(a,\"padding\"+R[f],!0,e)),\"margin\"!==c&&(g-=n.css(a,\"border\"+R[f]+\"Width\",!0,e))):(g+=n.css(a,\"padding\"+R[f],!0,e),\"padding\"!==c&&(g+=n.css(a,\"border\"+R[f]+\"Width\",!0,e)));return g}function Ib(a,b,c){var d=!0,e=\"width\"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g=\"border-box\"===n.css(a,\"boxSizing\",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?\"border\":\"content\"),d,f)+\"px\"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,\"olddisplay\"),c=d.style.display,b?(f[g]||\"none\"!==c||(d.style.display=\"\"),\"\"===d.style.display&&S(d)&&(f[g]=L.access(d,\"olddisplay\",tb(d.nodeName)))):(e=S(d),\"none\"===c&&e||L.set(d,\"olddisplay\",e?c:n.css(d,\"display\"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&\"none\"!==d.style.display&&\"\"!==d.style.display||(d.style.display=b?f[g]||\"\":\"none\"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,\"opacity\");return\"\"===c?\"1\":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":\"cssFloat\"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&\"get\"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,\"string\"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f=\"number\"),null!=c&&c===c&&(\"number\"!==f||n.cssNumber[h]||(c+=\"px\"),k.clearCloneStyle||\"\"!==c||0!==b.indexOf(\"background\")||(i[b]=\"inherit\"),g&&\"set\"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&\"get\"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),\"normal\"===e&&b in Db&&(e=Db[b]),\"\"===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each([\"height\",\"width\"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,\"display\"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,\"border-box\"===n.css(a,\"boxSizing\",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:\"inline-block\"},xb,[a,\"marginRight\"]):void 0}),n.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f=\"string\"==typeof c?c.split(\" \"):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return\"boolean\"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||\"swing\",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?\"\":\"px\")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,\"\"),b&&\"auto\"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp(\"^(?:([+-])=|)(\"+Q+\")([a-z%]*)$\",\"i\"),Pb=/queueHooks$/,Qb=[Vb],Rb={\"*\":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?\"\":\"px\"),g=(n.cssNumber[a]||\"px\"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||\".5\",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e[\"margin\"+c]=e[\"padding\"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb[\"*\"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,\"fxshow\");c.queue||(h=n._queueHooks(a,\"fx\"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,\"fx\").length||h.empty.fire()})})),1===a.nodeType&&(\"height\"in b||\"width\"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,\"display\"),k=\"none\"===j?L.get(a,\"olddisplay\")||tb(a.nodeName):j,\"inline\"===k&&\"none\"===n.css(a,\"float\")&&(o.display=\"inline-block\")),c.overflow&&(o.overflow=\"hidden\",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||\"toggle\"===e,e===(p?\"hide\":\"show\")){if(\"show\"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))\"inline\"===(\"none\"===j?tb(a.nodeName):j)&&(o.display=j);else{q?\"hidden\"in q&&(p=q.hidden):q=L.access(a,\"fxshow\",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,\"fxshow\");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start=\"width\"===d||\"height\"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=[\"*\"]):a=a.split(\" \");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&\"object\"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:\"number\"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue=\"fx\"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,\"finish\"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return\"string\"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||\"fx\",[]),this.each(function(){var b=!0,e=null!=a&&a+\"queueHooks\",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||\"fx\"),this.each(function(){var b,c=L.get(this),d=c[a+\"queue\"],e=c[a+\"queueHooks\"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||\"boolean\"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb(\"show\"),slideUp:Tb(\"hide\"),slideToggle:Tb(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||\"fx\",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement(\"input\"),b=l.createElement(\"select\"),c=b.appendChild(l.createElement(\"option\"));a.type=\"checkbox\",k.checkOn=\"\"!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement(\"input\"),a.value=\"t\",a.type=\"radio\",k.radioValue=\"t\"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&\"get\"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&\"set\"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+\"\"),c):void n.removeAttr(a,b))\n},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&\"radio\"===b&&n.nodeName(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{\"for\":\"htmlFor\",\"class\":\"className\"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&\"set\"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&\"get\"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute(\"tabindex\")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\\t\\r\\n\\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=\"string\"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||\"\").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(\" \"+c.className+\" \").replace(ac,\" \"):\" \")){f=0;while(e=b[f++])d.indexOf(\" \"+e+\" \")<0&&(d+=e+\" \");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||\"string\"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||\"\").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(\" \"+c.className+\" \").replace(ac,\" \"):\"\")){f=0;while(e=b[f++])while(d.indexOf(\" \"+e+\" \")>=0)d=d.replace(\" \"+e+\" \",\" \");g=a?n.trim(d):\"\",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return\"boolean\"==typeof b&&\"string\"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if(\"string\"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||\"boolean\"===c)&&(this.className&&L.set(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":L.get(this,\"__className__\")||\"\")})},hasClass:function(a){for(var b=\" \"+a+\" \",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(\" \"+this[c].className+\" \").replace(ac,\" \").indexOf(b)>=0)return!0;return!1}});var bc=/\\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e=\"\":\"number\"==typeof e?e+=\"\":n.isArray(e)&&(e=n.map(e,function(a){return null==a?\"\":a+\"\"})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&\"set\"in b&&void 0!==b.set(this,e,\"value\")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&\"get\"in b&&void 0!==(c=b.get(e,\"value\"))?c:(c=e.value,\"string\"==typeof c?c.replace(bc,\"\"):null==c?\"\":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,\"value\");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f=\"select-one\"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute(\"disabled\"))||c.parentNode.disabled&&n.nodeName(c.parentNode,\"optgroup\"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each([\"radio\",\"checkbox\"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute(\"value\")?\"on\":a.value})}),n.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,\"**\"):this.off(b,a||\"**\",c)}});var cc=n.now(),dc=/\\?/;n.parseJSON=function(a){return JSON.parse(a+\"\")},n.parseXML=function(a){var b,c;if(!a||\"string\"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,\"text/xml\")}catch(d){b=void 0}return(!b||b.getElementsByTagName(\"parsererror\").length)&&n.error(\"Invalid XML: \"+a),b};var ec=/#.*$/,fc=/([?&])_=[^&]*/,gc=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,hc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ic=/^(?:GET|HEAD)$/,jc=/^\\/\\//,kc=/^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,lc={},mc={},nc=\"*/\".concat(\"*\"),oc=a.location.href,pc=kc.exec(oc.toLowerCase())||[];function qc(a){return function(b,c){\"string\"!=typeof b&&(c=b,b=\"*\");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])\"+\"===d[0]?(d=d.slice(1)||\"*\",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rc(a,b,c,d){var e={},f=a===mc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return\"string\"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e[\"*\"]&&g(\"*\")}function sc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(\"*\"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader(\"Content-Type\"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+\" \"+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function uc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(\"*\"===f)f=i;else if(\"*\"!==i&&i!==f){if(g=j[i+\" \"+f]||j[\"* \"+f],!g)for(e in j)if(h=e.split(\" \"),h[1]===f&&(g=j[i+\" \"+h[0]]||j[\"* \"+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a[\"throws\"])b=g(b);else try{b=g(b)}catch(l){return{state:\"parsererror\",error:g?l:\"No conversion from \"+i+\" to \"+f}}}return{state:\"success\",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:oc,type:\"GET\",isLocal:hc.test(pc[1]),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":nc,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":n.parseJSON,\"text xml\":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sc(sc(a,n.ajaxSettings),b):sc(n.ajaxSettings,a)},ajaxPrefilter:qc(lc),ajaxTransport:qc(mc),ajax:function(a,b){\"object\"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks(\"once memory\"),q=k.statusCode||{},r={},s={},t=0,u=\"canceled\",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gc.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||oc)+\"\").replace(ec,\"\").replace(jc,pc[1]+\"//\"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||\"*\").toLowerCase().match(E)||[\"\"],null==k.crossDomain&&(h=kc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pc[1]&&h[2]===pc[2]&&(h[3]||(\"http:\"===h[1]?\"80\":\"443\"))===(pc[3]||(\"http:\"===pc[1]?\"80\":\"443\")))),k.data&&k.processData&&\"string\"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rc(lc,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger(\"ajaxStart\"),k.type=k.type.toUpperCase(),k.hasContent=!ic.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?\"&\":\"?\")+k.data,delete k.data),k.cache===!1&&(k.url=fc.test(d)?d.replace(fc,\"$1_=\"+cc++):d+(dc.test(d)?\"&\":\"?\")+\"_=\"+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader(\"If-Modified-Since\",n.lastModified[d]),n.etag[d]&&v.setRequestHeader(\"If-None-Match\",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader(\"Content-Type\",k.contentType),v.setRequestHeader(\"Accept\",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+(\"*\"!==k.dataTypes[0]?\", \"+nc+\"; q=0.01\":\"\"):k.accepts[\"*\"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u=\"abort\";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rc(mc,k,b,v)){v.readyState=1,i&&m.trigger(\"ajaxSend\",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort(\"timeout\")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,\"No Transport\");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||\"\",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tc(k,v,f)),u=uc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader(\"Last-Modified\"),w&&(n.lastModified[d]=w),w=v.getResponseHeader(\"etag\"),w&&(n.etag[d]=w)),204===a||\"HEAD\"===k.type?x=\"nocontent\":304===a?x=\"notmodified\":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x=\"error\",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+\"\",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?\"ajaxSuccess\":\"ajaxError\",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger(\"ajaxComplete\",[v,k]),--n.active||n.event.trigger(\"ajaxStop\")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,\"json\")},getScript:function(a,b){return n.get(a,void 0,b,\"script\")}}),n.each([\"get\",\"post\"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,\"body\")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vc=/%20/g,wc=/\\[\\]$/,xc=/\\r?\\n/g,yc=/^(?:submit|button|image|reset|file)$/i,zc=/^(?:input|select|textarea|keygen)/i;function Ac(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wc.test(a)?d(a,e):Ac(a+\"[\"+(\"object\"==typeof e?b:\"\")+\"]\",e,c,d)});else if(c||\"object\"!==n.type(b))d(a,b);else for(e in b)Ac(a+\"[\"+e+\"]\",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?\"\":b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ac(c,a[c],b,e);return d.join(\"&\").replace(vc,\"+\")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,\"elements\");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(\":disabled\")&&zc.test(this.nodeName)&&!yc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xc,\"\\r\\n\")}}):{name:b.name,value:c.replace(xc,\"\\r\\n\")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bc=0,Cc={},Dc={0:200,1223:204},Ec=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent(\"onunload\",function(){for(var a in Cc)Cc[a]()}),k.cors=!!Ec&&\"withCredentials\"in Ec,k.ajax=Ec=!!Ec,n.ajaxTransport(function(a){var b;return k.cors||Ec&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c[\"X-Requested-With\"]||(c[\"X-Requested-With\"]=\"XMLHttpRequest\");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cc[g],b=f.onload=f.onerror=null,\"abort\"===a?f.abort():\"error\"===a?d(f.status,f.statusText):d(Dc[f.status]||f.status,f.statusText,\"string\"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b(\"error\"),b=Cc[g]=b(\"abort\");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/(?:java|ecma)script/},converters:{\"text script\":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter(\"script\",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type=\"GET\")}),n.ajaxTransport(\"script\",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n(\"<script>\").prop({async:!0,charset:a.scriptCharset,src:a.url}).on(\"load error\",c=function(a){b.remove(),c=null,a&&e(\"error\"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fc=[],Gc=/(=)\\?(?=&|$)|\\?\\?/;n.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=Fc.pop()||n.expando+\"_\"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gc.test(b.url)?\"url\":\"string\"==typeof b.data&&!(b.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Gc.test(b.data)&&\"data\");return h||\"jsonp\"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gc,\"$1\"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?\"&\":\"?\")+b.jsonp+\"=\"+e),b.converters[\"script json\"]=function(){return g||n.error(e+\" was not called\"),g[0]},b.dataTypes[0]=\"json\",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),\"script\"):void 0}),n.parseHTML=function(a,b,c){if(!a||\"string\"!=typeof a)return null;\"boolean\"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hc=n.fn.load;n.fn.load=function(a,b,c){if(\"string\"!=typeof a&&Hc)return Hc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(\" \");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&\"object\"==typeof b&&(e=\"POST\"),g.length>0&&n.ajax({url:a,type:e,dataType:\"html\",data:b}).done(function(a){f=arguments,g.html(d?n(\"<div>\").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ic=a.document.documentElement;function Jc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,\"position\"),l=n(a),m={};\"static\"===k&&(a.style.position=\"relative\"),h=l.offset(),f=n.css(a,\"top\"),i=n.css(a,\"left\"),j=(\"absolute\"===k||\"fixed\"===k)&&(f+i).indexOf(\"auto\")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),\"using\"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return\"fixed\"===n.css(c,\"position\")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],\"html\")||(d=a.offset()),d.top+=n.css(a[0],\"borderTopWidth\",!0),d.left+=n.css(a[0],\"borderLeftWidth\",!0)),{top:b.top-d.top-n.css(c,\"marginTop\",!0),left:b.left-d.left-n.css(c,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ic;while(a&&!n.nodeName(a,\"html\")&&\"static\"===n.css(a,\"position\"))a=a.offsetParent;return a||Ic})}}),n.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(b,c){var d=\"pageYOffset\"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each([\"top\",\"left\"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+\"px\":c):void 0})}),n.each({Height:\"height\",Width:\"width\"},function(a,b){n.each({padding:\"inner\"+a,content:b,\"\":\"outer\"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||\"boolean\"!=typeof d),g=c||(d===!0||e===!0?\"margin\":\"border\");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement[\"client\"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body[\"scroll\"+a],e[\"scroll\"+a],b.body[\"offset\"+a],e[\"offset\"+a],e[\"client\"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return n});var Kc=a.jQuery,Lc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lc),b&&a.jQuery===n&&(a.jQuery=Kc),n},typeof b===U&&(a.jQuery=a.$=n),n});\n//# sourceMappingURL=jquery.min.map;\n","/*!\n * Modernizr v2.8.3\n * www.modernizr.com\n *\n * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton\n * Available under the BSD and MIT licenses: www.modernizr.com/license/\n */\nwindow.Modernizr=function(a,b,c){function d(a){t.cssText=a}function e(a,b){return d(x.join(a+\";\")+(b||\"\"))}function f(a,b){return typeof a===b}function g(a,b){return!!~(\"\"+a).indexOf(b)}function h(a,b){for(var d in a){var e=a[d];if(!g(e,\"-\")&&t[e]!==c)return\"pfx\"==b?e:!0}return!1}function i(a,b,d){for(var e in a){var g=b[a[e]];if(g!==c)return d===!1?a[e]:f(g,\"function\")?g.bind(d||b):g}return!1}function j(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+\" \"+z.join(d+\" \")+d).split(\" \");return f(b,\"string\")||f(b,\"undefined\")?h(e,b):(e=(a+\" \"+A.join(d+\" \")+d).split(\" \"),i(e,b,c))}function k(){o.input=function(c){for(var d=0,e=c.length;e>d;d++)E[c[d]]=!!(c[d]in u);return E.list&&(E.list=!(!b.createElement(\"datalist\")||!a.HTMLDataListElement)),E}(\"autocomplete autofocus list placeholder max min multiple pattern required step\".split(\" \")),o.inputtypes=function(a){for(var d,e,f,g=0,h=a.length;h>g;g++)u.setAttribute(\"type\",e=a[g]),d=\"text\"!==u.type,d&&(u.value=v,u.style.cssText=\"position:absolute;visibility:hidden;\",/^range$/.test(e)&&u.style.WebkitAppearance!==c?(q.appendChild(u),f=b.defaultView,d=f.getComputedStyle&&\"textfield\"!==f.getComputedStyle(u,null).WebkitAppearance&&0!==u.offsetHeight,q.removeChild(u)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?u.checkValidity&&u.checkValidity()===!1:u.value!=v)),D[a[g]]=!!d;return D}(\"search tel url email datetime date month week time datetime-local number range color\".split(\" \"))}var l,m,n=\"2.8.3\",o={},p=!0,q=b.documentElement,r=\"modernizr\",s=b.createElement(r),t=s.style,u=b.createElement(\"input\"),v=\":)\",w={}.toString,x=\" -webkit- -moz- -o- -ms- \".split(\" \"),y=\"Webkit Moz O ms\",z=y.split(\" \"),A=y.toLowerCase().split(\" \"),B={svg:\"http://www.w3.org/2000/svg\"},C={},D={},E={},F=[],G=F.slice,H=function(a,c,d,e){var f,g,h,i,j=b.createElement(\"div\"),k=b.body,l=k||b.createElement(\"body\");if(parseInt(d,10))for(;d--;)h=b.createElement(\"div\"),h.id=e?e[d]:r+(d+1),j.appendChild(h);return f=[\"&#173;\",'<style id=\"s',r,'\">',a,\"</style>\"].join(\"\"),j.id=r,(k?j:l).innerHTML+=f,l.appendChild(j),k||(l.style.background=\"\",l.style.overflow=\"hidden\",i=q.style.overflow,q.style.overflow=\"hidden\",q.appendChild(l)),g=c(j,a),k?j.parentNode.removeChild(j):(l.parentNode.removeChild(l),q.style.overflow=i),!!g},I=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return H(\"@media \"+b+\" { #\"+r+\" { position: absolute; } }\",function(b){d=\"absolute\"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position}),d},J=function(){function a(a,e){e=e||b.createElement(d[a]||\"div\"),a=\"on\"+a;var g=a in e;return g||(e.setAttribute||(e=b.createElement(\"div\")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(a,\"\"),g=f(e[a],\"function\"),f(e[a],\"undefined\")||(e[a]=c),e.removeAttribute(a))),e=null,g}var d={select:\"input\",change:\"input\",submit:\"form\",reset:\"form\",error:\"img\",load:\"img\",abort:\"img\"};return a}(),K={}.hasOwnProperty;m=f(K,\"undefined\")||f(K.call,\"undefined\")?function(a,b){return b in a&&f(a.constructor.prototype[b],\"undefined\")}:function(a,b){return K.call(a,b)},Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if(\"function\"!=typeof b)throw new TypeError;var c=G.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(G.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(G.call(arguments)))};return d}),C.flexbox=function(){return j(\"flexWrap\")},C.flexboxlegacy=function(){return j(\"boxDirection\")},C.canvas=function(){var a=b.createElement(\"canvas\");return!(!a.getContext||!a.getContext(\"2d\"))},C.canvastext=function(){return!(!o.canvas||!f(b.createElement(\"canvas\").getContext(\"2d\").fillText,\"function\"))},C.webgl=function(){return!!a.WebGLRenderingContext},C.touch=function(){var c;return\"ontouchstart\"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:H([\"@media (\",x.join(\"touch-enabled),(\"),r,\")\",\"{#modernizr{top:9px;position:absolute}}\"].join(\"\"),function(a){c=9===a.offsetTop}),c},C.geolocation=function(){return\"geolocation\"in navigator},C.postmessage=function(){return!!a.postMessage},C.websqldatabase=function(){return!!a.openDatabase},C.indexedDB=function(){return!!j(\"indexedDB\",a)},C.hashchange=function(){return J(\"hashchange\",a)&&(b.documentMode===c||b.documentMode>7)},C.history=function(){return!(!a.history||!history.pushState)},C.draganddrop=function(){var a=b.createElement(\"div\");return\"draggable\"in a||\"ondragstart\"in a&&\"ondrop\"in a},C.websockets=function(){return\"WebSocket\"in a||\"MozWebSocket\"in a},C.rgba=function(){return d(\"background-color:rgba(150,255,150,.5)\"),g(t.backgroundColor,\"rgba\")},C.hsla=function(){return d(\"background-color:hsla(120,40%,100%,.5)\"),g(t.backgroundColor,\"rgba\")||g(t.backgroundColor,\"hsla\")},C.multiplebgs=function(){return d(\"background:url(https://),url(https://),red url(https://)\"),/(url\\s*\\(.*?){3}/.test(t.background)},C.backgroundsize=function(){return j(\"backgroundSize\")},C.borderimage=function(){return j(\"borderImage\")},C.borderradius=function(){return j(\"borderRadius\")},C.boxshadow=function(){return j(\"boxShadow\")},C.textshadow=function(){return\"\"===b.createElement(\"div\").style.textShadow},C.opacity=function(){return e(\"opacity:.55\"),/^0.55$/.test(t.opacity)},C.cssanimations=function(){return j(\"animationName\")},C.csscolumns=function(){return j(\"columnCount\")},C.cssgradients=function(){var a=\"background-image:\",b=\"gradient(linear,left top,right bottom,from(#9f9),to(white));\",c=\"linear-gradient(left top,#9f9, white);\";return d((a+\"-webkit- \".split(\" \").join(b+a)+x.join(c+a)).slice(0,-a.length)),g(t.backgroundImage,\"gradient\")},C.cssreflections=function(){return j(\"boxReflect\")},C.csstransforms=function(){return!!j(\"transform\")},C.csstransforms3d=function(){var a=!!j(\"perspective\");return a&&\"webkitPerspective\"in q.style&&H(\"@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}\",function(b){a=9===b.offsetLeft&&3===b.offsetHeight}),a},C.csstransitions=function(){return j(\"transition\")},C.fontface=function(){var a;return H('@font-face {font-family:\"font\";src:url(\"https://\")}',function(c,d){var e=b.getElementById(\"smodernizr\"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||\"\":\"\";a=/src/i.test(g)&&0===g.indexOf(d.split(\" \")[0])}),a},C.generatedcontent=function(){var a;return H([\"#\",r,\"{font:0/0 a}#\",r,':after{content:\"',v,'\";visibility:hidden;font:3px/1 a}'].join(\"\"),function(b){a=b.offsetHeight>=3}),a},C.video=function(){var a=b.createElement(\"video\"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs=\"theora\"').replace(/^no$/,\"\"),c.h264=a.canPlayType('video/mp4; codecs=\"avc1.42E01E\"').replace(/^no$/,\"\"),c.webm=a.canPlayType('video/webm; codecs=\"vp8, vorbis\"').replace(/^no$/,\"\"))}catch(d){}return c},C.audio=function(){var a=b.createElement(\"audio\"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/,\"\"),c.mp3=a.canPlayType(\"audio/mpeg;\").replace(/^no$/,\"\"),c.wav=a.canPlayType('audio/wav; codecs=\"1\"').replace(/^no$/,\"\"),c.m4a=(a.canPlayType(\"audio/x-m4a;\")||a.canPlayType(\"audio/aac;\")).replace(/^no$/,\"\"))}catch(d){}return c},C.localstorage=function(){try{return localStorage.setItem(r,r),localStorage.removeItem(r),!0}catch(a){return!1}},C.sessionstorage=function(){try{return sessionStorage.setItem(r,r),sessionStorage.removeItem(r),!0}catch(a){return!1}},C.webworkers=function(){return!!a.Worker},C.applicationcache=function(){return!!a.applicationCache},C.svg=function(){return!!b.createElementNS&&!!b.createElementNS(B.svg,\"svg\").createSVGRect},C.inlinesvg=function(){var a=b.createElement(\"div\");return a.innerHTML=\"<svg/>\",(a.firstChild&&a.firstChild.namespaceURI)==B.svg},C.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(w.call(b.createElementNS(B.svg,\"animate\")))},C.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(w.call(b.createElementNS(B.svg,\"clipPath\")))};for(var L in C)m(C,L)&&(l=L.toLowerCase(),o[l]=C[L](),F.push((o[l]?\"\":\"no-\")+l));return o.input||k(),o.addTest=function(a,b){if(\"object\"==typeof a)for(var d in a)m(a,d)&&o.addTest(d,a[d]);else{if(a=a.toLowerCase(),o[a]!==c)return o;b=\"function\"==typeof b?b():b,\"undefined\"!=typeof p&&p&&(q.className+=\" \"+(b?\"\":\"no-\")+a),o[a]=b}return o},d(\"\"),s=u=null,function(a,b){function c(a,b){var c=a.createElement(\"p\"),d=a.getElementsByTagName(\"head\")[0]||a.documentElement;return c.innerHTML=\"x<style>\"+b+\"</style>\",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=s.elements;return\"string\"==typeof a?a.split(\" \"):a}function e(a){var b=r[a[p]];return b||(b={},q++,a[p]=q,r[q]=b),b}function f(a,c,d){if(c||(c=b),k)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():o.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!f.canHaveChildren||n.test(a)||f.tagUrn?f:d.frag.appendChild(f)}function g(a,c){if(a||(a=b),k)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function(\"h,f\",\"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(\"+d().join().replace(/[\\w\\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c(\"'+a+'\")'})+\");return n}\")(s,b.frag)}function i(a){a||(a=b);var d=e(a);return!s.shivCSS||j||d.hasCSS||(d.hasCSS=!!c(a,\"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}\")),k||h(a,d),a}var j,k,l=\"3.7.0\",m=a.html5||{},n=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,o=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,p=\"_html5shiv\",q=0,r={};!function(){try{var a=b.createElement(\"a\");a.innerHTML=\"<xyz></xyz>\",j=\"hidden\"in a,k=1==a.childNodes.length||function(){b.createElement(\"a\");var a=b.createDocumentFragment();return\"undefined\"==typeof a.cloneNode||\"undefined\"==typeof a.createDocumentFragment||\"undefined\"==typeof a.createElement}()}catch(c){j=!0,k=!0}}();var s={elements:m.elements||\"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video\",version:l,shivCSS:m.shivCSS!==!1,supportsUnknownElements:k,shivMethods:m.shivMethods!==!1,type:\"default\",shivDocument:i,createElement:f,createDocumentFragment:g};a.html5=s,i(b)}(this,b),o._version=n,o._prefixes=x,o._domPrefixes=A,o._cssomPrefixes=z,o.mq=I,o.hasEvent=J,o.testProp=function(a){return h([a])},o.testAllProps=j,o.testStyles=H,o.prefixed=function(a,b,c){return b?j(a,b,c):j(a,\"pfx\")},q.className=q.className.replace(/(^|\\s)no-js(\\s|$)/,\"$1$2\")+(p?\" js \"+F.join(\" \"):\"\"),o}(this,this.document);\ndefine(\"modernizr\", (function (global) {\n    return function () {\n        var ret, fn;\n        return ret || global.Modernizr;\n    };\n}(this)));\n\n","/*\n * Foundation Responsive Library\n * http://foundation.zurb.com\n * Copyright 2014, ZURB\n * Free to use under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n*/\n\n(function ($, window, document, undefined) {\n  'use strict';\n\n  var header_helpers = function (class_array) {\n    var i = class_array.length;\n    var head = $('head');\n\n    while (i--) {\n      if (head.has('.' + class_array[i]).length === 0) {\n        head.append('<meta class=\"' + class_array[i] + '\" />');\n      }\n    }\n  };\n\n  header_helpers([\n    'foundation-mq-small',\n    'foundation-mq-small-only',\n    'foundation-mq-medium',\n    'foundation-mq-medium-only',\n    'foundation-mq-large',\n    'foundation-mq-large-only',\n    'foundation-mq-xlarge',\n    'foundation-mq-xlarge-only',\n    'foundation-mq-xxlarge',\n    'foundation-data-attribute-namespace']);\n\n  // Enable FastClick if present\n\n  $(function () {\n    if (typeof FastClick !== 'undefined') {\n      // Don't attach to body if undefined\n      if (typeof document.body !== 'undefined') {\n        FastClick.attach(document.body);\n      }\n    }\n  });\n\n  // private Fast Selector wrapper,\n  // returns jQuery object. Only use where\n  // getElementById is not available.\n  var S = function (selector, context) {\n    if (typeof selector === 'string') {\n      if (context) {\n        var cont;\n        if (context.jquery) {\n          cont = context[0];\n          if (!cont) {\n            return context;\n          }\n        } else {\n          cont = context;\n        }\n        return $(cont.querySelectorAll(selector));\n      }\n\n      return $(document.querySelectorAll(selector));\n    }\n\n    return $(selector, context);\n  };\n\n  // Namespace functions.\n\n  var attr_name = function (init) {\n    var arr = [];\n    if (!init) {\n      arr.push('data');\n    }\n    if (this.namespace.length > 0) {\n      arr.push(this.namespace);\n    }\n    arr.push(this.name);\n\n    return arr.join('-');\n  };\n\n  var add_namespace = function (str) {\n    var parts = str.split('-'),\n        i = parts.length,\n        arr = [];\n\n    while (i--) {\n      if (i !== 0) {\n        arr.push(parts[i]);\n      } else {\n        if (this.namespace.length > 0) {\n          arr.push(this.namespace, parts[i]);\n        } else {\n          arr.push(parts[i]);\n        }\n      }\n    }\n\n    return arr.reverse().join('-');\n  };\n\n  // Event binding and data-options updating.\n\n  var bindings = function (method, options) {\n    var self = this,\n        bind = function(){\n          var $this = S(this),\n              should_bind_events = !$this.data(self.attr_name(true) + '-init');\n          $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this)));\n\n          if (should_bind_events) {\n            self.events(this);\n          }\n        };\n\n    if (S(this.scope).is('[' + this.attr_name() +']')) {\n      bind.call(this.scope);\n    } else {\n      S('[' + this.attr_name() +']', this.scope).each(bind);\n    }\n    // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.\n    if (typeof method === 'string') {\n      return this[method].call(this, options);\n    }\n\n  };\n\n  var single_image_loaded = function (image, callback) {\n    function loaded () {\n      callback(image[0]);\n    }\n\n    function bindLoad () {\n      this.one('load', loaded);\n\n      if (/MSIE (\\d+\\.\\d+);/.test(navigator.userAgent)) {\n        var src = this.attr( 'src' ),\n            param = src.match( /\\?/ ) ? '&' : '?';\n\n        param += 'random=' + (new Date()).getTime();\n        this.attr('src', src + param);\n      }\n    }\n\n    if (!image.attr('src')) {\n      loaded();\n      return;\n    }\n\n    if (image[0].complete || image[0].readyState === 4) {\n      loaded();\n    } else {\n      bindLoad.call(image);\n    }\n  };\n\n  /*\n    https://github.com/paulirish/matchMedia.js\n  */\n\n  window.matchMedia = window.matchMedia || (function ( doc ) {\n\n    'use strict';\n\n    var bool,\n        docElem = doc.documentElement,\n        refNode = docElem.firstElementChild || docElem.firstChild,\n        // fakeBody required for <FF4 when executed in <head>\n        fakeBody = doc.createElement( 'body' ),\n        div = doc.createElement( 'div' );\n\n    div.id = 'mq-test-1';\n    div.style.cssText = 'position:absolute;top:-100em';\n    fakeBody.style.background = 'none';\n    fakeBody.appendChild(div);\n\n    return function (q) {\n\n      div.innerHTML = '&shy;<style media=\"' + q + '\"> #mq-test-1 { width: 42px; }</style>';\n\n      docElem.insertBefore( fakeBody, refNode );\n      bool = div.offsetWidth === 42;\n      docElem.removeChild( fakeBody );\n\n      return {\n        matches : bool,\n        media : q\n      };\n\n    };\n\n  }( document ));\n\n  /*\n   * jquery.requestAnimationFrame\n   * https://github.com/gnarf37/jquery-requestAnimationFrame\n   * Requires jQuery 1.8+\n   *\n   * Copyright (c) 2012 Corey Frang\n   * Licensed under the MIT license.\n   */\n\n  (function(jQuery) {\n\n\n  // requestAnimationFrame polyfill adapted from Erik Möller\n  // fixes from Paul Irish and Tino Zijdel\n  // http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n  // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n  var animating,\n      lastTime = 0,\n      vendors = ['webkit', 'moz'],\n      requestAnimationFrame = window.requestAnimationFrame,\n      cancelAnimationFrame = window.cancelAnimationFrame,\n      jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;\n\n  for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {\n    requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ];\n    cancelAnimationFrame = cancelAnimationFrame ||\n      window[ vendors[lastTime] + 'CancelAnimationFrame' ] ||\n      window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ];\n  }\n\n  function raf() {\n    if (animating) {\n      requestAnimationFrame(raf);\n\n      if (jqueryFxAvailable) {\n        jQuery.fx.tick();\n      }\n    }\n  }\n\n  if (requestAnimationFrame) {\n    // use rAF\n    window.requestAnimationFrame = requestAnimationFrame;\n    window.cancelAnimationFrame = cancelAnimationFrame;\n\n    if (jqueryFxAvailable) {\n      jQuery.fx.timer = function (timer) {\n        if (timer() && jQuery.timers.push(timer) && !animating) {\n          animating = true;\n          raf();\n        }\n      };\n\n      jQuery.fx.stop = function () {\n        animating = false;\n      };\n    }\n  } else {\n    // polyfill\n    window.requestAnimationFrame = function (callback) {\n      var currTime = new Date().getTime(),\n        timeToCall = Math.max(0, 16 - (currTime - lastTime)),\n        id = window.setTimeout(function () {\n          callback(currTime + timeToCall);\n        }, timeToCall);\n      lastTime = currTime + timeToCall;\n      return id;\n    };\n\n    window.cancelAnimationFrame = function (id) {\n      clearTimeout(id);\n    };\n\n  }\n\n  }( $ ));\n\n  function removeQuotes (string) {\n    if (typeof string === 'string' || string instanceof String) {\n      string = string.replace(/^['\\\\/\"]+|(;\\s?})+|['\\\\/\"]+$/g, '');\n    }\n\n    return string;\n  }\n\n  window.Foundation = {\n    name : 'Foundation',\n\n    version : '5.5.1',\n\n    media_queries : {\n      'small'       : S('.foundation-mq-small').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'small-only'  : S('.foundation-mq-small-only').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'medium'      : S('.foundation-mq-medium').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'medium-only' : S('.foundation-mq-medium-only').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'large'       : S('.foundation-mq-large').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'large-only'  : S('.foundation-mq-large-only').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'xlarge'      : S('.foundation-mq-xlarge').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'xlarge-only' : S('.foundation-mq-xlarge-only').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n      'xxlarge'     : S('.foundation-mq-xxlarge').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, '')\n    },\n\n    stylesheet : $('<style></style>').appendTo('head')[0].sheet,\n\n    global : {\n      namespace : undefined\n    },\n\n    init : function (scope, libraries, method, options, response) {\n      var args = [scope, method, options, response],\n          responses = [];\n\n      // check RTL\n      this.rtl = /rtl/i.test(S('html').attr('dir'));\n\n      // set foundation global scope\n      this.scope = scope || this.scope;\n\n      this.set_namespace();\n\n      if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {\n        if (this.libs.hasOwnProperty(libraries)) {\n          responses.push(this.init_lib(libraries, args));\n        }\n      } else {\n        for (var lib in this.libs) {\n          responses.push(this.init_lib(lib, libraries));\n        }\n      }\n\n      S(window).load(function () {\n        S(window)\n          .trigger('resize.fndtn.clearing')\n          .trigger('resize.fndtn.dropdown')\n          .trigger('resize.fndtn.equalizer')\n          .trigger('resize.fndtn.interchange')\n          .trigger('resize.fndtn.joyride')\n          .trigger('resize.fndtn.magellan')\n          .trigger('resize.fndtn.topbar')\n          .trigger('resize.fndtn.slider');\n      });\n\n      return scope;\n    },\n\n    init_lib : function (lib, args) {\n      if (this.libs.hasOwnProperty(lib)) {\n        this.patch(this.libs[lib]);\n\n        if (args && args.hasOwnProperty(lib)) {\n            if (typeof this.libs[lib].settings !== 'undefined') {\n              $.extend(true, this.libs[lib].settings, args[lib]);\n            } else if (typeof this.libs[lib].defaults !== 'undefined') {\n              $.extend(true, this.libs[lib].defaults, args[lib]);\n            }\n          return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);\n        }\n\n        args = args instanceof Array ? args : new Array(args);\n        return this.libs[lib].init.apply(this.libs[lib], args);\n      }\n\n      return function () {};\n    },\n\n    patch : function (lib) {\n      lib.scope = this.scope;\n      lib.namespace = this.global.namespace;\n      lib.rtl = this.rtl;\n      lib['data_options'] = this.utils.data_options;\n      lib['attr_name'] = attr_name;\n      lib['add_namespace'] = add_namespace;\n      lib['bindings'] = bindings;\n      lib['S'] = this.utils.S;\n    },\n\n    inherit : function (scope, methods) {\n      var methods_arr = methods.split(' '),\n          i = methods_arr.length;\n\n      while (i--) {\n        if (this.utils.hasOwnProperty(methods_arr[i])) {\n          scope[methods_arr[i]] = this.utils[methods_arr[i]];\n        }\n      }\n    },\n\n    set_namespace : function () {\n\n      // Description:\n      //    Don't bother reading the namespace out of the meta tag\n      //    if the namespace has been set globally in javascript\n      //\n      // Example:\n      //    Foundation.global.namespace = 'my-namespace';\n      // or make it an empty string:\n      //    Foundation.global.namespace = '';\n      //\n      //\n\n      // If the namespace has not been set (is undefined), try to read it out of the meta element.\n      // Otherwise use the globally defined namespace, even if it's empty ('')\n      var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;\n\n      // Finally, if the namsepace is either undefined or false, set it to an empty string.\n      // Otherwise use the namespace value.\n      this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;\n    },\n\n    libs : {},\n\n    // methods that can be inherited in libraries\n    utils : {\n\n      // Description:\n      //    Fast Selector wrapper returns jQuery object. Only use where getElementById\n      //    is not available.\n      //\n      // Arguments:\n      //    Selector (String): CSS selector describing the element(s) to be\n      //    returned as a jQuery object.\n      //\n      //    Scope (String): CSS selector describing the area to be searched. Default\n      //    is document.\n      //\n      // Returns:\n      //    Element (jQuery Object): jQuery object containing elements matching the\n      //    selector within the scope.\n      S : S,\n\n      // Description:\n      //    Executes a function a max of once every n milliseconds\n      //\n      // Arguments:\n      //    Func (Function): Function to be throttled.\n      //\n      //    Delay (Integer): Function execution threshold in milliseconds.\n      //\n      // Returns:\n      //    Lazy_function (Function): Function with throttling applied.\n      throttle : function (func, delay) {\n        var timer = null;\n\n        return function () {\n          var context = this, args = arguments;\n\n          if (timer == null) {\n            timer = setTimeout(function () {\n              func.apply(context, args);\n              timer = null;\n            }, delay);\n          }\n        };\n      },\n\n      // Description:\n      //    Executes a function when it stops being invoked for n seconds\n      //    Modified version of _.debounce() http://underscorejs.org\n      //\n      // Arguments:\n      //    Func (Function): Function to be debounced.\n      //\n      //    Delay (Integer): Function execution threshold in milliseconds.\n      //\n      //    Immediate (Bool): Whether the function should be called at the beginning\n      //    of the delay instead of the end. Default is false.\n      //\n      // Returns:\n      //    Lazy_function (Function): Function with debouncing applied.\n      debounce : function (func, delay, immediate) {\n        var timeout, result;\n        return function () {\n          var context = this, args = arguments;\n          var later = function () {\n            timeout = null;\n            if (!immediate) {\n              result = func.apply(context, args);\n            }\n          };\n          var callNow = immediate && !timeout;\n          clearTimeout(timeout);\n          timeout = setTimeout(later, delay);\n          if (callNow) {\n            result = func.apply(context, args);\n          }\n          return result;\n        };\n      },\n\n      // Description:\n      //    Parses data-options attribute\n      //\n      // Arguments:\n      //    El (jQuery Object): Element to be parsed.\n      //\n      // Returns:\n      //    Options (Javascript Object): Contents of the element's data-options\n      //    attribute.\n      data_options : function (el, data_attr_name) {\n        data_attr_name = data_attr_name || 'options';\n        var opts = {}, ii, p, opts_arr,\n            data_options = function (el) {\n              var namespace = Foundation.global.namespace;\n\n              if (namespace.length > 0) {\n                return el.data(namespace + '-' + data_attr_name);\n              }\n\n              return el.data(data_attr_name);\n            };\n\n        var cached_options = data_options(el);\n\n        if (typeof cached_options === 'object') {\n          return cached_options;\n        }\n\n        opts_arr = (cached_options || ':').split(';');\n        ii = opts_arr.length;\n\n        function isNumber (o) {\n          return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true;\n        }\n\n        function trim (str) {\n          if (typeof str === 'string') {\n            return $.trim(str);\n          }\n          return str;\n        }\n\n        while (ii--) {\n          p = opts_arr[ii].split(':');\n          p = [p[0], p.slice(1).join(':')];\n\n          if (/true/i.test(p[1])) {\n            p[1] = true;\n          }\n          if (/false/i.test(p[1])) {\n            p[1] = false;\n          }\n          if (isNumber(p[1])) {\n            if (p[1].indexOf('.') === -1) {\n              p[1] = parseInt(p[1], 10);\n            } else {\n              p[1] = parseFloat(p[1]);\n            }\n          }\n\n          if (p.length === 2 && p[0].length > 0) {\n            opts[trim(p[0])] = trim(p[1]);\n          }\n        }\n\n        return opts;\n      },\n\n      // Description:\n      //    Adds JS-recognizable media queries\n      //\n      // Arguments:\n      //    Media (String): Key string for the media query to be stored as in\n      //    Foundation.media_queries\n      //\n      //    Class (String): Class name for the generated <meta> tag\n      register_media : function (media, media_class) {\n        if (Foundation.media_queries[media] === undefined) {\n          $('head').append('<meta class=\"' + media_class + '\"/>');\n          Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));\n        }\n      },\n\n      // Description:\n      //    Add custom CSS within a JS-defined media query\n      //\n      // Arguments:\n      //    Rule (String): CSS rule to be appended to the document.\n      //\n      //    Media (String): Optional media query string for the CSS rule to be\n      //    nested under.\n      add_custom_rule : function (rule, media) {\n        if (media === undefined && Foundation.stylesheet) {\n          Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);\n        } else {\n          var query = Foundation.media_queries[media];\n\n          if (query !== undefined) {\n            Foundation.stylesheet.insertRule('@media ' +\n              Foundation.media_queries[media] + '{ ' + rule + ' }');\n          }\n        }\n      },\n\n      // Description:\n      //    Performs a callback function when an image is fully loaded\n      //\n      // Arguments:\n      //    Image (jQuery Object): Image(s) to check if loaded.\n      //\n      //    Callback (Function): Function to execute when image is fully loaded.\n      image_loaded : function (images, callback) {\n        var self = this,\n            unloaded = images.length;\n\n        if (unloaded === 0) {\n          callback(images);\n        }\n\n        images.each(function () {\n          single_image_loaded(self.S(this), function () {\n            unloaded -= 1;\n            if (unloaded === 0) {\n              callback(images);\n            }\n          });\n        });\n      },\n\n      // Description:\n      //    Returns a random, alphanumeric string\n      //\n      // Arguments:\n      //    Length (Integer): Length of string to be generated. Defaults to random\n      //    integer.\n      //\n      // Returns:\n      //    Rand (String): Pseudo-random, alphanumeric string.\n      random_str : function () {\n        if (!this.fidx) {\n          this.fidx = 0;\n        }\n        this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');\n\n        return this.prefix + (this.fidx++).toString(36);\n      },\n\n      // Description:\n      //    Helper for window.matchMedia\n      //\n      // Arguments:\n      //    mq (String): Media query\n      //\n      // Returns:\n      //    (Boolean): Whether the media query passes or not\n      match : function (mq) {\n        return window.matchMedia(mq).matches;\n      },\n\n      // Description:\n      //    Helpers for checking Foundation default media queries with JS\n      //\n      // Returns:\n      //    (Boolean): Whether the media query passes or not\n\n      is_small_up : function () {\n        return this.match(Foundation.media_queries.small);\n      },\n\n      is_medium_up : function () {\n        return this.match(Foundation.media_queries.medium);\n      },\n\n      is_large_up : function () {\n        return this.match(Foundation.media_queries.large);\n      },\n\n      is_xlarge_up : function () {\n        return this.match(Foundation.media_queries.xlarge);\n      },\n\n      is_xxlarge_up : function () {\n        return this.match(Foundation.media_queries.xxlarge);\n      },\n\n      is_small_only : function () {\n        return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();\n      },\n\n      is_medium_only : function () {\n        return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();\n      },\n\n      is_large_only : function () {\n        return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();\n      },\n\n      is_xlarge_only : function () {\n        return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();\n      },\n\n      is_xxlarge_only : function () {\n        return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();\n      }\n    }\n  };\n\n  $.fn.foundation = function () {\n    var args = Array.prototype.slice.call(arguments, 0);\n\n    return this.each(function () {\n      Foundation.init.apply(Foundation, [this].concat(args));\n      return this;\n    });\n  };\n\n}(jQuery, window, window.document));\n\ndefine(\"foundation.core\", [\"jquery\",\"modernizr\"], (function (global) {\n    return function () {\n        var ret, fn;\n        return ret || global.Foundation;\n    };\n}(this)));\n\n","define('sunstone-config',['require','jquery'],function(require) {\n  require('jquery');\n  \n  // Clone the local config object in a private var\n  var _config = $.extend(true, {}, config);\n\n  var Config = {\n    'isTabEnabled': function(tabName) {\n      var enabled = _config['view']['enabled_tabs'][tabName];\n      return enabled;\n    },\n\n    \"isTabActionEnabled\": function(tabName, actionName, panelName) {\n      var enabled = false;\n      var configTab = _config['view']['tabs'][tabName];\n\n      if (configTab != undefined) {\n        if (panelName) {\n          enabled = configTab['panel_tabs_actions'][panelName][actionName];\n        } else {\n          enabled = configTab['actions'][actionName];\n        }\n      }\n\n      return enabled;\n    },\n\n    \"isTabPanelEnabled\": function(tabName, panelTabName) {\n      if (_config['view']['tabs'][tabName]) {\n        var enabled = _config['view']['tabs'][tabName]['panel_tabs'][panelTabName];\n        return enabled;\n      } else {\n        return false;\n      }\n    },\n\n    \"isFeatureEnabled\": function(featureName) {\n      if (_config['view']['features'] && _config['view']['features'][featureName]) {\n        return true;\n      } else {\n        return false;\n      }\n    },\n\n    \"tabTableColumns\": function(tabName) {\n      var columns = _config['view']['tabs'][tabName]['table_columns'];\n\n      if (columns) {\n        return columns;\n      } else {\n        return [];\n      }\n    },\n\n    \"isTemplateCreationTabEnabled\": function(templateTabName) {\n      if (_config['view']['tabs']['templates-tab']) {\n        var enabled = _config['view']['tabs']['templates-tab']['template_creation_tabs'][templateTabName];\n        return enabled;\n      } else {\n        return false;\n      }\n    },\n\n    \"dashboardWidgets\": function(perRow) {\n      var widgets = _config['view']['tabs']['dashboard-tab'][perRow];\n\n      if (widgets) {\n        return widgets;\n      } else {\n        return [];\n      }\n    },\n\n    \"tableOrder\": function() {\n      return _config['user_config'][\"table_order\"];\n    },\n\n    \"provision\": {\n      \"dashboard\": {\n        \"isEnabled\": function(widget) {\n          if (_config['view']['tabs']['provision-tab']) {\n            var enabled = _config['view']['tabs']['provision-tab']['dashboard'][widget];\n            return enabled;\n          } else {\n            return false;\n          }\n        }\n      },\n      \"create_vm\": {\n        \"isEnabled\": function(widget) {\n          if (_config['view']['tabs']['provision-tab'] && _config['view']['tabs']['provision-tab'][\"create_vm\"]) {\n            return _config['view']['tabs']['provision-tab']['create_vm'][widget];\n          } else {\n            return false;\n          }\n        }\n      },\n      \"logo\": (_config['view'][\"provision_logo\"] || \"images/one_small_logo.png\")\n    },\n\n    'autoRefresh' : _config['view']['autorefresh']\n  }\n\n  return Config;\n});\n\n","define('utils/locale',['require'],function(require) {\n  var tr = function (str) {\n    // TODO Add locale from the locale folder\n    // var tmp = locale[str];\n    var tmp;\n    if (tmp == null || tmp == \"\") {\n      tmp = str;\n    }\n    return tmp;\n  };\n\n  return {\n    'tr': tr\n  }\n});\n\n","/*!\n\n handlebars v2.0.0\n\nCopyright (C) 2011-2014 by Yehuda Katz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n@license\n*/\n/* exported Handlebars */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define('hbs/handlebars',[], factory);\n  } else if (typeof exports === 'object') {\n    module.exports = factory();\n  } else {\n    root.Handlebars = root.Handlebars || factory();\n  }\n}(this, function () {\n// handlebars/safe-string.js\nvar __module4__ = (function() {\n  \"use strict\";\n  var __exports__;\n  // Build out our basic SafeString type\n  function SafeString(string) {\n    this.string = string;\n  }\n\n  SafeString.prototype.toString = function() {\n    return \"\" + this.string;\n  };\n\n  __exports__ = SafeString;\n  return __exports__;\n})();\n\n// handlebars/utils.js\nvar __module3__ = (function(__dependency1__) {\n  \"use strict\";\n  var __exports__ = {};\n  /*jshint -W004 */\n  var SafeString = __dependency1__;\n\n  var escape = {\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    '\"': \"&quot;\",\n    \"'\": \"&#x27;\",\n    \"`\": \"&#x60;\"\n  };\n\n  var badChars = /[&<>\"'`]/g;\n  var possible = /[&<>\"'`]/;\n\n  function escapeChar(chr) {\n    return escape[chr];\n  }\n\n  function extend(obj /* , ...source */) {\n    for (var i = 1; i < arguments.length; i++) {\n      for (var key in arguments[i]) {\n        if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n          obj[key] = arguments[i][key];\n        }\n      }\n    }\n\n    return obj;\n  }\n\n  __exports__.extend = extend;var toString = Object.prototype.toString;\n  __exports__.toString = toString;\n  // Sourced from lodash\n  // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n  var isFunction = function(value) {\n    return typeof value === 'function';\n  };\n  // fallback for older versions of Chrome and Safari\n  /* istanbul ignore next */\n  if (isFunction(/x/)) {\n    isFunction = function(value) {\n      return typeof value === 'function' && toString.call(value) === '[object Function]';\n    };\n  }\n  var isFunction;\n  __exports__.isFunction = isFunction;\n  /* istanbul ignore next */\n  var isArray = Array.isArray || function(value) {\n    return (value && typeof value === 'object') ? toString.call(value) === '[object Array]' : false;\n  };\n  __exports__.isArray = isArray;\n\n  function escapeExpression(string) {\n    // don't escape SafeStrings, since they're already safe\n    if (string instanceof SafeString) {\n      return string.toString();\n    } else if (string == null) {\n      return \"\";\n    } else if (!string) {\n      return string + '';\n    }\n\n    // Force a string conversion as this will be done by the append regardless and\n    // the regex test will do this transparently behind the scenes, causing issues if\n    // an object's to string has escaped characters in it.\n    string = \"\" + string;\n\n    if(!possible.test(string)) { return string; }\n    return string.replace(badChars, escapeChar);\n  }\n\n  __exports__.escapeExpression = escapeExpression;function isEmpty(value) {\n    if (!value && value !== 0) {\n      return true;\n    } else if (isArray(value) && value.length === 0) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  __exports__.isEmpty = isEmpty;function appendContextPath(contextPath, id) {\n    return (contextPath ? contextPath + '.' : '') + id;\n  }\n\n  __exports__.appendContextPath = appendContextPath;\n  return __exports__;\n})(__module4__);\n\n// handlebars/exception.js\nvar __module5__ = (function() {\n  \"use strict\";\n  var __exports__;\n\n  var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\n  function Exception(message, node) {\n    var line;\n    if (node && node.firstLine) {\n      line = node.firstLine;\n\n      message += ' - ' + line + ':' + node.firstColumn;\n    }\n\n    var tmp = Error.prototype.constructor.call(this, message);\n\n    // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n    for (var idx = 0; idx < errorProps.length; idx++) {\n      this[errorProps[idx]] = tmp[errorProps[idx]];\n    }\n\n    if (line) {\n      this.lineNumber = line;\n      this.column = node.firstColumn;\n    }\n  }\n\n  Exception.prototype = new Error();\n\n  __exports__ = Exception;\n  return __exports__;\n})();\n\n// handlebars/base.js\nvar __module2__ = (function(__dependency1__, __dependency2__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Utils = __dependency1__;\n  var Exception = __dependency2__;\n\n  var VERSION = \"2.0.0\";\n  __exports__.VERSION = VERSION;var COMPILER_REVISION = 6;\n  __exports__.COMPILER_REVISION = COMPILER_REVISION;\n  var REVISION_CHANGES = {\n    1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n    2: '== 1.0.0-rc.3',\n    3: '== 1.0.0-rc.4',\n    4: '== 1.x.x',\n    5: '== 2.0.0-alpha.x',\n    6: '>= 2.0.0-beta.1'\n  };\n  __exports__.REVISION_CHANGES = REVISION_CHANGES;\n  var isArray = Utils.isArray,\n      isFunction = Utils.isFunction,\n      toString = Utils.toString,\n      objectType = '[object Object]';\n\n  function HandlebarsEnvironment(helpers, partials) {\n    this.helpers = helpers || {};\n    this.partials = partials || {};\n\n    registerDefaultHelpers(this);\n  }\n\n  __exports__.HandlebarsEnvironment = HandlebarsEnvironment;HandlebarsEnvironment.prototype = {\n    constructor: HandlebarsEnvironment,\n\n    logger: logger,\n    log: log,\n\n    registerHelper: function(name, fn) {\n      if (toString.call(name) === objectType) {\n        if (fn) { throw new Exception('Arg not supported with multiple helpers'); }\n        Utils.extend(this.helpers, name);\n      } else {\n        this.helpers[name] = fn;\n      }\n    },\n    unregisterHelper: function(name) {\n      delete this.helpers[name];\n    },\n\n    registerPartial: function(name, partial) {\n      if (toString.call(name) === objectType) {\n        Utils.extend(this.partials,  name);\n      } else {\n        this.partials[name] = partial;\n      }\n    },\n    unregisterPartial: function(name) {\n      delete this.partials[name];\n    }\n  };\n\n  function registerDefaultHelpers(instance) {\n    instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n      if(arguments.length === 1) {\n        // A missing field in a {{foo}} constuct.\n        return undefined;\n      } else {\n        // Someone is actually trying to call something, blow up.\n        throw new Exception(\"Missing helper: '\" + arguments[arguments.length-1].name + \"'\");\n      }\n    });\n\n    instance.registerHelper('blockHelperMissing', function(context, options) {\n      var inverse = options.inverse,\n          fn = options.fn;\n\n      if(context === true) {\n        return fn(this);\n      } else if(context === false || context == null) {\n        return inverse(this);\n      } else if (isArray(context)) {\n        if(context.length > 0) {\n          if (options.ids) {\n            options.ids = [options.name];\n          }\n\n          return instance.helpers.each(context, options);\n        } else {\n          return inverse(this);\n        }\n      } else {\n        if (options.data && options.ids) {\n          var data = createFrame(options.data);\n          data.contextPath = Utils.appendContextPath(options.data.contextPath, options.name);\n          options = {data: data};\n        }\n\n        return fn(context, options);\n      }\n    });\n\n    instance.registerHelper('each', function(context, options) {\n      if (!options) {\n        throw new Exception('Must pass iterator to #each');\n      }\n\n      var fn = options.fn, inverse = options.inverse;\n      var i = 0, ret = \"\", data;\n\n      var contextPath;\n      if (options.data && options.ids) {\n        contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n      }\n\n      if (isFunction(context)) { context = context.call(this); }\n\n      if (options.data) {\n        data = createFrame(options.data);\n      }\n\n      if(context && typeof context === 'object') {\n        if (isArray(context)) {\n          for(var j = context.length; i<j; i++) {\n            if (data) {\n              data.index = i;\n              data.first = (i === 0);\n              data.last  = (i === (context.length-1));\n\n              if (contextPath) {\n                data.contextPath = contextPath + i;\n              }\n            }\n            ret = ret + fn(context[i], { data: data });\n          }\n        } else {\n          for(var key in context) {\n            if(context.hasOwnProperty(key)) {\n              if(data) {\n                data.key = key;\n                data.index = i;\n                data.first = (i === 0);\n\n                if (contextPath) {\n                  data.contextPath = contextPath + key;\n                }\n              }\n              ret = ret + fn(context[key], {data: data});\n              i++;\n            }\n          }\n        }\n      }\n\n      if(i === 0){\n        ret = inverse(this);\n      }\n\n      return ret;\n    });\n\n    instance.registerHelper('if', function(conditional, options) {\n      if (isFunction(conditional)) { conditional = conditional.call(this); }\n\n      // Default behavior is to render the positive path if the value is truthy and not empty.\n      // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n      // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n      if ((!options.hash.includeZero && !conditional) || Utils.isEmpty(conditional)) {\n        return options.inverse(this);\n      } else {\n        return options.fn(this);\n      }\n    });\n\n    instance.registerHelper('unless', function(conditional, options) {\n      return instance.helpers['if'].call(this, conditional, {fn: options.inverse, inverse: options.fn, hash: options.hash});\n    });\n\n    instance.registerHelper('with', function(context, options) {\n      if (isFunction(context)) { context = context.call(this); }\n\n      var fn = options.fn;\n\n      if (!Utils.isEmpty(context)) {\n        if (options.data && options.ids) {\n          var data = createFrame(options.data);\n          data.contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]);\n          options = {data:data};\n        }\n\n        return fn(context, options);\n      } else {\n        return options.inverse(this);\n      }\n    });\n\n    instance.registerHelper('log', function(message, options) {\n      var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;\n      instance.log(level, message);\n    });\n\n    instance.registerHelper('lookup', function(obj, field) {\n      return obj && obj[field];\n    });\n  }\n\n  var logger = {\n    methodMap: { 0: 'debug', 1: 'info', 2: 'warn', 3: 'error' },\n\n    // State enum\n    DEBUG: 0,\n    INFO: 1,\n    WARN: 2,\n    ERROR: 3,\n    level: 3,\n\n    // can be overridden in the host environment\n    log: function(level, message) {\n      if (logger.level <= level) {\n        var method = logger.methodMap[level];\n        if (typeof console !== 'undefined' && console[method]) {\n          console[method].call(console, message);\n        }\n      }\n    }\n  };\n  __exports__.logger = logger;\n  var log = logger.log;\n  __exports__.log = log;\n  var createFrame = function(object) {\n    var frame = Utils.extend({}, object);\n    frame._parent = object;\n    return frame;\n  };\n  __exports__.createFrame = createFrame;\n  return __exports__;\n})(__module3__, __module5__);\n\n// handlebars/runtime.js\nvar __module6__ = (function(__dependency1__, __dependency2__, __dependency3__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Utils = __dependency1__;\n  var Exception = __dependency2__;\n  var COMPILER_REVISION = __dependency3__.COMPILER_REVISION;\n  var REVISION_CHANGES = __dependency3__.REVISION_CHANGES;\n  var createFrame = __dependency3__.createFrame;\n\n  function checkRevision(compilerInfo) {\n    var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n        currentRevision = COMPILER_REVISION;\n\n    if (compilerRevision !== currentRevision) {\n      if (compilerRevision < currentRevision) {\n        var runtimeVersions = REVISION_CHANGES[currentRevision],\n            compilerVersions = REVISION_CHANGES[compilerRevision];\n        throw new Exception(\"Template was precompiled with an older version of Handlebars than the current runtime. \"+\n              \"Please update your precompiler to a newer version (\"+runtimeVersions+\") or downgrade your runtime to an older version (\"+compilerVersions+\").\");\n      } else {\n        // Use the embedded version info since the runtime doesn't know about this revision yet\n        throw new Exception(\"Template was precompiled with a newer version of Handlebars than the current runtime. \"+\n              \"Please update your runtime to a newer version (\"+compilerInfo[1]+\").\");\n      }\n    }\n  }\n\n  __exports__.checkRevision = checkRevision;// TODO: Remove this line and break up compilePartial\n\n  function template(templateSpec, env) {\n    /* istanbul ignore next */\n    if (!env) {\n      throw new Exception(\"No environment passed to template\");\n    }\n    if (!templateSpec || !templateSpec.main) {\n      throw new Exception('Unknown template object: ' + typeof templateSpec);\n    }\n\n    // Note: Using env.VM references rather than local var references throughout this section to allow\n    // for external users to override these as psuedo-supported APIs.\n    env.VM.checkRevision(templateSpec.compiler);\n\n    var invokePartialWrapper = function(partial, indent, name, context, hash, helpers, partials, data, depths) {\n      if (hash) {\n        context = Utils.extend({}, context, hash);\n      }\n\n      var result = env.VM.invokePartial.call(this, partial, name, context, helpers, partials, data, depths);\n\n      if (result == null && env.compile) {\n        var options = { helpers: helpers, partials: partials, data: data, depths: depths };\n        partials[name] = env.compile(partial, { data: data !== undefined, compat: templateSpec.compat }, env);\n        result = partials[name](context, options);\n      }\n      if (result != null) {\n        if (indent) {\n          var lines = result.split('\\n');\n          for (var i = 0, l = lines.length; i < l; i++) {\n            if (!lines[i] && i + 1 === l) {\n              break;\n            }\n\n            lines[i] = indent + lines[i];\n          }\n          result = lines.join('\\n');\n        }\n        return result;\n      } else {\n        throw new Exception(\"The partial \" + name + \" could not be compiled when running in runtime-only mode\");\n      }\n    };\n\n    // Just add water\n    var container = {\n      lookup: function(depths, name) {\n        var len = depths.length;\n        for (var i = 0; i < len; i++) {\n          if (depths[i] && depths[i][name] != null) {\n            return depths[i][name];\n          }\n        }\n      },\n      lambda: function(current, context) {\n        return typeof current === 'function' ? current.call(context) : current;\n      },\n\n      escapeExpression: Utils.escapeExpression,\n      invokePartial: invokePartialWrapper,\n\n      fn: function(i) {\n        return templateSpec[i];\n      },\n\n      programs: [],\n      program: function(i, data, depths) {\n        var programWrapper = this.programs[i],\n            fn = this.fn(i);\n        if (data || depths) {\n          programWrapper = program(this, i, fn, data, depths);\n        } else if (!programWrapper) {\n          programWrapper = this.programs[i] = program(this, i, fn);\n        }\n        return programWrapper;\n      },\n\n      data: function(data, depth) {\n        while (data && depth--) {\n          data = data._parent;\n        }\n        return data;\n      },\n      merge: function(param, common) {\n        var ret = param || common;\n\n        if (param && common && (param !== common)) {\n          ret = Utils.extend({}, common, param);\n        }\n\n        return ret;\n      },\n\n      noop: env.VM.noop,\n      compilerInfo: templateSpec.compiler\n    };\n\n    var ret = function(context, options) {\n      options = options || {};\n      var data = options.data;\n\n      ret._setup(options);\n      if (!options.partial && templateSpec.useData) {\n        data = initData(context, data);\n      }\n      var depths;\n      if (templateSpec.useDepths) {\n        depths = options.depths ? [context].concat(options.depths) : [context];\n      }\n\n      return templateSpec.main.call(container, context, container.helpers, container.partials, data, depths);\n    };\n    ret.isTop = true;\n\n    ret._setup = function(options) {\n      if (!options.partial) {\n        container.helpers = container.merge(options.helpers, env.helpers);\n\n        if (templateSpec.usePartial) {\n          container.partials = container.merge(options.partials, env.partials);\n        }\n      } else {\n        container.helpers = options.helpers;\n        container.partials = options.partials;\n      }\n    };\n\n    ret._child = function(i, data, depths) {\n      if (templateSpec.useDepths && !depths) {\n        throw new Exception('must pass parent depths');\n      }\n\n      return program(container, i, templateSpec[i], data, depths);\n    };\n    return ret;\n  }\n\n  __exports__.template = template;function program(container, i, fn, data, depths) {\n    var prog = function(context, options) {\n      options = options || {};\n\n      return fn.call(container, context, container.helpers, container.partials, options.data || data, depths && [context].concat(depths));\n    };\n    prog.program = i;\n    prog.depth = depths ? depths.length : 0;\n    return prog;\n  }\n\n  __exports__.program = program;function invokePartial(partial, name, context, helpers, partials, data, depths) {\n    var options = { partial: true, helpers: helpers, partials: partials, data: data, depths: depths };\n\n    if(partial === undefined) {\n      throw new Exception(\"The partial \" + name + \" could not be found\");\n    } else if(partial instanceof Function) {\n      return partial(context, options);\n    }\n  }\n\n  __exports__.invokePartial = invokePartial;function noop() { return \"\"; }\n\n  __exports__.noop = noop;function initData(context, data) {\n    if (!data || !('root' in data)) {\n      data = data ? createFrame(data) : {};\n      data.root = context;\n    }\n    return data;\n  }\n  return __exports__;\n})(__module3__, __module5__, __module2__);\n\n// handlebars.runtime.js\nvar __module1__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {\n  \"use strict\";\n  var __exports__;\n  /*globals Handlebars: true */\n  var base = __dependency1__;\n\n  // Each of these augment the Handlebars object. No need to setup here.\n  // (This is done to easily share code between commonjs and browse envs)\n  var SafeString = __dependency2__;\n  var Exception = __dependency3__;\n  var Utils = __dependency4__;\n  var runtime = __dependency5__;\n\n  // For compatibility and usage outside of module systems, make the Handlebars object a namespace\n  var create = function() {\n    var hb = new base.HandlebarsEnvironment();\n\n    Utils.extend(hb, base);\n    hb.SafeString = SafeString;\n    hb.Exception = Exception;\n    hb.Utils = Utils;\n    hb.escapeExpression = Utils.escapeExpression;\n\n    hb.VM = runtime;\n    hb.template = function(spec) {\n      return runtime.template(spec, hb);\n    };\n\n    return hb;\n  };\n\n  var Handlebars = create();\n  Handlebars.create = create;\n\n  Handlebars['default'] = Handlebars;\n\n  __exports__ = Handlebars;\n  return __exports__;\n})(__module2__, __module4__, __module5__, __module3__, __module6__);\n\n// handlebars/compiler/ast.js\nvar __module7__ = (function(__dependency1__) {\n  \"use strict\";\n  var __exports__;\n  var Exception = __dependency1__;\n\n  function LocationInfo(locInfo) {\n    locInfo = locInfo || {};\n    this.firstLine   = locInfo.first_line;\n    this.firstColumn = locInfo.first_column;\n    this.lastColumn  = locInfo.last_column;\n    this.lastLine    = locInfo.last_line;\n  }\n\n  var AST = {\n    ProgramNode: function(statements, strip, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"program\";\n      this.statements = statements;\n      this.strip = strip;\n    },\n\n    MustacheNode: function(rawParams, hash, open, strip, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"mustache\";\n      this.strip = strip;\n\n      // Open may be a string parsed from the parser or a passed boolean flag\n      if (open != null && open.charAt) {\n        // Must use charAt to support IE pre-10\n        var escapeFlag = open.charAt(3) || open.charAt(2);\n        this.escaped = escapeFlag !== '{' && escapeFlag !== '&';\n      } else {\n        this.escaped = !!open;\n      }\n\n      if (rawParams instanceof AST.SexprNode) {\n        this.sexpr = rawParams;\n      } else {\n        // Support old AST API\n        this.sexpr = new AST.SexprNode(rawParams, hash);\n      }\n\n      // Support old AST API that stored this info in MustacheNode\n      this.id = this.sexpr.id;\n      this.params = this.sexpr.params;\n      this.hash = this.sexpr.hash;\n      this.eligibleHelper = this.sexpr.eligibleHelper;\n      this.isHelper = this.sexpr.isHelper;\n    },\n\n    SexprNode: function(rawParams, hash, locInfo) {\n      LocationInfo.call(this, locInfo);\n\n      this.type = \"sexpr\";\n      this.hash = hash;\n\n      var id = this.id = rawParams[0];\n      var params = this.params = rawParams.slice(1);\n\n      // a mustache is definitely a helper if:\n      // * it is an eligible helper, and\n      // * it has at least one parameter or hash segment\n      this.isHelper = !!(params.length || hash);\n\n      // a mustache is an eligible helper if:\n      // * its id is simple (a single part, not `this` or `..`)\n      this.eligibleHelper = this.isHelper || id.isSimple;\n\n      // if a mustache is an eligible helper but not a definite\n      // helper, it is ambiguous, and will be resolved in a later\n      // pass or at runtime.\n    },\n\n    PartialNode: function(partialName, context, hash, strip, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type         = \"partial\";\n      this.partialName  = partialName;\n      this.context      = context;\n      this.hash = hash;\n      this.strip = strip;\n\n      this.strip.inlineStandalone = true;\n    },\n\n    BlockNode: function(mustache, program, inverse, strip, locInfo) {\n      LocationInfo.call(this, locInfo);\n\n      this.type = 'block';\n      this.mustache = mustache;\n      this.program  = program;\n      this.inverse  = inverse;\n      this.strip = strip;\n\n      if (inverse && !program) {\n        this.isInverse = true;\n      }\n    },\n\n    RawBlockNode: function(mustache, content, close, locInfo) {\n      LocationInfo.call(this, locInfo);\n\n      if (mustache.sexpr.id.original !== close) {\n        throw new Exception(mustache.sexpr.id.original + \" doesn't match \" + close, this);\n      }\n\n      content = new AST.ContentNode(content, locInfo);\n\n      this.type = 'block';\n      this.mustache = mustache;\n      this.program = new AST.ProgramNode([content], {}, locInfo);\n    },\n\n    ContentNode: function(string, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"content\";\n      this.original = this.string = string;\n    },\n\n    HashNode: function(pairs, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"hash\";\n      this.pairs = pairs;\n    },\n\n    IdNode: function(parts, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"ID\";\n\n      var original = \"\",\n          dig = [],\n          depth = 0,\n          depthString = '';\n\n      for(var i=0,l=parts.length; i<l; i++) {\n        var part = parts[i].part;\n        original += (parts[i].separator || '') + part;\n\n        if (part === \"..\" || part === \".\" || part === \"this\") {\n          if (dig.length > 0) {\n            throw new Exception(\"Invalid path: \" + original, this);\n          } else if (part === \"..\") {\n            depth++;\n            depthString += '../';\n          } else {\n            this.isScoped = true;\n          }\n        } else {\n          dig.push(part);\n        }\n      }\n\n      this.original = original;\n      this.parts    = dig;\n      this.string   = dig.join('.');\n      this.depth    = depth;\n      this.idName   = depthString + this.string;\n\n      // an ID is simple if it only has one part, and that part is not\n      // `..` or `this`.\n      this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;\n\n      this.stringModeValue = this.string;\n    },\n\n    PartialNameNode: function(name, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"PARTIAL_NAME\";\n      this.name = name.original;\n    },\n\n    DataNode: function(id, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"DATA\";\n      this.id = id;\n      this.stringModeValue = id.stringModeValue;\n      this.idName = '@' + id.stringModeValue;\n    },\n\n    StringNode: function(string, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"STRING\";\n      this.original =\n        this.string =\n        this.stringModeValue = string;\n    },\n\n    NumberNode: function(number, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"NUMBER\";\n      this.original =\n        this.number = number;\n      this.stringModeValue = Number(number);\n    },\n\n    BooleanNode: function(bool, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"BOOLEAN\";\n      this.bool = bool;\n      this.stringModeValue = bool === \"true\";\n    },\n\n    CommentNode: function(comment, locInfo) {\n      LocationInfo.call(this, locInfo);\n      this.type = \"comment\";\n      this.comment = comment;\n\n      this.strip = {\n        inlineStandalone: true\n      };\n    }\n  };\n\n\n  // Must be exported as an object rather than the root of the module as the jison lexer\n  // most modify the object to operate properly.\n  __exports__ = AST;\n  return __exports__;\n})(__module5__);\n\n// handlebars/compiler/parser.js\nvar __module9__ = (function() {\n  \"use strict\";\n  var __exports__;\n  /* jshint ignore:start */\n  /* istanbul ignore next */\n  /* Jison generated parser */\n  var handlebars = (function(){\n  var parser = {trace: function trace() { },\n  yy: {},\n  symbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"CONTENT\":12,\"COMMENT\":13,\"openRawBlock\":14,\"END_RAW_BLOCK\":15,\"OPEN_RAW_BLOCK\":16,\"sexpr\":17,\"CLOSE_RAW_BLOCK\":18,\"openBlock\":19,\"block_option0\":20,\"closeBlock\":21,\"openInverse\":22,\"block_option1\":23,\"OPEN_BLOCK\":24,\"CLOSE\":25,\"OPEN_INVERSE\":26,\"inverseAndProgram\":27,\"INVERSE\":28,\"OPEN_ENDBLOCK\":29,\"path\":30,\"OPEN\":31,\"OPEN_UNESCAPED\":32,\"CLOSE_UNESCAPED\":33,\"OPEN_PARTIAL\":34,\"partialName\":35,\"param\":36,\"partial_option0\":37,\"partial_option1\":38,\"sexpr_repetition0\":39,\"sexpr_option0\":40,\"dataName\":41,\"STRING\":42,\"NUMBER\":43,\"BOOLEAN\":44,\"OPEN_SEXPR\":45,\"CLOSE_SEXPR\":46,\"hash\":47,\"hash_repetition_plus0\":48,\"hashSegment\":49,\"ID\":50,\"EQUALS\":51,\"DATA\":52,\"pathSegments\":53,\"SEP\":54,\"$accept\":0,\"$end\":1},\n  terminals_: {2:\"error\",5:\"EOF\",12:\"CONTENT\",13:\"COMMENT\",15:\"END_RAW_BLOCK\",16:\"OPEN_RAW_BLOCK\",18:\"CLOSE_RAW_BLOCK\",24:\"OPEN_BLOCK\",25:\"CLOSE\",26:\"OPEN_INVERSE\",28:\"INVERSE\",29:\"OPEN_ENDBLOCK\",31:\"OPEN\",32:\"OPEN_UNESCAPED\",33:\"CLOSE_UNESCAPED\",34:\"OPEN_PARTIAL\",42:\"STRING\",43:\"NUMBER\",44:\"BOOLEAN\",45:\"OPEN_SEXPR\",46:\"CLOSE_SEXPR\",50:\"ID\",51:\"EQUALS\",52:\"DATA\",54:\"SEP\"},\n  productions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[10,3],[14,3],[9,4],[9,4],[19,3],[22,3],[27,2],[21,3],[8,3],[8,3],[11,5],[11,4],[17,3],[17,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,3],[47,1],[49,3],[35,1],[35,1],[35,1],[41,2],[30,1],[53,3],[53,1],[6,0],[6,2],[20,0],[20,1],[23,0],[23,1],[37,0],[37,1],[38,0],[38,1],[39,0],[39,2],[40,0],[40,1],[48,1],[48,2]],\n  performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {\n\n  var $0 = $$.length - 1;\n  switch (yystate) {\n  case 1: yy.prepareProgram($$[$0-1].statements, true); return $$[$0-1];\n  break;\n  case 2:this.$ = new yy.ProgramNode(yy.prepareProgram($$[$0]), {}, this._$);\n  break;\n  case 3:this.$ = $$[$0];\n  break;\n  case 4:this.$ = $$[$0];\n  break;\n  case 5:this.$ = $$[$0];\n  break;\n  case 6:this.$ = $$[$0];\n  break;\n  case 7:this.$ = new yy.ContentNode($$[$0], this._$);\n  break;\n  case 8:this.$ = new yy.CommentNode($$[$0], this._$);\n  break;\n  case 9:this.$ = new yy.RawBlockNode($$[$0-2], $$[$0-1], $$[$0], this._$);\n  break;\n  case 10:this.$ = new yy.MustacheNode($$[$0-1], null, '', '', this._$);\n  break;\n  case 11:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\n  break;\n  case 12:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\n  break;\n  case 13:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);\n  break;\n  case 14:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);\n  break;\n  case 15:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\n  break;\n  case 16:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\n  break;\n  case 17:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);\n  break;\n  case 18:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);\n  break;\n  case 19:this.$ = new yy.PartialNode($$[$0-3], $$[$0-2], $$[$0-1], yy.stripFlags($$[$0-4], $$[$0]), this._$);\n  break;\n  case 20:this.$ = new yy.PartialNode($$[$0-2], undefined, $$[$0-1], yy.stripFlags($$[$0-3], $$[$0]), this._$);\n  break;\n  case 21:this.$ = new yy.SexprNode([$$[$0-2]].concat($$[$0-1]), $$[$0], this._$);\n  break;\n  case 22:this.$ = new yy.SexprNode([$$[$0]], null, this._$);\n  break;\n  case 23:this.$ = $$[$0];\n  break;\n  case 24:this.$ = new yy.StringNode($$[$0], this._$);\n  break;\n  case 25:this.$ = new yy.NumberNode($$[$0], this._$);\n  break;\n  case 26:this.$ = new yy.BooleanNode($$[$0], this._$);\n  break;\n  case 27:this.$ = $$[$0];\n  break;\n  case 28:$$[$0-1].isHelper = true; this.$ = $$[$0-1];\n  break;\n  case 29:this.$ = new yy.HashNode($$[$0], this._$);\n  break;\n  case 30:this.$ = [$$[$0-2], $$[$0]];\n  break;\n  case 31:this.$ = new yy.PartialNameNode($$[$0], this._$);\n  break;\n  case 32:this.$ = new yy.PartialNameNode(new yy.StringNode($$[$0], this._$), this._$);\n  break;\n  case 33:this.$ = new yy.PartialNameNode(new yy.NumberNode($$[$0], this._$));\n  break;\n  case 34:this.$ = new yy.DataNode($$[$0], this._$);\n  break;\n  case 35:this.$ = new yy.IdNode($$[$0], this._$);\n  break;\n  case 36: $$[$0-2].push({part: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2];\n  break;\n  case 37:this.$ = [{part: $$[$0]}];\n  break;\n  case 38:this.$ = [];\n  break;\n  case 39:$$[$0-1].push($$[$0]);\n  break;\n  case 48:this.$ = [];\n  break;\n  case 49:$$[$0-1].push($$[$0]);\n  break;\n  case 52:this.$ = [$$[$0]];\n  break;\n  case 53:$$[$0-1].push($$[$0]);\n  break;\n  }\n  },\n  table: [{3:1,4:2,5:[2,38],6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],31:[2,38],32:[2,38],34:[2,38]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:[1,10],13:[1,11],14:16,16:[1,20],19:14,22:15,24:[1,18],26:[1,19],28:[2,2],29:[2,2],31:[1,12],32:[1,13],34:[1,17]},{1:[2,1]},{5:[2,39],12:[2,39],13:[2,39],16:[2,39],24:[2,39],26:[2,39],28:[2,39],29:[2,39],31:[2,39],32:[2,39],34:[2,39]},{5:[2,3],12:[2,3],13:[2,3],16:[2,3],24:[2,3],26:[2,3],28:[2,3],29:[2,3],31:[2,3],32:[2,3],34:[2,3]},{5:[2,4],12:[2,4],13:[2,4],16:[2,4],24:[2,4],26:[2,4],28:[2,4],29:[2,4],31:[2,4],32:[2,4],34:[2,4]},{5:[2,5],12:[2,5],13:[2,5],16:[2,5],24:[2,5],26:[2,5],28:[2,5],29:[2,5],31:[2,5],32:[2,5],34:[2,5]},{5:[2,6],12:[2,6],13:[2,6],16:[2,6],24:[2,6],26:[2,6],28:[2,6],29:[2,6],31:[2,6],32:[2,6],34:[2,6]},{5:[2,7],12:[2,7],13:[2,7],16:[2,7],24:[2,7],26:[2,7],28:[2,7],29:[2,7],31:[2,7],32:[2,7],34:[2,7]},{5:[2,8],12:[2,8],13:[2,8],16:[2,8],24:[2,8],26:[2,8],28:[2,8],29:[2,8],31:[2,8],32:[2,8],34:[2,8]},{17:21,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:27,30:22,41:23,50:[1,26],52:[1,25],53:24},{4:28,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{4:29,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{12:[1,30]},{30:32,35:31,42:[1,33],43:[1,34],50:[1,26],53:24},{17:35,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:36,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:37,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[1,38]},{18:[2,48],25:[2,48],33:[2,48],39:39,42:[2,48],43:[2,48],44:[2,48],45:[2,48],46:[2,48],50:[2,48],52:[2,48]},{18:[2,22],25:[2,22],33:[2,22],46:[2,22]},{18:[2,35],25:[2,35],33:[2,35],42:[2,35],43:[2,35],44:[2,35],45:[2,35],46:[2,35],50:[2,35],52:[2,35],54:[1,40]},{30:41,50:[1,26],53:24},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],52:[2,37],54:[2,37]},{33:[1,42]},{20:43,27:44,28:[1,45],29:[2,40]},{23:46,27:47,28:[1,45],29:[2,42]},{15:[1,48]},{25:[2,46],30:51,36:49,38:50,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],47:57,48:58,49:60,50:[1,59],52:[1,25],53:24},{25:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],50:[2,31],52:[2,31]},{25:[2,32],42:[2,32],43:[2,32],44:[2,32],45:[2,32],50:[2,32],52:[2,32]},{25:[2,33],42:[2,33],43:[2,33],44:[2,33],45:[2,33],50:[2,33],52:[2,33]},{25:[1,61]},{25:[1,62]},{18:[1,63]},{5:[2,17],12:[2,17],13:[2,17],16:[2,17],24:[2,17],26:[2,17],28:[2,17],29:[2,17],31:[2,17],32:[2,17],34:[2,17]},{18:[2,50],25:[2,50],30:51,33:[2,50],36:65,40:64,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],46:[2,50],47:66,48:58,49:60,50:[1,59],52:[1,25],53:24},{50:[1,67]},{18:[2,34],25:[2,34],33:[2,34],42:[2,34],43:[2,34],44:[2,34],45:[2,34],46:[2,34],50:[2,34],52:[2,34]},{5:[2,18],12:[2,18],13:[2,18],16:[2,18],24:[2,18],26:[2,18],28:[2,18],29:[2,18],31:[2,18],32:[2,18],34:[2,18]},{21:68,29:[1,69]},{29:[2,41]},{4:70,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{21:71,29:[1,69]},{29:[2,43]},{5:[2,9],12:[2,9],13:[2,9],16:[2,9],24:[2,9],26:[2,9],28:[2,9],29:[2,9],31:[2,9],32:[2,9],34:[2,9]},{25:[2,44],37:72,47:73,48:58,49:60,50:[1,74]},{25:[1,75]},{18:[2,23],25:[2,23],33:[2,23],42:[2,23],43:[2,23],44:[2,23],45:[2,23],46:[2,23],50:[2,23],52:[2,23]},{18:[2,24],25:[2,24],33:[2,24],42:[2,24],43:[2,24],44:[2,24],45:[2,24],46:[2,24],50:[2,24],52:[2,24]},{18:[2,25],25:[2,25],33:[2,25],42:[2,25],43:[2,25],44:[2,25],45:[2,25],46:[2,25],50:[2,25],52:[2,25]},{18:[2,26],25:[2,26],33:[2,26],42:[2,26],43:[2,26],44:[2,26],45:[2,26],46:[2,26],50:[2,26],52:[2,26]},{18:[2,27],25:[2,27],33:[2,27],42:[2,27],43:[2,27],44:[2,27],45:[2,27],46:[2,27],50:[2,27],52:[2,27]},{17:76,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[2,47]},{18:[2,29],25:[2,29],33:[2,29],46:[2,29],49:77,50:[1,74]},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],51:[1,78],52:[2,37],54:[2,37]},{18:[2,52],25:[2,52],33:[2,52],46:[2,52],50:[2,52]},{12:[2,13],13:[2,13],16:[2,13],24:[2,13],26:[2,13],28:[2,13],29:[2,13],31:[2,13],32:[2,13],34:[2,13]},{12:[2,14],13:[2,14],16:[2,14],24:[2,14],26:[2,14],28:[2,14],29:[2,14],31:[2,14],32:[2,14],34:[2,14]},{12:[2,10]},{18:[2,21],25:[2,21],33:[2,21],46:[2,21]},{18:[2,49],25:[2,49],33:[2,49],42:[2,49],43:[2,49],44:[2,49],45:[2,49],46:[2,49],50:[2,49],52:[2,49]},{18:[2,51],25:[2,51],33:[2,51],46:[2,51]},{18:[2,36],25:[2,36],33:[2,36],42:[2,36],43:[2,36],44:[2,36],45:[2,36],46:[2,36],50:[2,36],52:[2,36],54:[2,36]},{5:[2,11],12:[2,11],13:[2,11],16:[2,11],24:[2,11],26:[2,11],28:[2,11],29:[2,11],31:[2,11],32:[2,11],34:[2,11]},{30:79,50:[1,26],53:24},{29:[2,15]},{5:[2,12],12:[2,12],13:[2,12],16:[2,12],24:[2,12],26:[2,12],28:[2,12],29:[2,12],31:[2,12],32:[2,12],34:[2,12]},{25:[1,80]},{25:[2,45]},{51:[1,78]},{5:[2,20],12:[2,20],13:[2,20],16:[2,20],24:[2,20],26:[2,20],28:[2,20],29:[2,20],31:[2,20],32:[2,20],34:[2,20]},{46:[1,81]},{18:[2,53],25:[2,53],33:[2,53],46:[2,53],50:[2,53]},{30:51,36:82,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],50:[1,26],52:[1,25],53:24},{25:[1,83]},{5:[2,19],12:[2,19],13:[2,19],16:[2,19],24:[2,19],26:[2,19],28:[2,19],29:[2,19],31:[2,19],32:[2,19],34:[2,19]},{18:[2,28],25:[2,28],33:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],50:[2,28],52:[2,28]},{18:[2,30],25:[2,30],33:[2,30],46:[2,30],50:[2,30]},{5:[2,16],12:[2,16],13:[2,16],16:[2,16],24:[2,16],26:[2,16],28:[2,16],29:[2,16],31:[2,16],32:[2,16],34:[2,16]}],\n  defaultActions: {4:[2,1],44:[2,41],47:[2,43],57:[2,47],63:[2,10],70:[2,15],73:[2,45]},\n  parseError: function parseError(str, hash) {\n      throw new Error(str);\n  },\n  parse: function parse(input) {\n      var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n      this.lexer.setInput(input);\n      this.lexer.yy = this.yy;\n      this.yy.lexer = this.lexer;\n      this.yy.parser = this;\n      if (typeof this.lexer.yylloc == \"undefined\")\n          this.lexer.yylloc = {};\n      var yyloc = this.lexer.yylloc;\n      lstack.push(yyloc);\n      var ranges = this.lexer.options && this.lexer.options.ranges;\n      if (typeof this.yy.parseError === \"function\")\n          this.parseError = this.yy.parseError;\n      function popStack(n) {\n          stack.length = stack.length - 2 * n;\n          vstack.length = vstack.length - n;\n          lstack.length = lstack.length - n;\n      }\n      function lex() {\n          var token;\n          token = self.lexer.lex() || 1;\n          if (typeof token !== \"number\") {\n              token = self.symbols_[token] || token;\n          }\n          return token;\n      }\n      var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n      while (true) {\n          state = stack[stack.length - 1];\n          if (this.defaultActions[state]) {\n              action = this.defaultActions[state];\n          } else {\n              if (symbol === null || typeof symbol == \"undefined\") {\n                  symbol = lex();\n              }\n              action = table[state] && table[state][symbol];\n          }\n          if (typeof action === \"undefined\" || !action.length || !action[0]) {\n              var errStr = \"\";\n              if (!recovering) {\n                  expected = [];\n                  for (p in table[state])\n                      if (this.terminals_[p] && p > 2) {\n                          expected.push(\"'\" + this.terminals_[p] + \"'\");\n                      }\n                  if (this.lexer.showPosition) {\n                      errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n                  } else {\n                      errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n                  }\n                  this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n              }\n          }\n          if (action[0] instanceof Array && action.length > 1) {\n              throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n          }\n          switch (action[0]) {\n          case 1:\n              stack.push(symbol);\n              vstack.push(this.lexer.yytext);\n              lstack.push(this.lexer.yylloc);\n              stack.push(action[1]);\n              symbol = null;\n              if (!preErrorSymbol) {\n                  yyleng = this.lexer.yyleng;\n                  yytext = this.lexer.yytext;\n                  yylineno = this.lexer.yylineno;\n                  yyloc = this.lexer.yylloc;\n                  if (recovering > 0)\n                      recovering--;\n              } else {\n                  symbol = preErrorSymbol;\n                  preErrorSymbol = null;\n              }\n              break;\n          case 2:\n              len = this.productions_[action[1]][1];\n              yyval.$ = vstack[vstack.length - len];\n              yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n              if (ranges) {\n                  yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n              }\n              r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n              if (typeof r !== \"undefined\") {\n                  return r;\n              }\n              if (len) {\n                  stack = stack.slice(0, -1 * len * 2);\n                  vstack = vstack.slice(0, -1 * len);\n                  lstack = lstack.slice(0, -1 * len);\n              }\n              stack.push(this.productions_[action[1]][0]);\n              vstack.push(yyval.$);\n              lstack.push(yyval._$);\n              newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n              stack.push(newState);\n              break;\n          case 3:\n              return true;\n          }\n      }\n      return true;\n  }\n  };\n  /* Jison generated lexer */\n  var lexer = (function(){\n  var lexer = ({EOF:1,\n  parseError:function parseError(str, hash) {\n          if (this.yy.parser) {\n              this.yy.parser.parseError(str, hash);\n          } else {\n              throw new Error(str);\n          }\n      },\n  setInput:function (input) {\n          this._input = input;\n          this._more = this._less = this.done = false;\n          this.yylineno = this.yyleng = 0;\n          this.yytext = this.matched = this.match = '';\n          this.conditionStack = ['INITIAL'];\n          this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n          if (this.options.ranges) this.yylloc.range = [0,0];\n          this.offset = 0;\n          return this;\n      },\n  input:function () {\n          var ch = this._input[0];\n          this.yytext += ch;\n          this.yyleng++;\n          this.offset++;\n          this.match += ch;\n          this.matched += ch;\n          var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n          if (lines) {\n              this.yylineno++;\n              this.yylloc.last_line++;\n          } else {\n              this.yylloc.last_column++;\n          }\n          if (this.options.ranges) this.yylloc.range[1]++;\n\n          this._input = this._input.slice(1);\n          return ch;\n      },\n  unput:function (ch) {\n          var len = ch.length;\n          var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n          this._input = ch + this._input;\n          this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n          //this.yyleng -= len;\n          this.offset -= len;\n          var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n          this.match = this.match.substr(0, this.match.length-1);\n          this.matched = this.matched.substr(0, this.matched.length-1);\n\n          if (lines.length-1) this.yylineno -= lines.length-1;\n          var r = this.yylloc.range;\n\n          this.yylloc = {first_line: this.yylloc.first_line,\n            last_line: this.yylineno+1,\n            first_column: this.yylloc.first_column,\n            last_column: lines ?\n                (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n                this.yylloc.first_column - len\n            };\n\n          if (this.options.ranges) {\n              this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n          }\n          return this;\n      },\n  more:function () {\n          this._more = true;\n          return this;\n      },\n  less:function (n) {\n          this.unput(this.match.slice(n));\n      },\n  pastInput:function () {\n          var past = this.matched.substr(0, this.matched.length - this.match.length);\n          return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n      },\n  upcomingInput:function () {\n          var next = this.match;\n          if (next.length < 20) {\n              next += this._input.substr(0, 20-next.length);\n          }\n          return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n      },\n  showPosition:function () {\n          var pre = this.pastInput();\n          var c = new Array(pre.length + 1).join(\"-\");\n          return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n      },\n  next:function () {\n          if (this.done) {\n              return this.EOF;\n          }\n          if (!this._input) this.done = true;\n\n          var token,\n              match,\n              tempMatch,\n              index,\n              col,\n              lines;\n          if (!this._more) {\n              this.yytext = '';\n              this.match = '';\n          }\n          var rules = this._currentRules();\n          for (var i=0;i < rules.length; i++) {\n              tempMatch = this._input.match(this.rules[rules[i]]);\n              if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n                  match = tempMatch;\n                  index = i;\n                  if (!this.options.flex) break;\n              }\n          }\n          if (match) {\n              lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n              if (lines) this.yylineno += lines.length;\n              this.yylloc = {first_line: this.yylloc.last_line,\n                             last_line: this.yylineno+1,\n                             first_column: this.yylloc.last_column,\n                             last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n              this.yytext += match[0];\n              this.match += match[0];\n              this.matches = match;\n              this.yyleng = this.yytext.length;\n              if (this.options.ranges) {\n                  this.yylloc.range = [this.offset, this.offset += this.yyleng];\n              }\n              this._more = false;\n              this._input = this._input.slice(match[0].length);\n              this.matched += match[0];\n              token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n              if (this.done && this._input) this.done = false;\n              if (token) return token;\n              else return;\n          }\n          if (this._input === \"\") {\n              return this.EOF;\n          } else {\n              return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n                      {text: \"\", token: null, line: this.yylineno});\n          }\n      },\n  lex:function lex() {\n          var r = this.next();\n          if (typeof r !== 'undefined') {\n              return r;\n          } else {\n              return this.lex();\n          }\n      },\n  begin:function begin(condition) {\n          this.conditionStack.push(condition);\n      },\n  popState:function popState() {\n          return this.conditionStack.pop();\n      },\n  _currentRules:function _currentRules() {\n          return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n      },\n  topState:function () {\n          return this.conditionStack[this.conditionStack.length-2];\n      },\n  pushState:function begin(condition) {\n          this.begin(condition);\n      }});\n  lexer.options = {};\n  lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\n\n  function strip(start, end) {\n    return yy_.yytext = yy_.yytext.substr(start, yy_.yyleng-end);\n  }\n\n\n  var YYSTATE=YY_START\n  switch($avoiding_name_collisions) {\n  case 0:\n                                     if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n                                       strip(0,1);\n                                       this.begin(\"mu\");\n                                     } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n                                       strip(0,1);\n                                       this.begin(\"emu\");\n                                     } else {\n                                       this.begin(\"mu\");\n                                     }\n                                     if(yy_.yytext) return 12;\n\n  break;\n  case 1:return 12;\n  break;\n  case 2:\n                                     this.popState();\n                                     return 12;\n\n  break;\n  case 3:\n                                    yy_.yytext = yy_.yytext.substr(5, yy_.yyleng-9);\n                                    this.popState();\n                                    return 15;\n\n  break;\n  case 4: return 12;\n  break;\n  case 5:strip(0,4); this.popState(); return 13;\n  break;\n  case 6:return 45;\n  break;\n  case 7:return 46;\n  break;\n  case 8: return 16;\n  break;\n  case 9:\n                                    this.popState();\n                                    this.begin('raw');\n                                    return 18;\n\n  break;\n  case 10:return 34;\n  break;\n  case 11:return 24;\n  break;\n  case 12:return 29;\n  break;\n  case 13:this.popState(); return 28;\n  break;\n  case 14:this.popState(); return 28;\n  break;\n  case 15:return 26;\n  break;\n  case 16:return 26;\n  break;\n  case 17:return 32;\n  break;\n  case 18:return 31;\n  break;\n  case 19:this.popState(); this.begin('com');\n  break;\n  case 20:strip(3,5); this.popState(); return 13;\n  break;\n  case 21:return 31;\n  break;\n  case 22:return 51;\n  break;\n  case 23:return 50;\n  break;\n  case 24:return 50;\n  break;\n  case 25:return 54;\n  break;\n  case 26:// ignore whitespace\n  break;\n  case 27:this.popState(); return 33;\n  break;\n  case 28:this.popState(); return 25;\n  break;\n  case 29:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 42;\n  break;\n  case 30:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 42;\n  break;\n  case 31:return 52;\n  break;\n  case 32:return 44;\n  break;\n  case 33:return 44;\n  break;\n  case 34:return 43;\n  break;\n  case 35:return 50;\n  break;\n  case 36:yy_.yytext = strip(1,2); return 50;\n  break;\n  case 37:return 'INVALID';\n  break;\n  case 38:return 5;\n  break;\n  }\n  };\n  lexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]*?(?=(\\{\\{\\{\\{\\/)))/,/^(?:[\\s\\S]*?--\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{!--)/,/^(?:\\{\\{![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)]))))/,/^(?:\\[[^\\]]*\\])/,/^(?:.)/,/^(?:$)/];\n  lexer.conditions = {\"mu\":{\"rules\":[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[5],\"inclusive\":false},\"raw\":{\"rules\":[3,4],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,38],\"inclusive\":true}};\n  return lexer;})()\n  parser.lexer = lexer;\n  function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\n  return new Parser;\n  })();__exports__ = handlebars;\n  /* jshint ignore:end */\n  return __exports__;\n})();\n\n// handlebars/compiler/helpers.js\nvar __module10__ = (function(__dependency1__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Exception = __dependency1__;\n\n  function stripFlags(open, close) {\n    return {\n      left: open.charAt(2) === '~',\n      right: close.charAt(close.length-3) === '~'\n    };\n  }\n\n  __exports__.stripFlags = stripFlags;\n  function prepareBlock(mustache, program, inverseAndProgram, close, inverted, locInfo) {\n    /*jshint -W040 */\n    if (mustache.sexpr.id.original !== close.path.original) {\n      throw new Exception(mustache.sexpr.id.original + ' doesn\\'t match ' + close.path.original, mustache);\n    }\n\n    var inverse = inverseAndProgram && inverseAndProgram.program;\n\n    var strip = {\n      left: mustache.strip.left,\n      right: close.strip.right,\n\n      // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n      // so our parent can determine if we actually are standalone\n      openStandalone: isNextWhitespace(program.statements),\n      closeStandalone: isPrevWhitespace((inverse || program).statements)\n    };\n\n    if (mustache.strip.right) {\n      omitRight(program.statements, null, true);\n    }\n\n    if (inverse) {\n      var inverseStrip = inverseAndProgram.strip;\n\n      if (inverseStrip.left) {\n        omitLeft(program.statements, null, true);\n      }\n      if (inverseStrip.right) {\n        omitRight(inverse.statements, null, true);\n      }\n      if (close.strip.left) {\n        omitLeft(inverse.statements, null, true);\n      }\n\n      // Find standalone else statments\n      if (isPrevWhitespace(program.statements)\n          && isNextWhitespace(inverse.statements)) {\n\n        omitLeft(program.statements);\n        omitRight(inverse.statements);\n      }\n    } else {\n      if (close.strip.left) {\n        omitLeft(program.statements, null, true);\n      }\n    }\n\n    if (inverted) {\n      return new this.BlockNode(mustache, inverse, program, strip, locInfo);\n    } else {\n      return new this.BlockNode(mustache, program, inverse, strip, locInfo);\n    }\n  }\n\n  __exports__.prepareBlock = prepareBlock;\n  function prepareProgram(statements, isRoot) {\n    for (var i = 0, l = statements.length; i < l; i++) {\n      var current = statements[i],\n          strip = current.strip;\n\n      if (!strip) {\n        continue;\n      }\n\n      var _isPrevWhitespace = isPrevWhitespace(statements, i, isRoot, current.type === 'partial'),\n          _isNextWhitespace = isNextWhitespace(statements, i, isRoot),\n\n          openStandalone = strip.openStandalone && _isPrevWhitespace,\n          closeStandalone = strip.closeStandalone && _isNextWhitespace,\n          inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n      if (strip.right) {\n        omitRight(statements, i, true);\n      }\n      if (strip.left) {\n        omitLeft(statements, i, true);\n      }\n\n      if (inlineStandalone) {\n        omitRight(statements, i);\n\n        if (omitLeft(statements, i)) {\n          // If we are on a standalone node, save the indent info for partials\n          if (current.type === 'partial') {\n            current.indent = (/([ \\t]+$)/).exec(statements[i-1].original) ? RegExp.$1 : '';\n          }\n        }\n      }\n      if (openStandalone) {\n        omitRight((current.program || current.inverse).statements);\n\n        // Strip out the previous content node if it's whitespace only\n        omitLeft(statements, i);\n      }\n      if (closeStandalone) {\n        // Always strip the next node\n        omitRight(statements, i);\n\n        omitLeft((current.inverse || current.program).statements);\n      }\n    }\n\n    return statements;\n  }\n\n  __exports__.prepareProgram = prepareProgram;function isPrevWhitespace(statements, i, isRoot) {\n    if (i === undefined) {\n      i = statements.length;\n    }\n\n    // Nodes that end with newlines are considered whitespace (but are special\n    // cased for strip operations)\n    var prev = statements[i-1],\n        sibling = statements[i-2];\n    if (!prev) {\n      return isRoot;\n    }\n\n    if (prev.type === 'content') {\n      return (sibling || !isRoot ? (/\\r?\\n\\s*?$/) : (/(^|\\r?\\n)\\s*?$/)).test(prev.original);\n    }\n  }\n  function isNextWhitespace(statements, i, isRoot) {\n    if (i === undefined) {\n      i = -1;\n    }\n\n    var next = statements[i+1],\n        sibling = statements[i+2];\n    if (!next) {\n      return isRoot;\n    }\n\n    if (next.type === 'content') {\n      return (sibling || !isRoot ? (/^\\s*?\\r?\\n/) : (/^\\s*?(\\r?\\n|$)/)).test(next.original);\n    }\n  }\n\n  // Marks the node to the right of the position as omitted.\n  // I.e. {{foo}}' ' will mark the ' ' node as omitted.\n  //\n  // If i is undefined, then the first child will be marked as such.\n  //\n  // If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n  // content is met.\n  function omitRight(statements, i, multiple) {\n    var current = statements[i == null ? 0 : i + 1];\n    if (!current || current.type !== 'content' || (!multiple && current.rightStripped)) {\n      return;\n    }\n\n    var original = current.string;\n    current.string = current.string.replace(multiple ? (/^\\s+/) : (/^[ \\t]*\\r?\\n?/), '');\n    current.rightStripped = current.string !== original;\n  }\n\n  // Marks the node to the left of the position as omitted.\n  // I.e. ' '{{foo}} will mark the ' ' node as omitted.\n  //\n  // If i is undefined then the last child will be marked as such.\n  //\n  // If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n  // content is met.\n  function omitLeft(statements, i, multiple) {\n    var current = statements[i == null ? statements.length - 1 : i - 1];\n    if (!current || current.type !== 'content' || (!multiple && current.leftStripped)) {\n      return;\n    }\n\n    // We omit the last node if it's whitespace only and not preceeded by a non-content node.\n    var original = current.string;\n    current.string = current.string.replace(multiple ? (/\\s+$/) : (/[ \\t]+$/), '');\n    current.leftStripped = current.string !== original;\n    return current.leftStripped;\n  }\n  return __exports__;\n})(__module5__);\n\n// handlebars/compiler/base.js\nvar __module8__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__) {\n  \"use strict\";\n  var __exports__ = {};\n  var parser = __dependency1__;\n  var AST = __dependency2__;\n  var Helpers = __dependency3__;\n  var extend = __dependency4__.extend;\n\n  __exports__.parser = parser;\n\n  var yy = {};\n  extend(yy, Helpers, AST);\n\n  function parse(input) {\n    // Just return if an already-compile AST was passed in.\n    if (input.constructor === AST.ProgramNode) { return input; }\n\n    parser.yy = yy;\n\n    return parser.parse(input);\n  }\n\n  __exports__.parse = parse;\n  return __exports__;\n})(__module9__, __module7__, __module10__, __module3__);\n\n// handlebars/compiler/compiler.js\nvar __module11__ = (function(__dependency1__, __dependency2__) {\n  \"use strict\";\n  var __exports__ = {};\n  var Exception = __dependency1__;\n  var isArray = __dependency2__.isArray;\n\n  var slice = [].slice;\n\n  function Compiler() {}\n\n  __exports__.Compiler = Compiler;// the foundHelper register will disambiguate helper lookup from finding a\n  // function in a context. This is necessary for mustache compatibility, which\n  // requires that context functions in blocks are evaluated by blockHelperMissing,\n  // and then proceed as if the resulting value was provided to blockHelperMissing.\n\n  Compiler.prototype = {\n    compiler: Compiler,\n\n    equals: function(other) {\n      var len = this.opcodes.length;\n      if (other.opcodes.length !== len) {\n        return false;\n      }\n\n      for (var i = 0; i < len; i++) {\n        var opcode = this.opcodes[i],\n            otherOpcode = other.opcodes[i];\n        if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) {\n          return false;\n        }\n      }\n\n      // We know that length is the same between the two arrays because they are directly tied\n      // to the opcode behavior above.\n      len = this.children.length;\n      for (i = 0; i < len; i++) {\n        if (!this.children[i].equals(other.children[i])) {\n          return false;\n        }\n      }\n\n      return true;\n    },\n\n    guid: 0,\n\n    compile: function(program, options) {\n      this.opcodes = [];\n      this.children = [];\n      this.depths = {list: []};\n      this.options = options;\n      this.stringParams = options.stringParams;\n      this.trackIds = options.trackIds;\n\n      // These changes will propagate to the other compiler components\n      var knownHelpers = this.options.knownHelpers;\n      this.options.knownHelpers = {\n        'helperMissing': true,\n        'blockHelperMissing': true,\n        'each': true,\n        'if': true,\n        'unless': true,\n        'with': true,\n        'log': true,\n        'lookup': true\n      };\n      if (knownHelpers) {\n        for (var name in knownHelpers) {\n          this.options.knownHelpers[name] = knownHelpers[name];\n        }\n      }\n\n      return this.accept(program);\n    },\n\n    accept: function(node) {\n      return this[node.type](node);\n    },\n\n    program: function(program) {\n      var statements = program.statements;\n\n      for(var i=0, l=statements.length; i<l; i++) {\n        this.accept(statements[i]);\n      }\n      this.isSimple = l === 1;\n\n      this.depths.list = this.depths.list.sort(function(a, b) {\n        return a - b;\n      });\n\n      return this;\n    },\n\n    compileProgram: function(program) {\n      var result = new this.compiler().compile(program, this.options);\n      var guid = this.guid++, depth;\n\n      this.usePartial = this.usePartial || result.usePartial;\n\n      this.children[guid] = result;\n\n      for(var i=0, l=result.depths.list.length; i<l; i++) {\n        depth = result.depths.list[i];\n\n        if(depth < 2) { continue; }\n        else { this.addDepth(depth - 1); }\n      }\n\n      return guid;\n    },\n\n    block: function(block) {\n      var mustache = block.mustache,\n          program = block.program,\n          inverse = block.inverse;\n\n      if (program) {\n        program = this.compileProgram(program);\n      }\n\n      if (inverse) {\n        inverse = this.compileProgram(inverse);\n      }\n\n      var sexpr = mustache.sexpr;\n      var type = this.classifySexpr(sexpr);\n\n      if (type === \"helper\") {\n        this.helperSexpr(sexpr, program, inverse);\n      } else if (type === \"simple\") {\n        this.simpleSexpr(sexpr);\n\n        // now that the simple mustache is resolved, we need to\n        // evaluate it by executing `blockHelperMissing`\n        this.opcode('pushProgram', program);\n        this.opcode('pushProgram', inverse);\n        this.opcode('emptyHash');\n        this.opcode('blockValue', sexpr.id.original);\n      } else {\n        this.ambiguousSexpr(sexpr, program, inverse);\n\n        // now that the simple mustache is resolved, we need to\n        // evaluate it by executing `blockHelperMissing`\n        this.opcode('pushProgram', program);\n        this.opcode('pushProgram', inverse);\n        this.opcode('emptyHash');\n        this.opcode('ambiguousBlockValue');\n      }\n\n      this.opcode('append');\n    },\n\n    hash: function(hash) {\n      var pairs = hash.pairs, i, l;\n\n      this.opcode('pushHash');\n\n      for(i=0, l=pairs.length; i<l; i++) {\n        this.pushParam(pairs[i][1]);\n      }\n      while(i--) {\n        this.opcode('assignToHash', pairs[i][0]);\n      }\n      this.opcode('popHash');\n    },\n\n    partial: function(partial) {\n      var partialName = partial.partialName;\n      this.usePartial = true;\n\n      if (partial.hash) {\n        this.accept(partial.hash);\n      } else {\n        this.opcode('push', 'undefined');\n      }\n\n      if (partial.context) {\n        this.accept(partial.context);\n      } else {\n        this.opcode('getContext', 0);\n        this.opcode('pushContext');\n      }\n\n      this.opcode('invokePartial', partialName.name, partial.indent || '');\n      this.opcode('append');\n    },\n\n    content: function(content) {\n      if (content.string) {\n        this.opcode('appendContent', content.string);\n      }\n    },\n\n    mustache: function(mustache) {\n      this.sexpr(mustache.sexpr);\n\n      if(mustache.escaped && !this.options.noEscape) {\n        this.opcode('appendEscaped');\n      } else {\n        this.opcode('append');\n      }\n    },\n\n    ambiguousSexpr: function(sexpr, program, inverse) {\n      var id = sexpr.id,\n          name = id.parts[0],\n          isBlock = program != null || inverse != null;\n\n      this.opcode('getContext', id.depth);\n\n      this.opcode('pushProgram', program);\n      this.opcode('pushProgram', inverse);\n\n      this.ID(id);\n\n      this.opcode('invokeAmbiguous', name, isBlock);\n    },\n\n    simpleSexpr: function(sexpr) {\n      var id = sexpr.id;\n\n      if (id.type === 'DATA') {\n        this.DATA(id);\n      } else if (id.parts.length) {\n        this.ID(id);\n      } else {\n        // Simplified ID for `this`\n        this.addDepth(id.depth);\n        this.opcode('getContext', id.depth);\n        this.opcode('pushContext');\n      }\n\n      this.opcode('resolvePossibleLambda');\n    },\n\n    helperSexpr: function(sexpr, program, inverse) {\n      var params = this.setupFullMustacheParams(sexpr, program, inverse),\n          id = sexpr.id,\n          name = id.parts[0];\n\n      if (this.options.knownHelpers[name]) {\n        this.opcode('invokeKnownHelper', params.length, name);\n      } else if (this.options.knownHelpersOnly) {\n        throw new Exception(\"You specified knownHelpersOnly, but used the unknown helper \" + name, sexpr);\n      } else {\n        id.falsy = true;\n\n        this.ID(id);\n        this.opcode('invokeHelper', params.length, id.original, id.isSimple);\n      }\n    },\n\n    sexpr: function(sexpr) {\n      var type = this.classifySexpr(sexpr);\n\n      if (type === \"simple\") {\n        this.simpleSexpr(sexpr);\n      } else if (type === \"helper\") {\n        this.helperSexpr(sexpr);\n      } else {\n        this.ambiguousSexpr(sexpr);\n      }\n    },\n\n    ID: function(id) {\n      this.addDepth(id.depth);\n      this.opcode('getContext', id.depth);\n\n      var name = id.parts[0];\n      if (!name) {\n        // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n        this.opcode('pushContext');\n      } else {\n        this.opcode('lookupOnContext', id.parts, id.falsy, id.isScoped);\n      }\n    },\n\n    DATA: function(data) {\n      this.options.data = true;\n      this.opcode('lookupData', data.id.depth, data.id.parts);\n    },\n\n    STRING: function(string) {\n      this.opcode('pushString', string.string);\n    },\n\n    NUMBER: function(number) {\n      this.opcode('pushLiteral', number.number);\n    },\n\n    BOOLEAN: function(bool) {\n      this.opcode('pushLiteral', bool.bool);\n    },\n\n    comment: function() {},\n\n    // HELPERS\n    opcode: function(name) {\n      this.opcodes.push({ opcode: name, args: slice.call(arguments, 1) });\n    },\n\n    addDepth: function(depth) {\n      if(depth === 0) { return; }\n\n      if(!this.depths[depth]) {\n        this.depths[depth] = true;\n        this.depths.list.push(depth);\n      }\n    },\n\n    classifySexpr: function(sexpr) {\n      var isHelper   = sexpr.isHelper;\n      var isEligible = sexpr.eligibleHelper;\n      var options    = this.options;\n\n      // if ambiguous, we can possibly resolve the ambiguity now\n      // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n      if (isEligible && !isHelper) {\n        var name = sexpr.id.parts[0];\n\n        if (options.knownHelpers[name]) {\n          isHelper = true;\n        } else if (options.knownHelpersOnly) {\n          isEligible = false;\n        }\n      }\n\n      if (isHelper) { return \"helper\"; }\n      else if (isEligible) { return \"ambiguous\"; }\n      else { return \"simple\"; }\n    },\n\n    pushParams: function(params) {\n      for(var i=0, l=params.length; i<l; i++) {\n        this.pushParam(params[i]);\n      }\n    },\n\n    pushParam: function(val) {\n      if (this.stringParams) {\n        if(val.depth) {\n          this.addDepth(val.depth);\n        }\n        this.opcode('getContext', val.depth || 0);\n        this.opcode('pushStringParam', val.stringModeValue, val.type);\n\n        if (val.type === 'sexpr') {\n          // Subexpressions get evaluated and passed in\n          // in string params mode.\n          this.sexpr(val);\n        }\n      } else {\n        if (this.trackIds) {\n          this.opcode('pushId', val.type, val.idName || val.stringModeValue);\n        }\n        this.accept(val);\n      }\n    },\n\n    setupFullMustacheParams: function(sexpr, program, inverse) {\n      var params = sexpr.params;\n      this.pushParams(params);\n\n      this.opcode('pushProgram', program);\n      this.opcode('pushProgram', inverse);\n\n      if (sexpr.hash) {\n        this.hash(sexpr.hash);\n      } else {\n        this.opcode('emptyHash');\n      }\n\n      return params;\n    }\n  };\n\n  function precompile(input, options, env) {\n    if (input == null || (typeof input !== 'string' && input.constructor !== env.AST.ProgramNode)) {\n      throw new Exception(\"You must pass a string or Handlebars AST to Handlebars.precompile. You passed \" + input);\n    }\n\n    options = options || {};\n    if (!('data' in options)) {\n      options.data = true;\n    }\n    if (options.compat) {\n      options.useDepths = true;\n    }\n\n    var ast = env.parse(input);\n    var environment = new env.Compiler().compile(ast, options);\n    return new env.JavaScriptCompiler().compile(environment, options);\n  }\n\n  __exports__.precompile = precompile;function compile(input, options, env) {\n    if (input == null || (typeof input !== 'string' && input.constructor !== env.AST.ProgramNode)) {\n      throw new Exception(\"You must pass a string or Handlebars AST to Handlebars.compile. You passed \" + input);\n    }\n\n    options = options || {};\n\n    if (!('data' in options)) {\n      options.data = true;\n    }\n    if (options.compat) {\n      options.useDepths = true;\n    }\n\n    var compiled;\n\n    function compileInput() {\n      var ast = env.parse(input);\n      var environment = new env.Compiler().compile(ast, options);\n      var templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);\n      return env.template(templateSpec);\n    }\n\n    // Template is only compiled on first use and cached after that point.\n    var ret = function(context, options) {\n      if (!compiled) {\n        compiled = compileInput();\n      }\n      return compiled.call(this, context, options);\n    };\n    ret._setup = function(options) {\n      if (!compiled) {\n        compiled = compileInput();\n      }\n      return compiled._setup(options);\n    };\n    ret._child = function(i, data, depths) {\n      if (!compiled) {\n        compiled = compileInput();\n      }\n      return compiled._child(i, data, depths);\n    };\n    return ret;\n  }\n\n  __exports__.compile = compile;function argEquals(a, b) {\n    if (a === b) {\n      return true;\n    }\n\n    if (isArray(a) && isArray(b) && a.length === b.length) {\n      for (var i = 0; i < a.length; i++) {\n        if (!argEquals(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n  return __exports__;\n})(__module5__, __module3__);\n\n// handlebars/compiler/javascript-compiler.js\nvar __module12__ = (function(__dependency1__, __dependency2__) {\n  \"use strict\";\n  var __exports__;\n  var COMPILER_REVISION = __dependency1__.COMPILER_REVISION;\n  var REVISION_CHANGES = __dependency1__.REVISION_CHANGES;\n  var Exception = __dependency2__;\n\n  function Literal(value) {\n    this.value = value;\n  }\n\n  function JavaScriptCompiler() {}\n\n  JavaScriptCompiler.prototype = {\n    // PUBLIC API: You can override these methods in a subclass to provide\n    // alternative compiled forms for name lookup and buffering semantics\n    nameLookup: function(parent, name /* , type*/) {\n      if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {\n        return parent + \".\" + name;\n      } else {\n        return parent + \"['\" + name + \"']\";\n      }\n    },\n    depthedLookup: function(name) {\n      this.aliases.lookup = 'this.lookup';\n\n      return 'lookup(depths, \"' + name + '\")';\n    },\n\n    compilerInfo: function() {\n      var revision = COMPILER_REVISION,\n          versions = REVISION_CHANGES[revision];\n      return [revision, versions];\n    },\n\n    appendToBuffer: function(string) {\n      if (this.environment.isSimple) {\n        return \"return \" + string + \";\";\n      } else {\n        return {\n          appendToBuffer: true,\n          content: string,\n          toString: function() { return \"buffer += \" + string + \";\"; }\n        };\n      }\n    },\n\n    initializeBuffer: function() {\n      return this.quotedString(\"\");\n    },\n\n    namespace: \"Handlebars\",\n    // END PUBLIC API\n\n    compile: function(environment, options, context, asObject) {\n      this.environment = environment;\n      this.options = options;\n      this.stringParams = this.options.stringParams;\n      this.trackIds = this.options.trackIds;\n      this.precompile = !asObject;\n\n      this.name = this.environment.name;\n      this.isChild = !!context;\n      this.context = context || {\n        programs: [],\n        environments: []\n      };\n\n      this.preamble();\n\n      this.stackSlot = 0;\n      this.stackVars = [];\n      this.aliases = {};\n      this.registers = { list: [] };\n      this.hashes = [];\n      this.compileStack = [];\n      this.inlineStack = [];\n\n      this.compileChildren(environment, options);\n\n      this.useDepths = this.useDepths || environment.depths.list.length || this.options.compat;\n\n      var opcodes = environment.opcodes,\n          opcode,\n          i,\n          l;\n\n      for (i = 0, l = opcodes.length; i < l; i++) {\n        opcode = opcodes[i];\n\n        this[opcode.opcode].apply(this, opcode.args);\n      }\n\n      // Flush any trailing content that might be pending.\n      this.pushSource('');\n\n      /* istanbul ignore next */\n      if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n        throw new Exception('Compile completed with content left on stack');\n      }\n\n      var fn = this.createFunctionContext(asObject);\n      if (!this.isChild) {\n        var ret = {\n          compiler: this.compilerInfo(),\n          main: fn\n        };\n        var programs = this.context.programs;\n        for (i = 0, l = programs.length; i < l; i++) {\n          if (programs[i]) {\n            ret[i] = programs[i];\n          }\n        }\n\n        if (this.environment.usePartial) {\n          ret.usePartial = true;\n        }\n        if (this.options.data) {\n          ret.useData = true;\n        }\n        if (this.useDepths) {\n          ret.useDepths = true;\n        }\n        if (this.options.compat) {\n          ret.compat = true;\n        }\n\n        if (!asObject) {\n          ret.compiler = JSON.stringify(ret.compiler);\n          ret = this.objectLiteral(ret);\n        }\n\n        return ret;\n      } else {\n        return fn;\n      }\n    },\n\n    preamble: function() {\n      // track the last context pushed into place to allow skipping the\n      // getContext opcode when it would be a noop\n      this.lastContext = 0;\n      this.source = [];\n    },\n\n    createFunctionContext: function(asObject) {\n      var varDeclarations = '';\n\n      var locals = this.stackVars.concat(this.registers.list);\n      if(locals.length > 0) {\n        varDeclarations += \", \" + locals.join(\", \");\n      }\n\n      // Generate minimizer alias mappings\n      for (var alias in this.aliases) {\n        if (this.aliases.hasOwnProperty(alias)) {\n          varDeclarations += ', ' + alias + '=' + this.aliases[alias];\n        }\n      }\n\n      var params = [\"depth0\", \"helpers\", \"partials\", \"data\"];\n\n      if (this.useDepths) {\n        params.push('depths');\n      }\n\n      // Perform a second pass over the output to merge content when possible\n      var source = this.mergeSource(varDeclarations);\n\n      if (asObject) {\n        params.push(source);\n\n        return Function.apply(this, params);\n      } else {\n        return 'function(' + params.join(',') + ') {\\n  ' + source + '}';\n      }\n    },\n    mergeSource: function(varDeclarations) {\n      var source = '',\n          buffer,\n          appendOnly = !this.forceBuffer,\n          appendFirst;\n\n      for (var i = 0, len = this.source.length; i < len; i++) {\n        var line = this.source[i];\n        if (line.appendToBuffer) {\n          if (buffer) {\n            buffer = buffer + '\\n    + ' + line.content;\n          } else {\n            buffer = line.content;\n          }\n        } else {\n          if (buffer) {\n            if (!source) {\n              appendFirst = true;\n              source = buffer + ';\\n  ';\n            } else {\n              source += 'buffer += ' + buffer + ';\\n  ';\n            }\n            buffer = undefined;\n          }\n          source += line + '\\n  ';\n\n          if (!this.environment.isSimple) {\n            appendOnly = false;\n          }\n        }\n      }\n\n      if (appendOnly) {\n        if (buffer || !source) {\n          source += 'return ' + (buffer || '\"\"') + ';\\n';\n        }\n      } else {\n        varDeclarations += \", buffer = \" + (appendFirst ? '' : this.initializeBuffer());\n        if (buffer) {\n          source += 'return buffer + ' + buffer + ';\\n';\n        } else {\n          source += 'return buffer;\\n';\n        }\n      }\n\n      if (varDeclarations) {\n        source = 'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n  ') + source;\n      }\n\n      return source;\n    },\n\n    // [blockValue]\n    //\n    // On stack, before: hash, inverse, program, value\n    // On stack, after: return value of blockHelperMissing\n    //\n    // The purpose of this opcode is to take a block of the form\n    // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n    // replace it on the stack with the result of properly\n    // invoking blockHelperMissing.\n    blockValue: function(name) {\n      this.aliases.blockHelperMissing = 'helpers.blockHelperMissing';\n\n      var params = [this.contextName(0)];\n      this.setupParams(name, 0, params);\n\n      var blockName = this.popStack();\n      params.splice(1, 0, blockName);\n\n      this.push('blockHelperMissing.call(' + params.join(', ') + ')');\n    },\n\n    // [ambiguousBlockValue]\n    //\n    // On stack, before: hash, inverse, program, value\n    // Compiler value, before: lastHelper=value of last found helper, if any\n    // On stack, after, if no lastHelper: same as [blockValue]\n    // On stack, after, if lastHelper: value\n    ambiguousBlockValue: function() {\n      this.aliases.blockHelperMissing = 'helpers.blockHelperMissing';\n\n      // We're being a bit cheeky and reusing the options value from the prior exec\n      var params = [this.contextName(0)];\n      this.setupParams('', 0, params, true);\n\n      this.flushInline();\n\n      var current = this.topStack();\n      params.splice(1, 0, current);\n\n      this.pushSource(\"if (!\" + this.lastHelper + \") { \" + current + \" = blockHelperMissing.call(\" + params.join(\", \") + \"); }\");\n    },\n\n    // [appendContent]\n    //\n    // On stack, before: ...\n    // On stack, after: ...\n    //\n    // Appends the string value of `content` to the current buffer\n    appendContent: function(content) {\n      if (this.pendingContent) {\n        content = this.pendingContent + content;\n      }\n\n      this.pendingContent = content;\n    },\n\n    // [append]\n    //\n    // On stack, before: value, ...\n    // On stack, after: ...\n    //\n    // Coerces `value` to a String and appends it to the current buffer.\n    //\n    // If `value` is truthy, or 0, it is coerced into a string and appended\n    // Otherwise, the empty string is appended\n    append: function() {\n      // Force anything that is inlined onto the stack so we don't have duplication\n      // when we examine local\n      this.flushInline();\n      var local = this.popStack();\n      this.pushSource('if (' + local + ' != null) { ' + this.appendToBuffer(local) + ' }');\n      if (this.environment.isSimple) {\n        this.pushSource(\"else { \" + this.appendToBuffer(\"''\") + \" }\");\n      }\n    },\n\n    // [appendEscaped]\n    //\n    // On stack, before: value, ...\n    // On stack, after: ...\n    //\n    // Escape `value` and append it to the buffer\n    appendEscaped: function() {\n      this.aliases.escapeExpression = 'this.escapeExpression';\n\n      this.pushSource(this.appendToBuffer(\"escapeExpression(\" + this.popStack() + \")\"));\n    },\n\n    // [getContext]\n    //\n    // On stack, before: ...\n    // On stack, after: ...\n    // Compiler value, after: lastContext=depth\n    //\n    // Set the value of the `lastContext` compiler value to the depth\n    getContext: function(depth) {\n      this.lastContext = depth;\n    },\n\n    // [pushContext]\n    //\n    // On stack, before: ...\n    // On stack, after: currentContext, ...\n    //\n    // Pushes the value of the current context onto the stack.\n    pushContext: function() {\n      this.pushStackLiteral(this.contextName(this.lastContext));\n    },\n\n    // [lookupOnContext]\n    //\n    // On stack, before: ...\n    // On stack, after: currentContext[name], ...\n    //\n    // Looks up the value of `name` on the current context and pushes\n    // it onto the stack.\n    lookupOnContext: function(parts, falsy, scoped) {\n      /*jshint -W083 */\n      var i = 0,\n          len = parts.length;\n\n      if (!scoped && this.options.compat && !this.lastContext) {\n        // The depthed query is expected to handle the undefined logic for the root level that\n        // is implemented below, so we evaluate that directly in compat mode\n        this.push(this.depthedLookup(parts[i++]));\n      } else {\n        this.pushContext();\n      }\n\n      for (; i < len; i++) {\n        this.replaceStack(function(current) {\n          var lookup = this.nameLookup(current, parts[i], 'context');\n          // We want to ensure that zero and false are handled properly if the context (falsy flag)\n          // needs to have the special handling for these values.\n          if (!falsy) {\n            return ' != null ? ' + lookup + ' : ' + current;\n          } else {\n            // Otherwise we can use generic falsy handling\n            return ' && ' + lookup;\n          }\n        });\n      }\n    },\n\n    // [lookupData]\n    //\n    // On stack, before: ...\n    // On stack, after: data, ...\n    //\n    // Push the data lookup operator\n    lookupData: function(depth, parts) {\n      /*jshint -W083 */\n      if (!depth) {\n        this.pushStackLiteral('data');\n      } else {\n        this.pushStackLiteral('this.data(data, ' + depth + ')');\n      }\n\n      var len = parts.length;\n      for (var i = 0; i < len; i++) {\n        this.replaceStack(function(current) {\n          return ' && ' + this.nameLookup(current, parts[i], 'data');\n        });\n      }\n    },\n\n    // [resolvePossibleLambda]\n    //\n    // On stack, before: value, ...\n    // On stack, after: resolved value, ...\n    //\n    // If the `value` is a lambda, replace it on the stack by\n    // the return value of the lambda\n    resolvePossibleLambda: function() {\n      this.aliases.lambda = 'this.lambda';\n\n      this.push('lambda(' + this.popStack() + ', ' + this.contextName(0) + ')');\n    },\n\n    // [pushStringParam]\n    //\n    // On stack, before: ...\n    // On stack, after: string, currentContext, ...\n    //\n    // This opcode is designed for use in string mode, which\n    // provides the string value of a parameter along with its\n    // depth rather than resolving it immediately.\n    pushStringParam: function(string, type) {\n      this.pushContext();\n      this.pushString(type);\n\n      // If it's a subexpression, the string result\n      // will be pushed after this opcode.\n      if (type !== 'sexpr') {\n        if (typeof string === 'string') {\n          this.pushString(string);\n        } else {\n          this.pushStackLiteral(string);\n        }\n      }\n    },\n\n    emptyHash: function() {\n      this.pushStackLiteral('{}');\n\n      if (this.trackIds) {\n        this.push('{}'); // hashIds\n      }\n      if (this.stringParams) {\n        this.push('{}'); // hashContexts\n        this.push('{}'); // hashTypes\n      }\n    },\n    pushHash: function() {\n      if (this.hash) {\n        this.hashes.push(this.hash);\n      }\n      this.hash = {values: [], types: [], contexts: [], ids: []};\n    },\n    popHash: function() {\n      var hash = this.hash;\n      this.hash = this.hashes.pop();\n\n      if (this.trackIds) {\n        this.push('{' + hash.ids.join(',') + '}');\n      }\n      if (this.stringParams) {\n        this.push('{' + hash.contexts.join(',') + '}');\n        this.push('{' + hash.types.join(',') + '}');\n      }\n\n      this.push('{\\n    ' + hash.values.join(',\\n    ') + '\\n  }');\n    },\n\n    // [pushString]\n    //\n    // On stack, before: ...\n    // On stack, after: quotedString(string), ...\n    //\n    // Push a quoted version of `string` onto the stack\n    pushString: function(string) {\n      this.pushStackLiteral(this.quotedString(string));\n    },\n\n    // [push]\n    //\n    // On stack, before: ...\n    // On stack, after: expr, ...\n    //\n    // Push an expression onto the stack\n    push: function(expr) {\n      this.inlineStack.push(expr);\n      return expr;\n    },\n\n    // [pushLiteral]\n    //\n    // On stack, before: ...\n    // On stack, after: value, ...\n    //\n    // Pushes a value onto the stack. This operation prevents\n    // the compiler from creating a temporary variable to hold\n    // it.\n    pushLiteral: function(value) {\n      this.pushStackLiteral(value);\n    },\n\n    // [pushProgram]\n    //\n    // On stack, before: ...\n    // On stack, after: program(guid), ...\n    //\n    // Push a program expression onto the stack. This takes\n    // a compile-time guid and converts it into a runtime-accessible\n    // expression.\n    pushProgram: function(guid) {\n      if (guid != null) {\n        this.pushStackLiteral(this.programExpression(guid));\n      } else {\n        this.pushStackLiteral(null);\n      }\n    },\n\n    // [invokeHelper]\n    //\n    // On stack, before: hash, inverse, program, params..., ...\n    // On stack, after: result of helper invocation\n    //\n    // Pops off the helper's parameters, invokes the helper,\n    // and pushes the helper's return value onto the stack.\n    //\n    // If the helper is not found, `helperMissing` is called.\n    invokeHelper: function(paramSize, name, isSimple) {\n      this.aliases.helperMissing = 'helpers.helperMissing';\n\n      var nonHelper = this.popStack();\n      var helper = this.setupHelper(paramSize, name);\n\n      var lookup = (isSimple ? helper.name + ' || ' : '') + nonHelper + ' || helperMissing';\n      this.push('((' + lookup + ').call(' + helper.callParams + '))');\n    },\n\n    // [invokeKnownHelper]\n    //\n    // On stack, before: hash, inverse, program, params..., ...\n    // On stack, after: result of helper invocation\n    //\n    // This operation is used when the helper is known to exist,\n    // so a `helperMissing` fallback is not required.\n    invokeKnownHelper: function(paramSize, name) {\n      var helper = this.setupHelper(paramSize, name);\n      this.push(helper.name + \".call(\" + helper.callParams + \")\");\n    },\n\n    // [invokeAmbiguous]\n    //\n    // On stack, before: hash, inverse, program, params..., ...\n    // On stack, after: result of disambiguation\n    //\n    // This operation is used when an expression like `{{foo}}`\n    // is provided, but we don't know at compile-time whether it\n    // is a helper or a path.\n    //\n    // This operation emits more code than the other options,\n    // and can be avoided by passing the `knownHelpers` and\n    // `knownHelpersOnly` flags at compile-time.\n    invokeAmbiguous: function(name, helperCall) {\n      this.aliases.functionType = '\"function\"';\n      this.aliases.helperMissing = 'helpers.helperMissing';\n      this.useRegister('helper');\n\n      var nonHelper = this.popStack();\n\n      this.emptyHash();\n      var helper = this.setupHelper(0, name, helperCall);\n\n      var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');\n\n      this.push(\n        '((helper = (helper = ' + helperName + ' || ' + nonHelper + ') != null ? helper : helperMissing'\n          + (helper.paramsInit ? '),(' + helper.paramsInit : '') + '),'\n        + '(typeof helper === functionType ? helper.call(' + helper.callParams + ') : helper))');\n    },\n\n    // [invokePartial]\n    //\n    // On stack, before: context, ...\n    // On stack after: result of partial invocation\n    //\n    // This operation pops off a context, invokes a partial with that context,\n    // and pushes the result of the invocation back.\n    invokePartial: function(name, indent) {\n      var params = [this.nameLookup('partials', name, 'partial'), \"'\" + indent + \"'\", \"'\" + name + \"'\", this.popStack(), this.popStack(), \"helpers\", \"partials\"];\n\n      if (this.options.data) {\n        params.push(\"data\");\n      } else if (this.options.compat) {\n        params.push('undefined');\n      }\n      if (this.options.compat) {\n        params.push('depths');\n      }\n\n      this.push(\"this.invokePartial(\" + params.join(\", \") + \")\");\n    },\n\n    // [assignToHash]\n    //\n    // On stack, before: value, ..., hash, ...\n    // On stack, after: ..., hash, ...\n    //\n    // Pops a value off the stack and assigns it to the current hash\n    assignToHash: function(key) {\n      var value = this.popStack(),\n          context,\n          type,\n          id;\n\n      if (this.trackIds) {\n        id = this.popStack();\n      }\n      if (this.stringParams) {\n        type = this.popStack();\n        context = this.popStack();\n      }\n\n      var hash = this.hash;\n      if (context) {\n        hash.contexts.push(\"'\" + key + \"': \" + context);\n      }\n      if (type) {\n        hash.types.push(\"'\" + key + \"': \" + type);\n      }\n      if (id) {\n        hash.ids.push(\"'\" + key + \"': \" + id);\n      }\n      hash.values.push(\"'\" + key + \"': (\" + value + \")\");\n    },\n\n    pushId: function(type, name) {\n      if (type === 'ID' || type === 'DATA') {\n        this.pushString(name);\n      } else if (type === 'sexpr') {\n        this.pushStackLiteral('true');\n      } else {\n        this.pushStackLiteral('null');\n      }\n    },\n\n    // HELPERS\n\n    compiler: JavaScriptCompiler,\n\n    compileChildren: function(environment, options) {\n      var children = environment.children, child, compiler;\n\n      for(var i=0, l=children.length; i<l; i++) {\n        child = children[i];\n        compiler = new this.compiler();\n\n        var index = this.matchExistingProgram(child);\n\n        if (index == null) {\n          this.context.programs.push('');     // Placeholder to prevent name conflicts for nested children\n          index = this.context.programs.length;\n          child.index = index;\n          child.name = 'program' + index;\n          this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);\n          this.context.environments[index] = child;\n\n          this.useDepths = this.useDepths || compiler.useDepths;\n        } else {\n          child.index = index;\n          child.name = 'program' + index;\n        }\n      }\n    },\n    matchExistingProgram: function(child) {\n      for (var i = 0, len = this.context.environments.length; i < len; i++) {\n        var environment = this.context.environments[i];\n        if (environment && environment.equals(child)) {\n          return i;\n        }\n      }\n    },\n\n    programExpression: function(guid) {\n      var child = this.environment.children[guid],\n          depths = child.depths.list,\n          useDepths = this.useDepths,\n          depth;\n\n      var programParams = [child.index, 'data'];\n\n      if (useDepths) {\n        programParams.push('depths');\n      }\n\n      return 'this.program(' + programParams.join(', ') + ')';\n    },\n\n    useRegister: function(name) {\n      if(!this.registers[name]) {\n        this.registers[name] = true;\n        this.registers.list.push(name);\n      }\n    },\n\n    pushStackLiteral: function(item) {\n      return this.push(new Literal(item));\n    },\n\n    pushSource: function(source) {\n      if (this.pendingContent) {\n        this.source.push(this.appendToBuffer(this.quotedString(this.pendingContent)));\n        this.pendingContent = undefined;\n      }\n\n      if (source) {\n        this.source.push(source);\n      }\n    },\n\n    pushStack: function(item) {\n      this.flushInline();\n\n      var stack = this.incrStack();\n      this.pushSource(stack + \" = \" + item + \";\");\n      this.compileStack.push(stack);\n      return stack;\n    },\n\n    replaceStack: function(callback) {\n      var prefix = '',\n          inline = this.isInline(),\n          stack,\n          createdStack,\n          usedLiteral;\n\n      /* istanbul ignore next */\n      if (!this.isInline()) {\n        throw new Exception('replaceStack on non-inline');\n      }\n\n      // We want to merge the inline statement into the replacement statement via ','\n      var top = this.popStack(true);\n\n      if (top instanceof Literal) {\n        // Literals do not need to be inlined\n        prefix = stack = top.value;\n        usedLiteral = true;\n      } else {\n        // Get or create the current stack name for use by the inline\n        createdStack = !this.stackSlot;\n        var name = !createdStack ? this.topStackName() : this.incrStack();\n\n        prefix = '(' + this.push(name) + ' = ' + top + ')';\n        stack = this.topStack();\n      }\n\n      var item = callback.call(this, stack);\n\n      if (!usedLiteral) {\n        this.popStack();\n      }\n      if (createdStack) {\n        this.stackSlot--;\n      }\n      this.push('(' + prefix + item + ')');\n    },\n\n    incrStack: function() {\n      this.stackSlot++;\n      if(this.stackSlot > this.stackVars.length) { this.stackVars.push(\"stack\" + this.stackSlot); }\n      return this.topStackName();\n    },\n    topStackName: function() {\n      return \"stack\" + this.stackSlot;\n    },\n    flushInline: function() {\n      var inlineStack = this.inlineStack;\n      if (inlineStack.length) {\n        this.inlineStack = [];\n        for (var i = 0, len = inlineStack.length; i < len; i++) {\n          var entry = inlineStack[i];\n          if (entry instanceof Literal) {\n            this.compileStack.push(entry);\n          } else {\n            this.pushStack(entry);\n          }\n        }\n      }\n    },\n    isInline: function() {\n      return this.inlineStack.length;\n    },\n\n    popStack: function(wrapped) {\n      var inline = this.isInline(),\n          item = (inline ? this.inlineStack : this.compileStack).pop();\n\n      if (!wrapped && (item instanceof Literal)) {\n        return item.value;\n      } else {\n        if (!inline) {\n          /* istanbul ignore next */\n          if (!this.stackSlot) {\n            throw new Exception('Invalid stack pop');\n          }\n          this.stackSlot--;\n        }\n        return item;\n      }\n    },\n\n    topStack: function() {\n      var stack = (this.isInline() ? this.inlineStack : this.compileStack),\n          item = stack[stack.length - 1];\n\n      if (item instanceof Literal) {\n        return item.value;\n      } else {\n        return item;\n      }\n    },\n\n    contextName: function(context) {\n      if (this.useDepths && context) {\n        return 'depths[' + context + ']';\n      } else {\n        return 'depth' + context;\n      }\n    },\n\n    quotedString: function(str) {\n      return '\"' + str\n        .replace(/\\\\/g, '\\\\\\\\')\n        .replace(/\"/g, '\\\\\"')\n        .replace(/\\n/g, '\\\\n')\n        .replace(/\\r/g, '\\\\r')\n        .replace(/\\u2028/g, '\\\\u2028')   // Per Ecma-262 7.3 + 7.8.4\n        .replace(/\\u2029/g, '\\\\u2029') + '\"';\n    },\n\n    objectLiteral: function(obj) {\n      var pairs = [];\n\n      for (var key in obj) {\n        if (obj.hasOwnProperty(key)) {\n          pairs.push(this.quotedString(key) + ':' + obj[key]);\n        }\n      }\n\n      return '{' + pairs.join(',') + '}';\n    },\n\n    setupHelper: function(paramSize, name, blockHelper) {\n      var params = [],\n          paramsInit = this.setupParams(name, paramSize, params, blockHelper);\n      var foundHelper = this.nameLookup('helpers', name, 'helper');\n\n      return {\n        params: params,\n        paramsInit: paramsInit,\n        name: foundHelper,\n        callParams: [this.contextName(0)].concat(params).join(\", \")\n      };\n    },\n\n    setupOptions: function(helper, paramSize, params) {\n      var options = {}, contexts = [], types = [], ids = [], param, inverse, program;\n\n      options.name = this.quotedString(helper);\n      options.hash = this.popStack();\n\n      if (this.trackIds) {\n        options.hashIds = this.popStack();\n      }\n      if (this.stringParams) {\n        options.hashTypes = this.popStack();\n        options.hashContexts = this.popStack();\n      }\n\n      inverse = this.popStack();\n      program = this.popStack();\n\n      // Avoid setting fn and inverse if neither are set. This allows\n      // helpers to do a check for `if (options.fn)`\n      if (program || inverse) {\n        if (!program) {\n          program = 'this.noop';\n        }\n\n        if (!inverse) {\n          inverse = 'this.noop';\n        }\n\n        options.fn = program;\n        options.inverse = inverse;\n      }\n\n      // The parameters go on to the stack in order (making sure that they are evaluated in order)\n      // so we need to pop them off the stack in reverse order\n      var i = paramSize;\n      while (i--) {\n        param = this.popStack();\n        params[i] = param;\n\n        if (this.trackIds) {\n          ids[i] = this.popStack();\n        }\n        if (this.stringParams) {\n          types[i] = this.popStack();\n          contexts[i] = this.popStack();\n        }\n      }\n\n      if (this.trackIds) {\n        options.ids = \"[\" + ids.join(\",\") + \"]\";\n      }\n      if (this.stringParams) {\n        options.types = \"[\" + types.join(\",\") + \"]\";\n        options.contexts = \"[\" + contexts.join(\",\") + \"]\";\n      }\n\n      if (this.options.data) {\n        options.data = \"data\";\n      }\n\n      return options;\n    },\n\n    // the params and contexts arguments are passed in arrays\n    // to fill in\n    setupParams: function(helperName, paramSize, params, useRegister) {\n      var options = this.objectLiteral(this.setupOptions(helperName, paramSize, params));\n\n      if (useRegister) {\n        this.useRegister('options');\n        params.push('options');\n        return 'options=' + options;\n      } else {\n        params.push(options);\n        return '';\n      }\n    }\n  };\n\n  var reservedWords = (\n    \"break else new var\" +\n    \" case finally return void\" +\n    \" catch for switch while\" +\n    \" continue function this with\" +\n    \" default if throw\" +\n    \" delete in try\" +\n    \" do instanceof typeof\" +\n    \" abstract enum int short\" +\n    \" boolean export interface static\" +\n    \" byte extends long super\" +\n    \" char final native synchronized\" +\n    \" class float package throws\" +\n    \" const goto private transient\" +\n    \" debugger implements protected volatile\" +\n    \" double import public let yield\"\n  ).split(\" \");\n\n  var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};\n\n  for(var i=0, l=reservedWords.length; i<l; i++) {\n    compilerWords[reservedWords[i]] = true;\n  }\n\n  JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n    return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);\n  };\n\n  __exports__ = JavaScriptCompiler;\n  return __exports__;\n})(__module2__, __module5__);\n\n// handlebars.js\nvar __module0__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {\n  \"use strict\";\n  var __exports__;\n  /*globals Handlebars: true */\n  var Handlebars = __dependency1__;\n\n  // Compiler imports\n  var AST = __dependency2__;\n  var Parser = __dependency3__.parser;\n  var parse = __dependency3__.parse;\n  var Compiler = __dependency4__.Compiler;\n  var compile = __dependency4__.compile;\n  var precompile = __dependency4__.precompile;\n  var JavaScriptCompiler = __dependency5__;\n\n  var _create = Handlebars.create;\n  var create = function() {\n    var hb = _create();\n\n    hb.compile = function(input, options) {\n      return compile(input, options, hb);\n    };\n    hb.precompile = function (input, options) {\n      return precompile(input, options, hb);\n    };\n\n    hb.AST = AST;\n    hb.Compiler = Compiler;\n    hb.JavaScriptCompiler = JavaScriptCompiler;\n    hb.Parser = Parser;\n    hb.parse = parse;\n\n    return hb;\n  };\n\n  Handlebars = create();\n  Handlebars.create = create;\n\n  Handlebars['default'] = Handlebars;\n\n  __exports__ = Handlebars;\n  return __exports__;\n})(__module1__, __module7__, __module8__, __module11__, __module12__);\n\n  return __module0__;\n}));\n\n","//>>excludeStart('excludeAfterBuild', pragmas.excludeAfterBuild)\n\n//     Underscore.js 1.3.3\n//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.\n//     Underscore is freely distributable under the MIT license.\n//     Portions of Underscore are inspired or borrowed from Prototype,\n//     Oliver Steele's Functional, and John Resig's Micro-Templating.\n//     For all details and documentation:\n//     http://documentcloud.github.com/underscore\n\ndefine('hbs/underscore',[],function() {\n\n  // Baseline setup\n  // --------------\n\n  // Establish the object that gets returned to break out of a loop iteration.\n  var breaker = {};\n\n  // Save bytes in the minified (but not gzipped) version:\n  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;\n\n  // Create quick reference variables for speed access to core prototypes.\n  var slice            = ArrayProto.slice,\n      unshift          = ArrayProto.unshift,\n      toString         = ObjProto.toString,\n      hasOwnProperty   = ObjProto.hasOwnProperty;\n\n  // All **ECMAScript 5** native function implementations that we hope to use\n  // are declared here.\n  var\n    nativeForEach      = ArrayProto.forEach,\n    nativeMap          = ArrayProto.map,\n    nativeReduce       = ArrayProto.reduce,\n    nativeReduceRight  = ArrayProto.reduceRight,\n    nativeFilter       = ArrayProto.filter,\n    nativeEvery        = ArrayProto.every,\n    nativeSome         = ArrayProto.some,\n    nativeIndexOf      = ArrayProto.indexOf,\n    nativeLastIndexOf  = ArrayProto.lastIndexOf,\n    nativeIsArray      = Array.isArray,\n    nativeKeys         = Object.keys,\n    nativeBind         = FuncProto.bind;\n\n  // Create a safe reference to the Underscore object for use below.\n  var _ = function(obj) { return new wrapper(obj); };\n\n  // Current version.\n  _.VERSION = '1.3.3';\n\n  // Collection Functions\n  // --------------------\n\n  // The cornerstone, an `each` implementation, aka `forEach`.\n  // Handles objects with the built-in `forEach`, arrays, and raw objects.\n  // Delegates to **ECMAScript 5**'s native `forEach` if available.\n  var each = _.each = _.forEach = function(obj, iterator, context) {\n    if (obj == null) return;\n    if (nativeForEach && obj.forEach === nativeForEach) {\n      obj.forEach(iterator, context);\n    } else if (obj.length === +obj.length) {\n      for (var i = 0, l = obj.length; i < l; i++) {\n        if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;\n      }\n    } else {\n      for (var key in obj) {\n        if (_.has(obj, key)) {\n          if (iterator.call(context, obj[key], key, obj) === breaker) return;\n        }\n      }\n    }\n  };\n\n  // Return the results of applying the iterator to each element.\n  // Delegates to **ECMAScript 5**'s native `map` if available.\n  _.map = _.collect = function(obj, iterator, context) {\n    var results = [];\n    if (obj == null) return results;\n    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n    each(obj, function(value, index, list) {\n      results[results.length] = iterator.call(context, value, index, list);\n    });\n    if (obj.length === +obj.length) results.length = obj.length;\n    return results;\n  };\n\n  // **Reduce** builds up a single result from a list of values, aka `inject`,\n  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.\n  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {\n    var initial = arguments.length > 2;\n    if (obj == null) obj = [];\n    if (nativeReduce && obj.reduce === nativeReduce) {\n      if (context) iterator = _.bind(iterator, context);\n      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);\n    }\n    each(obj, function(value, index, list) {\n      if (!initial) {\n        memo = value;\n        initial = true;\n      } else {\n        memo = iterator.call(context, memo, value, index, list);\n      }\n    });\n    if (!initial) throw new TypeError('Reduce of empty array with no initial value');\n    return memo;\n  };\n\n  // The right-associative version of reduce, also known as `foldr`.\n  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.\n  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {\n    var initial = arguments.length > 2;\n    if (obj == null) obj = [];\n    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {\n      if (context) iterator = _.bind(iterator, context);\n      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);\n    }\n    var reversed = _.toArray(obj).reverse();\n    if (context && !initial) iterator = _.bind(iterator, context);\n    return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);\n  };\n\n  // Return the first value which passes a truth test. Aliased as `detect`.\n  _.find = _.detect = function(obj, iterator, context) {\n    var result;\n    any(obj, function(value, index, list) {\n      if (iterator.call(context, value, index, list)) {\n        result = value;\n        return true;\n      }\n    });\n    return result;\n  };\n\n  // Return all the elements that pass a truth test.\n  // Delegates to **ECMAScript 5**'s native `filter` if available.\n  // Aliased as `select`.\n  _.filter = _.select = function(obj, iterator, context) {\n    var results = [];\n    if (obj == null) return results;\n    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);\n    each(obj, function(value, index, list) {\n      if (iterator.call(context, value, index, list)) results[results.length] = value;\n    });\n    return results;\n  };\n\n  // Return all the elements for which a truth test fails.\n  _.reject = function(obj, iterator, context) {\n    var results = [];\n    if (obj == null) return results;\n    each(obj, function(value, index, list) {\n      if (!iterator.call(context, value, index, list)) results[results.length] = value;\n    });\n    return results;\n  };\n\n  // Determine whether all of the elements match a truth test.\n  // Delegates to **ECMAScript 5**'s native `every` if available.\n  // Aliased as `all`.\n  _.every = _.all = function(obj, iterator, context) {\n    var result = true;\n    if (obj == null) return result;\n    if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);\n    each(obj, function(value, index, list) {\n      if (!(result = result && iterator.call(context, value, index, list))) return breaker;\n    });\n    return !!result;\n  };\n\n  // Determine if at least one element in the object matches a truth test.\n  // Delegates to **ECMAScript 5**'s native `some` if available.\n  // Aliased as `any`.\n  var any = _.some = _.any = function(obj, iterator, context) {\n    iterator || (iterator = _.identity);\n    var result = false;\n    if (obj == null) return result;\n    if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);\n    each(obj, function(value, index, list) {\n      if (result || (result = iterator.call(context, value, index, list))) return breaker;\n    });\n    return !!result;\n  };\n\n  // Determine if a given value is included in the array or object using `===`.\n  // Aliased as `contains`.\n  _.include = _.contains = function(obj, target) {\n    var found = false;\n    if (obj == null) return found;\n    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;\n    found = any(obj, function(value) {\n      return value === target;\n    });\n    return found;\n  };\n\n  // Invoke a method (with arguments) on every item in a collection.\n  _.invoke = function(obj, method) {\n    var args = slice.call(arguments, 2);\n    return _.map(obj, function(value) {\n      return (_.isFunction(method) ? method || value : value[method]).apply(value, args);\n    });\n  };\n\n  // Convenience version of a common use case of `map`: fetching a property.\n  _.pluck = function(obj, key) {\n    return _.map(obj, function(value){ return value[key]; });\n  };\n\n  // Return the maximum element or (element-based computation).\n  _.max = function(obj, iterator, context) {\n    if (!iterator && _.isArray(obj) && obj[0] === +obj[0]) return Math.max.apply(Math, obj);\n    if (!iterator && _.isEmpty(obj)) return -Infinity;\n    var result = {computed : -Infinity};\n    each(obj, function(value, index, list) {\n      var computed = iterator ? iterator.call(context, value, index, list) : value;\n      computed >= result.computed && (result = {value : value, computed : computed});\n    });\n    return result.value;\n  };\n\n  // Return the minimum element (or element-based computation).\n  _.min = function(obj, iterator, context) {\n    if (!iterator && _.isArray(obj) && obj[0] === +obj[0]) return Math.min.apply(Math, obj);\n    if (!iterator && _.isEmpty(obj)) return Infinity;\n    var result = {computed : Infinity};\n    each(obj, function(value, index, list) {\n      var computed = iterator ? iterator.call(context, value, index, list) : value;\n      computed < result.computed && (result = {value : value, computed : computed});\n    });\n    return result.value;\n  };\n\n  // Shuffle an array.\n  _.shuffle = function(obj) {\n    var shuffled = [], rand;\n    each(obj, function(value, index, list) {\n      rand = Math.floor(Math.random() * (index + 1));\n      shuffled[index] = shuffled[rand];\n      shuffled[rand] = value;\n    });\n    return shuffled;\n  };\n\n  // Sort the object's values by a criterion produced by an iterator.\n  _.sortBy = function(obj, val, context) {\n    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };\n    return _.pluck(_.map(obj, function(value, index, list) {\n      return {\n        value : value,\n        criteria : iterator.call(context, value, index, list)\n      };\n    }).sort(function(left, right) {\n      var a = left.criteria, b = right.criteria;\n      if (a === void 0) return 1;\n      if (b === void 0) return -1;\n      return a < b ? -1 : a > b ? 1 : 0;\n    }), 'value');\n  };\n\n  // Groups the object's values by a criterion. Pass either a string attribute\n  // to group by, or a function that returns the criterion.\n  _.groupBy = function(obj, val) {\n    var result = {};\n    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };\n    each(obj, function(value, index) {\n      var key = iterator(value, index);\n      (result[key] || (result[key] = [])).push(value);\n    });\n    return result;\n  };\n\n  // Use a comparator function to figure out at what index an object should\n  // be inserted so as to maintain order. Uses binary search.\n  _.sortedIndex = function(array, obj, iterator) {\n    iterator || (iterator = _.identity);\n    var low = 0, high = array.length;\n    while (low < high) {\n      var mid = (low + high) >> 1;\n      iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;\n    }\n    return low;\n  };\n\n  // Safely convert anything iterable into a real, live array.\n  _.toArray = function(obj) {\n    if (!obj)                                     return [];\n    if (_.isArray(obj))                           return slice.call(obj);\n    if (_.isArguments(obj))                       return slice.call(obj);\n    if (obj.toArray && _.isFunction(obj.toArray)) return obj.toArray();\n    return _.values(obj);\n  };\n\n  // Return the number of elements in an object.\n  _.size = function(obj) {\n    return _.isArray(obj) ? obj.length : _.keys(obj).length;\n  };\n\n  // Array Functions\n  // ---------------\n\n  // Get the first element of an array. Passing **n** will return the first N\n  // values in the array. Aliased as `head` and `take`. The **guard** check\n  // allows it to work with `_.map`.\n  _.first = _.head = _.take = function(array, n, guard) {\n    return (n != null) && !guard ? slice.call(array, 0, n) : array[0];\n  };\n\n  // Returns everything but the last entry of the array. Especcialy useful on\n  // the arguments object. Passing **n** will return all the values in\n  // the array, excluding the last N. The **guard** check allows it to work with\n  // `_.map`.\n  _.initial = function(array, n, guard) {\n    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));\n  };\n\n  // Get the last element of an array. Passing **n** will return the last N\n  // values in the array. The **guard** check allows it to work with `_.map`.\n  _.last = function(array, n, guard) {\n    if ((n != null) && !guard) {\n      return slice.call(array, Math.max(array.length - n, 0));\n    } else {\n      return array[array.length - 1];\n    }\n  };\n\n  // Returns everything but the first entry of the array. Aliased as `tail`.\n  // Especially useful on the arguments object. Passing an **index** will return\n  // the rest of the values in the array from that index onward. The **guard**\n  // check allows it to work with `_.map`.\n  _.rest = _.tail = function(array, index, guard) {\n    return slice.call(array, (index == null) || guard ? 1 : index);\n  };\n\n  // Trim out all falsy values from an array.\n  _.compact = function(array) {\n    return _.filter(array, function(value){ return !!value; });\n  };\n\n  // Return a completely flattened version of an array.\n  _.flatten = function(array, shallow) {\n    return _.reduce(array, function(memo, value) {\n      if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));\n      memo[memo.length] = value;\n      return memo;\n    }, []);\n  };\n\n  // Return a version of the array that does not contain the specified value(s).\n  _.without = function(array) {\n    return _.difference(array, slice.call(arguments, 1));\n  };\n\n  // Produce a duplicate-free version of the array. If the array has already\n  // been sorted, you have the option of using a faster algorithm.\n  // Aliased as `unique`.\n  _.uniq = _.unique = function(array, isSorted, iterator) {\n    var initial = iterator ? _.map(array, iterator) : array;\n    var results = [];\n    // The `isSorted` flag is irrelevant if the array only contains two elements.\n    if (array.length < 3) isSorted = true;\n    _.reduce(initial, function (memo, value, index) {\n      if (isSorted ? _.last(memo) !== value || !memo.length : !_.include(memo, value)) {\n        memo.push(value);\n        results.push(array[index]);\n      }\n      return memo;\n    }, []);\n    return results;\n  };\n\n  // Produce an array that contains the union: each distinct element from all of\n  // the passed-in arrays.\n  _.union = function() {\n    return _.uniq(_.flatten(arguments, true));\n  };\n\n  // Produce an array that contains every item shared between all the\n  // passed-in arrays. (Aliased as \"intersect\" for back-compat.)\n  _.intersection = _.intersect = function(array) {\n    var rest = slice.call(arguments, 1);\n    return _.filter(_.uniq(array), function(item) {\n      return _.every(rest, function(other) {\n        return _.indexOf(other, item) >= 0;\n      });\n    });\n  };\n\n  // Take the difference between one array and a number of other arrays.\n  // Only the elements present in just the first array will remain.\n  _.difference = function(array) {\n    var rest = _.flatten(slice.call(arguments, 1), true);\n    return _.filter(array, function(value){ return !_.include(rest, value); });\n  };\n\n  // Zip together multiple lists into a single array -- elements that share\n  // an index go together.\n  _.zip = function() {\n    var args = slice.call(arguments);\n    var length = _.max(_.pluck(args, 'length'));\n    var results = new Array(length);\n    for (var i = 0; i < length; i++) results[i] = _.pluck(args, \"\" + i);\n    return results;\n  };\n\n  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),\n  // we need this function. Return the position of the first occurrence of an\n  // item in an array, or -1 if the item is not included in the array.\n  // Delegates to **ECMAScript 5**'s native `indexOf` if available.\n  // If the array is large and already in sort order, pass `true`\n  // for **isSorted** to use binary search.\n  _.indexOf = function(array, item, isSorted) {\n    if (array == null) return -1;\n    var i, l;\n    if (isSorted) {\n      i = _.sortedIndex(array, item);\n      return array[i] === item ? i : -1;\n    }\n    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);\n    for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;\n    return -1;\n  };\n\n  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.\n  _.lastIndexOf = function(array, item) {\n    if (array == null) return -1;\n    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);\n    var i = array.length;\n    while (i--) if (i in array && array[i] === item) return i;\n    return -1;\n  };\n\n  // Generate an integer Array containing an arithmetic progression. A port of\n  // the native Python `range()` function. See\n  // [the Python documentation](http://docs.python.org/library/functions.html#range).\n  _.range = function(start, stop, step) {\n    if (arguments.length <= 1) {\n      stop = start || 0;\n      start = 0;\n    }\n    step = arguments[2] || 1;\n\n    var len = Math.max(Math.ceil((stop - start) / step), 0);\n    var idx = 0;\n    var range = new Array(len);\n\n    while(idx < len) {\n      range[idx++] = start;\n      start += step;\n    }\n\n    return range;\n  };\n\n  // Function (ahem) Functions\n  // ------------------\n\n  // Reusable constructor function for prototype setting.\n  var ctor = function(){};\n\n  // Create a function bound to a given object (assigning `this`, and arguments,\n  // optionally). Binding with arguments is also known as `curry`.\n  // Delegates to **ECMAScript 5**'s native `Function.bind` if available.\n  // We check for `func.bind` first, to fail fast when `func` is undefined.\n  _.bind = function bind(func, context) {\n    var bound, args;\n    if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));\n    if (!_.isFunction(func)) throw new TypeError;\n    args = slice.call(arguments, 2);\n    return bound = function() {\n      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));\n      ctor.prototype = func.prototype;\n      var self = new ctor;\n      var result = func.apply(self, args.concat(slice.call(arguments)));\n      if (Object(result) === result) return result;\n      return self;\n    };\n  };\n\n  // Bind all of an object's methods to that object. Useful for ensuring that\n  // all callbacks defined on an object belong to it.\n  _.bindAll = function(obj) {\n    var funcs = slice.call(arguments, 1);\n    if (funcs.length == 0) funcs = _.functions(obj);\n    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });\n    return obj;\n  };\n\n  // Memoize an expensive function by storing its results.\n  _.memoize = function(func, hasher) {\n    var memo = {};\n    hasher || (hasher = _.identity);\n    return function() {\n      var key = hasher.apply(this, arguments);\n      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));\n    };\n  };\n\n  // Delays a function for the given number of milliseconds, and then calls\n  // it with the arguments supplied.\n  _.delay = function(func, wait) {\n    var args = slice.call(arguments, 2);\n    return setTimeout(function(){ return func.apply(null, args); }, wait);\n  };\n\n  // Defers a function, scheduling it to run after the current call stack has\n  // cleared.\n  _.defer = function(func) {\n    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));\n  };\n\n  // Returns a function, that, when invoked, will only be triggered at most once\n  // during a given window of time.\n  _.throttle = function(func, wait) {\n    var context, args, timeout, throttling, more, result;\n    var whenDone = _.debounce(function(){ more = throttling = false; }, wait);\n    return function() {\n      context = this; args = arguments;\n      var later = function() {\n        timeout = null;\n        if (more) func.apply(context, args);\n        whenDone();\n      };\n      if (!timeout) timeout = setTimeout(later, wait);\n      if (throttling) {\n        more = true;\n      } else {\n        result = func.apply(context, args);\n      }\n      whenDone();\n      throttling = true;\n      return result;\n    };\n  };\n\n  // Returns a function, that, as long as it continues to be invoked, will not\n  // be triggered. The function will be called after it stops being called for\n  // N milliseconds. If `immediate` is passed, trigger the function on the\n  // leading edge, instead of the trailing.\n  _.debounce = function(func, wait, immediate) {\n    var timeout;\n    return function() {\n      var context = this, args = arguments;\n      var later = function() {\n        timeout = null;\n        if (!immediate) func.apply(context, args);\n      };\n      if (immediate && !timeout) func.apply(context, args);\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n    };\n  };\n\n  // Returns a function that will be executed at most one time, no matter how\n  // often you call it. Useful for lazy initialization.\n  _.once = function(func) {\n    var ran = false, memo;\n    return function() {\n      if (ran) return memo;\n      ran = true;\n      return memo = func.apply(this, arguments);\n    };\n  };\n\n  // Returns the first function passed as an argument to the second,\n  // allowing you to adjust arguments, run code before and after, and\n  // conditionally execute the original function.\n  _.wrap = function(func, wrapper) {\n    return function() {\n      var args = [func].concat(slice.call(arguments, 0));\n      return wrapper.apply(this, args);\n    };\n  };\n\n  // Returns a function that is the composition of a list of functions, each\n  // consuming the return value of the function that follows.\n  _.compose = function() {\n    var funcs = arguments;\n    return function() {\n      var args = arguments;\n      for (var i = funcs.length - 1; i >= 0; i--) {\n        args = [funcs[i].apply(this, args)];\n      }\n      return args[0];\n    };\n  };\n\n  // Returns a function that will only be executed after being called N times.\n  _.after = function(times, func) {\n    if (times <= 0) return func();\n    return function() {\n      if (--times < 1) { return func.apply(this, arguments); }\n    };\n  };\n\n  // Object Functions\n  // ----------------\n\n  // Retrieve the names of an object's properties.\n  // Delegates to **ECMAScript 5**'s native `Object.keys`\n  _.keys = nativeKeys || function(obj) {\n    if (obj !== Object(obj)) throw new TypeError('Invalid object');\n    var keys = [];\n    for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;\n    return keys;\n  };\n\n  // Retrieve the values of an object's properties.\n  _.values = function(obj) {\n    return _.map(obj, _.identity);\n  };\n\n  // Return a sorted list of the function names available on the object.\n  // Aliased as `methods`\n  _.functions = _.methods = function(obj) {\n    var names = [];\n    for (var key in obj) {\n      if (_.isFunction(obj[key])) names.push(key);\n    }\n    return names.sort();\n  };\n\n  // Extend a given object with all the properties in passed-in object(s).\n  _.extend = function(obj) {\n    each(slice.call(arguments, 1), function(source) {\n      for (var prop in source) {\n        obj[prop] = source[prop];\n      }\n    });\n    return obj;\n  };\n\n  // Return a copy of the object only containing the whitelisted properties.\n  _.pick = function(obj) {\n    var result = {};\n    each(_.flatten(slice.call(arguments, 1)), function(key) {\n      if (key in obj) result[key] = obj[key];\n    });\n    return result;\n  };\n\n  // Fill in a given object with default properties.\n  _.defaults = function(obj) {\n    each(slice.call(arguments, 1), function(source) {\n      for (var prop in source) {\n        if (obj[prop] == null) obj[prop] = source[prop];\n      }\n    });\n    return obj;\n  };\n\n  // Create a (shallow-cloned) duplicate of an object.\n  _.clone = function(obj) {\n    if (!_.isObject(obj)) return obj;\n    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n  };\n\n  // Invokes interceptor with the obj, and then returns obj.\n  // The primary purpose of this method is to \"tap into\" a method chain, in\n  // order to perform operations on intermediate results within the chain.\n  _.tap = function(obj, interceptor) {\n    interceptor(obj);\n    return obj;\n  };\n\n  // Internal recursive comparison function.\n  function eq(a, b, stack) {\n    // Identical objects are equal. `0 === -0`, but they aren't identical.\n    // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.\n    if (a === b) return a !== 0 || 1 / a == 1 / b;\n    // A strict comparison is necessary because `null == undefined`.\n    if (a == null || b == null) return a === b;\n    // Unwrap any wrapped objects.\n    if (a._chain) a = a._wrapped;\n    if (b._chain) b = b._wrapped;\n    // Invoke a custom `isEqual` method if one is provided.\n    if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);\n    if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);\n    // Compare `[[Class]]` names.\n    var className = toString.call(a);\n    if (className != toString.call(b)) return false;\n    switch (className) {\n      // Strings, numbers, dates, and booleans are compared by value.\n      case '[object String]':\n        // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n        // equivalent to `new String(\"5\")`.\n        return a == String(b);\n      case '[object Number]':\n        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for\n        // other numeric values.\n        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);\n      case '[object Date]':\n      case '[object Boolean]':\n        // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n        // millisecond representations. Note that invalid dates with millisecond representations\n        // of `NaN` are not equivalent.\n        return +a == +b;\n      // RegExps are compared by their source patterns and flags.\n      case '[object RegExp]':\n        return a.source == b.source &&\n               a.global == b.global &&\n               a.multiline == b.multiline &&\n               a.ignoreCase == b.ignoreCase;\n    }\n    if (typeof a != 'object' || typeof b != 'object') return false;\n    // Assume equality for cyclic structures. The algorithm for detecting cyclic\n    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n    var length = stack.length;\n    while (length--) {\n      // Linear search. Performance is inversely proportional to the number of\n      // unique nested structures.\n      if (stack[length] == a) return true;\n    }\n    // Add the first object to the stack of traversed objects.\n    stack.push(a);\n    var size = 0, result = true;\n    // Recursively compare objects and arrays.\n    if (className == '[object Array]') {\n      // Compare array lengths to determine if a deep comparison is necessary.\n      size = a.length;\n      result = size == b.length;\n      if (result) {\n        // Deep compare the contents, ignoring non-numeric properties.\n        while (size--) {\n          // Ensure commutative equality for sparse arrays.\n          if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;\n        }\n      }\n    } else {\n      // Objects with different constructors are not equivalent.\n      if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;\n      // Deep compare objects.\n      for (var key in a) {\n        if (_.has(a, key)) {\n          // Count the expected number of properties.\n          size++;\n          // Deep compare each member.\n          if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;\n        }\n      }\n      // Ensure that both objects contain the same number of properties.\n      if (result) {\n        for (key in b) {\n          if (_.has(b, key) && !(size--)) break;\n        }\n        result = !size;\n      }\n    }\n    // Remove the first object from the stack of traversed objects.\n    stack.pop();\n    return result;\n  }\n\n  // Perform a deep comparison to check if two objects are equal.\n  _.isEqual = function(a, b) {\n    return eq(a, b, []);\n  };\n\n  // Is a given array, string, or object empty?\n  // An \"empty\" object has no enumerable own-properties.\n  _.isEmpty = function(obj) {\n    if (obj == null) return true;\n    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;\n    for (var key in obj) if (_.has(obj, key)) return false;\n    return true;\n  };\n\n  // Is a given value a DOM element?\n  _.isElement = function(obj) {\n    return !!(obj && obj.nodeType == 1);\n  };\n\n  // Is a given value an array?\n  // Delegates to ECMA5's native Array.isArray\n  _.isArray = nativeIsArray || function(obj) {\n    return toString.call(obj) == '[object Array]';\n  };\n\n  // Is a given variable an object?\n  _.isObject = function(obj) {\n    return obj === Object(obj);\n  };\n\n  // Is a given variable an arguments object?\n  _.isArguments = function(obj) {\n    return toString.call(obj) == '[object Arguments]';\n  };\n  if (!_.isArguments(arguments)) {\n    _.isArguments = function(obj) {\n      return !!(obj && _.has(obj, 'callee'));\n    };\n  }\n\n  // Is a given value a function?\n  _.isFunction = function(obj) {\n    return toString.call(obj) == '[object Function]';\n  };\n\n  // Is a given value a string?\n  _.isString = function(obj) {\n    return toString.call(obj) == '[object String]';\n  };\n\n  // Is a given value a number?\n  _.isNumber = function(obj) {\n    return toString.call(obj) == '[object Number]';\n  };\n\n  // Is a given object a finite number?\n  _.isFinite = function(obj) {\n    return _.isNumber(obj) && isFinite(obj);\n  };\n\n  // Is the given value `NaN`?\n  _.isNaN = function(obj) {\n    // `NaN` is the only value for which `===` is not reflexive.\n    return obj !== obj;\n  };\n\n  // Is a given value a boolean?\n  _.isBoolean = function(obj) {\n    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';\n  };\n\n  // Is a given value a date?\n  _.isDate = function(obj) {\n    return toString.call(obj) == '[object Date]';\n  };\n\n  // Is the given value a regular expression?\n  _.isRegExp = function(obj) {\n    return toString.call(obj) == '[object RegExp]';\n  };\n\n  // Is a given value equal to null?\n  _.isNull = function(obj) {\n    return obj === null;\n  };\n\n  // Is a given variable undefined?\n  _.isUndefined = function(obj) {\n    return obj === void 0;\n  };\n\n  // Has own property?\n  _.has = function(obj, key) {\n    return hasOwnProperty.call(obj, key);\n  };\n\n  // Utility Functions\n  // -----------------\n\n  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n  // previous owner. Returns a reference to the Underscore object.\n  _.noConflict = function() {\n    root._ = previousUnderscore;\n    return this;\n  };\n\n  // Keep the identity function around for default iterators.\n  _.identity = function(value) {\n    return value;\n  };\n\n  // Run a function **n** times.\n  _.times = function (n, iterator, context) {\n    for (var i = 0; i < n; i++) iterator.call(context, i);\n  };\n\n  // Escape a string for HTML interpolation.\n  _.escape = function(string) {\n    return (''+string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\\//g,'&#x2F;');\n  };\n\n  // If the value of the named property is a function then invoke it;\n  // otherwise, return it.\n  _.result = function(object, property) {\n    if (object == null) return null;\n    var value = object[property];\n    return _.isFunction(value) ? value.call(object) : value;\n  };\n\n  // Add your own custom functions to the Underscore object, ensuring that\n  // they're correctly added to the OOP wrapper as well.\n  _.mixin = function(obj) {\n    each(_.functions(obj), function(name){\n      addToWrapper(name, _[name] = obj[name]);\n    });\n  };\n\n  // Generate a unique integer id (unique within the entire client session).\n  // Useful for temporary DOM ids.\n  var idCounter = 0;\n  _.uniqueId = function(prefix) {\n    var id = idCounter++;\n    return prefix ? prefix + id : id;\n  };\n\n  // By default, Underscore uses ERB-style template delimiters, change the\n  // following template settings to use alternative delimiters.\n  _.templateSettings = {\n    evaluate    : /<%([\\s\\S]+?)%>/g,\n    interpolate : /<%=([\\s\\S]+?)%>/g,\n    escape      : /<%-([\\s\\S]+?)%>/g\n  };\n\n  // When customizing `templateSettings`, if you don't want to define an\n  // interpolation, evaluation or escaping regex, we need one that is\n  // guaranteed not to match.\n  var noMatch = /.^/;\n\n  // Certain characters need to be escaped so that they can be put into a\n  // string literal.\n  var escapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    'r': '\\r',\n    'n': '\\n',\n    't': '\\t',\n    'u2028': '\\u2028',\n    'u2029': '\\u2029'\n  };\n\n  for (var p in escapes) escapes[escapes[p]] = p;\n  var escaper = /\\\\|'|\\r|\\n|\\t|\\u2028|\\u2029/g;\n  var unescaper = /\\\\(\\\\|'|r|n|t|u2028|u2029)/g;\n\n  // Within an interpolation, evaluation, or escaping, remove HTML escaping\n  // that had been previously added.\n  var unescape = function(code) {\n    return code.replace(unescaper, function(match, escape) {\n      return escapes[escape];\n    });\n  };\n\n  // JavaScript micro-templating, similar to John Resig's implementation.\n  // Underscore templating handles arbitrary delimiters, preserves whitespace,\n  // and correctly escapes quotes within interpolated code.\n  _.template = function(text, data, settings) {\n    settings = _.defaults(settings || {}, _.templateSettings);\n\n    // Compile the template source, taking care to escape characters that\n    // cannot be included in a string literal and then unescape them in code\n    // blocks.\n    var source = \"__p+='\" + text\n      .replace(escaper, function(match) {\n        return '\\\\' + escapes[match];\n      })\n      .replace(settings.escape || noMatch, function(match, code) {\n        return \"'+\\n_.escape(\" + unescape(code) + \")+\\n'\";\n      })\n      .replace(settings.interpolate || noMatch, function(match, code) {\n        return \"'+\\n(\" + unescape(code) + \")+\\n'\";\n      })\n      .replace(settings.evaluate || noMatch, function(match, code) {\n        return \"';\\n\" + unescape(code) + \"\\n;__p+='\";\n      }) + \"';\\n\";\n\n    // If a variable is not specified, place data values in local scope.\n    if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n    source = \"var __p='';\" +\n      \"var print=function(){__p+=Array.prototype.join.call(arguments, '')};\\n\" +\n      source + \"return __p;\\n\";\n\n    var render = new Function(settings.variable || 'obj', '_', source);\n    if (data) return render(data, _);\n    var template = function(data) {\n      return render.call(this, data, _);\n    };\n\n    // Provide the compiled function source as a convenience for build time\n    // precompilation.\n    template.source = 'function(' + (settings.variable || 'obj') + '){\\n' +\n      source + '}';\n\n    return template;\n  };\n\n  // Add a \"chain\" function, which will delegate to the wrapper.\n  _.chain = function(obj) {\n    return _(obj).chain();\n  };\n\n  // The OOP Wrapper\n  // ---------------\n\n  // If Underscore is called as a function, it returns a wrapped object that\n  // can be used OO-style. This wrapper holds altered versions of all the\n  // underscore functions. Wrapped objects may be chained.\n  var wrapper = function(obj) { this._wrapped = obj; };\n\n  // Expose `wrapper.prototype` as `_.prototype`\n  _.prototype = wrapper.prototype;\n\n  // Helper function to continue chaining intermediate results.\n  var result = function(obj, chain) {\n    return chain ? _(obj).chain() : obj;\n  };\n\n  // A method to easily add functions to the OOP wrapper.\n  var addToWrapper = function(name, func) {\n    wrapper.prototype[name] = function() {\n      var args = slice.call(arguments);\n      unshift.call(args, this._wrapped);\n      return result(func.apply(_, args), this._chain);\n    };\n  };\n\n  // Add all of the Underscore functions to the wrapper object.\n  _.mixin(_);\n\n  // Add all mutator Array functions to the wrapper.\n  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n    var method = ArrayProto[name];\n    wrapper.prototype[name] = function() {\n      var wrapped = this._wrapped;\n      method.apply(wrapped, arguments);\n      var length = wrapped.length;\n      if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];\n      return result(wrapped, this._chain);\n    };\n  });\n\n  // Add all accessor Array functions to the wrapper.\n  each(['concat', 'join', 'slice'], function(name) {\n    var method = ArrayProto[name];\n    wrapper.prototype[name] = function() {\n      return result(method.apply(this._wrapped, arguments), this._chain);\n    };\n  });\n\n  // Start chaining a wrapped Underscore object.\n  wrapper.prototype.chain = function() {\n    this._chain = true;\n    return this;\n  };\n\n  // Extracts the result from a wrapped and chained object.\n  wrapper.prototype.value = function() {\n    return this._wrapped;\n  };\n\n    return _;\n\n});\n//>>excludeEnd('excludeAfterBuild')\n;\n","//>>excludeStart('excludeAfterBuild', pragmas.excludeAfterBuild)\ndefine('hbs/i18nprecompile',['hbs/handlebars', \"hbs/underscore\"], function ( Handlebars, _ ) {\n\n  function replaceLocaleStrings ( ast, mapping, options ) {\n    options = options || {};\n    mapping = mapping || {};\n    // Base set of things\n    if ( ast && ast.type === \"program\" && ast.statements ) {\n      _(ast.statements).forEach(function(statement, i){\n        var newString = \"<!-- i18n error -->\";\n        // If it's a translation node\n        if ( statement.type === \"mustache\" && statement.id && statement.id.original === \"$\" ) {\n\n          if ( statement.params.length && statement.params[0].string ) {\n            var key = statement.params[0].string;\n            newString = mapping[ key ] || (options.originalKeyFallback ? key : newString);\n          }\n          ast.statements[i] = new Handlebars.AST.ContentNode(newString);\n        }\n        // If we need to recurse\n        else if ( statement.program ) {\n          statement.program = replaceLocaleStrings( statement.program, mapping, options );\n        }\n      });\n      // Also cover the else blocks\n      if (ast.inverse) {\n        replaceLocaleStrings(ast.inverse, mapping, options);\n      }\n    }\n    return ast;\n  }\n\n  return function precompile (string, mapping, options) {\n    var ast, environment;\n\n    options = options || {};\n\n    if (!('data' in options)) {\n      options.data = true;\n    }\n\n    if (options.compat) {\n      options.useDepths = true;\n    }\n\n    ast = Handlebars.parse(string);\n\n    // avoid replacing locale if mapping is `false`\n    if (mapping !== false) {\n        ast = replaceLocaleStrings(ast, mapping, options);\n    }\n\n    environment = new Handlebars.Compiler().compile(ast, options);\n    return new Handlebars.JavaScriptCompiler().compile(environment, options);\n  };\n});\n//>>excludeEnd('excludeAfterBuild')\n;\n","//>>excludeStart('excludeAfterBuild', pragmas.excludeAfterBuild)\n/*\n    http://www.JSON.org/json2.js\n    2011-10-19\n\n    Public Domain.\n\n    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n\n    See http://www.JSON.org/js.html\n\n\n    This code should be minified before deployment.\n    See http://javascript.crockford.com/jsmin.html\n\n    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n    NOT CONTROL.\n*/\n\n/*jslint evil: true, regexp: true */\n\n/*members \"\", \"\\b\", \"\\t\", \"\\n\", \"\\f\", \"\\r\", \"\\\"\", JSON, \"\\\\\", apply,\n    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n    lastIndex, length, parse, prototype, push, replace, slice, stringify,\n    test, toJSON, toString, valueOf\n*/\n\n(function (window){\n\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\n\n// Return the window JSON element if it exists;\nvar JSON = window.JSON || {};\n\n(function () {\n    'use strict';\n\n    function f(n) {\n        // Format integers to have at least two digits.\n        return n < 10 ? '0' + n : n;\n    }\n\n    if (typeof Date.prototype.toJSON !== 'function') {\n\n        Date.prototype.toJSON = function (key) {\n\n            return isFinite(this.valueOf())\n                ? this.getUTCFullYear()     + '-' +\n                    f(this.getUTCMonth() + 1) + '-' +\n                    f(this.getUTCDate())      + 'T' +\n                    f(this.getUTCHours())     + ':' +\n                    f(this.getUTCMinutes())   + ':' +\n                    f(this.getUTCSeconds())   + 'Z'\n                : null;\n        };\n\n        String.prototype.toJSON      =\n            Number.prototype.toJSON  =\n            Boolean.prototype.toJSON = function (key) {\n                return this.valueOf();\n            };\n    }\n\n    var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n        escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n        gap,\n        indent,\n        meta = {    // table of character substitutions\n            '\\b': '\\\\b',\n            '\\t': '\\\\t',\n            '\\n': '\\\\n',\n            '\\f': '\\\\f',\n            '\\r': '\\\\r',\n            '\"' : '\\\\\"',\n            '\\\\': '\\\\\\\\'\n        },\n        rep;\n\n\n    function quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n        escapable.lastIndex = 0;\n        return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n            var c = meta[a];\n            return typeof c === 'string'\n                ? c\n                : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n        }) + '\"' : '\"' + string + '\"';\n    }\n\n\n    function str(key, holder) {\n\n// Produce a string from holder[key].\n\n        var i,          // The loop counter.\n            k,          // The member key.\n            v,          // The member value.\n            length,\n            mind = gap,\n            partial,\n            value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n        if (value && typeof value === 'object' &&\n                typeof value.toJSON === 'function') {\n            value = value.toJSON(key);\n        }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n        if (typeof rep === 'function') {\n            value = rep.call(holder, key, value);\n        }\n\n// What happens next depends on the value's type.\n\n        switch (typeof value) {\n        case 'string':\n            return quote(value);\n\n        case 'number':\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n            return isFinite(value) ? String(value) : 'null';\n\n        case 'boolean':\n        case 'null':\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce 'null'. The case is included here in\n// the remote chance that this gets fixed someday.\n\n            return String(value);\n\n// If the type is 'object', we might be dealing with an object or an array or\n// null.\n\n        case 'object':\n\n// Due to a specification blunder in ECMAScript, typeof null is 'object',\n// so watch out for that case.\n\n            if (!value) {\n                return 'null';\n            }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n            gap += indent;\n            partial = [];\n\n// Is the value an array?\n\n            if (Object.prototype.toString.apply(value) === '[object Array]') {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n                length = value.length;\n                for (i = 0; i < length; i += 1) {\n                    partial[i] = str(i, value) || 'null';\n                }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n                v = partial.length === 0\n                    ? '[]'\n                    : gap\n                    ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']'\n                    : '[' + partial.join(',') + ']';\n                gap = mind;\n                return v;\n            }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n            if (rep && typeof rep === 'object') {\n                length = rep.length;\n                for (i = 0; i < length; i += 1) {\n                    if (typeof rep[i] === 'string') {\n                        k = rep[i];\n                        v = str(k, value);\n                        if (v) {\n                            partial.push(quote(k) + (gap ? ': ' : ':') + v);\n                        }\n                    }\n                }\n            } else {\n\n// Otherwise, iterate through all of the keys in the object.\n\n                for (k in value) {\n                    if (Object.prototype.hasOwnProperty.call(value, k)) {\n                        v = str(k, value);\n                        if (v) {\n                            partial.push(quote(k) + (gap ? ': ' : ':') + v);\n                        }\n                    }\n                }\n            }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n            v = partial.length === 0\n                ? '{}'\n                : gap\n                ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}'\n                : '{' + partial.join(',') + '}';\n            gap = mind;\n            return v;\n        }\n    }\n\n// If the JSON object does not yet have a stringify method, give it one.\n\n    if (typeof JSON.stringify !== 'function') {\n        JSON.stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n            var i;\n            gap = '';\n            indent = '';\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n            if (typeof space === 'number') {\n                for (i = 0; i < space; i += 1) {\n                    indent += ' ';\n                }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n            } else if (typeof space === 'string') {\n                indent = space;\n            }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n            rep = replacer;\n            if (replacer && typeof replacer !== 'function' &&\n                    (typeof replacer !== 'object' ||\n                    typeof replacer.length !== 'number')) {\n                throw new Error('JSON.stringify');\n            }\n\n// Make a fake root object containing our value under the key of ''.\n// Return the result of stringifying the value.\n\n            return str('', {'': value});\n        };\n    }\n\n\n// If the JSON object does not yet have a parse method, give it one.\n\n    if (typeof JSON.parse !== 'function') {\n        JSON.parse = function (text, reviver) {\n\n// The parse method takes a text and an optional reviver function, and returns\n// a JavaScript value if the text is a valid JSON text.\n\n            var j;\n\n            function walk(holder, key) {\n\n// The walk method is used to recursively walk the resulting structure so\n// that modifications can be made.\n\n                var k, v, value = holder[key];\n                if (value && typeof value === 'object') {\n                    for (k in value) {\n                        if (Object.prototype.hasOwnProperty.call(value, k)) {\n                            v = walk(value, k);\n                            if (v !== undefined) {\n                                value[k] = v;\n                            } else {\n                                delete value[k];\n                            }\n                        }\n                    }\n                }\n                return reviver.call(holder, key, value);\n            }\n\n\n// Parsing happens in four stages. In the first stage, we replace certain\n// Unicode characters with escape sequences. JavaScript handles many characters\n// incorrectly, either silently deleting them, or treating them as line endings.\n\n            text = String(text);\n            cx.lastIndex = 0;\n            if (cx.test(text)) {\n                text = text.replace(cx, function (a) {\n                    return '\\\\u' +\n                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n                });\n            }\n\n// In the second stage, we run the text against regular expressions that look\n// for non-JSON patterns. We are especially concerned with '()' and 'new'\n// because they can cause invocation, and '=' because it can cause mutation.\n// But just to be safe, we want to reject all unexpected forms.\n\n// We split the second stage into 4 regexp operations in order to work around\n// crippling inefficiencies in IE's and Safari's regexp engines. First we\n// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we\n// replace all simple value tokens with ']' characters. Third, we delete all\n// open brackets that follow a colon or comma or that begin the text. Finally,\n// we look to see that the remaining characters are only whitespace or ']' or\n// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.\n\n            if (/^[\\],:{}\\s]*$/\n                    .test(text.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')\n                        .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\n                        .replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))) {\n\n// In the third stage we use the eval function to compile the text into a\n// JavaScript structure. The '{' operator is subject to a syntactic ambiguity\n// in JavaScript: it can begin a block or an object literal. We wrap the text\n// in parens to eliminate the ambiguity.\n\n                j = eval('(' + text + ')');\n\n// In the optional fourth stage, we recursively walk the new structure, passing\n// each name/value pair to a reviver function for possible transformation.\n\n                return typeof reviver === 'function'\n                    ? walk({'': j}, '')\n                    : j;\n            }\n\n// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n            throw new SyntaxError('JSON.parse');\n        };\n    }\n}());\n\ndefine('hbs/json2',[],function(){\n    return JSON;\n});\n// otherwise just leave it alone\n    \n}).call(this, this);\n//>>excludeEnd('excludeAfterBuild')\n;\n","/**\n * @license Handlebars hbs 2.0.0 - Alex Sexton, but Handlebars has its own licensing junk\n *\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/require-cs for details on the plugin this was based off of\n */\n\n/* Yes, deliciously evil. */\n/*jslint evil: true, strict: false, plusplus: false, regexp: false */\n/*global require: false, XMLHttpRequest: false, ActiveXObject: false,\ndefine: false, process: false, window: false */\ndefine('hbs',[\n//>>excludeStart('excludeHbs', pragmas.excludeHbs)\n  'hbs/handlebars', 'hbs/underscore', 'hbs/i18nprecompile', 'hbs/json2'\n//>>excludeEnd('excludeHbs')\n], function (\n//>>excludeStart('excludeHbs', pragmas.excludeHbs)\n  Handlebars, _, precompile, JSON\n//>>excludeEnd('excludeHbs')\n) {\n  //>>excludeStart('excludeHbs', pragmas.excludeHbs)\n  var fs;\n  var getXhr;\n  var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];\n  var fetchText = function () {\n      throw new Error('Environment unsupported.');\n  };\n  var buildMap = [];\n  var filecode = 'w+';\n  var templateExtension = 'hbs';\n  var customNameExtension = '@hbs';\n  var devStyleDirectory = '/styles/';\n  var buildStyleDirectory = '/demo-build/styles/';\n  var helperDirectory = 'templates/helpers/';\n  var i18nDirectory = 'templates/i18n/';\n  var buildCSSFileName = 'screen.build.css';\n  var onHbsReadMethod = \"onHbsRead\";\n\n  Handlebars.registerHelper('$', function() {\n    //placeholder for translation helper\n  });\n\n  if (typeof window !== 'undefined' && window.navigator && window.document && !window.navigator.userAgent.match(/Node.js/)) {\n    // Browser action\n    getXhr = function () {\n      // Would love to dump the ActiveX crap in here. Need IE 6 to die first.\n      var xhr;\n      var i;\n      var progId;\n      if (typeof XMLHttpRequest !== 'undefined') {\n        return ((arguments[0] === true)) ? new XDomainRequest() : new XMLHttpRequest();\n      }\n      else {\n        for (i = 0; i < 3; i++) {\n          progId = progIds[i];\n          try {\n            xhr = new ActiveXObject(progId);\n          }\n          catch (e) {}\n\n          if (xhr) {\n            // Faster next time\n            progIds = [progId];\n            break;\n          }\n        }\n      }\n\n      if (!xhr) {\n          throw new Error('getXhr(): XMLHttpRequest not available');\n      }\n\n      return xhr;\n    };\n\n    // Returns the version of Windows Internet Explorer or a -1\n    // (indicating the use of another browser).\n    // Note: this is only for development mode. Does not run in production.\n    getIEVersion = function(){\n      // Return value assumes failure.\n      var rv = -1;\n      if (navigator.appName == 'Microsoft Internet Explorer') {\n        var ua = navigator.userAgent;\n        var re = new RegExp('MSIE ([0-9]{1,}[\\.0-9]{0,})');\n        if (re.exec(ua) != null) {\n          rv = parseFloat( RegExp.$1 );\n        }\n      }\n      return rv;\n    };\n\n    fetchText = function (url, callback) {\n      var xdm = false;\n      // If url is a fully qualified URL, it might be a cross domain request. Check for that.\n      // IF url is a relative url, it cannot be cross domain.\n      if (url.indexOf('http') != 0 ){\n          xdm = false;\n      }else{\n          var uidx = (url.substr(0,5) === 'https') ? 8 : 7;\n          var hidx = (window.location.href.substr(0,5) === 'https') ? 8 : 7;\n          var dom = url.substr(uidx).split('/').shift();\n          var msie = getIEVersion();\n              xdm = ( dom != window.location.href.substr(hidx).split('/').shift() ) && (msie >= 7);\n      }\n\n      if ( xdm ) {\n         var xdr = getXhr(true);\n        xdr.open('GET', url);\n        xdr.onload = function() {\n          callback(xdr.responseText, url);\n        };\n        xdr.onprogress = function(){};\n        xdr.ontimeout = function(){};\n        xdr.onerror = function(){};\n        setTimeout(function(){\n          xdr.send();\n        }, 0);\n      }\n      else {\n        var xhr = getXhr();\n        xhr.open('GET', url, true);\n        xhr.onreadystatechange = function (evt) {\n          //Do not explicitly handle errors, those should be\n          //visible via console output in the browser.\n          if (xhr.readyState === 4) {\n            callback(xhr.responseText, url);\n          }\n        };\n        xhr.send(null);\n      }\n    };\n\n  }\n  else if (\n    typeof process !== 'undefined' &&\n    process.versions &&\n    !!process.versions.node\n  ) {\n    //Using special require.nodeRequire, something added by r.js.\n    fs = require.nodeRequire('fs');\n    fetchText = function ( path, callback ) {\n      var body = fs.readFileSync(path, 'utf8') || '';\n      // we need to remove BOM stuff from the file content\n      body = body.replace(/^\\uFEFF/, '');\n      callback(body, path);\n    };\n  }\n  else if (typeof java !== 'undefined' && typeof java.io !== 'undefined') {\n    fetchText = function(path, callback) {\n      var fis = new java.io.FileInputStream(path);\n      var streamReader = new java.io.InputStreamReader(fis, \"UTF-8\");\n      var reader = new java.io.BufferedReader(streamReader);\n      var line;\n      var text = '';\n      while ((line = reader.readLine()) !== null) {\n        text += new String(line) + '\\n';\n      }\n      reader.close();\n      callback(text, path);\n    };\n  }\n\n  var cache = {};\n  var fetchOrGetCached = function ( path, callback ){\n    if ( cache[path] ){\n      callback(cache[path]);\n    }\n    else {\n      fetchText(path, function(data, path){\n        cache[path] = data;\n        callback.call(this, data);\n      });\n    }\n  };\n  var styleList = [];\n  var styleMap = {};\n  //>>excludeEnd('excludeHbs')\n\n  var config;\n  var filesToRemove = [];\n\n  return {\n\n    get: function () {\n      return Handlebars;\n    },\n\n    write: function (pluginName, name, write) {\n      if ( (name + customNameExtension ) in buildMap) {\n        var text = buildMap[name + customNameExtension];\n        write.asModule(pluginName + '!' + name, text);\n      }\n    },\n\n    version: '2.0.0',\n\n    load: function (name, parentRequire, load, _config) {\n      //>>excludeStart('excludeHbs', pragmas.excludeHbs)\n      config = config || _config;\n\n      var compiledName = name + customNameExtension;\n      config.hbs = config.hbs || {};\n      var disableI18n = !(config.hbs.i18n == true); // by default we disable i18n unless config.hbs.i18n is true\n      var disableHelpers = (config.hbs.helpers == false); // be default we enable helpers unless config.hbs.helpers is false\n      var partialsUrl = '';\n      if(config.hbs.partialsUrl) {\n        partialsUrl = config.hbs.partialsUrl;\n        if(!partialsUrl.match(/\\/$/)) partialsUrl += '/';\n      }\n\n      // Let redefine default fetchText\n      if(config.hbs.fetchText) {\n          fetchText = config.hbs.fetchText;\n      }\n\n      var partialDeps = [];\n\n      function recursiveNodeSearch( statements, res ) {\n        _(statements).forEach(function ( statement ) {\n          if ( statement && statement.type && statement.type === 'partial' ) {\n            res.push(statement.partialName.name);\n          }\n          if ( statement && statement.program && statement.program.statements ) {\n            recursiveNodeSearch( statement.program.statements, res );\n          }\n          if ( statement && statement.inverse && statement.inverse.statements ) {\n            recursiveNodeSearch( statement.inverse.statements, res );\n          }\n        });\n        return res;\n      }\n\n      // TODO :: use the parser to do this!\n      function findPartialDeps( nodes ) {\n        var res = [];\n        if ( nodes && nodes.statements ) {\n          res = recursiveNodeSearch( nodes.statements, [] );\n        }\n        return _.unique(res);\n      }\n\n      // See if the first item is a comment that's json\n      function getMetaData( nodes ) {\n        var statement, res, test;\n        if ( nodes && nodes.statements ) {\n          statement = nodes.statements[0];\n          if ( statement && statement.type === 'comment' ) {\n            try {\n              res = ( statement.comment ).replace(new RegExp('^[\\\\s]+|[\\\\s]+$', 'g'), '');\n              test = JSON.parse(res);\n              return res;\n            }\n            catch (e) {\n              return JSON.stringify({\n                description: res\n              });\n            }\n          }\n        }\n        return '{}';\n      }\n\n      function composeParts ( parts ) {\n        if ( !parts ) {\n          return [];\n        }\n        var res = [parts[0]];\n        var cur = parts[0];\n        var i;\n\n        for (i = 1; i < parts.length; ++i) {\n          if ( parts.hasOwnProperty(i) ) {\n            cur += '.' + parts[i];\n            res.push( cur );\n          }\n        }\n        return res;\n      }\n\n      function recursiveVarSearch( statements, res, prefix, helpersres ) {\n        prefix = prefix ? prefix + '.' : '';\n\n        var  newprefix = '';\n        var flag = false;\n\n        // loop through each statement\n        _(statements).forEach(function(statement) {\n          var parts;\n          var part;\n          var sideways;\n\n          // if it's a mustache block\n          if ( statement && statement.type && statement.type === 'mustache' ) {\n\n            // If it has params, the first part is a helper or something\n            if ( !statement.params || ! statement.params.length ) {\n              parts = composeParts( statement.id.parts );\n              for( part in parts ) {\n                if ( parts[ part ] ) {\n                  newprefix = parts[ part ] || newprefix;\n                  res.push( prefix + parts[ part ] );\n                }\n              }\n              res.push(prefix + statement.id.string);\n            }\n\n            var paramsWithoutParts = ['this', '.', '..', './..', '../..', '../../..'];\n\n            // grab the params\n            if ( statement.params && typeof Handlebars.helpers[statement.id.string] === 'undefined') {\n              _(statement.params).forEach(function(param) {\n                if ( _(paramsWithoutParts).contains(param.original)\n                  || param instanceof Handlebars.AST.StringNode\n                  || param instanceof Handlebars.AST.NumberNode\n                  || param instanceof Handlebars.AST.BooleanNode\n                  || param instanceof Handlebars.AST.DataNode\n                  || param instanceof Handlebars.AST.SexprNode\n                ) {\n                  helpersres.push(statement.id.string);\n\n                  // Look into the params to find subexpressions\n                  if (typeof statement.params !== 'undefined') {\n                      _(statement.params).forEach(function(param) {\n                        if (param.type === 'sexpr' && param.isHelper === true) {\n                          // Found subexpression in params\n                          helpersres.push(param.id.string);\n                        }\n                      });\n                  }\n\n                  // Look in the hash to find sub expressions\n                  if ((statement.hash != null) && (typeof statement.hash !== 'undefined') && (typeof statement.hash.pairs !== 'undefined')) {\n                    _(statement.hash.pairs).forEach(function(pair) {\n                      var pairName = pair[0],\n                          pairValue = pair[1];\n                      if (pairValue.type === 'sexpr' && pairValue.isHelper === true) {\n                        // Found subexpression in hash params\n                        helpersres.push(pairValue.id.string);\n                      }\n                    });\n                  }\n                }\n\n                parts = composeParts( param.parts );\n\n                for(var part in parts ) {\n                  if ( parts[ part ] ) {\n                    newprefix = parts[part] || newprefix;\n                    helpersres.push(statement.id.string);\n                    res.push( prefix + parts[ part ] );\n                  }\n                }\n              });\n              if ((statement.hash != null) && (typeof statement.hash !== 'undefined') && (typeof statement.hash.pairs !== 'undefined')) {\n                //Even if it has no regular params, it may be a helper with hash params\n                _(statement.hash.pairs).forEach(function(pair) {\n                  var pairValue = pair[1];\n                  if (pairValue instanceof Handlebars.AST.StringNode\n                    || pairValue instanceof Handlebars.AST.NumberNode\n                    || pairValue instanceof Handlebars.AST.BooleanNode\n                    || pairValue instanceof Handlebars.AST.IdNode\n                    //TODO: Add support for subexpressions here?\n                  ) {\n                    helpersres.push(statement.id.string);\n                  }\n                });\n              }\n            }\n          }\n\n          // If it's a meta block\n          if ( statement && statement.mustache  ) {\n            recursiveVarSearch( [statement.mustache], res, prefix + newprefix, helpersres );\n          }\n\n          // if it's a whole new program\n          if ( statement && statement.program && statement.program.statements ) {\n            sideways = recursiveVarSearch([statement.mustache],[], '', helpersres)[0] || '';\n            if ( statement.inverse && statement.inverse.statements ) {\n              recursiveVarSearch( statement.inverse.statements, res, prefix + newprefix + (sideways ? (prefix+newprefix) ? '.'+sideways : sideways : ''), helpersres);\n            }\n            recursiveVarSearch( statement.program.statements, res, prefix + newprefix + (sideways ? (prefix+newprefix) ? '.'+sideways : sideways : ''), helpersres);\n          }\n        });\n        return res;\n      }\n\n      // This finds the Helper dependencies since it's soooo similar\n      function getExternalDeps( nodes ) {\n        var res   = [];\n        var helpersres = [];\n\n        if ( nodes && nodes.statements ) {\n          res = recursiveVarSearch( nodes.statements, [], undefined, helpersres );\n        }\n\n        var defaultHelpers = [\n          'helperMissing',\n          'blockHelperMissing',\n          'each',\n          'if',\n          'unless',\n          'with',\n          'log',\n          'lookup'\n        ];\n\n        return {\n          vars: _(res).chain().unique().map(function(e) {\n            if ( e === '' ) {\n              return '.';\n            }\n            if ( e.length && e[e.length-1] === '.' ) {\n              return e.substr(0,e.length-1) + '[]';\n            }\n            return e;\n          }).value(),\n\n          helpers: _(helpersres).chain().unique().map(function(e){\n            if ( _(defaultHelpers).contains(e) ) {\n              return undefined;\n            }\n            return e;\n          }).compact().value()\n        };\n      }\n\n      function cleanPath(path) {\n        var tokens = path.split('/');\n        for(var i=0;i<tokens.length; i++) {\n          if(tokens[i] === '..') {\n            delete tokens[i-1];\n            delete tokens[i];\n          } else if (tokens[i] === '.') {\n            delete tokens[i];\n          }\n        }\n        return tokens.join('/').replace(/\\/\\/+/g,'/');\n      }\n\n      function fetchAndRegister(langMap) {\n          fetchText(path, function(text, path) {\n\n          var readCallback = (config.isBuild && config[onHbsReadMethod]) ? config[onHbsReadMethod]:  function(name,path,text){return text} ;\n          // for some reason it doesn't include hbs _first_ when i don't add it here...\n          var nodes = Handlebars.parse( readCallback(name, path, text));\n          var partials = findPartialDeps( nodes );\n          var meta = getMetaData( nodes );\n          var extDeps = getExternalDeps( nodes );\n          var vars = extDeps.vars;\n          var helps = (extDeps.helpers || []);\n          var debugOutputStart = '';\n          var debugOutputEnd   = '';\n          var debugProperties = '';\n          var deps = [];\n          var depStr, helpDepStr, metaObj, head, linkElem;\n          var baseDir = name.substr(0,name.lastIndexOf('/')+1);\n\n          require.config.hbs = require.config.hbs || {};\n          require.config.hbs._partials = require.config.hbs._partials || {};\n\n          if(meta !== '{}') {\n            try {\n              metaObj = JSON.parse(meta);\n            } catch(e) {\n              console.log('couldn\\'t parse meta for %s', path);\n            }\n          }\n\n          for ( var i in partials ) {\n            if ( partials.hasOwnProperty(i) && typeof partials[i] === 'string') {  // make sure string, because we're iterating over all props\n              var partialReference = partials[i];\n\n              var path;\n              if(partialReference.match(/^(\\.|\\/)+/)) {\n                // relative path\n                path = cleanPath(baseDir + partialReference)\n              }\n              else {\n                // absolute path relative to config.hbs.partialsUrl if defined\n                path = cleanPath(partialsUrl + partialReference);\n              }\n\n              require.config.hbs._partials[path] = require.config.hbs._partials[path] || [];\n\n              // we can reference a same template with different paths (with absolute or relative)\n              require.config.hbs._partials[path].references = require.config.hbs._partials[path].references || [];\n              require.config.hbs._partials[path].references.push(partialReference);\n\n              require.config.hbs._loadedDeps = require.config.hbs._loadedDeps || {};\n\n              deps[i] = \"hbs!\"+path;\n            }\n          }\n\n          depStr = deps.join(\"', '\");\n\n          helps = helps.concat((metaObj && metaObj.helpers) ? metaObj.helpers : []);\n          helpDepStr = disableHelpers ?\n            '' : (function (){\n              var i;\n              var paths = [];\n              var pathGetter = config.hbs && config.hbs.helperPathCallback\n                ? config.hbs.helperPathCallback\n                : function (name){\n                  return (config.hbs && config.hbs.helperDirectory ? config.hbs.helperDirectory : helperDirectory) + name;\n                };\n\n              for ( i = 0; i < helps.length; i++ ) {\n                paths[i] = \"'\" + pathGetter(helps[i], path) + \"'\"\n              }\n              return paths;\n            })().join(',');\n\n          if ( helpDepStr ) {\n            helpDepStr = ',' + helpDepStr;\n          }\n\n          if (metaObj) {\n            try {\n              if (metaObj.styles) {\n                styleList = _.union(styleList, metaObj.styles);\n\n                // In dev mode in the browser\n                if ( require.isBrowser && ! config.isBuild ) {\n                  head = document.head || document.getElementsByTagName('head')[0];\n                  _(metaObj.styles).forEach(function (style) {\n                    if ( !styleMap[style] ) {\n                      linkElem = document.createElement('link');\n                      linkElem.href = config.baseUrl + devStyleDirectory + style + '.css';\n                      linkElem.media = 'all';\n                      linkElem.rel = 'stylesheet';\n                      linkElem.type = 'text/css';\n                      head.appendChild(linkElem);\n                      styleMap[style] = linkElem;\n                    }\n                  });\n                }\n                else if ( config.isBuild ) {\n                  (function(){\n                    var fs  = require.nodeRequire('fs');\n                    var str = _(metaObj.styles).map(function (style) {\n                      if (!styleMap[style]) {\n                        styleMap[style] = true;\n                        return '@import url('+style+'.css);\\n';\n                      }\n                      return '';\n                    }).join('\\n');\n\n                    // I write out my import statements to a file in order to help me build stuff.\n                    // Then I use a tool to inline my import statements afterwards. (you can run r.js on it too)\n                    fs.open(__dirname + buildStyleDirectory + buildCSSFileName, filecode, '0666', function( e, id ) {\n                      fs.writeSync(id, str, null, encoding='utf8');\n                      fs.close(id);\n                    });\n                    filecode = 'a';\n                  })();\n                }\n              }\n            }\n            catch(e){\n              console.log('error injecting styles');\n            }\n          }\n\n          if ( ! config.isBuild && ! config.serverRender ) {\n            debugOutputStart = '<!-- START - ' + name + ' -->';\n            debugOutputEnd = '<!-- END - ' + name + ' -->';\n            debugProperties = 't.meta = ' + meta + ';\\n' +\n                              't.helpers = ' + JSON.stringify(helps) + ';\\n' +\n                              't.deps = ' + JSON.stringify(deps) + ';\\n' +\n                              't.vars = ' + JSON.stringify(vars) + ';\\n';\n          }\n\n          var mapping = disableI18n? false : _.extend( langMap, config.localeMapping );\n          var configHbs = config.hbs || {};\n          var options = _.extend(configHbs.compileOptions || {}, { originalKeyFallback: configHbs.originalKeyFallback });\n          var prec = precompile( text, mapping, options);\n          var tmplName = \"'hbs!\" + name + \"',\";\n\n          if(depStr) depStr = \", '\"+depStr+\"'\";\n\n          var partialReferences = [];\n          if(require.config.hbs._partials[name])\n            partialReferences = require.config.hbs._partials[name].references;\n\n          text = '/* START_TEMPLATE */\\n' +\n                 'define('+tmplName+\"['hbs','hbs/handlebars'\"+depStr+helpDepStr+'], function( hbs, Handlebars ){ \\n' +\n                   'var t = Handlebars.template(' + prec + ');\\n' +\n                   \"Handlebars.registerPartial('\" + name + \"', t);\\n\";\n\n          for(var i=0; i<partialReferences.length;i++)\n            text += \"Handlebars.registerPartial('\" + partialReferences[i] + \"', t);\\n\";\n\n          text += debugProperties +\n                   'return t;\\n' +\n                 '});\\n' +\n                 '/* END_TEMPLATE */\\n';\n\n          //Hold on to the transformed text if a build.\n          if (config.isBuild) {\n            buildMap[compiledName] = text;\n          }\n\n          //IE with conditional comments on cannot handle the\n          //sourceURL trick, so skip it if enabled.\n          /*@if (@_jscript) @else @*/\n          if (!config.isBuild) {\n            text += '\\r\\n//# sourceURL=' + path;\n          }\n          /*@end@*/\n\n          if ( !config.isBuild ) {\n            require( deps, function (){\n              load.fromText(text);\n\n              //Give result to load. Need to wait until the module\n              //is fully parse, which will happen after this\n              //execution.\n              parentRequire([name], function (value) {\n                load(value);\n              });\n            });\n          }\n          else {\n            load.fromText(name, text);\n\n            //Give result to load. Need to wait until the module\n            //is fully parse, which will happen after this\n            //execution.\n            parentRequire([name], function (value) {\n              load(value);\n            });\n          }\n\n          if ( config.removeCombined && path ) {\n            filesToRemove.push(path);\n          }\n\n        });\n      }\n\n      var path;\n      var omitExtension = config.hbs && config.hbs.templateExtension === false;\n\n      if (omitExtension) {\n        path = parentRequire.toUrl(name);\n      }\n      else {\n        path = parentRequire.toUrl(name +'.'+ (config.hbs && config.hbs.templateExtension ? config.hbs.templateExtension : templateExtension));\n      }\n\n      if (disableI18n){\n        fetchAndRegister(false);\n      }\n      else {\n        // Workaround until jam is able to pass config info or we move i18n to a separate module.\n        // This logs a warning and disables i18n if there's an error loading the language file\n        var langMapPath = (config.hbs && config.hbs.i18nDirectory ? config.hbs.i18nDirectory : i18nDirectory) + (config.locale || 'en_us') + '.json';\n        try {\n          fetchOrGetCached(parentRequire.toUrl(langMapPath), function (langMap) {\n            fetchAndRegister(JSON.parse(langMap));\n          });\n        }\n        catch(er) {\n          // if there's no configuration at all, log a warning and disable i18n for this and subsequent templates\n          if(!config.hbs) {\n            console.warn('hbs: Error reading ' + langMapPath + ', disabling i18n. Ignore this if you\\'re using jam, otherwise check your i18n configuration.\\n');\n            config.hbs = {i18n: false, helpers: true};\n            fetchAndRegister(false);\n          }\n          else {\n            throw er;\n          }\n        }\n      }\n      //>>excludeEnd('excludeHbs')\n    },\n\n    onLayerEnd: function () {\n      if (config.removeCombined && fs) {\n        filesToRemove.forEach(function (path) {\n          if (fs.existsSync(path)) {\n            fs.unlinkSync(path);\n          }\n        });\n      }\n    }\n  };\n});\n/* END_hbs_PLUGIN */\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!sunstone/tab',['hbs','hbs/handlebars'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, buffer = \"  <div class=\\\"row header-row\\\">\\n    <div class=\\\"large-12 columns\\\">\\n      <h2 class=\\\"subheader header-title only-right-list\\\">\\n        <span class=\\\"header-resource\\\">\";\n  stack1 = ((helper = (helper = helpers.listHeader || (depth0 != null ? depth0.listHeader : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"listHeader\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"</span>\\n      </h2>\\n      <h2 class=\\\"subheader header-title only-right-info\\\" hidden>\\n        <span class=\\\"header-resource\\\">\";\n  stack1 = ((helper = (helper = helpers.infoHeader || (depth0 != null ? depth0.infoHeader : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"infoHeader\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</span>\\n        &emsp;\\n        <span class=\\\"resource-id\\\"></span>\\n        &emsp;\\n        <span class=\\\"resource-info-header\\\"></span>\\n      </h2>\\n      <h2 class=\\\"subheader header-title only-right-form\\\" hidden>\\n        <span class=\\\"right-form-title\\\"></span>\\n      </h2>\\n    </div>\\n  </div>\\n\";\n},\"3\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"  <div class=\\\"row actions_row\\\">\\n    <div class=\\\"small-12 large-12 columns\\\">\\n      <div class=\\\"action_blocks\\\"></div>\\n      <div class=\\\"small-3 large-3 columns only-right-list\\\" style=\\\"margin-top: 2px\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.searchInput : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(4, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"      </div>\\n    </div>\\n  </div>\\n\";\n},\"4\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, buffer = \"          \";\n  stack1 = ((helper = (helper = helpers.searchInput || (depth0 != null ? depth0.searchInput : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"searchInput\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n\";\n},\"6\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, buffer = \"    <div class=\\\"row\\\">\\n      <div class=\\\"large-12 columns\\\">\";\n  stack1 = ((helper = (helper = helpers.table || (depth0 != null ? depth0.table : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"table\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"</div>\\n    </div>\\n\";\n},\"8\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, buffer = \"    \";\n  stack1 = ((helper = (helper = helpers.content || (depth0 != null ? depth0.content : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"content\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n\";\n},\"10\":function(depth0,helpers,partials,data) {\n  var stack1, buffer = \"    <div class=\\\"row header-info\\\">\\n      <div class=\\\"large-12 columns text-center totals-info\\\">\\n        <h3 class=\\\"subheader\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.subheader : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(11, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"        </h3>\\n      </div>\\n    </div>\\n\";\n},\"11\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, buffer = \"            \";\n  stack1 = ((helper = (helper = helpers.subheader || (depth0 != null ? depth0.subheader : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"subheader\",\"hash\":{},\"data\":data}) : helper));\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.tabName || (depth0 != null ? depth0.tabName : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"tabName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"tab\\\" style=\\\"display:none;\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.listHeader : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.buttons : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(3, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"  <div class=\\\"right-list\\\">\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.table : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(6, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.content : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(8, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  buffer += \"\\n\";\n  stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.subheader : depth0), {\"name\":\"if\",\"hash\":{},\"fn\":this.program(10, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"  </div>\\n\\n  <div class=\\\"right-info\\\" hidden></div>\\n\\n  <div class=\\\"large-12 small-12 right-form\\\" hidden>\\n    <div class=\\\"loadingForm\\\">\\n      <br>\\n      <br>\\n      <span class=\\\"fa-stack fa-5x\\\" style=\\\"color: #dfdfdf\\\"> <i class=\\\"fa fa-cloud fa-stack-2x\\\"/><i class=\\\"fa  fa-spinner fa-spin fa-stack-1x fa-inverse\\\"/>\\n      </span>\\n      <br>\\n      <br></div>\\n    <div class=\\\"tabs-content tabs-contentForm  \\\">\\n      <div class=\\\"content active\\\" id=\\\"wizardForms\\\"></div>\\n      <div class=\\\"content\\\" id=\\\"advancedForms\\\"></div>\\n    </div>\\n  </div>\\n</div>\";\n},\"useData\":true});\nHandlebars.registerPartial('sunstone/tab', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('templates/helpers/tr',['require','hbs/handlebars','utils/locale'],function(require) {\n  var Handlebars = require('hbs/handlebars');\n  var Locale = require('utils/locale');\n\n  var tr = function(context, options) {\n    return Locale.tr(context);\n  };\n\n  Handlebars.registerHelper('tr', tr);\n  return tr;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!sunstone/buttons',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"1\":function(depth0,helpers,partials,data) {\n  var helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"back_button\\\" class=\\\"only-right-info only-right-form\\\">\\n      <a class=\\\"button small radius\\\" href=\\\"back\\\"> <i class=\\\"fa fa-arrow-left\\\"></i>\\n        &emsp;&emsp; <i class=\\\"fa fa-list\\\"></i>\\n      </a>\\n    </span>\\n\";\n},\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var stack1, helper, functionType=\"function\", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = \"<div class=\\\"text-center\\\">\\n  <span class=\\\"left\\\">\\n\\n    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"refresh_buttons\\\" class=\\\"only-right-info only-right-list\\\"></span>\\n\";\n  stack1 = helpers.unless.call(depth0, (depth0 != null ? depth0.customContext : depth0), {\"name\":\"unless\",\"hash\":{},\"fn\":this.program(1, data),\"inverse\":this.noop,\"data\":data});\n  if (stack1 != null) { buffer += stack1; }\n  return buffer + \"    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"create_buttons\\\" class=\\\"only-right-list\\\"></span>\\n  </span>\\n\\n  <span class=\\\"right\\\" style=\\\"margin-left: 20px\\\">\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"user_buttons' class='only-right-info only-right-list top_button small  secondary button dropdown radius'>\\n      <i class='fa fa-user'/></a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"user_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsdelete_buttons' class='only-right-info only-right-list top_button small  button alert dropdown radius'>\\n      <i class='fa fa-trash-o'/></a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsdelete_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <span id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"delete_buttons' class='only-right-info only-right-list'></span>\\n  </span>\\n\\n  <span class=\\\"right\\\">\\n    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsplay_buttons\\\"></span>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmspause_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\\n      <i class='fa fa-pause'/>\\n    </a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmspause_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsstop_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\\n      <i class='fa fa-stop'/>\\n    </a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsstop_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsrepeat_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\\n      <i class='fa fa-repeat'/>\\n    </a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsrepeat_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsplanification_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\\n      <i class='fa fa-th-list'/>\\n    </a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"vmsplanification_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n\\n    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"main_buttons\\\" class=\\\"only-right-info only-right-list\\\"></span>\\n\\n    <a href='#' data-dropdown='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"more_buttons' class='only-right-info only-right-list top_button small  button secondary dropdown radius'>\\n      <i class='fa fa-ellipsis-v'/>\\n    </a>\\n    <ul id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"more_buttons' class='only-right-info only-right-list f-dropdown' data-dropdown-content></ul>\\n  </span>\\n\\n  <span id='\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"form_buttons' class='only-right-form' style='display: none'>\\n    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"reset_button\\\" class=\\\"left\\\" style=\\\"margin-left: 10px;\\\">\\n      <a class=\\\"button small secondary radius reset_button\\\" href=\\\"submit\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Reset\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n    </span>\\n    <span id=\\\"\"\n    + escapeExpression(((helper = (helper = helpers.customId || (depth0 != null ? depth0.customId : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {\"name\":\"customId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"submit_button\\\" class=\\\"left\\\" style=\\\"margin-left: 10px;\\\">\\n      <a class=\\\"button small success radius submit_button\\\" href=\\\"submit\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Create\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n    </span>\\n    <dl class=\\\"tabs right wizard_tabs\\\" data-tab style=\\\"margin-left: 10px;\\\">\\n      <dd id=\\\"wizard_mode\\\" class=\\\"active\\\">\\n        <a style=\\\"padding: 0.3rem 1rem;\\\" href=\\\"#wizardForms\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Wizard\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n      </dd>\\n      <dd id=\\\"advanced_mode\\\">\\n        <a style=\\\"padding: 0.3rem 1rem;\\\" id=\\\"advanced_mode_a\\\" href=\\\"#advancedForms\\\">\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Advanced\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</a>\\n      </dd>\\n    </dl>\\n  </span>\\n</div>\\n\\\"\";\n},\"useData\":true});\nHandlebars.registerPartial('sunstone/buttons', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('sunstone',['require','jquery','foundation.core','sunstone-config','utils/locale','hbs!sunstone/tab','hbs!./sunstone/buttons'],function(require) {\n  require('jquery');\n  require('foundation.core')\n\n  var Config = require('sunstone-config'),\n      Locale = require('utils/locale');\n\n  var TOP_INTERVAL = 10000; //ms\n\n  var SunstoneCfg = {\n    \"actions\" : {},\n    \"tabs\" : {},\n    \"info_panels\" : {},\n    \"form_panels\" : {}\n  };\n\n  //Inserts all main tabs in the DOM\n  var insertTabs = function() {\n    for (tab in SunstoneCfg[\"tabs\"]) {\n      _insertTab(tab);\n      insertButtonsInTab(tab);\n\n      // TODO Add openenbula actions\n      /*if (config['view']['autorefresh']) {\n        var tabContext = $(\"#\" + tab);\n        var refreshButton = $(\".fa-refresh\", $(\".action_blocks\", tabContext).first());\n        setInterval(function() {\n          if (Sunstone.rightListVisible(tabContext)) {\n            refreshButton.click();\n          }\n        }, TOP_INTERVAL);\n      }*/\n    }\n\n    _setupTabs();\n  }\n\n  //Inserts a main tab in the DOM. This is done by\n  //adding the content to the proper div and by adding a list item\n  //link to the navigation menu\n  var _insertTab = function(tabName) {\n    var tabInfo = SunstoneCfg['tabs'][tabName];\n    var condition = tabInfo['condition'];\n    var tabClass = tabInfo['tabClass'] ? tabInfo['tabClass'] : 'topTab';\n    var parent = tabInfo['parentTab'] ? tabInfo['parentTab'] : '';\n\n    //skip this tab if we do not meet the condition\n    if (condition && !condition()) {return;}\n\n    if (tabInfo.no_content === true) {\n      tabClass += \" tab_with_no_content\"\n    } else {\n      tabInfo['tabName'] = tabName;\n      var TabTemplate = require('hbs!sunstone/tab')\n      $('div.right-content').append(TabTemplate(tabInfo));\n    }\n\n    var liItem = '<li id=\"li_' + tabName + '\" class=\"' + tabClass + ' ' + parent + '\"><a href=\"#\">' + tabInfo.title + '</a></li>';\n\n    $('div#menu ul#navigation').append(liItem);\n\n    //if this is a submenu...\n    if (parent.length) {\n      var children = $('div#menu ul#navigation #li_' + parent);\n      //if there are other submenus, insert after last of them\n      if (children.length) {\n        $('div#menu li#li_' + tabName).hide();//hide by default\n        $('div#menu li#li_' + parent + ' span').css(\"display\", \"inline-block\");\n      }\n    };\n\n    if (tabInfo.forms) {\n      $.each(tabInfo.forms, function(key, value) {\n        Sunstone.addFormPanel(tabName, key, value)\n      })\n    }\n  };\n\n  //If we have defined a block of action buttons in a tab,\n  //this function takes care of inserting them in the DOM.\n  var insertButtonsInTab = function(tabName, panelName, panelButtons, customContext) {\n    var buttons = panelButtons ? panelButtons : SunstoneCfg[\"tabs\"][tabName][\"buttons\"];\n    var buttonCode = \"\";\n    var condition = null;\n\n    var context, customId;\n    if (customContext) {\n      customId = customContext.attr(\"id\");\n      context = customContext;\n    } else {\n      customId = tabName;\n      context = $('div#' + tabName, $('div.right-content'));\n    }\n\n    var actionBlock = $('div.action_blocks', context)\n\n    if (actionBlock.length) {\n\n      var ButtonsTemplate = require('hbs!./sunstone/buttons')\n      var buttonsRow = $(ButtonsTemplate({customId: customId, customContext: customContext}));\n\n      //for every button defined for this tab...\n      for (buttonName in buttons) {\n        buttonCode = \"\";\n        button = buttons[buttonName];\n\n        //if we meet the condition we proceed. Otherwise we skip it.\n        if (Config.isTabActionEnabled(tabName, buttonName, panelName) == false) {\n          continue;\n        }\n\n        var type = button.type + '_button';\n        var strClass = [type]\n        switch (button.type) {\n        case \"select\":\n          break;\n        case \"image\":\n          strClass.push(\"action_button\")\n          break;\n        case \"create_dialog\":\n          strClass.push(\"action_button\")\n          strClass.push(\"top_button\")\n          break;\n        default:\n          strClass.push(\"top_button\")\n        }\n\n        if (button.alwaysActive) {\n          strClass.push(\"alwaysActive\");\n        }\n\n        if (button.custom_classes) {\n          strClass.push(button.custom_classes);\n        }\n\n        var buttonContext;\n        var text;\n        switch (button.layout) {\n        case \"create\":\n          buttonContext = $(\"#\" + customId + \"create_buttons\", buttonsRow);\n          text = button.text ? '<i class=\"fa fa-plus\"/>  ' + button.text : '<i class=\"fa fa-plus\"/>';\n          strClass.push(\"success\", \"button\", \"small\", \"radius\");\n          buttonCode = '<button class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</button>';\n          break;\n        case \"refresh\":\n          buttonContext = $(\"#\" + customId + \"refresh_buttons\", buttonsRow);\n          text = '<span class=\"fa-stack\">' +\n              '<i class=\"fa fa-refresh fa-stack-lg\" style=\"font-size: 1.5em\"></i>' +\n              //'<i class=\"fa fa-play fa-stack-1x\"></i>'+\n            '</span>';\n          strClass.push(\"white_button\", \"refresh\", \"secondary\", \"button\", \"small\", \"radius\");\n          buttonCode = '<a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\" style=\"padding-left: 5px\">' + text + '</a>';\n          break;\n        case \"top\":\n          buttonContext = $(\"#\" + customId + \"refresh_buttons\", buttonsRow);\n          text = '<span class=\"fa-stack\">' +\n              '<i class=\"fa fa-refresh fa-stack-2x\" style=\"color: #dfdfdf\"></i>' +\n              '<i class=\"fa fa-play fa-stack-1x\"></i>' +\n            '</span>';\n          strClass.push(\"white_button\", \"toggle_top_button\", \"only-right-list\", \"secondary\", \"button\", \"small\", \"radius\");\n          buttonCode = '<a class=\"' + strClass.join(' ') + '\" style=\"padding-left:0px; margin-right: 20px\">' + text + '</a>';\n          break;\n        case \"main\":\n          buttonContext = $(\"#\" + customId + \"main_buttons\", buttonsRow);\n          text = button.text;\n          strClass.push(\"secondary\", \"button\", \"small\", \"radius\");\n          buttonCode = '<button class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</button>';\n          break;\n        case \"vmsplay_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmsplay_buttons\", buttonsRow);\n          text = button.text;\n          strClass.push(\"secondary\", \"button\", \"small\", \"radius\");\n          buttonCode = '<button class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</button>';\n          break;\n        case \"vmspause_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmspause_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"vmsstop_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmsstop_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"vmsrepeat_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmsrepeat_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"vmsdelete_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmsdelete_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"vmsplanification_buttons\":\n          buttonContext = $(\"#\" + customId + \"vmsplanification_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"more_select\":\n          buttonContext = $(\"#\" + customId + \"more_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"user_select\":\n          buttonContext = $(\"#\" + customId + \"user_buttons\", buttonsRow);\n          text = button.text;\n          buttonCode = '<li><a class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</a></li>';\n          break;\n        case \"del\":\n          buttonContext = $(\"#\" + customId + \"delete_buttons\", buttonsRow);\n          text = '<i class=\" fa fa-trash-o\"/> ';\n          strClass.push(\"alert\", \"button\", \"small\", \"radius\");\n          buttonCode = '<button class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</button>';\n          break;\n        default:\n          buttonContext = $(\"#\" + customId + \"main_buttons\", buttonsRow);\n          text = button.text;\n          strClass.push(\"secondary\", \"button\", \"small\", \"radius\");\n          buttonCode = '<button class=\"' + strClass.join(' ') + '\" href=\"' + buttonName + '\">' + text + '</button>';\n        }\n\n        buttonContext.append(buttonCode);\n      }//for each button in tab\n      //$('.top_button',actionBlock).button();\n      //$('.top_button',actionBlock).addClass(\"secondary small button\")\n\n      actionBlock.append(buttonsRow);\n\n      if ($(\"#\" + customId + \"more_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"more_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"user_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"user_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"vmsplanification_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"vmsplanification_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"vmsdelete_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"vmsdelete_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"vmsstop_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"vmsstop_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"vmspause_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"vmspause_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"vmsrepeat_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"vmsrepeat_buttons]\", actionBlock).remove()\n      }\n\n      if ($(\"#\" + customId + \"user_buttons li\", actionBlock).length == 0) {\n        $(\"a[data-dropdown=\" + customId + \"user_buttons]\", actionBlock).remove()\n      }\n      //actionBlock.foundationButtons();\n      $('.top_button, .list_button', actionBlock).attr('disabled', false);\n      $('.top_button, .list_button', actionBlock).attr('disabled', true);\n      $('.create_dialog_button', actionBlock).attr('disabled', false);\n      $('.alwaysActive', actionBlock).attr('disabled', false);\n\n      $('#' + customId + 'reset_button', actionBlock).on(\"click\", function() {\n        var formName = $(\".right-form\", context).attr(\"form_name\");\n        var initializeFunc = $(\".right-form\", context).data(\"initialize_func\");\n        Sunstone.popUpFormPanel(formName, tabName, null, true, initializeFunc);\n\n        return false;\n      })\n\n      $('#' + customId + 'submit_button', actionBlock).on(\"click\", function() {\n        var formName = $(\".right-form\", context).attr(\"form_name\");\n        Sunstone.submitFormPanel(formName, tabName);\n\n        return false;\n      })\n\n      $(document).foundation();\n    }//if tab exists\n  }\n\n  var _setupTabs = function() {\n    var topTabs = $(\".left-content ul li.topTab\");\n    var subTabs = $(\".left-content ul li.subTab\");\n\n    subTabs.on(\"click\", function() {\n      if ($(this).hasClass('topTab')) {\n        return false;\n      } else {\n        var tabName = $(this).attr('id').substring(3);\n        showTab(tabName);\n        return false;\n      }\n    });\n\n    topTabs.on(\"click\", function(e) {\n      var tabName = $(this).attr('id').substring(3);\n\n      if ($(this).hasClass(\"tab_with_no_content\")) {\n        //Subtabs have a class with the name of  this tab\n        var subtabs = $('div#menu li.' + tabName);\n        subtabs.fadeToggle('fast');\n        return false;\n      } else {\n        showTab(tabName);\n        return false;\n      }\n    });\n  };\n\n  var showTab = function(tabName) {\n    if (!SunstoneCfg['tabs'][tabName]) {\n      return false;\n    }\n\n    // TODO check if necessary\n    // last_selected_row = null;\n\n    if (tabName.indexOf('#') == 0) {\n      tabName = tabName.substring(1);\n    }\n\n    //clean selected menu\n    $(\"#navigation li\").removeClass(\"navigation-active-li\");\n\n    //select tab in left menu\n    var li = $(\"#navigation li#li_\" + tabName)\n    li.addClass(\"navigation-active-li\");\n\n    var tab = $('#' + tabName);\n    //show tab\n    $(\".tab\").hide();\n    tab.show();\n    $(\".right-info\", tab).hide();\n    $(\".right-form\", tab).hide();\n    $(\".right-list\", tab).show();\n    $(\".only-right-info\", tab).hide();\n    $(\".only-right-form\", tab).hide();\n    $(\".only-right-list\", tab).show();\n\n    // TODO Add recountCheckboxes\n    //recountCheckboxes($(\".dataTable\", tab).first());\n\n    // TODO Add opennebula.js\n    /*var res = SunstoneCfg['tabs'][activeTab]['resource']\n    if (res) {\n      Sunstone.runAction(res + \".list\");\n    } else {\n      var action = activeTab + \".refresh\";\n\n      if (SunstoneCfg[\"actions\"][action]) {\n        Sunstone.runAction(action);\n      }\n    }*/\n  }\n\n  var Sunstone = {\n    \"showAction\" : function() {\n      return SunstoneCfg[\"actions\"];\n    },\n\n    //Adds several actions encapsulated in an js object.\n    \"addActions\" : function(actions) {\n      for (action in actions) {\n        SunstoneCfg[\"actions\"][action] = actions[action];\n      }\n    },\n\n    \"addMainTab\" : function(tadId, tabObj) {\n      if (Config.isTabEnabled(tadId)) {\n        SunstoneCfg[\"tabs\"][tadId] = tabObj;\n      }\n    },\n\n    // TODO Check if necessary\n    \"addFormPanel\" : function(tadId, formName, formObj) {\n      SunstoneCfg[\"form_panels\"][formName] = formObj;\n    },\n\n    // TODO Not necessary, updateInfoPanelTab overwrites it\n    //Adds a new info panel\n    \"addInfoPanel\" : function(panelName, panelObj) {\n      SunstoneCfg[\"info_panels\"][panelName] = panelObj;\n    },\n\n    //Makes an info panel content pop up in the screen.\n    \"popUpInfoPanel\" : function(panelName, selectedTab) {\n      var activaTab = $(\"dd.active a\", $(\"#\" + panelName));\n      if (activaTab) {\n        var activaTabHref = activaTab.attr('href');\n      }\n\n      var dlTabs = $('<div id=\"' + panelName + '\" class=\"bordered-tabs\">\\\n              <dl class=\"tabs right-info-tabs text-center\" data-tab>\\\n              </dl>\\\n              <div class=\"tabs-content\"></div>\\\n              </div>\\\n          </div>');\n\n      var tabs = SunstoneCfg[\"info_panels\"][panelName];\n      var tab = null;\n      var active = false;\n\n      for (panelTabName in tabs) {\n        if (Config.isTabPanelEnabled(selectedTab, panelTabName) == false) {\n          continue;\n        }\n\n        tab = tabs[panelTabName];\n        var dd = $('<dd><a href=\"#' + panelTabName + '\">' + (tab.icon ? '<i class=\"fa ' + tab.icon + '\"></i><br>' : '') + tab.title + '</a></dd>').appendTo($('dl', dlTabs));\n        var li = $('<div id=\"' + panelTabName + '\" class=\"content\">' + tab.content + '</div>').appendTo($('.tabs-content', dlTabs));\n\n        if (activaTabHref) {\n          if (activaTabHref == \"#\" + panelTabName) {\n            dd.addClass('active');\n            li.addClass('active');\n          }\n        } else {\n          if (!active) {\n            dd.addClass('active');\n            li.addClass('active');\n            active = true;\n          }\n        }\n      }\n\n      popDialog(dlTabs, $(\"#\" + selectedTab));\n    },\n\n    // Replaces a tab from an info panel. Refreshes the DOM if wanted.\n    \"updateInfoPanelTab\" : function(panelName, panelTabId, panelTabObj, refresh) {\n      SunstoneCfg[\"info_panels\"][panelName][panelTabId] = panelTabObj;\n      if (refresh) {\n        var tabContent = panelTabObj.content;\n        $('div#' + panelName + ' div#' + panelTabId, info_panel_context).html(tabContent);\n      }\n    },\n\n    \"popUpFormPanel\" : function(formName, selectedTab, action, reset, initalizeFunc) {\n      var context = $(\"#\" + selectedTab);\n      popFormDialogLoading(context);\n\n      var formObj = SunstoneCfg[\"form_panels\"][formName];\n\n      $(\".right-form\", context).data(\"initialize_func\", initalizeFunc);\n\n      $(\".reset_button\", context).show();\n\n      if (formObj.advancedHtml) {\n        $(\".wizard_tabs\", context).show();\n      } else {\n        $(\".wizard_tabs\", context).hide();\n      }\n\n      if (action) {\n        $(\".right-form-title\", context).text(formObj[\"actions\"][action][\"title\"]);\n        $(\".submit_button\", context).text(formObj[\"actions\"][action][\"submit_text\"]);\n\n        if (formObj[\"actions\"][action][\"reset_button\"] == false) {\n          $(\".reset_button\", context).hide();\n        }\n      }\n\n      setTimeout(function() {\n        if (reset) {\n          if (!action) {\n            action = $(\"#\" + formName + \"_wizard\", context).attr(\"action\")\n          }\n\n          $(\"#advancedForms\", context).empty();\n          $(\"#wizardForms\", context).empty();\n        }\n\n        if ($(\"#\" + formName + \"_wizard\", context).length == 0) {\n          $(\"#advancedForms\", context).append(formObj.advancedHtml);\n          $(\"#wizardForms\", context).append(formObj.wizardHtml);\n\n          formObj.setup(context)\n        }\n\n        if (initalizeFunc) {\n          initalizeFunc(context);\n        }\n\n        if (action) {\n          $(\"#\" + formName + \"_wizard\", context).attr(\"action\", action);\n          $(\"#\" + formName + \"_advanced\", context).attr(\"action\", action);\n        }\n\n        popFormDialog(formName, context);\n\n      }, 13)\n\n    },\n\n    \"submitFormPanel\" : function(formName, selectedTab) {\n      var context = $(\"#\" + selectedTab);\n      popFormDialogLoading(context);\n\n      if ($(\"#wizardForms.active\", context).length > 0) {\n        $(\"#\" + formName + \"_wizard\", context).submit();\n      } else if ($(\"#advancedForms.active\", context).length > 0) {\n        $(\"#\" + formName + \"_advanced\", context).submit();\n      }\n    },\n\n    //Runs a predefined action. Wraps the calls to opennebula.js and\n    //can be use to run action depending on conditions and notify them\n    //if desired. Returns 1 if some problem has been detected: i.e\n    //the condition to run the action is not met, the action is not found\n    \"runAction\" : function(action, dataArg, extraParam) {\n      var actions = SunstoneCfg[\"actions\"];\n      if (!actions[action]) {\n        notifyError(\"Action \" + action + \" not defined\");\n        return 1;\n      }\n\n      var actionCfg = actions[action];\n      var notify = actionCfg.notify;\n\n      var condition = actionCfg[\"condition\"];\n\n      //Is the condition to run the action met?\n      //Should we inform if it is not met?\n      if (condition && !condition()) {\n        if (notify) {\n          notifyError(\"This action cannot be run\");\n        }\n        return 1;\n      }\n\n      var call = actionCfg[\"call\"];\n      var callback = actionCfg[\"callback\"];\n      var err = actionCfg[\"error\"];\n\n      switch (actionCfg.type){\n      case \"create\":\n      case \"register\":\n        call({data:dataArg, success: callback, error:err});\n        break;\n      case \"single\":\n        if (extraParam) {\n          call({\n            data:{\n              id:dataArg,\n              extraParam:extraParam\n            },\n            success: callback, error:err\n          });\n        } else {\n          call({data:{id:dataArg}, success: callback, error:err});\n        };\n        break;\n      case \"list\":\n        call({success: callback, error:err, options:dataArg});\n        break;\n      case \"monitor_global\":\n        call({\n            timeout: true,\n            success: callback,\n            error:err,\n            data: {monitor: dataArg}});\n        break;\n      case \"monitor\":\n      case \"monitor_single\":\n        call({\n            timeout: true,\n            success: callback,\n            error:err,\n            data: {id:dataArg, monitor: extraParam}});\n        break;\n      case \"multiple\":\n        $.each(dataArg, function() {\n          if (extraParam) {\n            call({\n                          data:{\n                            id:this,\n                            extraParam:extraParam\n                          },\n                          success: callback,\n                          error: err});\n          } else {\n            call({\n                data:{id:this},\n                success: callback,\n                error:err});\n          }\n        });\n        break;\n      default:\n        if (dataArg && extraParam) {\n          call(dataArg, extraParam);\n        } else if (dataArg) {\n          call(dataArg);\n        } else {\n          call();\n        }\n      }\n\n      if (notify) {\n        notifySubmit(action, dataArg, extraParam);\n      }\n\n      return 0;\n    },\n\n    //returns a button object from the desired tab\n    \"getButton\" : function(tadId, buttonName) {\n      var button = null;\n      var buttons = SunstoneCfg[\"tabs\"][tadId][\"buttons\"];\n      button = buttons[buttonName];\n      //not found, is it in the list then?\n      if (!button && buttons[\"action_list\"]) {\n        button = buttons[\"action_list\"][\"actions\"][buttonName];\n      }\n      return button;\n    },\n\n    \"rightInfoVisible\" : function(context) {\n      return $(\".right-info\", context).is(':visible');\n    },\n\n    \"rightListVisible\" : function(context) {\n      return $(\".right-list\", context).is(':visible');\n    },\n\n    \"rightInfoResourceId\" : function(context) {\n      return $(\".resource-id\", context).text();\n    },\n\n    'insertTabs': insertTabs,\n    // TODO check if it used externally\n    //'showTab': showTab\n  };\n\n  return Sunstone;\n});\n\n","define('tabs/infra-tab',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var infraTab = {\n    title: '<i class=\"fa fa-lg fa-fw fa-sitemap\"></i>&emsp;' + Locale.tr(\"Infrastructure\"),\n    no_content: true\n  }\n\n  return {\n    'definition': infraTab\n  }\n});\n\n","define('tabs/zones-tab/buttons',['require','utils/locale'],function(require) {\n  var Locale = require('utils/locale');\n\n  var zoneButtons = {\n    \"Zone.refresh\" : {\n      type: \"action\",\n      layout: \"refresh\",\n      alwaysActive: true\n    },\n    \"Zone.create_dialog\" : {\n      type: \"create_dialog\",\n      layout: \"create\"\n    },\n    \"Zone.delete\" : {\n      type: \"confirm\",\n      layout: \"del\",\n      text: Locale.tr(\"Delete\")\n    }\n  };\n\n  return zoneButtons;\n})\n;\n","\n/* START_TEMPLATE */\ndefine('hbs!tabs/zones-tab/table',['hbs','hbs/handlebars','templates/helpers/tr'], function( hbs, Handlebars ){ \nvar t = Handlebars.template({\"compiler\":[6,\">= 2.0.0-beta.1\"],\"main\":function(depth0,helpers,partials,data) {\n  var helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n  return \"<table id=\\\"datatable_zones\\\" class=\\\"datatable twelve\\\">\\n  <thead>\\n    <tr>\\n      <th class=\\\"check\\\">\\n        <input type=\\\"checkbox\\\" class=\\\"check_all\\\" value=\\\"\\\"/>\\n      </th>\\n      <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"ID\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n      <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Name\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n      <th>\"\n    + escapeExpression(((helpers.tr || (depth0 && depth0.tr) || helperMissing).call(depth0, \"Endpoint\", {\"name\":\"tr\",\"hash\":{},\"data\":data})))\n    + \"</th>\\n    </tr>\\n  </thead>\\n  <tbody id=\\\"tbodyzones\\\"></tbody>\\n</table>\";\n},\"useData\":true});\nHandlebars.registerPartial('tabs/zones-tab/table', t);\nreturn t;\n});\n/* END_TEMPLATE */\n;\n","define('tabs/zones-tab',['require','utils/locale','./zones-tab/buttons','hbs!./zones-tab/table'],function(require) {\n  var Locale = require('utils/locale');\n  var Buttons = require('./zones-tab/buttons')\n  var TableTemplate = require('hbs!./zones-tab/table')\n\n  var zonesTab = {\n    title: Locale.tr(\"Zones\"),\n    resource: 'Zone',\n    buttons: Buttons,\n    tabClass: \"subTab\",\n    parentTab: \"infra-tab\",\n    searchInput: '<input id=\"zone_search\" type=\"search\" placeholder=\"' + Locale.tr(\"Search\") + '\" />',\n    listHeader: '<i class=\"fa fa-fw fa-files-o\"></i>&emsp;' + Locale.tr(\"Zones\"),\n    infoHeader: '<i class=\"fa fa-fw fa-files-o\"></i>&emsp;' + Locale.tr(\"Zone\"),\n    subheader: '<span/> <small></small>&emsp;',\n    table: TableTemplate()\n  };\n\n  return {\n    'definition': zonesTab\n  }\n});\n\n","define('opennebula/helper',['require'],function(require) {\n  var Helper = {\n    \"resource_state\": function(type, value) {\n      var state;\n      switch (type)\n      {\n        case \"HOST\":\n        case \"host\":\n          state = tr([\"INIT\",\n                     \"MONITORING_MONITORED\",\n                     \"MONITORED\",\n                     \"ERROR\",\n                     \"DISABLED\",\n                     \"MONITORING_ERROR\",\n                     \"MONITORING_INIT\",\n                     \"MONITORING_DISABLED\"][value]);\n          break;\n        case \"HOST_SIMPLE\":\n        case \"host_simple\":\n          state = tr([\"INIT\",\n                     \"UPDATE\",\n                     \"ON\",\n                     \"ERROR\",\n                     \"OFF\",\n                     \"RETRY\",\n                     \"INIT\",\n                     \"OFF\"][value]);\n          break;\n        case \"VM\":\n        case \"vm\":\n          state = tr([\"INIT\",\n                     \"PENDING\",\n                     \"HOLD\",\n                     \"ACTIVE\",\n                     \"STOPPED\",\n                     \"SUSPENDED\",\n                     \"DONE\",\n                     \"FAILED\",\n                     \"POWEROFF\",\n                     \"UNDEPLOYED\"][value]);\n          break;\n        case \"VM_LCM\":\n        case \"vm_lcm\":\n          state = tr([\"LCM_INIT\",\n                     \"PROLOG\",\n                     \"BOOT\",\n                     \"RUNNING\",\n                     \"MIGRATE\",\n                     \"SAVE\",\n                     \"SAVE\",\n                     \"SAVE\",\n                     \"MIGRATE\",\n                     \"PROLOG\",\n                     \"EPILOG\",\n                     \"EPILOG\",\n                     \"SHUTDOWN\",\n                     \"SHUTDOWN\",\n                     \"FAILURE\",\n                     \"CLEANUP\",\n                     \"UNKNOWN\",\n                     \"HOTPLUG\",\n                     \"SHUTDOWN\",\n                     \"BOOT\",\n                     \"BOOT\",\n                     \"BOOT\",\n                     \"BOOT\",\n                     \"CLEANUP\",\n                     \"SNAPSHOT\",\n                     \"HOTPLUG\",\n                     \"HOTPLUG\",\n                     \"HOTPLUG\",\n                     \"HOTPLUG\",\n                     \"SHUTDOWN\",\n                     \"EPILOG\",\n                     \"PROLOG\",\n                     \"BOOT\"][value]);\n          break;\n        case \"IMAGE\":\n        case \"image\":\n          state = tr([\"INIT\",\n                     \"READY\",\n                     \"USED\",\n                     \"DISABLED\",\n                     \"LOCKED\",\n                     \"ERROR\",\n                     \"CLONE\",\n                     \"DELETE\",\n                     \"USED_PERS\"][value]);\n          break;\n        case \"DATASTORE\":\n        case \"datastore\":\n          state = tr([\"ON\",\n                     \"OFF\"][value]);\n          break;\n        case \"VM_MIGRATE_REASON\":\n        case \"vm_migrate_reason\":\n          state = tr([\"NONE\",\n                     \"ERROR\",\n                     \"USER\"][value]);\n          break;\n        case \"VM_MIGRATE_ACTION\":\n        case \"vm_migrate_action\":\n          state = tr([\"none\",\n                      \"migrate\",\n                      \"live-migrate\",\n                      \"shutdown\",\n                      \"shutdown-hard\",\n                      \"undeploy\",\n                      \"undeploy-hard\",\n                      \"hold\",\n                      \"release\",\n                      \"stop\",\n                      \"suspend\",\n                      \"resume\",\n                      \"boot\",\n                      \"delete\",\n                      \"delete-recreate\",\n                      \"reboot\",\n                      \"reboot-hard\",\n                      \"resched\",\n                      \"unresched\",\n                      \"poweroff\",\n                      \"poweroff-hard\"][value]);\n          break;\n        default:\n          return value;\n      }\n      if (!state) state = value\n      return state;\n    },\n\n    \"image_type\": function(value) {\n      return [\"OS\", \"CDROM\", \"DATABLOCK\", \"KERNEL\", \"RAMDISK\", \"CONTEXT\"][value];\n    },\n\n    \"action\": function(action, params) {\n      obj = {\n        \"action\": {\n          \"perform\": action\n        }\n      }\n      if (params) {\n        obj.action.params = params;\n      }\n      return obj;\n    },\n\n    \"request\": function(resource, method, data) {\n      var r = {\n        \"request\": {\n          \"resource\"  : resource,\n          \"method\"    : method\n        }\n      }\n      if (data) {\n        if (typeof(data) != \"array\") {\n          data = [data];\n        }\n        r.request.data = data;\n      }\n      return r;\n    },\n\n    \"pool\": function(resource, response) {\n      var pool_name = resource + \"_POOL\";\n      var type = resource;\n      var pool;\n\n      if (typeof(pool_name) == \"undefined\") {\n        return Error('Incorrect Pool');\n      }\n\n      var p_pool = [];\n\n      if (response[pool_name]) {\n        pool = response[pool_name][type];\n      } else {\n        pool = null;\n      }\n\n      if (pool == null) {\n        return p_pool;\n      } else if (pool.length) {\n        for (i = 0; i < pool.length; i++) {\n          p_pool[i] = {};\n          p_pool[i][type] = pool[i];\n        }\n        return (p_pool);\n      } else {\n        p_pool[0] = {};\n        p_pool[0][type] = pool;\n        return (p_pool);\n      }\n    },\n\n    \"pool_hash_processing\": function(pool_name, resource_name, response) {\n      var pool;\n\n      if (typeof(pool_name) == \"undefined\") {\n        return Error('Incorrect Pool');\n      }\n\n      var p_pool = {};\n\n      if (response[pool_name]) {\n        pool = response[pool_name][resource_name];\n      } else {\n        pool = null;\n      }\n\n      if (pool == null) {\n        return p_pool;\n      } else if (pool.length) {\n        for (i = 0; i < pool.length; i++) {\n          var res = {};\n          res[resource_name] = pool[i];\n\n          p_pool[res[resource_name]['ID']] = res;\n        }\n        return (p_pool);\n      } else {\n        var res = {};\n        res[resource_name] = pool;\n\n        p_pool[res[resource_name]['ID']] = res;\n\n        return (p_pool);\n      }\n    },\n\n    /* TODO remove if not necessary\n    \"clear_cache\" : function(cache_name) {\n      list_cache[cache_name] = null;\n      //console.log(cache_name+\" cache cleaned\");\n    }\n    */\n  }\n\n  return Helper;\n});\n\n","define('opennebula/action',['require','./helper'],function(require) {\n  var OpenNebulaHelper = require('./helper');\n\n  var listCache = {};\n  var listWaiting = {};\n  var listCallbacks = {};\n\n  var CACHE_EXPIRE = 60000; //ms\n\n  var clearCache = function(cache_name) {\n    listCache[cache_name] = null;\n    //console.log(cache_name+\" cache cleaned\");\n  }\n\n  var Action = {\n    \"create\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var data = params.data;\n      var request = OpenNebulaHelper.request(resource, \"create\", data);\n      var reqPath = path ? path : resource.toLowerCase();\n      var cache_name = params.cache_name ? params.cache_name : resource;\n\n      $.ajax({\n        url: reqPath,\n        type: \"POST\",\n        dataType: \"json\",\n        data: JSON.stringify(data),\n        contentType: \"application/json; charset=utf-8\",\n        success: function(response) {\n          clearCache(cache_name);\n\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebula.Error(response)) : null;\n        }\n      });\n    },\n\n    \"del\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var id = params.data.id;\n      var request = OpenNebulaHelper.request(resource, \"delete\", id);\n      var reqPath = path ? path : resource.toLowerCase();\n      var cache_name = params.cache_name ? params.cache_name : resource;\n\n      $.ajax({\n        url: reqPath + \"/\" + id,\n        type: \"DELETE\",\n        success: function() {\n          clearCache(cache_name);\n\n          return callback ? callback(request) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebula.Error(response)) : null;\n        }\n      });\n    },\n\n    \"list\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var timeout = params.timeout || false;\n      var request = OpenNebulaHelper.request(resource, \"list\");\n      var reqPath = path ? path : resource.toLowerCase();\n      var cache_name = params.cache_name ? params.cache_name : resource;\n\n      var options = params.options;\n      var force = false;\n      if (options) {\n        force = options.force;\n      }\n\n      if (force) {\n        clearCache(cache_name);\n      }\n\n      if (!force &&\n          listCache[cache_name] &&\n          listCache[cache_name][\"timestamp\"] + CACHE_EXPIRE > new Date().getTime()) {\n\n        //console.log(cache_name+\" list. Cache used\");\n\n        return callback ?\n            callback(request, listCache[cache_name][\"data\"]) : null;\n      }\n\n      // TODO: Because callbacks are queued, we may need to force a\n      // timeout. Otherwise a blocked call cannot be retried.\n\n      if (!listCallbacks[cache_name]) {\n        listCallbacks[cache_name] = [];\n      }\n\n      listCallbacks[cache_name].push({\n        success : callback,\n        error : callbackError\n      });\n\n      //console.log(cache_name+\" list. Callback queued\");\n\n      if (listWaiting[cache_name]) {\n        return;\n      }\n\n      listWaiting[cache_name] = true;\n\n      //console.log(cache_name+\" list. NO cache, calling ajax\");\n\n      $.ajax({\n        url: reqPath,\n        type: \"GET\",\n        data: {timeout: timeout},\n        dataType: \"json\",\n        success: function(response) {\n          var list = OpenNebulaHelper.pool(resource, response)\n\n          listCache[cache_name] = {\n            timestamp   : new Date().getTime(),\n            data        : list\n          };\n\n          listWaiting[cache_name] = false;\n\n          for (var i = 0; i < listCallbacks[cache_name].length; i++) {\n            var callback = listCallbacks[cache_name][i].success;\n\n            if (callback) {\n              //console.log(cache_name+\" list. Callback called\");\n              callback(request, list, response);\n            }\n          }\n\n          listCallbacks[cache_name] = [];\n\n          return;\n        },\n        error: function(response) {\n          listWaiting[cache_name] = false;\n\n          for (var i = 0; i < listCallbacks[cache_name].length; i++) {\n            var callback = listCallbacks[cache_name][i].error;\n\n            if (callback) {\n              //console.log(cache_name+\" list. ERROR Callback called\");\n              callback(request, OpenNebula.Error(response));\n            }\n          }\n\n          listCallbacks[cache_name] = [];\n\n          return;\n        }\n      });\n    },\n\n    \"list_in_zone\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var timeout = params.timeout || false;\n      var request = OpenNebulaHelper.request(resource, \"list\");\n      var reqPath = path ? path : resource.toLowerCase();\n\n      $.ajax({\n        url: reqPath,\n        type: \"GET\",\n        data: {timeout: timeout, zone_id: params.data.zone_id},\n        dataType: \"json\",\n        success: function(response) {\n          var list = OpenNebulaHelper.pool(resource, response)\n          return callback ?\n              callback(request, list) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebula.Error(response)) : null;\n        }\n      });\n    },\n\n    //Subresource examples: \"fetch_template\", \"log\"...\n    \"show\": function(params, resource, subresource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var id = params.data.id;\n      var request = subresource ?\n          OpenNebulaHelper.request(resource, subresource, id) :\n          OpenNebulaHelper.request(resource, \"show\", id);\n\n      var reqPath = path ? path : resource.toLowerCase();\n      var url = reqPath + \"/\" + id;\n      url = subresource ? url + \"/\" + subresource : url;\n\n      $.ajax({\n        url: url,\n        type: \"GET\",\n        dataType: \"json\",\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebula.Error(response)) : null;\n        }\n      });\n    },\n\n    \"chown\": function(params, resource, path) {\n      var id = params.data.extra_param;\n      var action_obj = {\"owner_id\": id,\n                        \"group_id\": \"-1\"};\n\n      OpenNebula.Action.simple_action(params,\n                                      resource,\n                                      \"chown\",\n                                      action_obj,\n                                      path);\n    },\n\n    \"chgrp\": function(params, resource, path) {\n      var id = params.data.extra_param;\n      var action_obj = {\"owner_id\": \"-1\",\n                        \"group_id\": id};\n\n      OpenNebula.Action.simple_action(params,\n                                      resource,\n                                      \"chown\",\n                                      action_obj,\n                                      path);\n    },\n\n    //Example: Simple action: publish. Simple action with action obj: deploy\n    \"simple_action\": function(params, resource, method, action_obj, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var id = params.data.id;\n\n      var action, request;\n      if (action_obj) {\n        action = OpenNebulaHelper.action(method, action_obj);\n        request = OpenNebulaHelper.request(resource, method, [id, action_obj]);\n      } else {\n        action = OpenNebulaHelper.action(method);\n        request = OpenNebulaHelper.request(resource, method, id);\n      };\n\n      var reqPath = path ? path : resource.toLowerCase();\n      var cache_name = params.cache_name ? params.cache_name : resource;\n\n      $.ajax({\n        url: reqPath + \"/\" + id + \"/action\",\n        type: \"POST\",\n        contentType: \"application/json; charset=utf-8\",\n        data: JSON.stringify(action),\n        success: function() {\n          clearCache(cache_name);\n\n          return callback ? callback(request) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebula.Error(response)) : null;\n        }\n      });\n    },\n\n    \"monitor\": function(params, resource, all, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var data = params.data;\n\n      var method = \"monitor\";\n      var request = OpenNebulaHelper.request(resource, method, data);\n\n      var url = path ? path : resource.toLowerCase();\n      url = all ? url + \"/monitor\" : url + \"/\" + params.data.id + \"/monitor\";\n\n      $.ajax({\n        url: url,\n        type: \"GET\",\n        data: data['monitor'],\n        dataType: \"json\",\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebula.Error(response)) : null;\n        }\n      });\n    },\n\n    \"accounting\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var data = params.data;\n\n      var method = \"accounting\";\n      var request = OpenNebulaHelper.request(resource, method, data);\n\n      var url = path ? path : resource.toLowerCase() + \"/accounting\";\n\n      $.ajax({\n        url: url,\n        type: \"GET\",\n        data: data,\n        dataType: \"json\",\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebula.Error(response)) : null;\n        }\n      });\n    },\n\n    \"showback\": function(params, resource, path) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var data = params.data;\n\n      var method = \"showback\";\n      var request = OpenNebulaHelper.request(resource, method, data);\n\n      var url = path ? path : resource.toLowerCase() + \"/showback\";\n\n      $.ajax({\n        url: url,\n        type: \"GET\",\n        data: data,\n        dataType: \"json\",\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebula.Error(response)) : null;\n        }\n      });\n    },\n\n    \"clear_cache\": clearCache\n  }\n\n  return Action;\n});\n\n","define('opennebula/auth',['require','./helper'],function(require) {\n  var OpenNebulaHelper = require('./helper');\n\n  var RESOURCE = \"AUTH\";\n\n  var Auth = {\n    \"login\": function(params) {\n      var callback = params.success;\n      var callbackError = params.error;\n      var username = params.data.username;\n      var password = params.data.password;\n      var remember = params.remember;\n\n      var request = OpenNebulaHelper.request(RESOURCE, \"login\");\n\n      $.ajax({\n        url: \"login\",\n        type: \"POST\",\n        data: {remember: remember},\n        beforeSend : function(req) {\n          var token = username + ':' + password;\n          var authString = 'Basic ';\n          if (typeof(btoa) === 'function')\n              authString += btoa(unescape(encodeURIComponent(token)))\n          else {\n            token = CryptoJS.enc.Utf8.parse(token);\n            authString += CryptoJS.enc.Base64.stringify(token)\n          }\n\n          req.setRequestHeader(\"Authorization\", authString);\n        },\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebula.Error(response)) : null;\n        }\n      });\n    },\n\n    \"logout\": function(params) {\n      var callback = params.success;\n      var callbackError = params.error;\n\n      var request = OpenNebulaHelper.request(RESOURCE, \"logout\");\n\n      $.ajax({\n        url: \"logout\",\n        type: \"POST\",\n        success: function(response) {\n          $.cookie(\"one-user\", null);\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callbackError ?\n              callbackError(request, OpenNebula.Error(response)) : null;\n        }\n      });\n    }\n  }\n\n  return Auth;\n})\n;\n","define('opennebula/error',['require'],function(require) {\n  var Error = function(resp) {\n    var error = {};\n    if (resp.responseText) {\n      try {\n        error = JSON.parse(resp.responseText);\n      }\n      catch (e) {\n        error.error = {message: \"It appears there was a server exception. Please check server's log.\"};\n      };\n    } else {\n      error.error = {};\n    }\n    error.error.http_status = resp.status;\n    return error;\n  }\n\n  return Error;\n})\n;\n","define('opennebula/acl',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"ACL\";\n\n  var Acl = {\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    }\n  }\n\n  return Acl;\n})\n;\n","define('opennebula/cluster',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"CLUSTER\";\n\n  var Cluster = {\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"list_in_zone\" : function(params) {\n      OpenNebulaAction.list_in_zone(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"addhost\" : function(params) {\n      var action_obj = {\"host_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"addhost\", action_obj);\n    },\n    \"delhost\" : function(params) {\n      var action_obj = {\"host_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"delhost\", action_obj);\n    },\n    \"adddatastore\" : function(params) {\n      var action_obj = {\"ds_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"adddatastore\", action_obj);\n    },\n    \"deldatastore\" : function(params) {\n      var action_obj = {\"ds_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"deldatastore\", action_obj);\n    },\n    \"addvnet\" : function(params) {\n      var action_obj = {\"vnet_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"addvnet\", action_obj);\n    },\n    \"delvnet\" : function(params) {\n      var action_obj = {\"vnet_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"delvnet\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"update\" : function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    }\n  }\n\n  return Cluster;\n})\n;\n","define('opennebula/datastore',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"DATASTORE\";\n\n  var Datastore = {\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"list_in_zone\" : function(params) {\n      OpenNebulaAction.list_in_zone(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"update\" : function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"enable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"enable\");\n    },\n    \"disable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"disable\");\n    }\n  }\n\n  return Datastore;\n})\n;\n","define('opennebula/group',['require','./action','./helper','./error'],function(require) {\n  var OpenNebulaAction = require('./action');\n  var OpenNebulaHelper = require('./helper');\n  var OpenNebulaError  = require('./error');\n\n  var RESOURCE = \"GROUP\";\n\n  var Group =  {\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      var req_path = RESOURCE.toLowerCase();\n      var callback = params.success;\n      var callback_error = params.error;\n      var timeout = params.timeout || false;\n      var request = OpenNebulaHelper.request(RESOURCE, \"list\");\n\n      $.ajax({\n        url: req_path,\n        type: \"GET\",\n        data: {timeout: timeout},\n        dataType: \"json\",\n        success: function(response) {\n          // Get the default group quotas\n          default_group_quotas = Quotas.default_quotas(response.GROUP_POOL.DEFAULT_GROUP_QUOTAS);\n\n          var list = OpenNebulaHelper.pool(RESOURCE, response)\n          var quotas_hash = OpenNebulaHelper.pool_hash_processing(\n              'GROUP_POOL', 'QUOTAS', response);\n\n          return callback ?\n              callback(request, list, quotas_hash) : null;\n        },\n        error: function(response) {\n          return callback_error ?\n              callback_error(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"set_quota\" : function(params) {\n      var action_obj = {quotas :  params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"set_quota\", action_obj);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"accounting\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, false);\n    },\n    \"add_admin\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_admin\", action_obj);\n    },\n    \"del_admin\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_admin\", action_obj);\n    }\n  }\n\n  return Group;\n})\n;\n","define('opennebula/host',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"HOST\";\n\n  var Host = {\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"list_in_zone\" : function(params) {\n      OpenNebulaAction.list_in_zone(params, RESOURCE);\n    },\n    \"show\": function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"enable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"enable\");\n    },\n    \"disable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"disable\");\n    },\n    \"monitor\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, false);\n    },\n    \"pool_monitor\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, true);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    }\n  }\n\n  return Host;\n})\n;\n","define('opennebula/Image',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"IMAGE\";\n\n  var Image = {\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\": function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"enable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"enable\");\n    },\n    \"disable\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"disable\");\n    },\n    \"persistent\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"persistent\");\n    },\n    \"nonpersistent\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"nonpersistent\");\n    },\n    \"chtype\": function(params) {\n      var action_obj = {\"type\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chtype\", action_obj);\n    },\n    \"clone\" : function(params) {\n      var action_obj = params.data.extra_param ? params.data.extra_param : {};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"clone\", action_obj);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    }\n  }\n\n  return Image;\n})\n;\n","define('opennebula/marketplace',['require','./action','./error'],function(require) {\n  var OpenNebulaAction = require('./action');\n  var OpenNebulaError = require('./error');\n\n  var RESOURCE = \"MARKETPLACE\";\n\n  var Marketplace = {\n    \"show\" : function(params) {\n      params.error = function() {\n        return notifyError(\"Cannot connect to OpenNebula Marketplace\")\n      };\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      //Custom list request function, since the contents do not come\n      //in the same format as the rest of opennebula resources.\n      var callback = params.success;\n      var callback_error = params.error;\n      var timeout = params.timeout || false;\n      var request = OpenNebula.Helper.request('MARKETPLACE', 'list');\n\n      $.ajax({\n        url: 'marketplace',\n        type: 'GET',\n        data: {timeout: timeout},\n        dataType: \"json\",\n        success: function(response) {\n          $(\".marketplace_error_message\").hide();\n          return callback ? callback(request, response) : null;\n        },\n        error: function(res) {\n          $(\".marketplace_error_message\").show();\n          return callback_error ? callback_error(request, OpenNebulaError(res)) : null;\n        }\n      });\n    }\n  }\n\n  return Marketplace;\n})\n;\n","define('opennebula/network',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"VNET\";\n\n  var Network =  {\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"list_in_zone\" : function(params) {\n      OpenNebulaAction.list_in_zone(params, RESOURCE);\n    },\n    \"show\": function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"publish\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"publish\");\n    },\n    \"unpublish\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"unpublish\");\n    },\n    \"hold\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"hold\", action_obj);\n    },\n    \"release\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"release\", action_obj);\n    },\n    \"add_ar\" : function(params) {\n      var action_obj = {\"ar_template\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_ar\", action_obj);\n    },\n    \"rm_ar\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rm_ar\", action_obj);\n    },\n    \"update_ar\": function(params) {\n      var action_obj = {\"ar_template\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update_ar\", action_obj);\n    },\n    \"reserve\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"reserve\", action_obj);\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    }\n  }\n\n  return Network;\n})\n;\n","define('opennebula/role',['require','./action','./error'],function(require) {\n  var OpenNebulaAction = require('./action');\n  var OpenNebulaError = require('./error');\n\n  var RESOURCE = \"DOCUMENT\";\n  var PATH = 'service';\n\n  var generate_batch_action_params = function() {\n    // TODO Defini this function\n    /* var generate_batch_action_params = function(){\n    var action_obj = {\n        \"period\" : $(\"#batch_action_period\").val(),\n        \"number\" : $(\"#batch_action_number\").val()};\n\n    return action_obj;\n    }*/\n    return {}\n  }\n\n  var Role = {\n    \"state\" : function(state_int) {\n      state_int = state_int ? state_int : 0;\n      var state = [\n          tr(\"PENDING\"),\n          tr(\"DEPLOYING\"),\n          tr(\"RUNNING\"),\n          tr(\"UNDEPLOYING\"),\n          tr(\"WARNING\"),\n          tr(\"DONE\"),\n          tr(\"FAILED_UNDEPLOYING\"),\n          tr(\"FAILED_DEPLOYING\"),\n          tr(\"SCALING\"),\n          tr(\"FAILED_SCALING\"),\n          tr(\"COOLDOWN\")\n      ][state_int]\n      return state ? state : state_int;\n    },\n    \"hold\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"hold\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"release\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"release\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"suspend\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"suspend\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"resume\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"resume\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"stop\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"stop\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"boot\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"boot\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"delete_recreate\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"delete-recreate\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"reboot\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"reboot\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"reboot_hard\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"reboot-hard\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"poweroff\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"poweroff\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"poweroff_hard\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"poweroff-hard\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"undeploy\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"undeploy\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"undeploy_hard\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"undeploy-hard\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"snapshot_create\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"snapshot-create\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"shutdown\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"shutdown\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"cancel\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"shutdown-hard\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"delete\",\n                                      generate_batch_action_params(),\n                                      PATH);\n    },\n    \"recover\" : function(params) {\n      OpenNebulaAction.simple_action(params,\n                                      RESOURCE,\n                                      \"recover\",\n                                      null,\n                                      PATH);\n    },\n    \"update\" : function(params) {\n      var request = OpenNebula.Helper.request(RESOURCE, \"update\", params.data.id);\n\n      $.ajax({\n        url: PATH + \"/\" + params.data.id,\n        type: \"PUT\",\n        dataType: \"json\",\n        contentType: \"application/json; charset=utf-8\",\n        data: JSON.stringify(params.data.extra_param),\n        success: function(response) {\n          return params.success ? params.success(request, response) : null;\n        },\n        error: function(response) {\n          return params.error ? params.error(request, OpenNebulaError(response)) : null;\n        }\n      });\n    }\n  }\n\n  return Role;\n})\n;\n","define('opennebula/securitygroup',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"SECURITY_GROUP\";\n\n  var SecurityGroup = {\n    \"resource\" : \"SECURITY_GROUP\",\n\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"clone\" : function(params) {\n      var name = params.data.extra_param ? params.data.extra_param : \"\";\n      var action_obj = {\"name\" : name};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"clone\", action_obj);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    }\n  }\n\n  return SecurityGroup;\n})\n;\n","define('opennebula/service',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"DOCUMENT\";\n  var PATH = 'service';\n  var CACHE_NAME = 'SERVICE'\n\n  var Service = {\n    \"del\": function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.del(params, RESOURCE, PATH);\n    },\n    \"list\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.list(params, RESOURCE, PATH)\n    },\n    \"show\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.show(params, RESOURCE, false, PATH)\n    },\n    \"chown\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.chown(params, RESOURCE, PATH);\n    },\n    \"chgrp\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.chgrp(params, RESOURCE, PATH);\n    },\n    \"chmod\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj, PATH);\n    },\n    \"shutdown\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"shutdown\", null, PATH);\n    },\n    \"recover\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"recover\", null, PATH);\n    },\n    \"state\" : function(state_int) {\n      var state = [\n          tr(\"PENDING\"),\n          tr(\"DEPLOYING\"),\n          tr(\"RUNNING\"),\n          tr(\"UNDEPLOYING\"),\n          tr(\"WARNING\"),\n          tr(\"DONE\"),\n          tr(\"FAILED_UNDEPLOYING\"),\n          tr(\"FAILED_DEPLOYING\"),\n          tr(\"SCALING\"),\n          tr(\"FAILED_SCALING\"),\n          tr(\"COOLDOWN\")\n      ][state_int]\n      return state ? state : state_int;\n    }\n  }\n\n  return Service;\n})\n\n;\n","define('opennebula/servicetemplate',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"DOCUMENT\";\n  var PATH = 'service_template';\n  var CACHE_NAME = CACHE_NAME;\n\n  var ServiceTemplate = {\n    \"create\": function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.create(params, RESOURCE, PATH);\n    },\n\n    \"instantiate\": function(params) {\n      params.cache_name = CACHE_NAME;\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"instantiate\", action_obj, PATH);\n    },\n    \"update\": function(params) {\n      params.cache_name = CACHE_NAME;\n      var action_obj = {\"template_json\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj, PATH);\n    },\n    \"del\": function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.del(params, RESOURCE, PATH);\n    },\n    \"list\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.list(params, RESOURCE, PATH)\n    },\n    \"show\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.show(params, RESOURCE, false, PATH)\n    },\n    \"chown\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.chown(params, RESOURCE, PATH);\n    },\n    \"chgrp\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.chgrp(params, RESOURCE, PATH);\n    },\n    \"chmod\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj, PATH);\n    }\n  }\n\n  return ServiceTemplate;\n})\n;\n","define('opennebula/support',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"REQUEST\";\n  var PATH = 'support/request';\n  var CACHE_NAME = \"REQUEST\";\n\n  var Support = {\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE, PATH);\n    },\n    \"update\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", params.data.extra_param, PATH);\n    },\n    \"list\" : function(params) {\n      params.cache_name = CACHE_NAME;\n      OpenNebulaAction.clear_cache(params.cache_name);\n      OpenNebulaAction.list(params, RESOURCE, PATH)\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, false, PATH)\n    }\n  }\n\n  return Support;\n})\n;\n","define('opennebula/Template',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"TEMPLATE\";\n\n  var Template = {\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"update\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"publish\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"publish\");\n    },\n    \"unpublish\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"unpublish\");\n    },\n    \"instantiate\" : function(params) {\n      var action_obj = params.data.extra_param ? params.data.extra_param : {};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"instantiate\", action_obj);\n    },\n    \"clone\" : function(params) {\n      var name = params.data.extra_param ? params.data.extra_param : \"\";\n      var action_obj = {\"name\" : name};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"clone\", action_obj);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    }\n  }\n\n  return Template;\n})\n;\n","define('opennebula/user',['require','./action','./helper','./error'],function(require) {\n  var OpenNebulaAction = require('./action'),\n      OpenNebulaHelper = require('./helper'),\n      OpenNebulaError  = require('./error');\n\n  var RESOURCE = \"USER\";\n\n  var User = {\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      var req_path = RESOURCE.toLowerCase();\n      var callback = params.success;\n      var callback_error = params.error;\n      var timeout = params.timeout || false;\n      var request = OpenNebulaHelper.request(RESOURCE, \"list\");\n\n      $.ajax({\n        url: req_path,\n        type: \"GET\",\n        data: {timeout: timeout},\n        dataType: \"json\",\n        success: function(response) {\n          default_user_quotas = Quotas.default_quotas(response.USER_POOL.DEFAULT_USER_QUOTAS);\n\n          var list = OpenNebulaHelper.pool(RESOURCE, response)\n          var quotas_hash = OpenNebulaHelper.pool_hash_processing(\n              'USER_POOL', 'QUOTAS', response);\n\n          return callback ?\n              callback(request, list, quotas_hash) : null;\n        },\n        error: function(response) {\n          return callback_error ?\n              callback_error(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"passwd\": function(params) {\n      var action_obj = {\"password\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"passwd\", action_obj);\n    },\n    \"chgrp\" : function(params) {\n      var action_obj = {\"group_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chgrp\", action_obj);\n    },\n    \"chauth\" : function(params) {\n      var action_obj = {\"auth_driver\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chauth\", action_obj);\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"accounting\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, false);\n    },\n    \"set_quota\" : function(params) {\n      var action_obj = {quotas :  params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"set_quota\", action_obj);\n    },\n    \"addgroup\" : function(params) {\n      var action_obj = {\"group_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"addgroup\", action_obj);\n    },\n    \"delgroup\" : function(params) {\n      var action_obj = {\"group_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"delgroup\", action_obj);\n    }\n  }\n\n  return User;\n})\n;\n","define('opennebula/vdc',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"VDC\";\n\n  var Vdc = {\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"update\" : function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n\n    \"add_group\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_group\", action_obj);\n    },\n    \"del_group\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_group\", action_obj);\n    },\n\n    \"add_cluster\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_cluster\", action_obj);\n    },\n    \"del_cluster\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_cluster\", action_obj);\n    },\n\n    \"add_host\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_host\", action_obj);\n    },\n    \"del_host\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_host\", action_obj);\n    },\n\n    \"add_datastore\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_datastore\", action_obj);\n    },\n    \"del_datastore\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_datastore\", action_obj);\n    },\n\n    \"add_vnet\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"add_vnet\", action_obj);\n    },\n    \"del_vnet\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"del_vnet\", action_obj);\n    }\n  }\n\n  return Vdc;\n})\n;\n","define('opennebula/vm',['require','./action','./helper','./error'],function(require) {\n  var OpenNebulaAction = require('./action'),\n      OpenNebulaHelper = require('./helper'),\n      OpenNebulaError  = require('./error');\n\n  var RESOURCE = \"VM\";\n\n  var VM = {\n    \"state\": {\n      \"INIT\"      : 0,\n      \"PENDING\"   : 1,\n      \"HOLD\"      : 2,\n      \"ACTIVE\"    : 3,\n      \"STOPPED\"   : 4,\n      \"SUSPENDED\" : 5,\n      \"DONE\"      : 6,\n      \"FAILED\"    : 7,\n      \"POWEROFF\"  : 8,\n      \"UNDEPLOYED\": 9\n    },\n\n    \"lcm_state\": {\n      \"LCM_INIT\"            : 0,\n      \"PROLOG\"              : 1,\n      \"BOOT\"                : 2,\n      \"RUNNING\"             : 3,\n      \"MIGRATE\"             : 4,\n      \"SAVE_STOP\"           : 5,\n      \"SAVE_SUSPEND\"        : 6,\n      \"SAVE_MIGRATE\"        : 7,\n      \"PROLOG_MIGRATE\"      : 8,\n      \"PROLOG_RESUME\"       : 9,\n      \"EPILOG_STOP\"         : 10,\n      \"EPILOG\"              : 11,\n      \"SHUTDOWN\"            : 12,\n      \"CANCEL\"              : 13,\n      \"FAILURE\"             : 14,\n      \"CLEANUP_RESUBMIT\"    : 15,\n      \"UNKNOWN\"             : 16,\n      \"HOTPLUG\"             : 17,\n      \"SHUTDOWN_POWEROFF\"   : 18,\n      \"BOOT_UNKNOWN\"        : 19,\n      \"BOOT_POWEROFF\"       : 20,\n      \"BOOT_SUSPENDED\"      : 21,\n      \"BOOT_STOPPED\"        : 22,\n      \"CLEANUP_DELETE\"      : 23,\n      \"HOTPLUG_SNAPSHOT\"    : 24,\n      \"HOTPLUG_NIC\"         : 25,\n      \"HOTPLUG_SAVEAS\"           : 26,\n      \"HOTPLUG_SAVEAS_POWEROFF\"  : 27,\n      \"HOTPLUG_SAVEAS_SUSPENDED\" : 28,\n      \"SHUTDOWN_UNDEPLOY\"   : 29,\n      \"EPILOG_UNDEPLOY\"     : 30,\n      \"PROLOG_UNDEPLOY\"     : 31,\n      \"BOOT_UNDEPLOY\"       : 32,\n      \"HOTPLUG_PROLOG_POWEROFF\"   : 33,\n      \"HOTPLUG_EPILOG_POWEROFF\"   : 34\n    },\n\n    \"create\": function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\": function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\": function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\": function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"chown\" : function(params) {\n      OpenNebulaAction.chown(params, RESOURCE);\n    },\n    \"chgrp\" : function(params) {\n      OpenNebulaAction.chgrp(params, RESOURCE);\n    },\n    \"chmod\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"chmod\", action_obj);\n    },\n    \"shutdown\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"shutdown\");\n    },\n    \"hold\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"hold\");\n    },\n    \"release\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"release\");\n    },\n    \"stop\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"stop\");\n    },\n    \"cancel\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"cancel\");\n    },\n    \"suspend\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"suspend\");\n    },\n    \"resume\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"resume\");\n    },\n    \"restart\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"restart\");\n    },\n    \"resubmit\": function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"resubmit\");\n    },\n    \"poweroff\" : function(params) {\n      var action_obj = {\"hard\": false};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"poweroff\", action_obj);\n    },\n    \"poweroff_hard\" : function(params) {\n      var action_obj = {\"hard\": true};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"poweroff\", action_obj);\n    },\n    \"undeploy\" : function(params) {\n      var action_obj = {\"hard\": false};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"undeploy\", action_obj);\n    },\n    \"undeploy_hard\" : function(params) {\n      var action_obj = {\"hard\": true};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"undeploy\", action_obj);\n    },\n    \"reboot\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"reboot\");\n    },\n    \"reset\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"reset\");\n    },\n\n    \"log\": function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"log\");\n    },\n    \"deploy\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"deploy\", action_obj);\n    },\n    \"livemigrate\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"livemigrate\", action_obj);\n    },\n    \"migrate\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"migrate\", action_obj);\n    },\n    \"saveas\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"saveas\", action_obj);\n    },\n    \"snapshot_create\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"snapshot_create\", action_obj);\n    },\n    \"snapshot_revert\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"snapshot_revert\", action_obj);\n    },\n    \"snapshot_delete\": function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"snapshot_delete\", action_obj);\n    },\n    \"vnc\" : function(params, startstop) {\n      var callback = params.success;\n      var callback_error = params.error;\n      var id = params.data.id;\n      var resource = RESOURCE;\n\n      var method = startstop;\n      var action = OpenNebulaHelper.action(method);\n      var request = OpenNebulaHelper.request(resource, method, id);\n      $.ajax({\n        url: \"vm/\" + id + \"/\" + method,\n        type: \"POST\",\n        dataType: \"json\",\n        success: function(response) {\n          return callback ? callback(request, response) : null;\n        },\n        error: function(response) {\n          return callback_error ?\n              callback_error(request, OpenNebulaError(response)) : null;\n        }\n      });\n    },\n    \"startvnc\" : function(params) {\n      OpenNebula.VM.vnc(params, \"startvnc\");\n    },\n    \"update\": function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"monitor\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, false);\n    },\n    \"pool_monitor\" : function(params) {\n      OpenNebulaAction.monitor(params, RESOURCE, true);\n    },\n    \"resize\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"resize\", action_obj);\n    },\n    \"attachdisk\" : function(params) {\n      var action_obj = {\"disk_template\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"attachdisk\", action_obj);\n    },\n    \"detachdisk\" : function(params) {\n      var action_obj = {\"disk_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"detachdisk\", action_obj);\n    },\n    \"attachnic\" : function(params) {\n      var action_obj = {\"nic_template\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"attachnic\", action_obj);\n    },\n    \"detachnic\" : function(params) {\n      var action_obj = {\"nic_id\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"detachnic\", action_obj);\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    },\n    \"resched\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"resched\");\n    },\n    \"unresched\" : function(params) {\n      OpenNebulaAction.simple_action(params, RESOURCE, \"unresched\");\n    },\n    \"recover\" : function(params) {\n      var action_obj = {\"with\": params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"recover\", action_obj);\n    },\n    \"accounting\": function(params) {\n      OpenNebulaAction.accounting(params, RESOURCE);\n    },\n    \"showback\": function(params) {\n      OpenNebulaAction.showback(params, RESOURCE);\n    }\n  }\n\n  return VM;\n})\n;\n","define('opennebula/zone',['require','./action'],function(require) {\n  var OpenNebulaAction = require('./action');\n\n  var RESOURCE = \"ZONE\";\n\n  var Zone = {\n    \"create\" : function(params) {\n      OpenNebulaAction.create(params, RESOURCE);\n    },\n    \"del\" : function(params) {\n      OpenNebulaAction.del(params, RESOURCE);\n    },\n    \"list\" : function(params) {\n      OpenNebulaAction.list(params, RESOURCE);\n    },\n    \"show\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE);\n    },\n    \"update\" : function(params) {\n      var action_obj = {\"template_raw\" : params.data.extra_param};\n      OpenNebulaAction.simple_action(params, RESOURCE, \"update\", action_obj);\n    },\n    \"fetch_template\" : function(params) {\n      OpenNebulaAction.show(params, RESOURCE, \"template\");\n    },\n    \"rename\" : function(params) {\n      var action_obj = params.data.extra_param;\n      OpenNebulaAction.simple_action(params, RESOURCE, \"rename\", action_obj);\n    }\n  }\n\n  return Zone;\n})\n;\n","define('opennebula',['require','jquery','./opennebula/helper','./opennebula/action','./opennebula/auth','./opennebula/error','./opennebula/acl','./opennebula/cluster','./opennebula/datastore','./opennebula/group','./opennebula/host','./opennebula/Image','./opennebula/marketplace','./opennebula/network','./opennebula/role','./opennebula/securitygroup','./opennebula/service','./opennebula/servicetemplate','./opennebula/support','./opennebula/Template','./opennebula/user','./opennebula/vdc','./opennebula/vm','./opennebula/zone'],function(require) {\n  require('jquery');\n\n  var Helper = require('./opennebula/helper'),\n      Action = require('./opennebula/action'),\n      Auth   = require('./opennebula/auth'),\n      Error  = require('./opennebula/error'),\n\n      Acl             = require('./opennebula/acl'),\n      Cluster         = require('./opennebula/cluster'),\n      Datastore       = require('./opennebula/datastore'),\n      Group           = require('./opennebula/group'),\n      Host            = require('./opennebula/host'),\n      Image           = require('./opennebula/Image'),\n      Marketplace     = require('./opennebula/marketplace'),\n      Network         = require('./opennebula/network'),\n      Role            = require('./opennebula/role'),\n      securitygroup   = require('./opennebula/securitygroup'),\n      Service         = require('./opennebula/service'),\n      ServiceTemplate = require('./opennebula/servicetemplate'),\n      Support         = require('./opennebula/support'),\n      Template        = require('./opennebula/Template'),\n      User            = require('./opennebula/user'),\n      Vdc             = require('./opennebula/vdc'),\n      Vm              = require('./opennebula/vm'),\n      Zone            = require('./opennebula/zone')\n\n  if (typeof(csrftoken) != \"undefined\") {\n    $.ajaxPrefilter(function(options, originalOptions, jqXHR) {\n      var params = originalOptions.data;\n\n      if (typeof(params) == \"string\") {\n        params = JSON.parse(params);\n        params[\"csrftoken\"] = csrftoken;\n        options.data = JSON.stringify(params);\n      } else {\n        params = params || {};\n        params[\"csrftoken\"] = csrftoken;\n        options.data = $.param(params);\n      }\n    });\n  }\n\n  $.ajaxSetup({\n    converters: {\n      \"text json\": function(textValue) {\n        return jQuery.parseJSON(jQuery('<div/>').text(textValue).html());\n      }\n    }\n  });\n\n  var OpenNebula = {\n    'Helper': Helper,\n    'Action': Action,\n    'Auth': Auth,\n    'Error': Error,\n    'Acl': Acl,\n    'Cluster': Cluster,\n    'Datastore': Datastore,\n    'Group': Group,\n    'Host': Host,\n    'Image': Image,\n    'Marketplace': Marketplace,\n    'Network': Network,\n    'Role': Role,\n    'SecurityGroup': securitygroup,\n    'Service': Service,\n    'ServiceTemplate': ServiceTemplate,\n    'Support': Support,\n    'Template': Template,\n    'User': User,\n    'Vdc': Vdc,\n    'Vm': Vm,\n    'Zone': Zone\n  }\n\n  return OpenNebula;\n});\n\n","/*require(['sunstone', 'tab', 'hbs!test', 'jquery'],\nfunction(Sunstone,   _,    template) {\n  Sunstone.addAction(\"pepe\", \"luis\");\n  var pepe = \"aaaa\";\n  document.body.innerHTML = template({adjective: \"favorite\"});\n\n  console.log(Sunstone.showAction())\n  console.log(config)\n});*/\n\ndefine('app',['require','jquery','sunstone','tabs/infra-tab','tabs/zones-tab','opennebula'],function(require) {\n  /*require('tab');\n  require('jquery');\n\n  var Sunstone = require('sunstone'),\n      template = require('hbs!test');\n\n  Sunstone.addActions({\"pepe\": \"luis\"});\n  var pepe = \"aaaa\";\n  document.body.innerHTML = template({adjective: \"favorite\"});\n\n  console.log(Sunstone.showAction())\n  console.log(config)*/\n  require('jquery');\n\n  var Sunstone = require('sunstone');\n  require('tabs/infra-tab');\n  require('tabs/zones-tab');\n\n  var OpenNebula = require('opennebula');\n  OpenNebula.Zone.list({success: function(request, response){console.log(response)}})\n  var tabs = [\n    'infra-tab',\n    'zones-tab'\n  ];\n\n  var tab;\n  $.each(tabs, function(index, tabName) {\n    tab = require('tabs/' + tabName);\n    Sunstone.addMainTab(tabName, tab.definition);\n  });\n\n  $(document).ready(function() {\n    Sunstone.insertTabs();\n  });\n});\n\n","require.config({\n  paths: {\n    /* jQuery */\n    'jquery': '../bower_components/jquery/dist/jquery.min',\n\n    /* Foundation */\n    'foundation.core': '../bower_components/foundation/js/foundation/foundation',\n    'foundation.abide': '../bower_components/foundation/js/foundation/foundation.abide',\n    'foundation.accordion': '../bower_components/foundation/js/foundation/foundation.accordion',\n    'foundation.alert': '../bower_components/foundation/js/foundation/foundation.alert',\n    'foundation.clearing': '../bower_components/foundation/js/foundation/foundation.clearing',\n    'foundation.dropdown': '../bower_components/foundation/js/foundation/foundation.dropdown',\n    'foundation.equalizer': '../bower_components/foundation/js/foundation/foundation.equalizer',\n    'foundation.interchange': '../bower_components/foundation/js/foundation/foundation.interchange',\n    'foundation.joyride': '../bower_components/foundation/js/foundation/foundation.joyride',\n    'foundation.magellan': '../bower_components/foundation/js/foundation/foundation.magellan',\n    'foundation.offcanvas': '../bower_components/foundation/js/foundation/foundation.offcanvas',\n    'foundation.orbit': '../bower_components/foundation/js/foundation/foundation.orbit',\n    'foundation.reveal': '../bower_components/foundation/js/foundation/foundation.reveal',\n    'foundation.tab': '../bower_components/foundation/js/foundation/foundation.tab',\n    'foundation.tooltip': '../bower_components/foundation/js/foundation/foundation.tooltip',\n    'foundation.topbar': '../bower_components/foundation/js/foundation/foundation.topbar',\n\n    /* Handlebars */\n    'hbs': '../bower_components/require-handlebars-plugin/hbs',\n\n    /* Vendor Scripts */\n    'jquery.cookie': '../bower_components/foundation/js/vendor/jquery.cookie',\n    'fastclick': '../bower_components/foundation/js/vendor/fastclick',\n    'modernizr': '../bower_components/foundation/js/vendor/modernizr',\n    'placeholder': '../bower_components/foundation/js/vendor/placeholder'\n  },\n  shim: {\n    /* jQuery */\n    'jquery': {\n      exports: '$'\n    },\n\n    /* Foundation */\n    'foundation.core': {\n      deps: ['jquery', 'modernizr'],\n      exports: 'Foundation'\n    },\n    'foundation.abide': {\n      deps: ['foundation.core']\n    },\n    'foundation.accordion': {\n      deps: ['foundation.core']\n    },\n    'foundation.alert': {\n      deps: ['foundation.core']\n    },\n    'foundation.clearing': {\n      deps: ['foundation.core']\n    },\n    'foundation.dropdown': {\n      deps: ['foundation.core']\n    },\n    'foundation.equalizer': {\n      deps: ['foundation.core']\n    },\n    'foundation.interchange': {\n      deps: ['foundation.core']\n    },\n    'foundation.joyride': {\n      deps: ['foundation.core', 'foundation.cookie']\n    },\n    'foundation.magellan': {\n      deps: ['foundation.core']\n    },\n    'foundation.offcanvas': {\n      deps: ['foundation.core']\n    },\n    'foundation.orbit': {\n      deps: ['foundation.core']\n    },\n    'foundation.reveal': {\n      deps: ['foundation.core']\n    },\n    'foundation.tab': {\n      deps: ['foundation.core']\n    },\n    'foundation.tooltip': {\n      deps: ['foundation.core']\n    },\n    'foundation.topbar': {\n      deps: ['foundation.core']\n    },\n\n    /* Vendor Scripts */\n    'jquery.cookie': {\n      deps: ['jquery']\n    },\n    'fastclick': {\n      exports: 'FastClick'\n    },\n    'modernizr': {\n      exports: 'Modernizr'\n    },\n    'placeholder': {\n      exports: 'Placeholders'\n    }\n  }\n});\n\nrequire(['app'], function(App) {});\n\ndefine(\"main\", function(){});\n\n"]}
\ No newline at end of file