You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by su...@apache.org on 2016/12/21 16:37:25 UTC
[6/7] knox git commit: KNOX-749 Initial admin UI source project and
productized distribution
http://git-wip-us.apache.org/repos/asf/knox/blob/87a7592e/gateway-applications/src/main/resources/applications/admin-ui/app/assets/vkbeautify.js
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/assets/vkbeautify.js b/gateway-applications/src/main/resources/applications/admin-ui/app/assets/vkbeautify.js
new file mode 100644
index 0000000..076c3d5
--- /dev/null
+++ b/gateway-applications/src/main/resources/applications/admin-ui/app/assets/vkbeautify.js
@@ -0,0 +1,357 @@
+/**
+* vkBeautify - javascript plugin to pretty-print or minify text in XML, JSON, CSS and SQL formats.
+*
+* Version - 0.99.00.beta
+* Copyright (c) 2012 Vadim Kiryukhin
+* vkiryukhin @ gmail.com
+* http://www.eslinstructor.net/vkbeautify/
+*
+* MIT license:
+* http://www.opensource.org/licenses/mit-license.php
+*
+* Pretty print
+*
+* vkbeautify.xml(text [,indent_pattern]);
+* vkbeautify.json(text [,indent_pattern]);
+* vkbeautify.css(text [,indent_pattern]);
+* vkbeautify.sql(text [,indent_pattern]);
+*
+* @text - String; text to beatufy;
+* @indent_pattern - Integer | String;
+* Integer: number of white spaces;
+* String: character string to visualize indentation ( can also be a set of white spaces )
+* Minify
+*
+* vkbeautify.xmlmin(text [,preserve_comments]);
+* vkbeautify.jsonmin(text);
+* vkbeautify.cssmin(text [,preserve_comments]);
+* vkbeautify.sqlmin(text);
+*
+* @text - String; text to minify;
+* @preserve_comments - Bool; [optional];
+* Set this flag to true to prevent removing comments from @text ( minxml and mincss functions only. )
+*
+* Examples:
+* vkbeautify.xml(text); // pretty print XML
+* vkbeautify.json(text, 4 ); // pretty print JSON
+* vkbeautify.css(text, '. . . .'); // pretty print CSS
+* vkbeautify.sql(text, '----'); // pretty print SQL
+*
+* vkbeautify.xmlmin(text, true);// minify XML, preserve comments
+* vkbeautify.jsonmin(text);// minify JSON
+* vkbeautify.cssmin(text);// minify CSS, remove comments ( default )
+* vkbeautify.sqlmin(text);// minify SQL
+*
+*/
+
+(function() {
+
+function createShiftArr(step) {
+
+ var space = ' ';
+
+ if ( isNaN(parseInt(step)) ) { // argument is string
+ space = step;
+ } else { // argument is integer
+ switch(step) {
+ case 1: space = ' '; break;
+ case 2: space = ' '; break;
+ case 3: space = ' '; break;
+ case 4: space = ' '; break;
+ case 5: space = ' '; break;
+ case 6: space = ' '; break;
+ case 7: space = ' '; break;
+ case 8: space = ' '; break;
+ case 9: space = ' '; break;
+ case 10: space = ' '; break;
+ case 11: space = ' '; break;
+ case 12: space = ' '; break;
+ }
+ }
+
+ var shift = ['\n']; // array of shifts
+ for(ix=0;ix<100;ix++){
+ shift.push(shift[ix]+space);
+ }
+ return shift;
+}
+
+function vkbeautify(){
+ this.step = '\t'; // 4 spaces
+ this.shift = createShiftArr(this.step);
+};
+
+vkbeautify.prototype.xml = function(text,step) {
+
+ var ar = text.replace(/>\s{0,}</g,"><")
+ .replace(/</g,"~::~<")
+ .replace(/\s*xmlns\:/g,"~::~xmlns:")
+ .replace(/\s*xmlns\=/g,"~::~xmlns=")
+ .split('~::~'),
+ len = ar.length,
+ inComment = false,
+ deep = 0,
+ str = '',
+ ix = 0,
+ shift = step ? createShiftArr(step) : this.shift;
+
+ for(ix=0;ix<len;ix++) {
+ // start comment or <![CDATA[...]]> or <!DOCTYPE //
+ if(ar[ix].search(/<!/) > -1) {
+ str += shift[deep]+ar[ix];
+ inComment = true;
+ // end comment or <![CDATA[...]]> //
+ if(ar[ix].search(/-->/) > -1 || ar[ix].search(/\]>/) > -1 || ar[ix].search(/!DOCTYPE/) > -1 ) {
+ inComment = false;
+ }
+ } else
+ // end comment or <![CDATA[...]]> //
+ if(ar[ix].search(/-->/) > -1 || ar[ix].search(/\]>/) > -1) {
+ str += ar[ix];
+ inComment = false;
+ } else
+ // <elm></elm> //
+ if( /^<\w/.exec(ar[ix-1]) && /^<\/\w/.exec(ar[ix]) &&
+ /^<[\w:\-\.\,]+/.exec(ar[ix-1]) == /^<\/[\w:\-\.\,]+/.exec(ar[ix])[0].replace('/','')) {
+ str += ar[ix];
+ if(!inComment) deep--;
+ } else
+ // <elm> //
+ if(ar[ix].search(/<\w/) > -1 && ar[ix].search(/<\//) == -1 && ar[ix].search(/\/>/) == -1 ) {
+ str = !inComment ? str += shift[deep++]+ar[ix] : str += ar[ix];
+ } else
+ // <elm>...</elm> //
+ if(ar[ix].search(/<\w/) > -1 && ar[ix].search(/<\//) > -1) {
+ str = !inComment ? str += shift[deep]+ar[ix] : str += ar[ix];
+ } else
+ // </elm> //
+ if(ar[ix].search(/<\//) > -1) {
+ str = !inComment ? str += shift[--deep]+ar[ix] : str += ar[ix];
+ } else
+ // <elm/> //
+ if(ar[ix].search(/\/>/) > -1 ) {
+ str = !inComment ? str += shift[deep]+ar[ix] : str += ar[ix];
+ } else
+ // <? xml ... ?> //
+ if(ar[ix].search(/<\?/) > -1) {
+ str += shift[deep]+ar[ix];
+ } else
+ // xmlns //
+ if( ar[ix].search(/xmlns\:/) > -1 || ar[ix].search(/xmlns\=/) > -1) {
+ str += shift[deep]+ar[ix];
+ }
+
+ else {
+ str += ar[ix];
+ }
+ }
+
+ return (str[0] == '\n') ? str.slice(1) : str;
+}
+
+vkbeautify.prototype.json = function(text,step) {
+
+ var step = step ? step : this.step;
+
+ if (typeof JSON === 'undefined' ) return text;
+
+ if ( typeof text === "string" ) return JSON.stringify(JSON.parse(text), null, step);
+ if ( typeof text === "object" ) return JSON.stringify(text, null, step);
+
+ return text; // text is not string nor object
+}
+
+vkbeautify.prototype.css = function(text, step) {
+
+ var ar = text.replace(/\s{1,}/g,' ')
+ .replace(/\{/g,"{~::~")
+ .replace(/\}/g,"~::~}~::~")
+ .replace(/\;/g,";~::~")
+ .replace(/\/\*/g,"~::~/*")
+ .replace(/\*\//g,"*/~::~")
+ .replace(/~::~\s{0,}~::~/g,"~::~")
+ .split('~::~'),
+ len = ar.length,
+ deep = 0,
+ str = '',
+ ix = 0,
+ shift = step ? createShiftArr(step) : this.shift;
+
+ for(ix=0;ix<len;ix++) {
+
+ if( /\{/.exec(ar[ix])) {
+ str += shift[deep++]+ar[ix];
+ } else
+ if( /\}/.exec(ar[ix])) {
+ str += shift[--deep]+ar[ix];
+ } else
+ if( /\*\\/.exec(ar[ix])) {
+ str += shift[deep]+ar[ix];
+ }
+ else {
+ str += shift[deep]+ar[ix];
+ }
+ }
+ return str.replace(/^\n{1,}/,'');
+}
+
+//----------------------------------------------------------------------------
+
+function isSubquery(str, parenthesisLevel) {
+ return parenthesisLevel - (str.replace(/\(/g,'').length - str.replace(/\)/g,'').length )
+}
+
+function split_sql(str, tab) {
+
+ return str.replace(/\s{1,}/g," ")
+
+ .replace(/ AND /ig,"~::~"+tab+tab+"AND ")
+ .replace(/ BETWEEN /ig,"~::~"+tab+"BETWEEN ")
+ .replace(/ CASE /ig,"~::~"+tab+"CASE ")
+ .replace(/ ELSE /ig,"~::~"+tab+"ELSE ")
+ .replace(/ END /ig,"~::~"+tab+"END ")
+ .replace(/ FROM /ig,"~::~FROM ")
+ .replace(/ GROUP\s{1,}BY/ig,"~::~GROUP BY ")
+ .replace(/ HAVING /ig,"~::~HAVING ")
+ //.replace(/ SET /ig," SET~::~")
+ .replace(/ IN /ig," IN ")
+
+ .replace(/ JOIN /ig,"~::~JOIN ")
+ .replace(/ CROSS~::~{1,}JOIN /ig,"~::~CROSS JOIN ")
+ .replace(/ INNER~::~{1,}JOIN /ig,"~::~INNER JOIN ")
+ .replace(/ LEFT~::~{1,}JOIN /ig,"~::~LEFT JOIN ")
+ .replace(/ RIGHT~::~{1,}JOIN /ig,"~::~RIGHT JOIN ")
+
+ .replace(/ ON /ig,"~::~"+tab+"ON ")
+ .replace(/ OR /ig,"~::~"+tab+tab+"OR ")
+ .replace(/ ORDER\s{1,}BY/ig,"~::~ORDER BY ")
+ .replace(/ OVER /ig,"~::~"+tab+"OVER ")
+
+ .replace(/\(\s{0,}SELECT /ig,"~::~(SELECT ")
+ .replace(/\)\s{0,}SELECT /ig,")~::~SELECT ")
+
+ .replace(/ THEN /ig," THEN~::~"+tab+"")
+ .replace(/ UNION /ig,"~::~UNION~::~")
+ .replace(/ USING /ig,"~::~USING ")
+ .replace(/ WHEN /ig,"~::~"+tab+"WHEN ")
+ .replace(/ WHERE /ig,"~::~WHERE ")
+ .replace(/ WITH /ig,"~::~WITH ")
+
+ //.replace(/\,\s{0,}\(/ig,",~::~( ")
+ //.replace(/\,/ig,",~::~"+tab+tab+"")
+
+ .replace(/ ALL /ig," ALL ")
+ .replace(/ AS /ig," AS ")
+ .replace(/ ASC /ig," ASC ")
+ .replace(/ DESC /ig," DESC ")
+ .replace(/ DISTINCT /ig," DISTINCT ")
+ .replace(/ EXISTS /ig," EXISTS ")
+ .replace(/ NOT /ig," NOT ")
+ .replace(/ NULL /ig," NULL ")
+ .replace(/ LIKE /ig," LIKE ")
+ .replace(/\s{0,}SELECT /ig,"SELECT ")
+ .replace(/\s{0,}UPDATE /ig,"UPDATE ")
+ .replace(/ SET /ig," SET ")
+
+ .replace(/~::~{1,}/g,"~::~")
+ .split('~::~');
+}
+
+vkbeautify.prototype.sql = function(text,step) {
+
+ var ar_by_quote = text.replace(/\s{1,}/g," ")
+ .replace(/\'/ig,"~::~\'")
+ .split('~::~'),
+ len = ar_by_quote.length,
+ ar = [],
+ deep = 0,
+ tab = this.step,//+this.step,
+ inComment = true,
+ inQuote = false,
+ parenthesisLevel = 0,
+ str = '',
+ ix = 0,
+ shift = step ? createShiftArr(step) : this.shift;;
+
+ for(ix=0;ix<len;ix++) {
+ if(ix%2) {
+ ar = ar.concat(ar_by_quote[ix]);
+ } else {
+ ar = ar.concat(split_sql(ar_by_quote[ix], tab) );
+ }
+ }
+
+ len = ar.length;
+ for(ix=0;ix<len;ix++) {
+
+ parenthesisLevel = isSubquery(ar[ix], parenthesisLevel);
+
+ if( /\s{0,}\s{0,}SELECT\s{0,}/.exec(ar[ix])) {
+ ar[ix] = ar[ix].replace(/\,/g,",\n"+tab+tab+"")
+ }
+
+ if( /\s{0,}\s{0,}SET\s{0,}/.exec(ar[ix])) {
+ ar[ix] = ar[ix].replace(/\,/g,",\n"+tab+tab+"")
+ }
+
+ if( /\s{0,}\(\s{0,}SELECT\s{0,}/.exec(ar[ix])) {
+ deep++;
+ str += shift[deep]+ar[ix];
+ } else
+ if( /\'/.exec(ar[ix]) ) {
+ if(parenthesisLevel<1 && deep) {
+ deep--;
+ }
+ str += ar[ix];
+ }
+ else {
+ str += shift[deep]+ar[ix];
+ if(parenthesisLevel<1 && deep) {
+ deep--;
+ }
+ }
+ var junk = 0;
+ }
+
+ str = str.replace(/^\n{1,}/,'').replace(/\n{1,}/g,"\n");
+ return str;
+}
+
+
+vkbeautify.prototype.xmlmin = function(text, preserveComments) {
+
+ var str = preserveComments ? text
+ : text.replace(/\<![ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)\>/g,"")
+ .replace(/[ \r\n\t]{1,}xmlns/g, ' xmlns');
+ return str.replace(/>\s{0,}</g,"><");
+}
+
+vkbeautify.prototype.jsonmin = function(text) {
+
+ if (typeof JSON === 'undefined' ) return text;
+
+ return JSON.stringify(JSON.parse(text), null, 0);
+
+}
+
+vkbeautify.prototype.cssmin = function(text, preserveComments) {
+
+ var str = preserveComments ? text
+ : text.replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\//g,"") ;
+
+ return str.replace(/\s{1,}/g,' ')
+ .replace(/\{\s{1,}/g,"{")
+ .replace(/\}\s{1,}/g,"}")
+ .replace(/\;\s{1,}/g,";")
+ .replace(/\/\*\s{1,}/g,"/*")
+ .replace(/\*\/\s{1,}/g,"*/");
+}
+
+vkbeautify.prototype.sqlmin = function(text) {
+ return text.replace(/\s{1,}/g," ").replace(/\s{1,}\(/,"(").replace(/\s{1,}\)/,")");
+}
+
+window.vkbeautify = new vkbeautify();
+
+})();
+
http://git-wip-us.apache.org/repos/asf/knox/blob/87a7592e/gateway-applications/src/main/resources/applications/admin-ui/app/favicon.ico
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/favicon.ico b/gateway-applications/src/main/resources/applications/admin-ui/app/favicon.ico
new file mode 100644
index 0000000..8081c7c
Binary files /dev/null and b/gateway-applications/src/main/resources/applications/admin-ui/app/favicon.ico differ
http://git-wip-us.apache.org/repos/asf/knox/blob/87a7592e/gateway-applications/src/main/resources/applications/admin-ui/app/index.html
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/index.html b/gateway-applications/src/main/resources/applications/admin-ui/app/index.html
new file mode 100644
index 0000000..6932ffb
--- /dev/null
+++ b/gateway-applications/src/main/resources/applications/admin-ui/app/index.html
@@ -0,0 +1,79 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Apache Knox Manager</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" type="image/x-icon" href="favicon.ico">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <!-- Latest compiled and minified CSS -->
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
+
+ <!-- Optional theme -->
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
+ <!-- Custom styles for this template -->
+ <link href="assets/sticky-footer.css" rel="stylesheet">
+
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
+ <!-- Latest compiled and minified JavaScript -->
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+ <script src="assets/vkbeautify.js"></script>
+
+<link href="styles.d41d8cd98f00b204e9800998ecf8427e.bundle.css" rel="stylesheet"></head>
+<body>
+ <div class="navbar-wrapper">
+ <div class="container-fluid">
+
+ <nav class="navbar navbar-inverse navbar-static-top">
+ <div class="container-fluid">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="#">Apache Knox Manager</a>
+ </div>
+ <!--<div id="navbar" class="navbar-collapse collapse">
+ <ul class="nav navbar-nav navbar-right">
+ <li><a href="./">Logout</a></li>
+ </ul>
+ </div>-->
+ </div>
+ </nav>
+
+ </div>
+ <div class="container">
+
+ <!-- Main component for a primary marketing message or call to action -->
+ <div class="jumbotron">
+ <h3>Topology Management</h3>
+ <p>Protecting cluster resources through Knox</p>
+ </div>
+ </div>
+
+
+ <!-- Content -->
+ <topology-management></topology-management>
+
+ <footer class="footer">
+ <div>Knox Manager Version 0.0.1</div>
+ <gateway-version></gateway-version>
+ </footer>
+<script type="text/javascript" src="inline.d41d8cd98f00b204e980.bundle.js"></script><script type="text/javascript" src="styles.b2328beb0372c051d06d.bundle.js"></script><script type="text/javascript" src="vendor.a4f10aaf35e0664cc5fa.bundle.js"></script><script type="text/javascript" src="main.a62ce79090310dbb7cec.bundle.js"></script></body>
+</html>
http://git-wip-us.apache.org/repos/asf/knox/blob/87a7592e/gateway-applications/src/main/resources/applications/admin-ui/app/inline.d41d8cd98f00b204e980.bundle.js
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/inline.d41d8cd98f00b204e980.bundle.js b/gateway-applications/src/main/resources/applications/admin-ui/app/inline.d41d8cd98f00b204e980.bundle.js
new file mode 100644
index 0000000..1926509
--- /dev/null
+++ b/gateway-applications/src/main/resources/applications/admin-ui/app/inline.d41d8cd98f00b204e980.bundle.js
@@ -0,0 +1,2 @@
+!function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(t,c,u){for(var i,a,f,l=0,s=[];l<t.length;l++)a=t[l],o[a]&&s.push(o[a][0]),o[a]=0;for(i in c)Object.prototype.hasOwnProperty.call(c,i)&&(e[i]=c[i]);for(n&&n(t,c,u);s.length;)s.shift()();if(u)for(l=0;l<u.length;l++)f=r(r.s=u[l]);return f};var t={},o={3:0};r.e=function(e){function n(){c.onerror=c.onload=null,clearTimeout(u);var r=o[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}if(0===o[e])return Promise.resolve();if(o[e])return o[e][2];var t=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,c.src=r.p+""+e+"."+{0:"a62ce79090310dbb7cec",1:"b2328beb0372c051d06d"}[e]+".chunk.js";var u=setTimeout(n,12e4);c.onerror=c.onload=n,t.appendChild(c);var i=new Promise(function(r,n
){o[e]=[r,n]});return o[e][2]=i},r.m=e,r.c=t,r.i=function(e){return e},r.d=function(e,r,n){Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r.oe=function(e){throw console.error(e),e}}([]);
+//# sourceMappingURL=inline.d41d8cd98f00b204e980.bundle.map
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/knox/blob/87a7592e/gateway-applications/src/main/resources/applications/admin-ui/app/inline.d41d8cd98f00b204e980.bundle.map
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/inline.d41d8cd98f00b204e980.bundle.map b/gateway-applications/src/main/resources/applications/admin-ui/app/inline.d41d8cd98f00b204e980.bundle.map
new file mode 100644
index 0000000..e889d72
--- /dev/null
+++ b/gateway-applications/src/main/resources/applications/admin-ui/app/inline.d41d8cd98f00b204e980.bundle.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///inline.d41d8cd98f00b204e980.bundle.js","webpack:///webpack/bootstrap 1cd7a5ceef0ce1913a54"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","3","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","Promise","resolve","head","document","getElementsByTagName","createElement","type","charset","async","src","p","0","1","setTimeout","appendChild","promise","reject","m","c","value","d","name","getter","defineProperty","configurable","enumerable","get","n","__esModule","o","object","property","oe","err","console","error"],"mappings":"CAAS,SAAUA,GCqCnB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,
GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QAxDA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,GAAAX,GAAAY,EAAAC,EAAAT,EAAA,EAAAU,KACQV,EAAAK,EAAAM,OAAoBX,IAC5BQ,EAAAH,EAAAL,GACAY,EAAAJ,IACAE,EAAAG,KAAAD,EAAAJ,GAAA,IACAI,EAAAJ,GAAA,CAEA,KAAAZ,IAAAU,GACAQ,OAAAC,UAAAC,eAAAd,KAAAI,EAAAV,KACAF,EAAAE,GAAAU,EAAAV,GAIA,KADAO,KAAAE,EAAAC,EAAAC,GACAG,EAAAC,QACAD,EAAAO,SACA,IAAAV,EACA,IAAAP,EAAA,EAAYA,EAAAO,EAAAI,OAA2BX,IACvCS,EAAAd,IAAAuB,EAAAX,EAAAP,GAGA,OAAAS,GAIA,IAAAZ,MAGAe,GACAO,EAAA,EA6BAxB,GAAAyB,EAAA,SAAAZ,GAmBA,QAAAa,KAEAC,EAAAC,QAAAD,EAAAE,OAAA,KACAC,aAAAC,EACA,IAAAC,GAAAf,EAAAJ,EACA,KAAAmB,IACAA,KAAA,MAAAC,OAAA,iBAAApB,EAAA,aACAI,EAAAJ,GAAAqB,QAzBA,OAAAjB,EAAAJ,GACA,MAAAsB,SAAAC,SAGA,IAAAnB,EAAAJ,GACA,MAAAI,GAAAJ,GAAA,EAGA,IAAAwB,GAAAC,SAAAC,qBAAA,WACAZ,EAAAW,SAAAE,cAAA,SACAb,GAAAc,KAAA,kBACAd,EAAAe,QAAA,QACAf,EAAAgB,OAAA,EACAhB,EAAAI,QAAA,KAEAJ,EAAAiB,IAAA5C,EAAA6C,EAAA,GAAAhC,EAAA,KAA8DiC,EAAA,uBAAAC,EAAA,wBAAsDlC,GAAA,WACpH,IAAAkB,GAAAiB,W
AAAtB,EAAA,KACAC,GAAAC,QAAAD,EAAAE,OAAAH,EAWAW,EAAAY,YAAAtB,EAEA,IAAAuB,GAAA,GAAAf,SAAA,SAAAC,EAAAe,GACAlC,EAAAJ,IAAAuB,EAAAe,IAEA,OAAAlC,GAAAJ,GAAA,GAAAqC,GAIAlD,EAAAoD,EAAArD,EAGAC,EAAAqD,EAAAnD,EAGAF,EAAAK,EAAA,SAAAiD,GAA2C,MAAAA,IAG3CtD,EAAAuD,EAAA,SAAApD,EAAAqD,EAAAC,GACAtC,OAAAuC,eAAAvD,EAAAqD,GACAG,cAAA,EACAC,YAAA,EACAC,IAAAJ,KAKAzD,EAAA8D,EAAA,SAAA1D,GACA,GAAAqD,GAAArD,KAAA2D,WACA,WAA2B,MAAA3D,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAAuD,EAAAE,EAAA,IAAAA,GACAA,GAIAzD,EAAAgE,EAAA,SAAAC,EAAAC,GAAsD,MAAA/C,QAAAC,UAAAC,eAAAd,KAAA0D,EAAAC,IAGtDlE,EAAA6C,EAAA,GAGA7C,EAAAmE,GAAA,SAAAC,GAA8D,KAApBC,SAAAC,MAAAF,GAAoBA","file":"inline.d41d8cd98f00b204e980.bundle.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"mor
eModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId])\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length)\n/******/ \t\t\tresolves.shift()();\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModu
les[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t3: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as
loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tif(installedChunks[chunkId] === 0)\n/******/ \t\t\treturn Promise.resolve();\n/******/\n/******/ \t\t// an Promise means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId]) {\n/******/ \t\t\treturn installedChunks[chunkId][2];\n/******/ \t\t}\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tscript.src = __webpack_requ
ire__.p + \"\" + chunkId + \".\" + {\"0\":\"a62ce79090310dbb7cec\",\"1\":\"b2328beb0372c051d06d\"}[chunkId] + \".chunk.js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) chunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\treturn installedChunks[chunkId][2] = promise;\n/******/ \t};\n/******/\n/******/
\t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmory imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmory exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tObject.defineProperty(exports, name, {\n/******/ \t\t\tconfigurable: false,\n/******/ \t\t\tenumerable: true,\n/******/ \t\t\tget: getter\n/******/ \t\t});\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getM
oduleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/ })\n/************************************************************************/\n/******/ ([]);\n\n\n// WEBPACK FOOTER //\n// inline.d41d8cd98f00b204e980.bundle.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules ob
ject,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length)\n \t\t\tresolves.shift()();\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installe
dChunks = {\n \t\t3: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn Promise.resolve();\n\n \t\t// an Promise means \"currently loading\".\n \t\tif(installedChunks[
chunkId]) {\n \t\t\treturn installedChunks[chunkId][2];\n \t\t}\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + {\"0\":\"a62ce79090310dbb7cec\",\"1\":\"b2328beb0372c051d06d\"}[chunkId] + \".chunk.js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) chunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendCh
ild(script);\n\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\treturn installedChunks[chunkId][2] = promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmory imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmory exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tObject.defineProperty(exports, name, {\n \t\t\tconfigurable: false,\n \t\t\tenumerable: true,\n \t\t\tget: getter\n \t\t});\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default'];
} :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 1cd7a5ceef0ce1913a54"],"sourceRoot":""}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/knox/blob/87a7592e/gateway-applications/src/main/resources/applications/admin-ui/app/main.a62ce79090310dbb7cec.bundle.js
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/main.a62ce79090310dbb7cec.bundle.js b/gateway-applications/src/main/resources/applications/admin-ui/app/main.a62ce79090310dbb7cec.bundle.js
new file mode 100644
index 0000000..14d253a
--- /dev/null
+++ b/gateway-applications/src/main/resources/applications/admin-ui/app/main.a62ce79090310dbb7cec.bundle.js
@@ -0,0 +1,2 @@
+webpackJsonp([0,3],{122:function(t,e,o){"use strict";var n=o(0),i=o(180),a=o(341),r=(o.n(a),o(90));o.n(r);o.d(e,"a",function(){return s});var c=this&&this.__decorate||function(t,e,o,n){var i,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,o,n);else for(var c=t.length-1;c>=0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},l=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},s=function(){function t(t){this.http=t,this.apiUrl="/gateway/admin/api/v1/",this.topologiesUrl=this.apiUrl+"topologies",this.selectedTopologySource=new r.Subject,this.selectedTopology$=this.selectedTopologySource.asObservable(),this.changedTopologySource=new r.Subject,this.changedTopology$=this.changedTopologySource.asObservable()}return t.prototype.getTopologies=functi
on(){var t=new i.a;return this.addJsonHeaders(t),this.http.get(this.topologiesUrl,{headers:t}).toPromise().then(function(t){return t.json().topologies.topology}).catch(this.handleError)},t.prototype.getTopology=function(t){var e=new i.a;return this.addXmlHeaders(e),this.http.get(t,{headers:e}).toPromise().then(function(t){return t.text()}).catch(this.handleError)},t.prototype.saveTopology=function(t,e){var o=new i.a;return this.addXmlHeaders(o),this.addCsrfHeaders(o),this.http.put(t,e,{headers:o}).toPromise().then(function(){return e}).catch(this.handleError)},t.prototype.createTopology=function(t,e){var o=new i.a;this.addXmlHeaders(o),this.addCsrfHeaders(o);var n=this.topologiesUrl+"/"+t;return this.http.put(n,e,{headers:o}).toPromise().then(function(){return e}).catch(this.handleError)},t.prototype.deleteTopology=function(t){var e=new i.a;return this.addJsonHeaders(e),this.addCsrfHeaders(e),this.http.delete(t,{headers:e}).toPromise().then(function(t){return t.text()}).catch(this.h
andleError)},t.prototype.addJsonHeaders=function(t){t.append("Accept","application/json"),t.append("Content-Type","application/json")},t.prototype.addXmlHeaders=function(t){t.append("Accept","application/xml"),t.append("Content-Type","application/xml")},t.prototype.addCsrfHeaders=function(t){t.append("X-XSRF-Header","admin-ui")},t.prototype.selectedTopology=function(t){this.selectedTopologySource.next(t)},t.prototype.changedTopology=function(t){this.changedTopologySource.next(t)},t.prototype.handleError=function(t){return console.error("An error occurred",t),Promise.reject(t.message||t)},t=c([o.i(n.Injectable)(),l("design:paramtypes",["function"==typeof(e="undefined"!=typeof i.b&&i.b)&&e||Object])],t);var e}()},293:function(t,e,o){"use strict";var n=o(0),i=o(122);o.d(e,"a",function(){return c});var a=this&&this.__decorate||function(t,e,o,n){var i,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decor
ate)r=Reflect.decorate(t,e,o,n);else for(var c=t.length-1;c>=0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},c=function(){function t(t){this.topologyService=t}return t=a([o.i(n.Component)({selector:"topology-management",template:'\n <div class="container">\n <div class="row">\n <div class="col-md-5">\n <topology></topology>\n </div>\n <div class="col-md-7">\n <topology-detail></topology-detail>\n </div>\n </div>\n </div>\n ',providers:[i.a]}),r("design:paramtypes",["function"==typeof(e="undefined"!=typeof i.a&&i.a)&&e||Object])],t);var e}()},294:function(t,e,o){"use strict";var n=o(0),i=o(180),a=o(341);o.n(a);o.d(e,"a",function(){return l});var r=this&&this.__decorate||function(t,e,o,n){var i,a=arguments.length,r=a<3?e
:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,o,n);else for(var c=t.length-1;c>=0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},c=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},l=function(){function t(t){this.http=t,this.apiUrl="/gateway/admin/api/v1/version"}return t.prototype.getVersion=function(){var t=new i.a;return this.createAuthorizationHeader(t),this.http.get(this.apiUrl,{headers:t}).toPromise().then(function(t){return t.json().ServerVersion}).catch(this.handleError)},t.prototype.createAuthorizationHeader=function(t){t.append("Accept","application/json"),t.append("Content-Type","application/json")},t.prototype.handleError=function(t){return console.error("An error occurred",t),Promise.reject(t.message||t)},t=r([o.i(n.Injectable)(),c("design:paramty
pes",["function"==typeof(e="undefined"!=typeof i.b&&i.b)&&e||Object])],t);var e}()},295:function(t,e,o){"use strict";var n=o(0);o.d(e,"a",function(){return r});var i=this&&this.__decorate||function(t,e,o,n){var i,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,o,n);else for(var c=t.length-1;c>=0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},a=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},r=function(){function t(){this.active=!1}return i([o.i(n.Input)("tabTitle"),a("design:type",String)],t.prototype,"title",void 0),i([o.i(n.Input)(),a("design:type",Object)],t.prototype,"active",void 0),t=i([o.i(n.Component)({selector:"tab",styles:["\n .pane{\n padding: 1em;\n }\n "],template:'\n <div [hidden]="!active" class="pane">\n
</div>\n '}),a("design:paramtypes",[])],t)}()},344:function(t,e){function o(t){throw new Error("Cannot find module '"+t+"'.")}o.keys=function(){return[]},o.resolve=o,t.exports=o,o.id=344},345:function(t,e,o){"use strict";var n=o(454),i=(o.n(n),o(425)),a=o(0),r=o(453),c=o(447);r.a.production&&o.i(a.enableProdMode)(),o.i(i.a)().bootstrapModule(c.a)},445:function(t,e,o){"use strict";var n=o(0),i=o(184),a=o(180),r=o(418),c=o(293),l=o(122),s=o(294),p=o(446),f=o(449),d=o(448),u=o(452),y=o(450),h=o(295),g=o(451),m=o(608),b=(o.n(m),o(340));o.n(b);o.d(e,"a",function(){return R});var v=this&&this.__decorate||function(t,e,o,n){var i,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,o,n);else for(var c=t.length-1;c>=0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},j=this&&this.__metadata||function(t,e){if("object"==typeof Ref
lect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},R=function(){function t(){}return t=v([o.i(n.NgModule)({imports:[i.b,a.c,r.a,b.Ng2Bs3ModalModule],declarations:[c.a,f.a,d.a,p.a,m.AceEditorDirective,u.a,y.a,g.a,h.a],providers:[l.a,s.a],bootstrap:[c.a,p.a]}),j("design:paramtypes",[])],t)}()},446:function(t,e,o){"use strict";var n=o(0),i=o(294);o.d(e,"a",function(){return c});var a=this&&this.__decorate||function(t,e,o,n){var i,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,o,n);else for(var c=t.length-1;c>=0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},c=function(){function t(t){this.gatewayVersionService=t}return t.prototype.getVersion=function(){var t=this;thi
s.gatewayVersionService.getVersion().then(function(e){return t.gatewayVersion=e})},t.prototype.ngOnInit=function(){this.getVersion()},t=a([o.i(n.Component)({selector:"gateway-version",template:'\n <div *ngIf="gatewayVersion">\n <span class="small"><cite>Knox Gateway Version</cite> {{this.gatewayVersion.version}}</span>\n <span class="small"><cite>Hash</cite> {{this.gatewayVersion.hash}}</span>\n</div>',providers:[i.a]}),r("design:paramtypes",["function"==typeof(e="undefined"!=typeof i.a&&i.a)&&e||Object])],t);var e}()},447:function(t,e,o){"use strict";var n=(o(293),o(445));o.d(e,"a",function(){return n.a})},448:function(t,e,o){"use strict";var n=o(0),i=o(122),a=o(340);o.n(a);o.d(e,"a",function(){return l});var r=this&&this.__decorate||function(t,e,o,n){var i,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,o,n);else for(var c=t.length-1;c>=
0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},c=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},l=function(){function t(t){this.topologyService=t,this.title="Topology Detail",this.options={useWorker:!1,printMargin:!1}}return t.prototype.ngOnInit=function(){var t=this;this.topologyService.selectedTopology$.subscribe(function(e){return t.populateContent(e)})},t.prototype.setTitle=function(t){this.titleSuffix=t},t.prototype.onChange=function(t){this.changedTopology=t},t.prototype.saveTopology=function(){var t=this;this.topologyService.saveTopology(this.topology.href,this.changedTopology).then(function(e){return t.topologyService.changedTopology(t.topology.name)})},t.prototype.createTopology=function(){var t=this;this.changedTopology?this.topologyService.createTopology(this.newTopologyName,this.changedTopology).then(function(e){return t.topologyServi
ce.changedTopology(t.newTopologyName)}):this.topologyService.createTopology(this.newTopologyName,this.topologyContent).then(function(e){return t.topologyService.changedTopology(t.newTopologyName)})},t.prototype.deleteTopology=function(){var t=this;this.topologyService.deleteTopology(this.topology.href).then(function(e){return t.topologyService.changedTopology(t.topology.name)})},t.prototype.populateContent=function(t){var e=this;this.topology=t,this.setTitle(t.name),this.topology&&this.topology.href&&this.topologyService.getTopology(this.topology.href).then(function(t){return e.topologyContent=t})},r([o.i(n.ViewChild)("duplicateModal"),c("design:type","function"==typeof(e="undefined"!=typeof a.ModalComponent&&a.ModalComponent)&&e||Object)],t.prototype,"duplicateModal",void 0),r([o.i(n.ViewChild)("deleteConfirmModal"),c("design:type","function"==typeof(l="undefined"!=typeof a.ModalComponent&&a.ModalComponent)&&l||Object)],t.prototype,"deleteConfirmModal",void 0),t=r([o.i(n.Component)
({selector:"topology-detail",template:'\n <div class="panel panel-default">\n <div class="panel-heading">\n <h4 class="panel-title">{{title}} <span class="label label-default pull-right">{{titleSuffix}}</span></h4>\n </div>\n <div *ngIf="topologyContent" class="panel-body">\n <div ace-editor\n [readOnly]="false" [text]="topologyContent | xml" [mode]="\'html\'" [options]="options" \n [theme]="\'monokai\'"\n style="min-height: 300px; width:100%; overflow: auto;" (textChanged)="onChange($event)">\n </div>\n <div class="panel-footer">\n <button (click)="duplicateModal.open(\'sm\')" class="btn btn-default btn-sm" type="submit">\n <span class="glyphicon glyphicon-duplicate" aria-hidden="true"></span>\n </button>\n <button (click)="deleteConfirmModal.open(\'sm\')" class="btn btn-default btn-sm" type="submit">\n <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>\
n </button>\n <button (click)="saveTopology()" class="btn btn-default btn-sm pull-right" [disabled]="!changedTopology" type="submit">\n <span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span>\n </button>\n </div>\n \n </div>\n <modal (onClose)="createTopology()" #duplicateModal>\n\n <modal-header [show-close]="true">\n <h4 class="modal-title">Create a copy</h4>\n </modal-header>\n <modal-body>\n <div class="form-group">\n <label for="textbox">Name the new topology</label>\n <input autofocus type="text" class="form-control" required [(ngModel)]="newTopologyName" id="textbox">\n </div> \n </modal-body>\n <modal-footer>\n <button type="button" class="btn btn-default btn-sm" data-dismiss="duplicateModal" (click)="duplicateModal.dismiss()">Cancel</button>\n <button type="button" class="btn btn-primary b
tn-sm" [disabled]="!newTopologyName" (click)="duplicateModal.close()">Ok</button>\n </modal-footer>\n </modal>\n <modal (onClose)="deleteTopology()" #deleteConfirmModal>\n <modal-header [show-close]="true">\n <h4 class="modal-title">Deleting Topology {{titleSuffix}}</h4>\n </modal-header>\n <modal-body>\n Are you sure you want to delete the topology?\n </modal-body>\n <modal-footer>\n <button type="button" class="btn btn-default btn-sm" data-dismiss="deleteConfirmModal" (click)="deleteConfirmModal.dismiss()">Cancel</button>\n <button type="button" class="btn btn-primary btn-sm" (click)="deleteConfirmModal.close()">Ok</button>\n </modal-footer>\n </modal>\n '}),c("design:paramtypes",["function"==typeof(s="undefined"!=typeof i.a&&i.a)&&s||Object])],t);var e,l,s}()},449:function(t,e,o){"use strict";var n=o(0),i=o(122);o.d(e,"a",function(){return c});var a=this&&this.__decorate||funct
ion(t,e,o,n){var i,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,o,n);else for(var c=t.length-1;c>=0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},c=function(){function t(t){this.topologyService=t}return t.prototype.getTopologies=function(){var t=this;this.topologyService.getTopologies().then(function(e){return t.topologies=e})},t.prototype.ngOnInit=function(){var t=this;this.getTopologies(),this.topologyService.changedTopology$.subscribe(function(e){return t.getTopologies()})},t.prototype.onSelect=function(t){this.selectedTopology=t,this.topologyService.selectedTopology(t)},t=a([o.i(n.Component)({selector:"topology",template:'\n <div class="table-responsive" style="max-heigh
t: 400px; width:100%; overflow: auto;">\n <table class="table table-striped table-hover">\n <thead>\n <tr>\n <th>Topology Name</th>\n <th>Timestamp</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor="let topology of topologies"\n [class.selected]="topology === selectedTopology"\n (click)="onSelect(topology)">\n <td>{{topology.name}}</td> \n <td>{{topology.timestamp | date:\'yMMMdjms\'}}</td> \n </tr>\n </tbody>\n </table>\n </div>\n '}),r("design:paramtypes",["function"==typeof(e="undefined"!=typeof i.a&&i.a)&&e||Object])],t);var e}()},450:function(t,e,o){"use strict";var n=o(0);o.d(e,"a",function(){return r});var i=this&&this.__decorate||function(t,e,o,n){var i,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Re
flect.decorate(t,e,o,n);else for(var c=t.length-1;c>=0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},a=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},r=function(){function t(){}return t.prototype.transform=function(t){return vkbeautify.json(t)},t=i([o.i(n.Pipe)({name:"jsonpretty"}),a("design:paramtypes",[])],t)}()},451:function(t,e,o){"use strict";var n=o(0),i=o(295);o.d(e,"a",function(){return c});var a=this&&this.__decorate||function(t,e,o,n){var i,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,o,n);else for(var c=t.length-1;c>=0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)
return Reflect.metadata(t,e)},c=function(){function t(){}return t.prototype.ngAfterContentInit=function(){var t=this.tabs.filter(function(t){return t.active});0===t.length&&this.selectTab(this.tabs.first)},t.prototype.selectTab=function(t){this.tabs.toArray().forEach(function(t){return t.active=!1}),t.active=!0},a([o.i(n.ContentChildren)(i.a),r("design:type","function"==typeof(e="undefined"!=typeof n.QueryList&&n.QueryList)&&e||Object)],t.prototype,"tabs",void 0),t=a([o.i(n.Component)({selector:"tabs",template:'\n <ul class="nav nav-tabs">\n <li *ngFor="let tab of tabs" (click)="selectTab(tab)" [class.active]="tab.active">\n <a>{{tab.title}}</a>\n </li>\n </ul>\n \n '}),r("design:paramtypes",[])],t);var e}()},452:function(t,e,o){"use strict";var n=o(0);o.d(e,"a",function(){return r});var i=this&&this.__decorate||function(t,e,o,n){var i,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==type
of Reflect.decorate)r=Reflect.decorate(t,e,o,n);else for(var c=t.length-1;c>=0;c--)(i=t[c])&&(r=(a<3?i(r):a>3?i(e,o,r):i(e,o))||r);return a>3&&r&&Object.defineProperty(e,o,r),r},a=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},r=function(){function t(){}return t.prototype.transform=function(t){return vkbeautify.xml(t)},t=i([o.i(n.Pipe)({name:"xml"}),a("design:paramtypes",[])],t)}()},453:function(t,e,o){"use strict";o.d(e,"a",function(){return n});var n={production:!0}},454:function(t,e,o){"use strict";var n=o(471),i=(o.n(n),o(464)),a=(o.n(i),o(460)),r=(o.n(a),o(466)),c=(o.n(r),o(465)),l=(o.n(c),o(463)),s=(o.n(l),o(462)),p=(o.n(s),o(470)),f=(o.n(p),o(459)),d=(o.n(f),o(458)),u=(o.n(d),o(468)),y=(o.n(u),o(461)),h=(o.n(y),o(469)),g=(o.n(h),o(467)),m=(o.n(g),o(472)),b=(o.n(m),o(628));o.n(b)},629:function(t,e,o){t.exports=o(345)}},[629]);
+//# sourceMappingURL=main.a62ce79090310dbb7cec.bundle.map
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/knox/blob/87a7592e/gateway-applications/src/main/resources/applications/admin-ui/app/main.a62ce79090310dbb7cec.bundle.js.gz
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/main.a62ce79090310dbb7cec.bundle.js.gz b/gateway-applications/src/main/resources/applications/admin-ui/app/main.a62ce79090310dbb7cec.bundle.js.gz
new file mode 100644
index 0000000..1af436e
Binary files /dev/null and b/gateway-applications/src/main/resources/applications/admin-ui/app/main.a62ce79090310dbb7cec.bundle.js.gz differ