dubbo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] beiwei30 closed pull request #89: adjust home page buttons
Date Mon, 13 Aug 2018 09:43:16 GMT
beiwei30 closed pull request #89: adjust home page buttons
URL: https://github.com/apache/incubator-dubbo-website/pull/89
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/build/home.css b/build/home.css
index 5c842d9..816b4c5 100644
--- a/build/home.css
+++ b/build/home.css
@@ -200,6 +200,7 @@
   height: 48px;
   line-height: 48px;
   min-width: 140px;
+  padding: 0 12px;
   font-family: Avenir-Heavy;
   font-size: 16px;
   color: #FFF;
@@ -984,18 +985,6 @@ h1, h2, h3, h4, h5, h6 {
   .home-page .top-section .button-area {
     text-align: center;
     margin-top: 40px; }
-    .home-page .top-section .button-area .button {
-      display: inline-block;
-      background-color: #fff;
-      border-radius: 4px;
-      width: 140px;
-      height: 54px;
-      line-height: 54px;
-      color: #2DACEC;
-      font-family: Avenir-Heavy;
-      font-size: 14px;
-      color: #2DACEC;
-      text-align: center; }
     .home-page .top-section .button-area .button:first-child {
       margin-right: 20px; }
 
diff --git a/build/home.js b/build/home.js
index 83de2d7..763f4a1 100644
--- a/build/home.js
+++ b/build/home.js
@@ -3,4 +3,4 @@
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
 */
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r))e.push(n.apply(null,r));else if("object"===o)for(var a in r)i.call(r,a)&&r[a]&&e.push(a)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?e.exports=n:(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";function r(e,t,r){var o=r.configurable,u=r.enumerable,c=r.initializer,l=r.value;return{configurable:o,enumerable:u,get:function(){if(this!==e){var n=c?c.call(this):l;return a(this,t,{configurable:o,enumerable:u,writable:!0,value:n}),n}},set:n.i(i.e)(t)}}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.defineProperty},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),c=n(1),l=r(c),s=n(2),f=r(s),d=n(4),p=r(d),h=n(3),m=r(h),g=n(5);n(31);var y={logo:f.default.string.isRequired},b=function(e){function t(){return o(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),u(t,[{key:"render",value:function(){var e=this.props.logo,t=p.default.get("docsite_language")||m.default.defaultLanguage,n=m.default[t];return l.default.createElement("footer",{className:"footer-container"},l.default.createElement("div",{className:"footer-body"},l.default.createElement("img",{src:e}),l.default.createElement("img",{className:"apache",src:window.rootPath+"/img/apache_logo.png"}),l.default.createElement("div",{className:"cols-container"},l.default.createElement("div",{className:"col col-12"},l.default.createElement("h3",null,n.disclaimer.title),l.default.createElement("p",null,n.disclaimer.content)),l.default.createElement("div",{className:"col col-6"},l.default.createElement("dl",null,l.default.createElement("dt",null,n.documentation.title),n.documentation.list.map(function(e,t){return l.default.createElement("dd",{key:t},l.default.createElement("a",{href:(0,g.getLink)(e.link),target:e.target||"_self"},e.text))}))),l.default.createElement("div",{className:"col col-6"},l.default.createElement("dl",null,l.default.createElement("dt",null,n.resources.title),n.resources.list.map(function(e,t){return l.default.createElement("dd",{key:t},l.default.createElement("a",{href:(0,g.getLink)(e.link),target:e.target||"_self"},e.text))})))),l.default.createElement("div",{className:"copyright"},l.default.createElement("span",null,n.copyright))))}}]),t}(l.default.Component);b.propTypes=y,t.default=b},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var c,l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=n(1),f=r(s),d=n(2),p=r(d),h=n(8),m=r(h),g=n(7),y=n(3),b=r(y);n(32);var v=[{text:"中",value:"en-us"},{text:"En",value:"zh-cn"}],w=function(){},_={currentKey:p.default.string,logo:p.default.string.isRequired,type:p.default.oneOf(["primary","normal"]),language:p.default.oneOf(["en-us","zh-cn"]),onLanguageChange:p.default.func},O={type:"primary",language:"en-us",onLanguageChange:w},E=(0,g.autobind)(c=function(e){function t(e){i(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.state={menuBodyVisible:!1,language:e.language},n}return u(t,e),l(t,[{key:"componentWillReceiveProps",value:function(e){this.setState({language:e.language})}},{key:"toggleMenu",value:function(){this.setState({menuBodyVisible:!this.state.menuBodyVisible})}},{key:"switchLang",value:function(){var e=void 0;e="zh-cn"===this.state.language?"en-us":"zh-cn",this.setState({language:e}),this.props.onLanguageChange(e)}},{key:"render",value:function(){var e=this.props,t=e.type,n=e.logo,r=e.onLanguageChange,i=e.currentKey,a=this.state,u=a.menuBodyVisible,c=a.language;return f.default.createElement("header",{className:(0,m.default)(o({"header-container":!0},"header-container-"+t,!0))},f.default.createElement("div",{className:"header-body"},f.default.createElement("a",{href:window.rootPath+"/"+c+"/index.html"},f.default.createElement("img",{className:"logo",alt:b.default.name,title:b.default.name,src:n})),r!==w?f.default.createElement("span",{className:(0,m.default)(o({"language-switch":!0},"language-switch-"+t,!0)),onClick:this.switchLang},v.find(function(e){return e.value===c}).text):null,f.default.createElement("div",{className:(0,m.default)({"header-menu":!0,"header-menu-open":u})},f.default.createElement("img",{className:"header-menu-toggle",onClick:this.toggleMenu,src:"primary"===t?window.rootPath+"/img/menu_white.png":window.rootPath+"/img/menu_gray.png"}),f.default.createElement("ul",null,b.default[c].pageMenu.map(function(e){var n;return f.default.createElement("li",{className:(0,m.default)((n={"menu-item":!0},o(n,"menu-item-"+t,!0),o(n,"menu-item-"+t+"-active",i===e.key),n)),key:e.key},f.default.createElement("a",{href:""+window.rootPath+e.link},e.text))})))))}}]),t}(f.default.Component))||c;E.propTypes=_,E.defaultProps=O,t.default=E},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var u,c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(1),s=r(l),f=n(7),d=n(4),p=r(d),h=(u=function(e){function t(){return o(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),c(t,[{key:"onLanguageChange",value:function(e){var t=window.location.pathname,n=void 0;n="zh-cn"===e?"en-us":"zh-cn";var r=t.replace(window.rootPath+"/"+n,window.rootPath+"/"+e);p.default.set("docsite_language",e,{expires:365,path:""}),window.location=r}}]),t}(s.default.Component),function(e,t,n,r,o){var i={};return Object.keys(r).forEach(function(e){i[e]=r[e]}),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce(function(n,r){return r(e,t,n)||n},i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}(u.prototype,"onLanguageChange",[f.autobind],Object.getOwnPropertyDescriptor(u.prototype,"onLanguageChange"),u.prototype),u);t.default=h},,function(e,t,n){"use strict";function r(e,t){var n=e.prototype;for(var r in t)for(var a=t[r],u=0,c=a.length;u<c;u++){var l=a[u];o(n,r,l(n,r,i(n,r)))}return e}t.a=r;var o=Object.defineProperty,i=Object.getOwnPropertyDescriptor},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(e,t){if("undefined"==typeof WeakMap)throw new Error("Using @autobind on "+t.name+"() requires WeakMap support due to its use of super."+t.name+"()\n      See https://github.com/jayphelps/core-decorators.js/issues/20");d||(d=new WeakMap),!1===d.has(e)&&d.set(e,new WeakMap);var r=d.get(e);return!1===r.has(t)&&r.set(t,n.i(l.a)(t,e)),r.get(t)}function i(e){for(var t=n.i(l.f)(e.prototype),r=n.i(l.g)(t),o=0,i=r.length;o<i;o++){var u=r[o],c=t[u];"function"==typeof c.value&&"constructor"!==u&&s(e.prototype,u,a(e.prototype,u,c))}}function a(e,t,r){var i=r.value,a=r.configurable,u=r.enumerable;if("function"!=typeof i)throw new SyntaxError("@autobind can only be used on functions, not: "+i);var c=e.constructor;return{configurable:a,enumerable:u,get:function(){if(this===e)return i;if(this.constructor!==c&&f(this).constructor===c)return i;if(this.constructor!==c&&t in this.constructor.prototype)return o(this,i);var r=n.i(l.a)(i,this);return s(this,t,{configurable:!0,writable:!0,enumerable:!1,value:r}),r},set:n.i(l.e)(t)}}function u(e){return 1===e.length?i.apply(void 0,r(e)):a.apply(void 0,r(e))}function c(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(){return u(arguments)}:u(t)}t.a=c;var l=n(0),s=Object.defineProperty,f=Object.getPrototypeOf,d=void 0},function(e,t,n){"use strict";function r(e,t,r,o){var l=u(o,2),s=l[0],f=void 0===s?c:s,d=l[1],p=void 0!==d&&d,h=r.value;if("function"!=typeof h)throw new SyntaxError("Only functions can be debounced");return a({},r,{value:function(){var e=this,r=n.i(i.c)(this),o=r.debounceTimeoutIds,a=o[t],u=p&&!a,c=arguments;clearTimeout(a),o[t]=setTimeout(function(){delete o[t],p||h.apply(e,c)},f),u&&h.apply(this,c)}})}function o(){n.i(i.h)("@debounce is deprecated and will be removed shortly. Use @debounce from lodash-decorators.\n\n  https://www.npmjs.com/package/lodash-decorators");for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=300},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(e){return Array.isArray(e)?e:Array.from(e)}function i(e,t,i,a){var l=o(a),s=l[0],f=l.slice(1),d=i.configurable,p=i.enumerable,h=i.writable,m=i.get,g=i.set,y=i.value,b=!!m;return{configurable:d,enumerable:p,get:function(){var e=b?m.call(this):y,n=s.call.apply(s,[this,e].concat(r(f)));if(b)return n;var o={configurable:d,enumerable:p};return o.value=n,o.writable=h,c(this,t,o),n},set:b?g:n.i(u.e)()}}function a(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.i(u.d)(i,t)}t.a=a;var u=n(0),c=Object.defineProperty},function(e,t,n){"use strict";function r(e,t,r,o){var l=u(o,2),s=l[0],f=void 0===s?c:s,d=l[1],p=void 0===d?{}:d;if("function"!=typeof r.value)throw new SyntaxError("Only functions can be marked as deprecated");var h=e.constructor.name+"#"+t;return p.url&&(f+="\n\n    See "+p.url+" for more details.\n\n"),a({},r,{value:function(){return n.i(i.b)("DEPRECATION "+h+": "+f),r.value.apply(this,arguments)}})}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c="This function will be removed in future versions."},function(e,t,n){"use strict";function r(e,t,n){return n.enumerable=!0,n}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0)},function(e,t,n){"use strict";function r(e,t,n){var r=u(e),o=c(r,t);return a({},o,{value:n.value,initializer:n.initializer,get:n.get||o.get,set:n.set||o.set})}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=Object.getPrototypeOf,c=Object.getOwnPropertyDescriptor},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){return t===Object(t)?t:e[t]||(e[t]={})}function i(e,t,n,r,o){var i=t.apply(e,n);return r[o]=i,i}function a(e){var t=void 0,n=void 0;return e.value?(t=e.value,n="value"):e.get?(t=e.get,n="get"):e.set&&(t=e.set,n="set"),{fn:t,wrapKey:n}}function u(e,t,n){var u=a(n),c=u.fn,l=u.wrapKey,f=new WeakMap,d=Object.create(null),p=Object.create(null),h=0;return s({},n,r({},l,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r="0",a=0,u=t.length;a<u;a++){var l=t[a],s=o(p,l),m=f.get(s);void 0===m&&(m=++h,f.set(s,m)),r+=m}return d[r]||i(this,c,arguments,d,r)}))}function c(){n.i(l.h)("@memoize is deprecated and will be removed shortly. Use @memoize from lodash-decorators.\n\n  https://www.npmjs.com/package/lodash-decorators");for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.i(l.d)(u,t)}t.a=c;var l=n(0),s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}},function(e,t,n){"use strict";function r(e){return"[object Symbol]"===Object.prototype.toString.call(e)&&"object"===(void 0===e?"undefined":c(e))}function o(e,t){if(r(e)){do{if(t===Object.prototype)return void 0!==t[e];if(t.hasOwnProperty(e))return!0}while(t=s(t));return!1}return e in t}function i(e,t){if(!t.length)throw new SyntaxError("@mixin() class "+e.name+" requires at least one mixin as an argument");for(var r=0,i=t.length;r<i;r++)for(var a=n.i(u.f)(t[r]),c=n.i(u.g)(a),s=0,f=c.length;s<f;s++){var d=c[s];o(d,e.prototype)||l(e.prototype,d,a[d])}}function a(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.i(u.h)("@mixin is deprecated and will be removed shortly. Use @mixin from lodash-decorators.\n\n  https://www.npmjs.com/package/lodash-decorators"),"function"==typeof t[0]?i(t[0],[]):function(e){return i(e,t)}}t.a=a;var u=n(0),c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l=Object.defineProperty,s=Object.getPrototypeOf},function(e,t,n){"use strict";function r(e,t,n){return n.configurable=!1,n}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0)},function(e,t,n){"use strict";function r(e,t,n){return n.enumerable=!1,n}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e){return e.hasOwnProperty("value")?"data":e.hasOwnProperty("get")||e.hasOwnProperty("set")?"accessor":"data"}function i(e,t,n){n.assert(e.length===t.length)}function a(e,t,n){var r=p(e.value),o=p(t.value);if("undefined"===r&&"undefined"===o&&n.error("descriptor values are both undefined. (class properties are are not currently supported)'"),r!==o){("function"===o&&void 0===r||void 0!==r)&&n.error('value types do not match. {parent} is "'+r+'", {child} is "'+o+'"')}switch(o){case"function":i(e.value,t.value,n);break;default:n.error('Unexpected error. Please file a bug with: {parent} is "'+r+'", {child} is "'+o+'"')}}function u(e,t,n){var r="function"==typeof e.get,o="function"==typeof t.get,a="function"==typeof e.set,u="function"==typeof t.set;(r||o)&&(!r&&a&&n.error("{parent} is setter but {child} is getter"),!o&&u&&n.error("{parent} is getter but {child} is setter"),i(e.get,t.get,n)),(a||u)&&(!a&&r&&n.error("{parent} is getter but {child} is setter"),!u&&o&&n.error("{parent} is setter but {child} is getter"),i(e.set,t.set,n))}function c(e,t,n){var r=o(e),i=o(t);switch(r!==i&&n.error('descriptor types do not match. {parent} is "'+r+'", {child} is "'+i+'"'),i){case"data":a(e,t,n);break;case"accessor":u(e,t,n)}}function l(e,t){for(var n=0,r=y.length;n<r;n++){var o=y[n],i=o(t);if(i in e)return i}return null}function s(e,t,n){n.key=t;var r=Object.getPrototypeOf(e),o=Object.getOwnPropertyDescriptor(r,t),i=new g(r,e,o,n);if(void 0===o){var a=l(r,t),u=a?'\n\n  Did you mean "'+a+'"?':"";i.error("No descriptor matching {child} was found on the prototype chain."+u)}return c(o,n,i),n}function f(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.i(d.d)(s,t)}t.a=f;var d=n(0),p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),m=/^function ([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?(\([^\)]*\))[\s\S]+$/,g=function(){function e(t,n,o,i){r(this,e),this.parentKlass=t,this.childKlass=n,this.parentDescriptor=o,this.childDescriptor=i}return h(e,[{key:"_getTopic",value:function(e){return void 0===e?null:"value"in e?e.value:"get"in e?e.get:"set"in e?e.set:void 0}},{key:"_extractTopicSignature",value:function(e){switch(void 0===e?"undefined":p(e)){case"function":return this._extractFunctionSignature(e);default:return this.key}}},{key:"_extractFunctionSignature",value:function(e){var t=this;return e.toString().replace(m,function(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.key)+arguments[2]})}},{key:"key",get:function(){return this.childDescriptor.key}},{key:"parentNotation",get:function(){return this.parentKlass.constructor.name+"#"+this.parentPropertySignature}},{key:"childNotation",get:function(){return this.childKlass.constructor.name+"#"+this.childPropertySignature}},{key:"parentTopic",get:function(){return this._getTopic(this.parentDescriptor)}},{key:"childTopic",get:function(){return this._getTopic(this.childDescriptor)}},{key:"parentPropertySignature",get:function(){return this._extractTopicSignature(this.parentTopic)}},{key:"childPropertySignature",get:function(){return this._extractTopicSignature(this.childTopic)}}]),h(e,[{key:"assert",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";!0!==e&&this.error("{child} does not properly override {parent}"+t)}},{key:"error",value:function(e){var t=this;throw e=e.replace("{parent}",function(e){return t.parentNotation}).replace("{child}",function(e){return t.childNotation}),new SyntaxError(e)}}]),e}(),y=[function(e){return e.toLowerCase()},function(e){return e.toUpperCase()},function(e){return e+"s"},function(e){return e.slice(0,-1)},function(e){return e.slice(1,e.length)}]},function(e,t,n){"use strict";function r(e,t,r,l){var s=u(l,3),f=s[0],d=void 0===f?null:f,p=s[1],h=void 0!==p&&p,m=s[2],g=void 0===m?c:m;if(!o.__enabled)return o.__warned||(g.warn("console.profile is not supported. All @profile decorators are disabled."),o.__warned=!0),r;var y=r.value;if(null===d&&(d=e.constructor.name+"."+t),"function"!=typeof y)throw new SyntaxError("@profile can only be used on functions, not: "+y);return a({},r,{value:function(){var e=Date.now(),t=n.i(i.c)(this);(!0===h&&!t.profileLastRan||!1===h||"number"==typeof h&&e-t.profileLastRan>h||"function"==typeof h&&h.apply(this,arguments))&&(g.profile(d),t.profileLastRan=e);try{return y.apply(this,arguments)}finally{g.profileEnd(d)}}})}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=(console,{profile:console.profile?n.i(i.a)(console.profile,console):function(){},profileEnd:console.profileEnd?n.i(i.a)(console.profileEnd,console):function(){},warn:i.b});o.__enabled=!!console.profile,o.__warned=!1},function(e,t,n){"use strict";function r(e,t,n){return n.writable=!1,n}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0)},function(e,t,n){"use strict";function r(){}function o(e,t,n){if("object"===("undefined"==typeof console?"undefined":l(console))){var o=console.warn;console.warn=r;var i=t.apply(e,n);return console.warn=o,i}return t.apply(e,n)}function i(e,t,n){return c({},n,{value:function(){return o(this,n.value,arguments)}})}function a(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.i(u.d)(i,t)}t.a=a;var u=n(0),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e}},function(e,t,n){"use strict";function r(e,t,r,o){var l=u(o,2),s=l[0],f=void 0===s?c:s,d=l[1],p=void 0===d?{}:d,h=r.value;if("function"!=typeof h)throw new SyntaxError("Only functions can be throttled");return!1!==p.leading&&(p.leading=!0),!1!==p.trailing&&(p.trailing=!0),a({},r,{value:function(){var e=this,r=n.i(i.c)(this),o=r.throttleTimeoutIds,a=r.throttlePreviousTimestamps,u=o[t],c=a[t]||0,l=Date.now();p.trailing&&(r.throttleTrailingArgs=arguments),c||!1!==p.leading||(c=l);var s=f-(l-c);s<=0?(clearTimeout(u),delete o[t],a[t]=l,h.apply(this,arguments)):!u&&p.trailing&&(o[t]=setTimeout(function(){a[t]=!1===p.leading?0:Date.now(),delete o[t],h.apply(e,r.throttleTrailingArgs),r.throttleTrailingArgs=null},s))}})}function o(){n.i(i.h)("@throttle is deprecated and will be removed shortly. Use @throttle from lodash-decorators.\n\n  https://www.npmjs.com/package/lodash-decorators");for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=300},function(e,t,n){"use strict";function r(e,t,n,r){var o=u(r,2),i=o[0],c=void 0===i?null:i,f=o[1],d=void 0===f?l:f,p=n.value;if(null===c&&(c=e.constructor.name+"."+t),"function"!=typeof p)throw new SyntaxError("@time can only be used on functions, not: "+p);return a({},n,{value:function(){var e=c+"-"+s;s++,d.time(e);try{return p.apply(this,arguments)}finally{d.timeEnd(e)}}})}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c={},l={time:console.time?console.time.bind(console):function(e){c[e]=new Date},timeEnd:console.timeEnd?console.timeEnd.bind(console):function(e){var t=new Date,n=t-c[e];delete c[e],console.log(e+": "+n+"ms")}},s=0},function(e,t){},function(e,t){},function(e,t,n){"use strict";function r(e){return function(){return e}}var o=function(){};o.thatReturns=r,o.thatReturnsFalse=r(!1),o.thatReturnsTrue=r(!0),o.thatReturnsNull=r(null),o.thatReturnsThis=function(){return this},o.thatReturnsArgument=function(e){return e},e.exports=o},function(e,t,n){"use strict";function r(e,t,n,r,i,a,u,c){if(o(t),!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,i,a,u,c],f=0;l=new Error(t.replace(/%s/g,function(){return s[f++]})),l.name="Invariant Violation"}throw l.framesToPop=1,l}}var o=function(e){};e.exports=r},function(e,t,n){"use strict";var r=n(33),o=n(34),i=n(36);e.exports=function(){function e(e,t,n,r,a,u){u!==i&&o(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return n.checkPropTypes=r,n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default={"zh-cn":{brand:{brandName:"Apache Dubbo",briefIntroduction:"Apache Dubbo™ (incubating)是一款高性能Java RPC框架。",getStartedButton:{text:"快速开始",link:"/zh-cn/docs/user/quick-start.html"},viewOnGithubButton:{text:"在Github中查看",link:"https://github.com/apache/incubator-dubbo"}},introduction:{title:"高性能Java RPC框架",desc:"Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。",img:"/img/architecture.png"},features:{title:"特性一览",list:[{img:"/img/feature_transpart.png",title:"面向接口代理的高性能RPC调用",content:"提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。"},{img:"/img/feature_loadbalances.png",title:"智能负载均衡",content:"内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。"},{img:"/img/feature_service.png",title:"服务自动注册与发现",content:"支持多种注册中心服务,服务实例上下线实时感知。"},{img:"/img/feature_hogh.png",title:"高度可扩展能力",content:"遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。"},{img:"/img/feature_runtime.png",title:"运行期流量调度",content:"内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。"},{img:"/img/feature_maintenance.png",title:"可视化的服务治理与运维",content:"提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。"}]},start:{title:"快速开始",desc:"只需通过几行代码即可快速构建一个Dubbo应用。",img:"/img/quick_start.png",button:{text:"阅读更多",link:"/zh-cn/docs/user/quick-start.html"}},users:{title:"谁在使用Dubbo",desc:o.default.createElement("span",null,"请在 ",o.default.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://github.com/apache/incubator-dubbo/issues/1012"},"Wanted: who's using dubbo")," 上提供信息来帮助Dubbo做的更好。"),list:["/img/users_alibaba.png","/img/users_kingdee.png","/img/users_dangdang.png","/img/users_didi.png","/img/users_qunar.png","/img/users_wanglian.png","/img/users_kaola.png","/img/users_zhengcaiyun.png","/img/users_chinalife.png","/img/users_haier.png","/img/users_yinlian.png","/img/users_telecom.png","/img/users_weidian.png","/img/users_icbc.png","/img/users_handu.png","/img/users_rograndec.png"]}},"en-us":{brand:{brandName:"Apache Dubbo",briefIntroduction:"Apache Dubbo™ (incubating) is a high-performance, java based open source RPC framework.",getStartedButton:{text:"GET STARTED",link:"/en-us/docs/user/quick-start.html"},viewOnGithubButton:{text:"VIEW ON GITHUB",link:"https://github.com/apache/incubator-dubbo"}},introduction:{title:"A high performance Java RPC framework",desc:"Apache Dubbo (incubating) |ˈdʌbəʊ| is a high-performance, light weight, java based RPC framework. Dubbo offers three key functionalities, which include interface based remote call, fault tolerance & load balancing, and automatic service registration & discovery.",img:"/img/architecture.png"},features:{title:"Feature List",list:[{img:"/img/feature_transpart.png",title:"Transparent interface based RPC",content:"Dubbo provides high performance interface based RPC, which is transparent to users."},{img:"/img/feature_loadbalances.png",title:"Intelligent load balancing",content:"Dubbo supports multiple load balancing strategies out of the box, which perceives downstream service status to reduce overall latency and improve system throughput."},{img:"/img/feature_service.png",title:"Automatic service registration and discovery",content:"Dubbo supports multiple service registries, which can detect service online/offline instantly."},{img:"/img/feature_hogh.png",title:"High extensibility",content:"Dubbo's micro-kernel and plugin design ensures that it can easily be extended by third party implementation across core features like Protocol, Transport, and Serialization."},{img:"/img/feature_runtime.png",title:"Runtime traffic routing",content:"Dubbo can be configured at runtime so that traffic can be routed according to different rules, which makes it easy to support features like blue-green deployment, data center aware routing, etc."},{img:"/img/feature_maintenance.png",title:"Visualized service governance",content:"Dubbo provides rich tools for service governance and maintenance such as querying service metadata, health status and statistics."}]},start:{title:"Quick start",desc:"This guide gets you started with dubbo in Java with a simple working example.",img:"/img/quick_start.png",button:{text:"READ MORE",link:"/en-us/docs/user/quick-start.html"}},users:{title:"Who is using Dubbo",desc:o.default.createElement("span",null,"Providing your info on ",o.default.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://github.com/apache/incubator-dubbo/issues/1012"},"Wanted: who's using dubbo")," to help improving dubbo better"),list:["/img/users_alibaba.png","/img/users_kingdee.png","/img/users_dangdang.png","/img/users_didi.png","/img/users_qunar.png","/img/users_wanglian.png","/img/users_kaola.png","/img/users_zhengcaiyun.png","/img/users_chinalife.png","/img/users_haier.png","/img/users_yinlian.png","/img/users_telecom.png","/img/users_weidian.png","/img/users_icbc.png","/img/users_handu.png","/img/users_rograndec.png"]}}}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0});var i=n(1),a=r(i),u=n(8),c=r(u),l=n(5);n(84);var s=function(e){return a.default.createElement("a",{className:(0,c.default)(o({button:!0},"button-"+e.type,!0)),target:"_blank",href:(0,l.getLink)(e.link)},e.children)};t.default=s},,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=function(e){var t=e.feature;return o.default.createElement("li",null,o.default.createElement("img",{src:""+window.rootPath+t.img}),o.default.createElement("div",null,o.default.createElement("h4",null,t.title),o.default.createElement("p",null,t.content)))};t.default=i},,,,,function(e,t){},,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),c=n(1),l=r(c),s=n(6),f=r(s),d=n(4),p=r(d),h=n(5),m=n(11),g=r(m),y=n(62),b=r(y),v=n(10),w=r(v),_=n(12),O=r(_),E=n(71),k=r(E),P=n(3),j=r(P),x=n(61),S=r(x);n(76);var A=function(e){function t(e){o(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.state={headerType:"primary"},n}return a(t,e),u(t,[{key:"componentDidMount",value:function(){var e=this;window.addEventListener("scroll",function(){(0,h.getScrollTop)()>66?e.setState({headerType:"normal"}):e.setState({headerType:"primary"})})}},{key:"render",value:function(){var e=void 0;e=window.rootPath?window.location.pathname.split("/")[2]:window.location.pathname.split("/")[1];var t=this.props.lang||e||p.default.get("docsite_language")||j.default.defaultLanguage;"en-us"!==t&&"zh-cn"!==t&&(t=j.default.defaultLanguage),t!==p.default.get("docsite_language")&&p.default.set("docsite_language",t,{expires:365,path:""});var n=S.default[t],r=this.state.headerType,o="primary"===r?window.rootPath+"/img/dubbo_white.png":window.rootPath+"/img/dubbo_colorful.png";return l.default.createElement("div",{className:"home-page"},l.default.createElement("section",{className:"top-section"},l.default.createElement(g.default,{currentKey:"home",type:r,logo:o,language:t,onLanguageChange:this.onLanguageChange}),l.default.createElement("div",{className:"vertical-middle"},l.default.createElement("img",{src:window.rootPath+"/img/dubbo.png"}),l.default.createElement("div",{className:"product-name"},l.default.createElement("h2",null,n.brand.brandName),l.default.createElement("img",{src:window.rootPath+"/img/incubating.svg"})),l.default.createElement("p",{className:"product-desc"},n.brand.briefIntroduction),l.default.createElement("div",{className:"button-area"},l.default.createElement("a",{className:"button",href:(0,h.getLink)(n.brand.getStartedButton.link)},n.brand.getStartedButton.text),l.default.createElement(b.default,{type:"primary",link:(0,h.getLink)(n.brand.viewOnGithubButton.link)},n.brand.viewOnGithubButton.text))),l.default.createElement("div",{className:"animation animation1"}),l.default.createElement("div",{className:"animation animation2"}),l.default.createElement("div",{className:"animation animation3"}),l.default.createElement("div",{className:"animation animation4"}),l.default.createElement("div",{className:"animation animation5"})),l.default.createElement("section",{className:"introduction-section"},l.default.createElement("div",{className:"introduction-body"},l.default.createElement("div",{className:"introduction"},l.default.createElement("h3",null,n.introduction.title),l.default.createElement("p",null,n.introduction.desc)),l.default.createElement("img",{src:""+window.rootPath+n.introduction.img}))),l.default.createElement("section",{className:"feature-section"},l.default.createElement("h3",null,n.features.title),l.default.createElement("ul",null,n.features.list.map(function(e,t){return l.default.createElement(k.default,{feature:e,key:t})}))),l.default.createElement("section",{className:"start-section"},l.default.createElement("div",{className:"start-body"},l.default.createElement("div",{className:"left-part"},l.default.createElement("h3",null,n.start.title),l.default.createElement("p",null,n.start.desc),l.default.createElement("a",{href:(0,h.getLink)(n.start.button.link)},n.start.button.text)),l.default.createElement("div",{className:"right-part"},l.default.createElement("img",{src:window.rootPath+"/img/quick_start.png"})))),l.default.createElement("section",{className:"users-section"},l.default.createElement("h3",null,n.users.title),l.default.createElement("p",null,n.users.desc),l.default.createElement("div",{className:"users"},n.users.list.map(function(e,t){return l.default.createElement("img",{src:""+window.rootPath+e,key:t})}))),l.default.createElement(w.default,{logo:window.rootPath+"/img/dubbo_gray.png"}))}}]),t}(O.default);document.getElementById("root")&&f.default.render(l.default.createElement(A,null),document.getElementById("root")),t.default=A},function(e,t){}]);
\ No newline at end of file
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r))e.push(n.apply(null,r));else if("object"===o)for(var a in r)i.call(r,a)&&r[a]&&e.push(a)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?e.exports=n:(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";function r(e,t,r){var o=r.configurable,u=r.enumerable,c=r.initializer,l=r.value;return{configurable:o,enumerable:u,get:function(){if(this!==e){var n=c?c.call(this):l;return a(this,t,{configurable:o,enumerable:u,writable:!0,value:n}),n}},set:n.i(i.e)(t)}}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.defineProperty},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),c=n(1),l=r(c),s=n(2),f=r(s),d=n(4),p=r(d),h=n(3),m=r(h),g=n(5);n(31);var y={logo:f.default.string.isRequired},b=function(e){function t(){return o(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),u(t,[{key:"render",value:function(){var e=this.props.logo,t=p.default.get("docsite_language")||m.default.defaultLanguage,n=m.default[t];return l.default.createElement("footer",{className:"footer-container"},l.default.createElement("div",{className:"footer-body"},l.default.createElement("img",{src:e}),l.default.createElement("img",{className:"apache",src:window.rootPath+"/img/apache_logo.png"}),l.default.createElement("div",{className:"cols-container"},l.default.createElement("div",{className:"col col-12"},l.default.createElement("h3",null,n.disclaimer.title),l.default.createElement("p",null,n.disclaimer.content)),l.default.createElement("div",{className:"col col-6"},l.default.createElement("dl",null,l.default.createElement("dt",null,n.documentation.title),n.documentation.list.map(function(e,t){return l.default.createElement("dd",{key:t},l.default.createElement("a",{href:(0,g.getLink)(e.link),target:e.target||"_self"},e.text))}))),l.default.createElement("div",{className:"col col-6"},l.default.createElement("dl",null,l.default.createElement("dt",null,n.resources.title),n.resources.list.map(function(e,t){return l.default.createElement("dd",{key:t},l.default.createElement("a",{href:(0,g.getLink)(e.link),target:e.target||"_self"},e.text))})))),l.default.createElement("div",{className:"copyright"},l.default.createElement("span",null,n.copyright))))}}]),t}(l.default.Component);b.propTypes=y,t.default=b},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var c,l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=n(1),f=r(s),d=n(2),p=r(d),h=n(8),m=r(h),g=n(7),y=n(3),b=r(y);n(32);var v=[{text:"中",value:"en-us"},{text:"En",value:"zh-cn"}],w=function(){},_={currentKey:p.default.string,logo:p.default.string.isRequired,type:p.default.oneOf(["primary","normal"]),language:p.default.oneOf(["en-us","zh-cn"]),onLanguageChange:p.default.func},O={type:"primary",language:"en-us",onLanguageChange:w},E=(0,g.autobind)(c=function(e){function t(e){i(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.state={menuBodyVisible:!1,language:e.language},n}return u(t,e),l(t,[{key:"componentWillReceiveProps",value:function(e){this.setState({language:e.language})}},{key:"toggleMenu",value:function(){this.setState({menuBodyVisible:!this.state.menuBodyVisible})}},{key:"switchLang",value:function(){var e=void 0;e="zh-cn"===this.state.language?"en-us":"zh-cn",this.setState({language:e}),this.props.onLanguageChange(e)}},{key:"render",value:function(){var e=this.props,t=e.type,n=e.logo,r=e.onLanguageChange,i=e.currentKey,a=this.state,u=a.menuBodyVisible,c=a.language;return f.default.createElement("header",{className:(0,m.default)(o({"header-container":!0},"header-container-"+t,!0))},f.default.createElement("div",{className:"header-body"},f.default.createElement("a",{href:window.rootPath+"/"+c+"/index.html"},f.default.createElement("img",{className:"logo",alt:b.default.name,title:b.default.name,src:n})),r!==w?f.default.createElement("span",{className:(0,m.default)(o({"language-switch":!0},"language-switch-"+t,!0)),onClick:this.switchLang},v.find(function(e){return e.value===c}).text):null,f.default.createElement("div",{className:(0,m.default)({"header-menu":!0,"header-menu-open":u})},f.default.createElement("img",{className:"header-menu-toggle",onClick:this.toggleMenu,src:"primary"===t?window.rootPath+"/img/menu_white.png":window.rootPath+"/img/menu_gray.png"}),f.default.createElement("ul",null,b.default[c].pageMenu.map(function(e){var n;return f.default.createElement("li",{className:(0,m.default)((n={"menu-item":!0},o(n,"menu-item-"+t,!0),o(n,"menu-item-"+t+"-active",i===e.key),n)),key:e.key},f.default.createElement("a",{href:""+window.rootPath+e.link},e.text))})))))}}]),t}(f.default.Component))||c;E.propTypes=_,E.defaultProps=O,t.default=E},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var u,c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(1),s=r(l),f=n(7),d=n(4),p=r(d),h=(u=function(e){function t(){return o(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),c(t,[{key:"onLanguageChange",value:function(e){var t=window.location.pathname,n=void 0;n="zh-cn"===e?"en-us":"zh-cn";var r=t.replace(window.rootPath+"/"+n,window.rootPath+"/"+e);p.default.set("docsite_language",e,{expires:365,path:""}),window.location=r}}]),t}(s.default.Component),function(e,t,n,r,o){var i={};return Object.keys(r).forEach(function(e){i[e]=r[e]}),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce(function(n,r){return r(e,t,n)||n},i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}(u.prototype,"onLanguageChange",[f.autobind],Object.getOwnPropertyDescriptor(u.prototype,"onLanguageChange"),u.prototype),u);t.default=h},,function(e,t,n){"use strict";function r(e,t){var n=e.prototype;for(var r in t)for(var a=t[r],u=0,c=a.length;u<c;u++){var l=a[u];o(n,r,l(n,r,i(n,r)))}return e}t.a=r;var o=Object.defineProperty,i=Object.getOwnPropertyDescriptor},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(e,t){if("undefined"==typeof WeakMap)throw new Error("Using @autobind on "+t.name+"() requires WeakMap support due to its use of super."+t.name+"()\n      See https://github.com/jayphelps/core-decorators.js/issues/20");d||(d=new WeakMap),!1===d.has(e)&&d.set(e,new WeakMap);var r=d.get(e);return!1===r.has(t)&&r.set(t,n.i(l.a)(t,e)),r.get(t)}function i(e){for(var t=n.i(l.f)(e.prototype),r=n.i(l.g)(t),o=0,i=r.length;o<i;o++){var u=r[o],c=t[u];"function"==typeof c.value&&"constructor"!==u&&s(e.prototype,u,a(e.prototype,u,c))}}function a(e,t,r){var i=r.value,a=r.configurable,u=r.enumerable;if("function"!=typeof i)throw new SyntaxError("@autobind can only be used on functions, not: "+i);var c=e.constructor;return{configurable:a,enumerable:u,get:function(){if(this===e)return i;if(this.constructor!==c&&f(this).constructor===c)return i;if(this.constructor!==c&&t in this.constructor.prototype)return o(this,i);var r=n.i(l.a)(i,this);return s(this,t,{configurable:!0,writable:!0,enumerable:!1,value:r}),r},set:n.i(l.e)(t)}}function u(e){return 1===e.length?i.apply(void 0,r(e)):a.apply(void 0,r(e))}function c(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(){return u(arguments)}:u(t)}t.a=c;var l=n(0),s=Object.defineProperty,f=Object.getPrototypeOf,d=void 0},function(e,t,n){"use strict";function r(e,t,r,o){var l=u(o,2),s=l[0],f=void 0===s?c:s,d=l[1],p=void 0!==d&&d,h=r.value;if("function"!=typeof h)throw new SyntaxError("Only functions can be debounced");return a({},r,{value:function(){var e=this,r=n.i(i.c)(this),o=r.debounceTimeoutIds,a=o[t],u=p&&!a,c=arguments;clearTimeout(a),o[t]=setTimeout(function(){delete o[t],p||h.apply(e,c)},f),u&&h.apply(this,c)}})}function o(){n.i(i.h)("@debounce is deprecated and will be removed shortly. Use @debounce from lodash-decorators.\n\n  https://www.npmjs.com/package/lodash-decorators");for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=300},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(e){return Array.isArray(e)?e:Array.from(e)}function i(e,t,i,a){var l=o(a),s=l[0],f=l.slice(1),d=i.configurable,p=i.enumerable,h=i.writable,m=i.get,g=i.set,y=i.value,b=!!m;return{configurable:d,enumerable:p,get:function(){var e=b?m.call(this):y,n=s.call.apply(s,[this,e].concat(r(f)));if(b)return n;var o={configurable:d,enumerable:p};return o.value=n,o.writable=h,c(this,t,o),n},set:b?g:n.i(u.e)()}}function a(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.i(u.d)(i,t)}t.a=a;var u=n(0),c=Object.defineProperty},function(e,t,n){"use strict";function r(e,t,r,o){var l=u(o,2),s=l[0],f=void 0===s?c:s,d=l[1],p=void 0===d?{}:d;if("function"!=typeof r.value)throw new SyntaxError("Only functions can be marked as deprecated");var h=e.constructor.name+"#"+t;return p.url&&(f+="\n\n    See "+p.url+" for more details.\n\n"),a({},r,{value:function(){return n.i(i.b)("DEPRECATION "+h+": "+f),r.value.apply(this,arguments)}})}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c="This function will be removed in future versions."},function(e,t,n){"use strict";function r(e,t,n){return n.enumerable=!0,n}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0)},function(e,t,n){"use strict";function r(e,t,n){var r=u(e),o=c(r,t);return a({},o,{value:n.value,initializer:n.initializer,get:n.get||o.get,set:n.set||o.set})}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=Object.getPrototypeOf,c=Object.getOwnPropertyDescriptor},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){return t===Object(t)?t:e[t]||(e[t]={})}function i(e,t,n,r,o){var i=t.apply(e,n);return r[o]=i,i}function a(e){var t=void 0,n=void 0;return e.value?(t=e.value,n="value"):e.get?(t=e.get,n="get"):e.set&&(t=e.set,n="set"),{fn:t,wrapKey:n}}function u(e,t,n){var u=a(n),c=u.fn,l=u.wrapKey,f=new WeakMap,d=Object.create(null),p=Object.create(null),h=0;return s({},n,r({},l,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r="0",a=0,u=t.length;a<u;a++){var l=t[a],s=o(p,l),m=f.get(s);void 0===m&&(m=++h,f.set(s,m)),r+=m}return d[r]||i(this,c,arguments,d,r)}))}function c(){n.i(l.h)("@memoize is deprecated and will be removed shortly. Use @memoize from lodash-decorators.\n\n  https://www.npmjs.com/package/lodash-decorators");for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.i(l.d)(u,t)}t.a=c;var l=n(0),s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}},function(e,t,n){"use strict";function r(e){return"[object Symbol]"===Object.prototype.toString.call(e)&&"object"===(void 0===e?"undefined":c(e))}function o(e,t){if(r(e)){do{if(t===Object.prototype)return void 0!==t[e];if(t.hasOwnProperty(e))return!0}while(t=s(t));return!1}return e in t}function i(e,t){if(!t.length)throw new SyntaxError("@mixin() class "+e.name+" requires at least one mixin as an argument");for(var r=0,i=t.length;r<i;r++)for(var a=n.i(u.f)(t[r]),c=n.i(u.g)(a),s=0,f=c.length;s<f;s++){var d=c[s];o(d,e.prototype)||l(e.prototype,d,a[d])}}function a(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.i(u.h)("@mixin is deprecated and will be removed shortly. Use @mixin from lodash-decorators.\n\n  https://www.npmjs.com/package/lodash-decorators"),"function"==typeof t[0]?i(t[0],[]):function(e){return i(e,t)}}t.a=a;var u=n(0),c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l=Object.defineProperty,s=Object.getPrototypeOf},function(e,t,n){"use strict";function r(e,t,n){return n.configurable=!1,n}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0)},function(e,t,n){"use strict";function r(e,t,n){return n.enumerable=!1,n}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e){return e.hasOwnProperty("value")?"data":e.hasOwnProperty("get")||e.hasOwnProperty("set")?"accessor":"data"}function i(e,t,n){n.assert(e.length===t.length)}function a(e,t,n){var r=p(e.value),o=p(t.value);if("undefined"===r&&"undefined"===o&&n.error("descriptor values are both undefined. (class properties are are not currently supported)'"),r!==o){("function"===o&&void 0===r||void 0!==r)&&n.error('value types do not match. {parent} is "'+r+'", {child} is "'+o+'"')}switch(o){case"function":i(e.value,t.value,n);break;default:n.error('Unexpected error. Please file a bug with: {parent} is "'+r+'", {child} is "'+o+'"')}}function u(e,t,n){var r="function"==typeof e.get,o="function"==typeof t.get,a="function"==typeof e.set,u="function"==typeof t.set;(r||o)&&(!r&&a&&n.error("{parent} is setter but {child} is getter"),!o&&u&&n.error("{parent} is getter but {child} is setter"),i(e.get,t.get,n)),(a||u)&&(!a&&r&&n.error("{parent} is getter but {child} is setter"),!u&&o&&n.error("{parent} is setter but {child} is getter"),i(e.set,t.set,n))}function c(e,t,n){var r=o(e),i=o(t);switch(r!==i&&n.error('descriptor types do not match. {parent} is "'+r+'", {child} is "'+i+'"'),i){case"data":a(e,t,n);break;case"accessor":u(e,t,n)}}function l(e,t){for(var n=0,r=y.length;n<r;n++){var o=y[n],i=o(t);if(i in e)return i}return null}function s(e,t,n){n.key=t;var r=Object.getPrototypeOf(e),o=Object.getOwnPropertyDescriptor(r,t),i=new g(r,e,o,n);if(void 0===o){var a=l(r,t),u=a?'\n\n  Did you mean "'+a+'"?':"";i.error("No descriptor matching {child} was found on the prototype chain."+u)}return c(o,n,i),n}function f(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.i(d.d)(s,t)}t.a=f;var d=n(0),p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),m=/^function ([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?(\([^\)]*\))[\s\S]+$/,g=function(){function e(t,n,o,i){r(this,e),this.parentKlass=t,this.childKlass=n,this.parentDescriptor=o,this.childDescriptor=i}return h(e,[{key:"_getTopic",value:function(e){return void 0===e?null:"value"in e?e.value:"get"in e?e.get:"set"in e?e.set:void 0}},{key:"_extractTopicSignature",value:function(e){switch(void 0===e?"undefined":p(e)){case"function":return this._extractFunctionSignature(e);default:return this.key}}},{key:"_extractFunctionSignature",value:function(e){var t=this;return e.toString().replace(m,function(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.key)+arguments[2]})}},{key:"key",get:function(){return this.childDescriptor.key}},{key:"parentNotation",get:function(){return this.parentKlass.constructor.name+"#"+this.parentPropertySignature}},{key:"childNotation",get:function(){return this.childKlass.constructor.name+"#"+this.childPropertySignature}},{key:"parentTopic",get:function(){return this._getTopic(this.parentDescriptor)}},{key:"childTopic",get:function(){return this._getTopic(this.childDescriptor)}},{key:"parentPropertySignature",get:function(){return this._extractTopicSignature(this.parentTopic)}},{key:"childPropertySignature",get:function(){return this._extractTopicSignature(this.childTopic)}}]),h(e,[{key:"assert",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";!0!==e&&this.error("{child} does not properly override {parent}"+t)}},{key:"error",value:function(e){var t=this;throw e=e.replace("{parent}",function(e){return t.parentNotation}).replace("{child}",function(e){return t.childNotation}),new SyntaxError(e)}}]),e}(),y=[function(e){return e.toLowerCase()},function(e){return e.toUpperCase()},function(e){return e+"s"},function(e){return e.slice(0,-1)},function(e){return e.slice(1,e.length)}]},function(e,t,n){"use strict";function r(e,t,r,l){var s=u(l,3),f=s[0],d=void 0===f?null:f,p=s[1],h=void 0!==p&&p,m=s[2],g=void 0===m?c:m;if(!o.__enabled)return o.__warned||(g.warn("console.profile is not supported. All @profile decorators are disabled."),o.__warned=!0),r;var y=r.value;if(null===d&&(d=e.constructor.name+"."+t),"function"!=typeof y)throw new SyntaxError("@profile can only be used on functions, not: "+y);return a({},r,{value:function(){var e=Date.now(),t=n.i(i.c)(this);(!0===h&&!t.profileLastRan||!1===h||"number"==typeof h&&e-t.profileLastRan>h||"function"==typeof h&&h.apply(this,arguments))&&(g.profile(d),t.profileLastRan=e);try{return y.apply(this,arguments)}finally{g.profileEnd(d)}}})}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=(console,{profile:console.profile?n.i(i.a)(console.profile,console):function(){},profileEnd:console.profileEnd?n.i(i.a)(console.profileEnd,console):function(){},warn:i.b});o.__enabled=!!console.profile,o.__warned=!1},function(e,t,n){"use strict";function r(e,t,n){return n.writable=!1,n}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0)},function(e,t,n){"use strict";function r(){}function o(e,t,n){if("object"===("undefined"==typeof console?"undefined":l(console))){var o=console.warn;console.warn=r;var i=t.apply(e,n);return console.warn=o,i}return t.apply(e,n)}function i(e,t,n){return c({},n,{value:function(){return o(this,n.value,arguments)}})}function a(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.i(u.d)(i,t)}t.a=a;var u=n(0),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e}},function(e,t,n){"use strict";function r(e,t,r,o){var l=u(o,2),s=l[0],f=void 0===s?c:s,d=l[1],p=void 0===d?{}:d,h=r.value;if("function"!=typeof h)throw new SyntaxError("Only functions can be throttled");return!1!==p.leading&&(p.leading=!0),!1!==p.trailing&&(p.trailing=!0),a({},r,{value:function(){var e=this,r=n.i(i.c)(this),o=r.throttleTimeoutIds,a=r.throttlePreviousTimestamps,u=o[t],c=a[t]||0,l=Date.now();p.trailing&&(r.throttleTrailingArgs=arguments),c||!1!==p.leading||(c=l);var s=f-(l-c);s<=0?(clearTimeout(u),delete o[t],a[t]=l,h.apply(this,arguments)):!u&&p.trailing&&(o[t]=setTimeout(function(){a[t]=!1===p.leading?0:Date.now(),delete o[t],h.apply(e,r.throttleTrailingArgs),r.throttleTrailingArgs=null},s))}})}function o(){n.i(i.h)("@throttle is deprecated and will be removed shortly. Use @throttle from lodash-decorators.\n\n  https://www.npmjs.com/package/lodash-decorators");for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=300},function(e,t,n){"use strict";function r(e,t,n,r){var o=u(r,2),i=o[0],c=void 0===i?null:i,f=o[1],d=void 0===f?l:f,p=n.value;if(null===c&&(c=e.constructor.name+"."+t),"function"!=typeof p)throw new SyntaxError("@time can only be used on functions, not: "+p);return a({},n,{value:function(){var e=c+"-"+s;s++,d.time(e);try{return p.apply(this,arguments)}finally{d.timeEnd(e)}}})}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return n.i(i.d)(r,t)}t.a=o;var i=n(0),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c={},l={time:console.time?console.time.bind(console):function(e){c[e]=new Date},timeEnd:console.timeEnd?console.timeEnd.bind(console):function(e){var t=new Date,n=t-c[e];delete c[e],console.log(e+": "+n+"ms")}},s=0},function(e,t){},function(e,t){},function(e,t,n){"use strict";function r(e){return function(){return e}}var o=function(){};o.thatReturns=r,o.thatReturnsFalse=r(!1),o.thatReturnsTrue=r(!0),o.thatReturnsNull=r(null),o.thatReturnsThis=function(){return this},o.thatReturnsArgument=function(e){return e},e.exports=o},function(e,t,n){"use strict";function r(e,t,n,r,i,a,u,c){if(o(t),!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,i,a,u,c],f=0;l=new Error(t.replace(/%s/g,function(){return s[f++]})),l.name="Invariant Violation"}throw l.framesToPop=1,l}}var o=function(e){};e.exports=r},function(e,t,n){"use strict";var r=n(33),o=n(34),i=n(36);e.exports=function(){function e(e,t,n,r,a,u){u!==i&&o(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return n.checkPropTypes=r,n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default={"zh-cn":{brand:{brandName:"Apache Dubbo",briefIntroduction:"Apache Dubbo™ (incubating)是一款高性能Java RPC框架。",getStartedButton:{text:"快速开始",link:"/zh-cn/docs/user/quick-start.html"},viewOnGithubButton:{text:"在Github中查看",link:"https://github.com/apache/incubator-dubbo"}},introduction:{title:"高性能Java RPC框架",desc:"Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。",img:"/img/architecture.png"},features:{title:"特性一览",list:[{img:"/img/feature_transpart.png",title:"面向接口代理的高性能RPC调用",content:"提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。"},{img:"/img/feature_loadbalances.png",title:"智能负载均衡",content:"内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。"},{img:"/img/feature_service.png",title:"服务自动注册与发现",content:"支持多种注册中心服务,服务实例上下线实时感知。"},{img:"/img/feature_hogh.png",title:"高度可扩展能力",content:"遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。"},{img:"/img/feature_runtime.png",title:"运行期流量调度",content:"内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。"},{img:"/img/feature_maintenance.png",title:"可视化的服务治理与运维",content:"提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。"}]},start:{title:"快速开始",desc:"只需通过几行代码即可快速构建一个Dubbo应用。",img:"/img/quick_start.png",button:{text:"阅读更多",link:"/zh-cn/docs/user/quick-start.html"}},users:{title:"谁在使用Dubbo",desc:o.default.createElement("span",null,"请在 ",o.default.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://github.com/apache/incubator-dubbo/issues/1012"},"Wanted: who's using dubbo")," 上提供信息来帮助Dubbo做的更好。"),list:["/img/users_alibaba.png","/img/users_kingdee.png","/img/users_dangdang.png","/img/users_didi.png","/img/users_qunar.png","/img/users_wanglian.png","/img/users_kaola.png","/img/users_zhengcaiyun.png","/img/users_chinalife.png","/img/users_haier.png","/img/users_yinlian.png","/img/users_telecom.png","/img/users_weidian.png","/img/users_icbc.png","/img/users_handu.png","/img/users_rograndec.png"]}},"en-us":{brand:{brandName:"Apache Dubbo",briefIntroduction:"Apache Dubbo™ (incubating) is a high-performance, java based open source RPC framework.",getStartedButton:{text:"GET STARTED",link:"/en-us/docs/user/quick-start.html"},viewOnGithubButton:{text:"VIEW ON GITHUB",link:"https://github.com/apache/incubator-dubbo"}},introduction:{title:"A high performance Java RPC framework",desc:"Apache Dubbo (incubating) |ˈdʌbəʊ| is a high-performance, light weight, java based RPC framework. Dubbo offers three key functionalities, which include interface based remote call, fault tolerance & load balancing, and automatic service registration & discovery.",img:"/img/architecture.png"},features:{title:"Feature List",list:[{img:"/img/feature_transpart.png",title:"Transparent interface based RPC",content:"Dubbo provides high performance interface based RPC, which is transparent to users."},{img:"/img/feature_loadbalances.png",title:"Intelligent load balancing",content:"Dubbo supports multiple load balancing strategies out of the box, which perceives downstream service status to reduce overall latency and improve system throughput."},{img:"/img/feature_service.png",title:"Automatic service registration and discovery",content:"Dubbo supports multiple service registries, which can detect service online/offline instantly."},{img:"/img/feature_hogh.png",title:"High extensibility",content:"Dubbo's micro-kernel and plugin design ensures that it can easily be extended by third party implementation across core features like Protocol, Transport, and Serialization."},{img:"/img/feature_runtime.png",title:"Runtime traffic routing",content:"Dubbo can be configured at runtime so that traffic can be routed according to different rules, which makes it easy to support features like blue-green deployment, data center aware routing, etc."},{img:"/img/feature_maintenance.png",title:"Visualized service governance",content:"Dubbo provides rich tools for service governance and maintenance such as querying service metadata, health status and statistics."}]},start:{title:"Quick start",desc:"This guide gets you started with dubbo in Java with a simple working example.",img:"/img/quick_start.png",button:{text:"READ MORE",link:"/en-us/docs/user/quick-start.html"}},users:{title:"Who is using Dubbo",desc:o.default.createElement("span",null,"Providing your info on ",o.default.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://github.com/apache/incubator-dubbo/issues/1012"},"Wanted: who's using dubbo")," to help improving dubbo better"),list:["/img/users_alibaba.png","/img/users_kingdee.png","/img/users_dangdang.png","/img/users_didi.png","/img/users_qunar.png","/img/users_wanglian.png","/img/users_kaola.png","/img/users_zhengcaiyun.png","/img/users_chinalife.png","/img/users_haier.png","/img/users_yinlian.png","/img/users_telecom.png","/img/users_weidian.png","/img/users_icbc.png","/img/users_handu.png","/img/users_rograndec.png"]}}}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0});var i=n(1),a=r(i),u=n(8),c=r(u),l=n(5);n(84);var s=function(e){return a.default.createElement("a",{className:(0,c.default)(o({button:!0},"button-"+e.type,!0)),target:"_blank",href:(0,l.getLink)(e.link)},e.children)};t.default=s},,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=function(e){var t=e.feature;return o.default.createElement("li",null,o.default.createElement("img",{src:""+window.rootPath+t.img}),o.default.createElement("div",null,o.default.createElement("h4",null,t.title),o.default.createElement("p",null,t.content)))};t.default=i},,,,,function(e,t){},,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),c=n(1),l=r(c),s=n(6),f=r(s),d=n(4),p=r(d),h=n(5),m=n(11),g=r(m),y=n(62),b=r(y),v=n(10),w=r(v),_=n(12),O=r(_),E=n(71),k=r(E),P=n(3),j=r(P),x=n(61),S=r(x);n(76);var A=function(e){function t(e){o(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.state={headerType:"primary"},n}return a(t,e),u(t,[{key:"componentDidMount",value:function(){var e=this;window.addEventListener("scroll",function(){(0,h.getScrollTop)()>66?e.setState({headerType:"normal"}):e.setState({headerType:"primary"})})}},{key:"render",value:function(){var e=void 0;e=window.rootPath?window.location.pathname.split("/")[2]:window.location.pathname.split("/")[1];var t=this.props.lang||e||p.default.get("docsite_language")||j.default.defaultLanguage;"en-us"!==t&&"zh-cn"!==t&&(t=j.default.defaultLanguage),t!==p.default.get("docsite_language")&&p.default.set("docsite_language",t,{expires:365,path:""});var n=S.default[t],r=this.state.headerType,o="primary"===r?window.rootPath+"/img/dubbo_white.png":window.rootPath+"/img/dubbo_colorful.png";return l.default.createElement("div",{className:"home-page"},l.default.createElement("section",{className:"top-section"},l.default.createElement(g.default,{currentKey:"home",type:r,logo:o,language:t,onLanguageChange:this.onLanguageChange}),l.default.createElement("div",{className:"vertical-middle"},l.default.createElement("img",{src:window.rootPath+"/img/dubbo.png"}),l.default.createElement("div",{className:"product-name"},l.default.createElement("h2",null,n.brand.brandName),l.default.createElement("img",{src:window.rootPath+"/img/incubating.svg"})),l.default.createElement("p",{className:"product-desc"},n.brand.briefIntroduction),l.default.createElement("div",{className:"button-area"},l.default.createElement(b.default,{type:"primary",link:(0,h.getLink)(n.brand.getStartedButton.link)},n.brand.getStartedButton.text),l.default.createElement(b.default,{type:"normal",link:(0,h.getLink)(n.brand.viewOnGithubButton.link)},n.brand.viewOnGithubButton.text))),l.default.createElement("div",{className:"animation animation1"}),l.default.createElement("div",{className:"animation animation2"}),l.default.createElement("div",{className:"animation animation3"}),l.default.createElement("div",{className:"animation animation4"}),l.default.createElement("div",{className:"animation animation5"})),l.default.createElement("section",{className:"introduction-section"},l.default.createElement("div",{className:"introduction-body"},l.default.createElement("div",{className:"introduction"},l.default.createElement("h3",null,n.introduction.title),l.default.createElement("p",null,n.introduction.desc)),l.default.createElement("img",{src:""+window.rootPath+n.introduction.img}))),l.default.createElement("section",{className:"feature-section"},l.default.createElement("h3",null,n.features.title),l.default.createElement("ul",null,n.features.list.map(function(e,t){return l.default.createElement(k.default,{feature:e,key:t})}))),l.default.createElement("section",{className:"start-section"},l.default.createElement("div",{className:"start-body"},l.default.createElement("div",{className:"left-part"},l.default.createElement("h3",null,n.start.title),l.default.createElement("p",null,n.start.desc),l.default.createElement("a",{href:(0,h.getLink)(n.start.button.link)},n.start.button.text)),l.default.createElement("div",{className:"right-part"},l.default.createElement("img",{src:window.rootPath+"/img/quick_start.png"})))),l.default.createElement("section",{className:"users-section"},l.default.createElement("h3",null,n.users.title),l.default.createElement("p",null,n.users.desc),l.default.createElement("div",{className:"users"},n.users.list.map(function(e,t){return l.default.createElement("img",{src:""+window.rootPath+e,key:t})}))),l.default.createElement(w.default,{logo:window.rootPath+"/img/dubbo_gray.png"}))}}]),t}(O.default);document.getElementById("root")&&f.default.render(l.default.createElement(A,null),document.getElementById("root")),t.default=A},function(e,t){}]);
\ No newline at end of file
diff --git a/en-us/index.html b/en-us/index.html
index 8676dbc..fc7ce68 100644
--- a/en-us/index.html
+++ b/en-us/index.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/home.css" />
 </head>
 <body>
-	<div id="root"><div class="home-page" data-reactroot="" data-reactid="1" data-react-checksum="-1877877022"><section class="top-section" data-reactid="2"><header class="header-container header-container-primary" data-reactid="3"><div class="header-body" data-reactid="4"><a href="/en-us/index.html" data-reactid="5"><img class="logo" src="/img/dubbo_white.png" data-reactid="6"/></a><span class="language-switch language-switch-primary" data-reactid="7">中</span><div class="header-menu" data-reactid="8"><img class="header-menu-toggle" src="/img/menu_white.png" data-reactid="9"/><ul data-reactid="10"><li class="menu-item menu-item-primary menu-item-primary-active" data-reactid="11"><a href="/en-us/index.html" data-reactid="12">HOME</a></li><li class="menu-item menu-item-primary" data-reactid="13"><a href="/en-us/docs/user/quick-start.html" data-reactid="14">DOCS</a></li><li class="menu-item menu-item-primary" data-reactid="15"><a href="/en-us/blog/index.html" data-reactid="16">BLOG</a></li><li class="menu-item menu-item-primary" data-reactid="17"><a href="/en-us/community/index.html" data-reactid="18">COMMUNITY</a></li></ul></div></div></header><div class="vertical-middle" data-reactid="19"><img src="/img/dubbo.png" data-reactid="20"/><div class="product-name" data-reactid="21"><h2 data-reactid="22">Apache Dubbo</h2><img src="/img/incubating.svg" data-reactid="23"/></div><p class="product-desc" data-reactid="24">Apache Dubbo™ (incubating) is a high-performance, java based open source RPC framework.</p><div class="button-area" data-reactid="25"><a class="button" href="/en-us/docs/user/quick-start.html" data-reactid="26">GET STARTED</a><a class="button button-primary" target="_blank" href="https://github.com/apache/incubator-dubbo" data-reactid="27">VIEW ON GITHUB</a></div></div><div class="animation animation1" data-reactid="28"></div><div class="animation animation2" data-reactid="29"></div><div class="animation animation3" data-reactid="30"></div><div class="animation animation4" data-reactid="31"></div><div class="animation animation5" data-reactid="32"></div></section><section class="introduction-section" data-reactid="33"><div class="introduction-body" data-reactid="34"><div class="introduction" data-reactid="35"><h3 data-reactid="36">A high performance Java RPC framework</h3><p data-reactid="37">Apache Dubbo (incubating) |ˈdʌbəʊ| is a high-performance, light weight, java based RPC framework. Dubbo offers three key functionalities, which include interface based remote call, fault tolerance &amp; load balancing, and automatic service registration &amp; discovery.</p></div><img src="/img/architecture.png" data-reactid="38"/></div></section><section class="feature-section" data-reactid="39"><h3 data-reactid="40">Feature List</h3><ul data-reactid="41"><li data-reactid="42"><img src="/img/feature_transpart.png" data-reactid="43"/><div data-reactid="44"><h4 data-reactid="45">Transparent interface based RPC</h4><p data-reactid="46">Dubbo provides high performance interface based RPC, which is transparent to users.</p></div></li><li data-reactid="47"><img src="/img/feature_loadbalances.png" data-reactid="48"/><div data-reactid="49"><h4 data-reactid="50">Intelligent load balancing</h4><p data-reactid="51">Dubbo supports multiple load balancing strategies out of the box, which perceives downstream service status to reduce overall latency and improve system throughput.</p></div></li><li data-reactid="52"><img src="/img/feature_service.png" data-reactid="53"/><div data-reactid="54"><h4 data-reactid="55">Automatic service registration and discovery</h4><p data-reactid="56">Dubbo supports multiple service registries, which can detect service online/offline instantly.</p></div></li><li data-reactid="57"><img src="/img/feature_hogh.png" data-reactid="58"/><div data-reactid="59"><h4 data-reactid="60">High extensibility</h4><p data-reactid="61">Dubbo&#x27;s micro-kernel and plugin design ensures that it can easily be extended by third party implementation across core features like Protocol, Transport, and Serialization.</p></div></li><li data-reactid="62"><img src="/img/feature_runtime.png" data-reactid="63"/><div data-reactid="64"><h4 data-reactid="65">Runtime traffic routing</h4><p data-reactid="66">Dubbo can be configured at runtime so that traffic can be routed according to different rules, which makes it easy to support features like blue-green deployment, data center aware routing, etc.</p></div></li><li data-reactid="67"><img src="/img/feature_maintenance.png" data-reactid="68"/><div data-reactid="69"><h4 data-reactid="70">Visualized service governance</h4><p data-reactid="71">Dubbo provides rich tools for service governance and maintenance such as querying service metadata, health status and statistics.</p></div></li></ul></section><section class="start-section" data-reactid="72"><div class="start-body" data-reactid="73"><div class="left-part" data-reactid="74"><h3 data-reactid="75">Quick start</h3><p data-reactid="76">This guide gets you started with dubbo in Java with a simple working example.</p><a href="/en-us/docs/user/quick-start.html" data-reactid="77">READ MORE</a></div><div class="right-part" data-reactid="78"><img src="/img/quick_start.png" data-reactid="79"/></div></div></section><section class="users-section" data-reactid="80"><h3 data-reactid="81">Who is using Dubbo</h3><p data-reactid="82"><span data-reactid="83"><!-- react-text: 84 -->Providing your info on <!-- /react-text --><a rel="noopener noreferrer" target="_blank" href="https://github.com/apache/incubator-dubbo/issues/1012" data-reactid="85">Wanted: who&#x27;s using dubbo</a><!-- react-text: 86 --> to help improving dubbo better<!-- /react-text --></span></p><div class="users" data-reactid="87"><img src="/img/users_alibaba.png" data-reactid="88"/><img src="/img/users_kingdee.png" data-reactid="89"/><img src="/img/users_dangdang.png" data-reactid="90"/><img src="/img/users_didi.png" data-reactid="91"/><img src="/img/users_qunar.png" data-reactid="92"/><img src="/img/users_wanglian.png" data-reactid="93"/><img src="/img/users_kaola.png" data-reactid="94"/><img src="/img/users_zhengcaiyun.png" data-reactid="95"/><img src="/img/users_chinalife.png" data-reactid="96"/><img src="/img/users_haier.png" data-reactid="97"/><img src="/img/users_yinlian.png" data-reactid="98"/><img src="/img/users_telecom.png" data-reactid="99"/><img src="/img/users_weidian.png" data-reactid="100"/><img src="/img/users_icbc.png" data-reactid="101"/><img src="/img/users_handu.png" data-reactid="102"/><img src="/img/users_rograndec.png" data-reactid="103"/></div></section><footer class="footer-container" data-reactid="104"><div class="footer-body" data-reactid="105"><img src="/img/dubbo_gray.png" data-reactid="106"/><img class="apache" src="/img/apache_logo.png" data-reactid="107"/><div class="cols-container" data-reactid="108"><div class="col col-12" data-reactid="109"><h3 data-reactid="110">Disclaimer</h3><p data-reactid="111">Apache Dubbo is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p></div><div class="col col-6" data-reactid="112"><dl data-reactid="113"><dt data-reactid="114">Documentation</dt><dd data-reactid="115"><a href="/en-us/docs/user/quick-start.html" target="_self" data-reactid="116">Quick start</a></dd><dd data-reactid="117"><a href="/en-us/docs/dev/build.html" target="_self" data-reactid="118">Developer guide</a></dd><dd data-reactid="119"><a href="/en-us/docs/admin/ops/dubbo-ops.html" target="_self" data-reactid="120">Admin manual</a></dd></dl></div><div class="col col-6" data-reactid="121"><dl data-reactid="122"><dt data-reactid="123">Resources</dt><dd data-reactid="124"><a href="/en-us/blog/index.html" target="_self" data-reactid="125">Blog</a></dd><dd data-reactid="126"><a href="/en-us/community/index.html" target="_self" data-reactid="127">Community</a></dd></dl></div></div><div class="copyright" data-reactid="128"><span data-reactid="129">Copyright © 2018 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</span></div></div></footer></div></div>
+	<div id="root"><div class="home-page" data-reactroot="" data-reactid="1" data-react-checksum="-181081629"><section class="top-section" data-reactid="2"><header class="header-container header-container-primary" data-reactid="3"><div class="header-body" data-reactid="4"><a href="/en-us/index.html" data-reactid="5"><img class="logo" src="/img/dubbo_white.png" data-reactid="6"/></a><span class="language-switch language-switch-primary" data-reactid="7">中</span><div class="header-menu" data-reactid="8"><img class="header-menu-toggle" src="/img/menu_white.png" data-reactid="9"/><ul data-reactid="10"><li class="menu-item menu-item-primary menu-item-primary-active" data-reactid="11"><a href="/en-us/index.html" data-reactid="12">HOME</a></li><li class="menu-item menu-item-primary" data-reactid="13"><a href="/en-us/docs/user/quick-start.html" data-reactid="14">DOCS</a></li><li class="menu-item menu-item-primary" data-reactid="15"><a href="/en-us/blog/index.html" data-reactid="16">BLOG</a></li><li class="menu-item menu-item-primary" data-reactid="17"><a href="/en-us/community/index.html" data-reactid="18">COMMUNITY</a></li></ul></div></div></header><div class="vertical-middle" data-reactid="19"><img src="/img/dubbo.png" data-reactid="20"/><div class="product-name" data-reactid="21"><h2 data-reactid="22">Apache Dubbo</h2><img src="/img/incubating.svg" data-reactid="23"/></div><p class="product-desc" data-reactid="24">Apache Dubbo™ (incubating) is a high-performance, java based open source RPC framework.</p><div class="button-area" data-reactid="25"><a class="button button-primary" target="_blank" href="/en-us/docs/user/quick-start.html" data-reactid="26">GET STARTED</a><a class="button button-normal" target="_blank" href="https://github.com/apache/incubator-dubbo" data-reactid="27">VIEW ON GITHUB</a></div></div><div class="animation animation1" data-reactid="28"></div><div class="animation animation2" data-reactid="29"></div><div class="animation animation3" data-reactid="30"></div><div class="animation animation4" data-reactid="31"></div><div class="animation animation5" data-reactid="32"></div></section><section class="introduction-section" data-reactid="33"><div class="introduction-body" data-reactid="34"><div class="introduction" data-reactid="35"><h3 data-reactid="36">A high performance Java RPC framework</h3><p data-reactid="37">Apache Dubbo (incubating) |ˈdʌbəʊ| is a high-performance, light weight, java based RPC framework. Dubbo offers three key functionalities, which include interface based remote call, fault tolerance &amp; load balancing, and automatic service registration &amp; discovery.</p></div><img src="/img/architecture.png" data-reactid="38"/></div></section><section class="feature-section" data-reactid="39"><h3 data-reactid="40">Feature List</h3><ul data-reactid="41"><li data-reactid="42"><img src="/img/feature_transpart.png" data-reactid="43"/><div data-reactid="44"><h4 data-reactid="45">Transparent interface based RPC</h4><p data-reactid="46">Dubbo provides high performance interface based RPC, which is transparent to users.</p></div></li><li data-reactid="47"><img src="/img/feature_loadbalances.png" data-reactid="48"/><div data-reactid="49"><h4 data-reactid="50">Intelligent load balancing</h4><p data-reactid="51">Dubbo supports multiple load balancing strategies out of the box, which perceives downstream service status to reduce overall latency and improve system throughput.</p></div></li><li data-reactid="52"><img src="/img/feature_service.png" data-reactid="53"/><div data-reactid="54"><h4 data-reactid="55">Automatic service registration and discovery</h4><p data-reactid="56">Dubbo supports multiple service registries, which can detect service online/offline instantly.</p></div></li><li data-reactid="57"><img src="/img/feature_hogh.png" data-reactid="58"/><div data-reactid="59"><h4 data-reactid="60">High extensibility</h4><p data-reactid="61">Dubbo&#x27;s micro-kernel and plugin design ensures that it can easily be extended by third party implementation across core features like Protocol, Transport, and Serialization.</p></div></li><li data-reactid="62"><img src="/img/feature_runtime.png" data-reactid="63"/><div data-reactid="64"><h4 data-reactid="65">Runtime traffic routing</h4><p data-reactid="66">Dubbo can be configured at runtime so that traffic can be routed according to different rules, which makes it easy to support features like blue-green deployment, data center aware routing, etc.</p></div></li><li data-reactid="67"><img src="/img/feature_maintenance.png" data-reactid="68"/><div data-reactid="69"><h4 data-reactid="70">Visualized service governance</h4><p data-reactid="71">Dubbo provides rich tools for service governance and maintenance such as querying service metadata, health status and statistics.</p></div></li></ul></section><section class="start-section" data-reactid="72"><div class="start-body" data-reactid="73"><div class="left-part" data-reactid="74"><h3 data-reactid="75">Quick start</h3><p data-reactid="76">This guide gets you started with dubbo in Java with a simple working example.</p><a href="/en-us/docs/user/quick-start.html" data-reactid="77">READ MORE</a></div><div class="right-part" data-reactid="78"><img src="/img/quick_start.png" data-reactid="79"/></div></div></section><section class="users-section" data-reactid="80"><h3 data-reactid="81">Who is using Dubbo</h3><p data-reactid="82"><span data-reactid="83"><!-- react-text: 84 -->Providing your info on <!-- /react-text --><a rel="noopener noreferrer" target="_blank" href="https://github.com/apache/incubator-dubbo/issues/1012" data-reactid="85">Wanted: who&#x27;s using dubbo</a><!-- react-text: 86 --> to help improving dubbo better<!-- /react-text --></span></p><div class="users" data-reactid="87"><img src="/img/users_alibaba.png" data-reactid="88"/><img src="/img/users_kingdee.png" data-reactid="89"/><img src="/img/users_dangdang.png" data-reactid="90"/><img src="/img/users_didi.png" data-reactid="91"/><img src="/img/users_qunar.png" data-reactid="92"/><img src="/img/users_wanglian.png" data-reactid="93"/><img src="/img/users_kaola.png" data-reactid="94"/><img src="/img/users_zhengcaiyun.png" data-reactid="95"/><img src="/img/users_chinalife.png" data-reactid="96"/><img src="/img/users_haier.png" data-reactid="97"/><img src="/img/users_yinlian.png" data-reactid="98"/><img src="/img/users_telecom.png" data-reactid="99"/><img src="/img/users_weidian.png" data-reactid="100"/><img src="/img/users_icbc.png" data-reactid="101"/><img src="/img/users_handu.png" data-reactid="102"/><img src="/img/users_rograndec.png" data-reactid="103"/></div></section><footer class="footer-container" data-reactid="104"><div class="footer-body" data-reactid="105"><img src="/img/dubbo_gray.png" data-reactid="106"/><img class="apache" src="/img/apache_logo.png" data-reactid="107"/><div class="cols-container" data-reactid="108"><div class="col col-12" data-reactid="109"><h3 data-reactid="110">Disclaimer</h3><p data-reactid="111">Apache Dubbo is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p></div><div class="col col-6" data-reactid="112"><dl data-reactid="113"><dt data-reactid="114">Documentation</dt><dd data-reactid="115"><a href="/en-us/docs/user/quick-start.html" target="_self" data-reactid="116">Quick start</a></dd><dd data-reactid="117"><a href="/en-us/docs/dev/build.html" target="_self" data-reactid="118">Developer guide</a></dd><dd data-reactid="119"><a href="/en-us/docs/admin/ops/dubbo-ops.html" target="_self" data-reactid="120">Admin manual</a></dd></dl></div><div class="col col-6" data-reactid="121"><dl data-reactid="122"><dt data-reactid="123">Resources</dt><dd data-reactid="124"><a href="/en-us/blog/index.html" target="_self" data-reactid="125">Blog</a></dd><dd data-reactid="126"><a href="/en-us/community/index.html" target="_self" data-reactid="127">Community</a></dd></dl></div></div><div class="copyright" data-reactid="128"><span data-reactid="129">Copyright © 2018 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</span></div></div></footer></div></div>
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
 	<script>
diff --git a/src/components/button/index.scss b/src/components/button/index.scss
index d39f362..46ed515 100644
--- a/src/components/button/index.scss
+++ b/src/components/button/index.scss
@@ -1,9 +1,11 @@
+@import '../../variables.scss';
 .button {
     box-sizing: border-box;
     display: inline-block;
     height: 48px;
     line-height: 48px;
     min-width: 140px;
+    padding: 0 12px;
     font-family: Avenir-Heavy;
     font-size: 16px;
     color: #FFF;
diff --git a/src/pages/home/index.jsx b/src/pages/home/index.jsx
index 2706453..f7c8aed 100644
--- a/src/pages/home/index.jsx
+++ b/src/pages/home/index.jsx
@@ -72,8 +72,8 @@ class Home extends Language {
             </div>
             <p className="product-desc">{dataSource.brand.briefIntroduction}</p>
             <div className="button-area">
-              <a className="button" href={getLink(dataSource.brand.getStartedButton.link)}>{dataSource.brand.getStartedButton.text}</a>
-              <Button type="primary" link={getLink(dataSource.brand.viewOnGithubButton.link)}>{dataSource.brand.viewOnGithubButton.text}</Button>
+              <Button type="primary" link={getLink(dataSource.brand.getStartedButton.link)}>{dataSource.brand.getStartedButton.text}</Button>
+              <Button type="normal" link={getLink(dataSource.brand.viewOnGithubButton.link)}>{dataSource.brand.viewOnGithubButton.text}</Button>
             </div>
           </div>
           <div className="animation animation1" />
diff --git a/src/pages/home/index.scss b/src/pages/home/index.scss
index a47cddb..71ddeda 100644
--- a/src/pages/home/index.scss
+++ b/src/pages/home/index.scss
@@ -124,19 +124,6 @@
     .button-area {
       text-align: center;
       margin-top: 40px;
-      .button {
-        display: inline-block;
-        background-color: #fff;
-        border-radius: 4px;
-        width: 140px;
-        height: 54px;
-        line-height: 54px;
-        color: $brandColor;
-        font-family: Avenir-Heavy;
-        font-size: 14px;
-        color: #2DACEC;
-        text-align: center;
-      }
       .button:first-child {
         margin-right: 20px;
       }
diff --git a/zh-cn/index.html b/zh-cn/index.html
index d2501f2..0b401ae 100644
--- a/zh-cn/index.html
+++ b/zh-cn/index.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/home.css" />
 </head>
 <body>
-	<div id="root"><div class="home-page" data-reactroot="" data-reactid="1" data-react-checksum="-1426639043"><section class="top-section" data-reactid="2"><header class="header-container header-container-primary" data-reactid="3"><div class="header-body" data-reactid="4"><a href="/zh-cn/index.html" data-reactid="5"><img class="logo" src="/img/dubbo_white.png" data-reactid="6"/></a><span class="language-switch language-switch-primary" data-reactid="7">En</span><div class="header-menu" data-reactid="8"><img class="header-menu-toggle" src="/img/menu_white.png" data-reactid="9"/><ul data-reactid="10"><li class="menu-item menu-item-primary menu-item-primary-active" data-reactid="11"><a href="/zh-cn/index.html" data-reactid="12">首页</a></li><li class="menu-item menu-item-primary" data-reactid="13"><a href="/zh-cn/docs/user/quick-start.html" data-reactid="14">文档</a></li><li class="menu-item menu-item-primary" data-reactid="15"><a href="/zh-cn/blog/index.html" data-reactid="16">博客</a></li><li class="menu-item menu-item-primary" data-reactid="17"><a href="/zh-cn/community/index.html" data-reactid="18">社区</a></li></ul></div></div></header><div class="vertical-middle" data-reactid="19"><img src="/img/dubbo.png" data-reactid="20"/><div class="product-name" data-reactid="21"><h2 data-reactid="22">Apache Dubbo</h2><img src="/img/incubating.svg" data-reactid="23"/></div><p class="product-desc" data-reactid="24">Apache Dubbo™ (incubating)是一款高性能Java RPC框架。</p><div class="button-area" data-reactid="25"><a class="button" href="/zh-cn/docs/user/quick-start.html" data-reactid="26">快速开始</a><a class="button button-primary" target="_blank" href="https://github.com/apache/incubator-dubbo" data-reactid="27">在Github中查看</a></div></div><div class="animation animation1" data-reactid="28"></div><div class="animation animation2" data-reactid="29"></div><div class="animation animation3" data-reactid="30"></div><div class="animation animation4" data-reactid="31"></div><div class="animation animation5" data-reactid="32"></div></section><section class="introduction-section" data-reactid="33"><div class="introduction-body" data-reactid="34"><div class="introduction" data-reactid="35"><h3 data-reactid="36">高性能Java RPC框架</h3><p data-reactid="37">Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。</p></div><img src="/img/architecture.png" data-reactid="38"/></div></section><section class="feature-section" data-reactid="39"><h3 data-reactid="40">特性一览</h3><ul data-reactid="41"><li data-reactid="42"><img src="/img/feature_transpart.png" data-reactid="43"/><div data-reactid="44"><h4 data-reactid="45">面向接口代理的高性能RPC调用</h4><p data-reactid="46">提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。</p></div></li><li data-reactid="47"><img src="/img/feature_loadbalances.png" data-reactid="48"/><div data-reactid="49"><h4 data-reactid="50">智能负载均衡</h4><p data-reactid="51">内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。</p></div></li><li data-reactid="52"><img src="/img/feature_service.png" data-reactid="53"/><div data-reactid="54"><h4 data-reactid="55">服务自动注册与发现</h4><p data-reactid="56">支持多种注册中心服务,服务实例上下线实时感知。</p></div></li><li data-reactid="57"><img src="/img/feature_hogh.png" data-reactid="58"/><div data-reactid="59"><h4 data-reactid="60">高度可扩展能力</h4><p data-reactid="61">遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。</p></div></li><li data-reactid="62"><img src="/img/feature_runtime.png" data-reactid="63"/><div data-reactid="64"><h4 data-reactid="65">运行期流量调度</h4><p data-reactid="66">内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。</p></div></li><li data-reactid="67"><img src="/img/feature_maintenance.png" data-reactid="68"/><div data-reactid="69"><h4 data-reactid="70">可视化的服务治理与运维</h4><p data-reactid="71">提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。</p></div></li></ul></section><section class="start-section" data-reactid="72"><div class="start-body" data-reactid="73"><div class="left-part" data-reactid="74"><h3 data-reactid="75">快速开始</h3><p data-reactid="76">只需通过几行代码即可快速构建一个Dubbo应用。</p><a href="/zh-cn/docs/user/quick-start.html" data-reactid="77">阅读更多</a></div><div class="right-part" data-reactid="78"><img src="/img/quick_start.png" data-reactid="79"/></div></div></section><section class="users-section" data-reactid="80"><h3 data-reactid="81">谁在使用Dubbo</h3><p data-reactid="82"><span data-reactid="83"><!-- react-text: 84 -->请在 <!-- /react-text --><a rel="noopener noreferrer" target="_blank" href="https://github.com/apache/incubator-dubbo/issues/1012" data-reactid="85">Wanted: who&#x27;s using dubbo</a><!-- react-text: 86 --> 上提供信息来帮助Dubbo做的更好。<!-- /react-text --></span></p><div class="users" data-reactid="87"><img src="/img/users_alibaba.png" data-reactid="88"/><img src="/img/users_kingdee.png" data-reactid="89"/><img src="/img/users_dangdang.png" data-reactid="90"/><img src="/img/users_didi.png" data-reactid="91"/><img src="/img/users_qunar.png" data-reactid="92"/><img src="/img/users_wanglian.png" data-reactid="93"/><img src="/img/users_kaola.png" data-reactid="94"/><img src="/img/users_zhengcaiyun.png" data-reactid="95"/><img src="/img/users_chinalife.png" data-reactid="96"/><img src="/img/users_haier.png" data-reactid="97"/><img src="/img/users_yinlian.png" data-reactid="98"/><img src="/img/users_telecom.png" data-reactid="99"/><img src="/img/users_weidian.png" data-reactid="100"/><img src="/img/users_icbc.png" data-reactid="101"/><img src="/img/users_handu.png" data-reactid="102"/><img src="/img/users_rograndec.png" data-reactid="103"/></div></section><footer class="footer-container" data-reactid="104"><div class="footer-body" data-reactid="105"><img src="/img/dubbo_gray.png" data-reactid="106"/><img class="apache" src="/img/apache_logo.png" data-reactid="107"/><div class="cols-container" data-reactid="108"><div class="col col-12" data-reactid="109"><h3 data-reactid="110">Disclaimer</h3><p data-reactid="111">Apache Dubbo is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p></div><div class="col col-6" data-reactid="112"><dl data-reactid="113"><dt data-reactid="114">文档</dt><dd data-reactid="115"><a href="/zh-cn/docs/user/quick-start.html" target="_self" data-reactid="116">快速开始</a></dd><dd data-reactid="117"><a href="/zh-cn/docs/dev/build.html" target="_self" data-reactid="118">开发者指南</a></dd><dd data-reactid="119"><a href="/zh-cn/docs/admin/ops/dubbo-ops.html" target="_self" data-reactid="120">运维管理</a></dd></dl></div><div class="col col-6" data-reactid="121"><dl data-reactid="122"><dt data-reactid="123">资源</dt><dd data-reactid="124"><a href="/zh-cn/blog/index.html" target="_self" data-reactid="125">博客</a></dd><dd data-reactid="126"><a href="/zh-cn/community/index.html" target="_self" data-reactid="127">社区</a></dd></dl></div></div><div class="copyright" data-reactid="128"><span data-reactid="129">Copyright © 2018 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</span></div></div></footer></div></div>
+	<div id="root"><div class="home-page" data-reactroot="" data-reactid="1" data-react-checksum="-33865154"><section class="top-section" data-reactid="2"><header class="header-container header-container-primary" data-reactid="3"><div class="header-body" data-reactid="4"><a href="/zh-cn/index.html" data-reactid="5"><img class="logo" src="/img/dubbo_white.png" data-reactid="6"/></a><span class="language-switch language-switch-primary" data-reactid="7">En</span><div class="header-menu" data-reactid="8"><img class="header-menu-toggle" src="/img/menu_white.png" data-reactid="9"/><ul data-reactid="10"><li class="menu-item menu-item-primary menu-item-primary-active" data-reactid="11"><a href="/zh-cn/index.html" data-reactid="12">首页</a></li><li class="menu-item menu-item-primary" data-reactid="13"><a href="/zh-cn/docs/user/quick-start.html" data-reactid="14">文档</a></li><li class="menu-item menu-item-primary" data-reactid="15"><a href="/zh-cn/blog/index.html" data-reactid="16">博客</a></li><li class="menu-item menu-item-primary" data-reactid="17"><a href="/zh-cn/community/index.html" data-reactid="18">社区</a></li></ul></div></div></header><div class="vertical-middle" data-reactid="19"><img src="/img/dubbo.png" data-reactid="20"/><div class="product-name" data-reactid="21"><h2 data-reactid="22">Apache Dubbo</h2><img src="/img/incubating.svg" data-reactid="23"/></div><p class="product-desc" data-reactid="24">Apache Dubbo™ (incubating)是一款高性能Java RPC框架。</p><div class="button-area" data-reactid="25"><a class="button button-primary" target="_blank" href="/zh-cn/docs/user/quick-start.html" data-reactid="26">快速开始</a><a class="button button-normal" target="_blank" href="https://github.com/apache/incubator-dubbo" data-reactid="27">在Github中查看</a></div></div><div class="animation animation1" data-reactid="28"></div><div class="animation animation2" data-reactid="29"></div><div class="animation animation3" data-reactid="30"></div><div class="animation animation4" data-reactid="31"></div><div class="animation animation5" data-reactid="32"></div></section><section class="introduction-section" data-reactid="33"><div class="introduction-body" data-reactid="34"><div class="introduction" data-reactid="35"><h3 data-reactid="36">高性能Java RPC框架</h3><p data-reactid="37">Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。</p></div><img src="/img/architecture.png" data-reactid="38"/></div></section><section class="feature-section" data-reactid="39"><h3 data-reactid="40">特性一览</h3><ul data-reactid="41"><li data-reactid="42"><img src="/img/feature_transpart.png" data-reactid="43"/><div data-reactid="44"><h4 data-reactid="45">面向接口代理的高性能RPC调用</h4><p data-reactid="46">提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。</p></div></li><li data-reactid="47"><img src="/img/feature_loadbalances.png" data-reactid="48"/><div data-reactid="49"><h4 data-reactid="50">智能负载均衡</h4><p data-reactid="51">内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。</p></div></li><li data-reactid="52"><img src="/img/feature_service.png" data-reactid="53"/><div data-reactid="54"><h4 data-reactid="55">服务自动注册与发现</h4><p data-reactid="56">支持多种注册中心服务,服务实例上下线实时感知。</p></div></li><li data-reactid="57"><img src="/img/feature_hogh.png" data-reactid="58"/><div data-reactid="59"><h4 data-reactid="60">高度可扩展能力</h4><p data-reactid="61">遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。</p></div></li><li data-reactid="62"><img src="/img/feature_runtime.png" data-reactid="63"/><div data-reactid="64"><h4 data-reactid="65">运行期流量调度</h4><p data-reactid="66">内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。</p></div></li><li data-reactid="67"><img src="/img/feature_maintenance.png" data-reactid="68"/><div data-reactid="69"><h4 data-reactid="70">可视化的服务治理与运维</h4><p data-reactid="71">提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。</p></div></li></ul></section><section class="start-section" data-reactid="72"><div class="start-body" data-reactid="73"><div class="left-part" data-reactid="74"><h3 data-reactid="75">快速开始</h3><p data-reactid="76">只需通过几行代码即可快速构建一个Dubbo应用。</p><a href="/zh-cn/docs/user/quick-start.html" data-reactid="77">阅读更多</a></div><div class="right-part" data-reactid="78"><img src="/img/quick_start.png" data-reactid="79"/></div></div></section><section class="users-section" data-reactid="80"><h3 data-reactid="81">谁在使用Dubbo</h3><p data-reactid="82"><span data-reactid="83"><!-- react-text: 84 -->请在 <!-- /react-text --><a rel="noopener noreferrer" target="_blank" href="https://github.com/apache/incubator-dubbo/issues/1012" data-reactid="85">Wanted: who&#x27;s using dubbo</a><!-- react-text: 86 --> 上提供信息来帮助Dubbo做的更好。<!-- /react-text --></span></p><div class="users" data-reactid="87"><img src="/img/users_alibaba.png" data-reactid="88"/><img src="/img/users_kingdee.png" data-reactid="89"/><img src="/img/users_dangdang.png" data-reactid="90"/><img src="/img/users_didi.png" data-reactid="91"/><img src="/img/users_qunar.png" data-reactid="92"/><img src="/img/users_wanglian.png" data-reactid="93"/><img src="/img/users_kaola.png" data-reactid="94"/><img src="/img/users_zhengcaiyun.png" data-reactid="95"/><img src="/img/users_chinalife.png" data-reactid="96"/><img src="/img/users_haier.png" data-reactid="97"/><img src="/img/users_yinlian.png" data-reactid="98"/><img src="/img/users_telecom.png" data-reactid="99"/><img src="/img/users_weidian.png" data-reactid="100"/><img src="/img/users_icbc.png" data-reactid="101"/><img src="/img/users_handu.png" data-reactid="102"/><img src="/img/users_rograndec.png" data-reactid="103"/></div></section><footer class="footer-container" data-reactid="104"><div class="footer-body" data-reactid="105"><img src="/img/dubbo_gray.png" data-reactid="106"/><img class="apache" src="/img/apache_logo.png" data-reactid="107"/><div class="cols-container" data-reactid="108"><div class="col col-12" data-reactid="109"><h3 data-reactid="110">Disclaimer</h3><p data-reactid="111">Apache Dubbo is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p></div><div class="col col-6" data-reactid="112"><dl data-reactid="113"><dt data-reactid="114">文档</dt><dd data-reactid="115"><a href="/zh-cn/docs/user/quick-start.html" target="_self" data-reactid="116">快速开始</a></dd><dd data-reactid="117"><a href="/zh-cn/docs/dev/build.html" target="_self" data-reactid="118">开发者指南</a></dd><dd data-reactid="119"><a href="/zh-cn/docs/admin/ops/dubbo-ops.html" target="_self" data-reactid="120">运维管理</a></dd></dl></div><div class="col col-6" data-reactid="121"><dl data-reactid="122"><dt data-reactid="123">资源</dt><dd data-reactid="124"><a href="/zh-cn/blog/index.html" target="_self" data-reactid="125">博客</a></dd><dd data-reactid="126"><a href="/zh-cn/community/index.html" target="_self" data-reactid="127">社区</a></dd></dl></div></div><div class="copyright" data-reactid="128"><span data-reactid="129">Copyright © 2018 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</span></div></div></footer></div></div>
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
 	<script>


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


Mime
View raw message