From e6ec645035d6141dcb2b45341db316a43c43d908 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Wed, 23 May 2018 03:11:29 -0700 Subject: [PATCH] Implement support for calculating disk usage per tenant (#5969) Fixes #5961 --- browser/app/js/browser/StorageInfo.js | 9 +- .../js/browser/__tests__/StorageInfo.test.js | 4 +- .../app/js/browser/__tests__/actions.test.js | 4 +- browser/app/js/browser/actions.js | 2 +- browser/app/less/inc/header.less | 4 +- browser/ui-assets.go | 48 +++++----- cmd/disk-cache.go | 2 +- cmd/disk-usage.go | 59 ++++++++++++ cmd/fs-v1-multipart_test.go | 2 +- cmd/fs-v1.go | 65 ++++++++++++- cmd/naughty-disk_test.go | 4 +- cmd/object-api-datatypes.go | 8 +- cmd/posix.go | 93 ++++++++++++++++++- cmd/storage-interface.go | 4 +- cmd/storage-rpc-client.go | 6 +- cmd/storage-rpc-server.go | 3 +- cmd/storage-rpc-server_test.go | 4 +- cmd/xl-sets.go | 1 + cmd/xl-v1.go | 18 ++-- cmd/xl-v1_test.go | 14 ++- pkg/disk/disk.go | 3 + pkg/madmin/examples/server-info.go | 44 +++++++++ pkg/madmin/info-commands.go | 8 +- 23 files changed, 328 insertions(+), 81 deletions(-) create mode 100644 cmd/disk-usage.go create mode 100644 pkg/madmin/examples/server-info.go diff --git a/browser/app/js/browser/StorageInfo.js b/browser/app/js/browser/StorageInfo.js index 0532fb4d7..6bcd958ed 100644 --- a/browser/app/js/browser/StorageInfo.js +++ b/browser/app/js/browser/StorageInfo.js @@ -25,19 +25,18 @@ export class StorageInfo extends React.Component { fetchStorageInfo() } render() { - const { total, free } = this.props.storageInfo - const used = total - free + const { total, used } = this.props.storageInfo const usedPercent = used / total * 100 + "%" - const freePercent = free * 100 / total + const freePercent = (total - used) * 100 / total return ( -
+
  • Used: - {humanize.filesize(total - free)} + {humanize.filesize(used)}
  • Free: diff --git a/browser/app/js/browser/__tests__/StorageInfo.test.js b/browser/app/js/browser/__tests__/StorageInfo.test.js index 6cf1ccbf4..4b1e857c9 100644 --- a/browser/app/js/browser/__tests__/StorageInfo.test.js +++ b/browser/app/js/browser/__tests__/StorageInfo.test.js @@ -22,7 +22,7 @@ describe("StorageInfo", () => { it("should render without crashing", () => { shallow( ) @@ -32,7 +32,7 @@ describe("StorageInfo", () => { const fetchStorageInfo = jest.fn() shallow( ) diff --git a/browser/app/js/browser/__tests__/actions.test.js b/browser/app/js/browser/__tests__/actions.test.js index 012d7031f..d02174fc9 100644 --- a/browser/app/js/browser/__tests__/actions.test.js +++ b/browser/app/js/browser/__tests__/actions.test.js @@ -20,7 +20,7 @@ import * as actionsCommon from "../actions" jest.mock("../../web", () => ({ StorageInfo: jest.fn(() => { - return Promise.resolve({ storageInfo: { Total: 100, Free: 60 } }) + return Promise.resolve({ storageInfo: { Total: 100, Used: 60 } }) }), ServerInfo: jest.fn(() => { return Promise.resolve({ @@ -40,7 +40,7 @@ describe("Common actions", () => { it("creates common/SET_STORAGE_INFO after fetching the storage details ", () => { const store = mockStore() const expectedActions = [ - { type: "common/SET_STORAGE_INFO", storageInfo: { total: 100, free: 60 } } + { type: "common/SET_STORAGE_INFO", storageInfo: { total: 100, used: 60 } } ] return store.dispatch(actionsCommon.fetchStorageInfo()).then(() => { const actions = store.getActions() diff --git a/browser/app/js/browser/actions.js b/browser/app/js/browser/actions.js index f82d03b4f..390ddc85b 100644 --- a/browser/app/js/browser/actions.js +++ b/browser/app/js/browser/actions.js @@ -34,7 +34,7 @@ export const fetchStorageInfo = () => { return web.StorageInfo().then(res => { const storageInfo = { total: res.storageInfo.Total, - free: res.storageInfo.Free + used: res.storageInfo.Used } dispatch(setStorageInfo(storageInfo)) }) diff --git a/browser/app/less/inc/header.less b/browser/app/less/inc/header.less index 436fc4e41..4fce95887 100644 --- a/browser/app/less/inc/header.less +++ b/browser/app/less/inc/header.less @@ -44,9 +44,9 @@ /*-------------------------- - Disk usage + Disk used ----------------------------*/ -.feh-usage { +.feh-used { margin-top: 12px; max-width: 285px; diff --git a/browser/ui-assets.go b/browser/ui-assets.go index 9b34a2538..e5e538ccc 100644 --- a/browser/ui-assets.go +++ b/browser/ui-assets.go @@ -4,7 +4,7 @@ // production/favicon.ico // production/firefox.png // production/index.html -// production/index_bundle-2018-04-16T18-35-51Z.js +// production/index_bundle-2018-05-23T09-12-50Z.js // production/loader.css // production/logo.svg // production/safari.png @@ -65,7 +65,7 @@ func productionChromePng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "production/chrome.png", size: 3726, mode: os.FileMode(420), modTime: time.Unix(1523903781, 0)} + info := bindataFileInfo{name: "production/chrome.png", size: 3726, mode: os.FileMode(436), modTime: time.Unix(1527066786, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -82,7 +82,7 @@ func productionFaviconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "production/favicon.ico", size: 501, mode: os.FileMode(420), modTime: time.Unix(1523903781, 0)} + info := bindataFileInfo{name: "production/favicon.ico", size: 501, mode: os.FileMode(436), modTime: time.Unix(1527066786, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -99,7 +99,7 @@ func productionFirefoxPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "production/firefox.png", size: 4795, mode: os.FileMode(420), modTime: time.Unix(1523903781, 0)} + info := bindataFileInfo{name: "production/firefox.png", size: 4795, mode: os.FileMode(436), modTime: time.Unix(1527066786, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -156,8 +156,8 @@ var _productionIndexHTML = []byte(`
- - + + `) @@ -172,17 +172,17 @@ func productionIndexHTML() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "production/index.html", size: 1954, mode: os.FileMode(420), modTime: time.Unix(1523903781, 0)} + info := bindataFileInfo{name: "production/index.html", size: 1954, mode: os.FileMode(436), modTime: time.Unix(1527066786, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _productionIndex_bundle20180416t183551zJs = []byte(`!function(A){function t(e){if(M[e])return M[e].exports;var I=M[e]={i:e,l:!1,exports:{}};return A[e].call(I.exports,I,I.exports,t),I.l=!0,I.exports}var M={};t.m=A,t.c=M,t.d=function(A,M,e){t.o(A,M)||Object.defineProperty(A,M,{configurable:!1,enumerable:!0,get:e})},t.n=function(A){var M=A&&A.__esModule?function(){return A.default}:function(){return A};return t.d(M,"a",M),M},t.o=function(A,t){return Object.prototype.hasOwnProperty.call(A,t)},t.p="",t(t.s=316)}([function(A,t,M){"use strict";A.exports=M(522)},function(A,t,M){var e=M(11),I=M(50),g=M(29),i=M(30),n=M(51),o=function(A,t,M){var E,c,T,N,a=A&o.F,r=A&o.G,C=A&o.S,D=A&o.P,B=A&o.B,s=r?e:C?e[t]||(e[t]={}):(e[t]||{}).prototype,Q=r?I:I[t]||(I[t]={}),u=Q.prototype||(Q.prototype={});r&&(M=t);for(E in M)c=!a&&s&&void 0!==s[E],T=(c?s:M)[E],N=B&&c?n(T,e):D&&"function"==typeof T?n(Function.call,T):T,s&&i(s,E,T,A&o.U),Q[E]!=T&&g(Q,E,N),D&&u[E]!=T&&(u[E]=T)};e.core=I,o.F=1,o.G=2,o.S=4,o.P=8,o.B=16,o.W=32,o.U=64,o.R=128,A.exports=o},function(A,t,M){"use strict";t.__esModule=!0,t.default=function(A,t){if(!(A instanceof t))throw new TypeError("Cannot call a class as a function")}},function(A,t,M){"use strict";t.__esModule=!0;var e=M(185),I=function(A){return A&&A.__esModule?A:{default:A}}(e);t.default=function(A,t){if(!A)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,I.default)(t))&&"function"!=typeof t?A:t}},function(A,t,M){"use strict";function e(A){return A&&A.__esModule?A:{default:A}}t.__esModule=!0;var I=M(649),g=e(I),i=M(653),n=e(i),o=M(185),E=e(o);t.default=function(A,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,E.default)(t)));A.prototype=(0,n.default)(t&&t.prototype,{constructor:{value:A,enumerable:!1,writable:!0,configurable:!0}}),t&&(g.default?(0,g.default)(A,t):A.__proto__=t)}},function(A,t,M){var e,I;/*! +var _productionIndex_bundle20180523t091250zJs = []byte(`!function(A){function t(e){if(M[e])return M[e].exports;var I=M[e]={i:e,l:!1,exports:{}};return A[e].call(I.exports,I,I.exports,t),I.l=!0,I.exports}var M={};t.m=A,t.c=M,t.d=function(A,M,e){t.o(A,M)||Object.defineProperty(A,M,{configurable:!1,enumerable:!0,get:e})},t.n=function(A){var M=A&&A.__esModule?function(){return A.default}:function(){return A};return t.d(M,"a",M),M},t.o=function(A,t){return Object.prototype.hasOwnProperty.call(A,t)},t.p="",t(t.s=316)}([function(A,t,M){"use strict";A.exports=M(522)},function(A,t,M){var e=M(11),I=M(50),g=M(29),i=M(30),n=M(51),o=function(A,t,M){var E,c,T,N,a=A&o.F,r=A&o.G,C=A&o.S,D=A&o.P,B=A&o.B,s=r?e:C?e[t]||(e[t]={}):(e[t]||{}).prototype,Q=r?I:I[t]||(I[t]={}),u=Q.prototype||(Q.prototype={});r&&(M=t);for(E in M)c=!a&&s&&void 0!==s[E],T=(c?s:M)[E],N=B&&c?n(T,e):D&&"function"==typeof T?n(Function.call,T):T,s&&i(s,E,T,A&o.U),Q[E]!=T&&g(Q,E,N),D&&u[E]!=T&&(u[E]=T)};e.core=I,o.F=1,o.G=2,o.S=4,o.P=8,o.B=16,o.W=32,o.U=64,o.R=128,A.exports=o},function(A,t,M){"use strict";t.__esModule=!0,t.default=function(A,t){if(!(A instanceof t))throw new TypeError("Cannot call a class as a function")}},function(A,t,M){"use strict";t.__esModule=!0;var e=M(185),I=function(A){return A&&A.__esModule?A:{default:A}}(e);t.default=function(A,t){if(!A)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,I.default)(t))&&"function"!=typeof t?A:t}},function(A,t,M){"use strict";function e(A){return A&&A.__esModule?A:{default:A}}t.__esModule=!0;var I=M(649),g=e(I),i=M(653),n=e(i),o=M(185),E=e(o);t.default=function(A,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,E.default)(t)));A.prototype=(0,n.default)(t&&t.prototype,{constructor:{value:A,enumerable:!1,writable:!0,configurable:!0}}),t&&(g.default?(0,g.default)(A,t):A.__proto__=t)}},function(A,t,M){var e,I;/*! Copyright (c) 2016 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function M(){for(var A=[],t=0;t=0||Object.prototype.hasOwnProperty.call(A,e)&&(M[e]=A[e]);return M}},function(A,t,M){A.exports=M(565)()},function(A,t,M){"use strict";function e(A){return function(){for(var t=arguments.length,M=Array(t),e=0;e1?t-1:0),e=1;e0?I(e(A),9007199254740991):0}},function(A,t,M){"use strict";var e=function(A,t,M,e,I,g,i,n){if(!A){var o;if(void 0===t)o=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var E=[M,e,I,g,i,n],c=0;o=new Error(t.replace(/%s/g,function(){return E[c++]})),o.name="Invariant Violation"}throw o.framesToPop=1,o}};A.exports=e},function(A,t,M){var e=M(38);A.exports=function(A){return Object(e(A))}},function(A,t,M){"use strict";M.d(t,"c",function(){return e}),M.d(t,"b",function(){return I}),M.d(t,"a",function(){return g}),M.d(t,"d",function(){return i}),M.d(t,"e",function(){return n});var e={LARGE:"large",SMALL:"small",XSMALL:"xsmall"},I={large:"lg",medium:"md",small:"sm",xsmall:"xs",lg:"lg",md:"md",sm:"sm",xs:"xs"},g=["lg","md","sm","xs"],i={SUCCESS:"success",WARNING:"warning",DANGER:"danger",INFO:"info"},n={DEFAULT:"default",PRIMARY:"primary",LINK:"link",INVERSE:"inverse"}},function(A,t){var M={}.hasOwnProperty;A.exports=function(A,t){return M.call(A,t)}},function(A,t,M){"use strict";function e(A){return A&&A.__esModule?A:{default:A}}function I(A,t){if(!(A instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var g=function(){function A(A,t){for(var M=0;M"+I+""};A.exports=function(A,t){var M={};M[A]=t(n),e(e.P+e.F*I(function(){var t=""[A]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",M)}},function(A,t,M){var e=M(92),I=M(54),g=M(32),i=M(41),n=M(26),o=M(206),E=Object.getOwnPropertyDescriptor;t.f=M(18)?E:function(A,t){if(A=g(A),t=i(t,!0),o)try{return E(A,t)}catch(A){}if(n(A,t))return I(!e.f.call(A,t),A[t])}},function(A,t,M){var e=M(26),I=M(24),g=M(137)("IE_PROTO"),i=Object.prototype;A.exports=Object.getPrototypeOf||function(A){return A=I(A),e(A,g)?A[g]:"function"==typeof A.constructor&&A instanceof A.constructor?A.constructor.prototype:A instanceof Object?i:null}},function(A,t,M){"use strict";function e(A){return A&&A.__esModule?A:{default:A}}Object.defineProperty(t,"__esModule",{value:!0}),t.downloadCheckedObjects=t.resetCheckedList=t.uncheckObject=t.checkObject=t.downloadObject=t.hideShareObject=t.showShareObject=t.shareObject=t.deleteCheckedObjects=t.removeObject=t.deleteObject=t.setPrefixWritable=t.setCurrentPrefix=t.selectPrefix=t.setSortOrder=t.setSortBy=t.sortObjects=t.fetchObjects=t.appendList=t.setList=t.CHECKED_LIST_RESET=t.CHECKED_LIST_REMOVE=t.CHECKED_LIST_ADD=t.SET_SHARE_OBJECT=t.SET_PREFIX_WRITABLE=t.SET_CURRENT_PREFIX=t.SET_SORT_ORDER=t.SET_SORT_BY=t.REMOVE=t.APPEND_LIST=t.SET_LIST=void 0;var I=Object.assign||function(A){for(var t=1;t1?"-":"";e.href=g,e.download=t.bucketName+i+t.prefix.slice(0,-1)+".zip",e.click(),window.URL.revokeObjectURL(g),e.remove()}},I.send(JSON.stringify(t))})},function(A,t){var M={}.toString;A.exports=function(A){return M.call(A).slice(8,-1)}},function(A,t){A.exports=function(A){if(void 0==A)throw TypeError("Can't call method on "+A);return A}},function(A,t,M){var e=M(12);A.exports=function(A,t){return!!A&&e(function(){t?A.call(null,function(){},1):A.call(null)})}},function(A,t,M){"use strict";function e(A){return!A||"#"===A.trim()}var I=M(6),g=M.n(I),i=M(7),n=M.n(i),o=M(2),E=M.n(o),c=M(3),T=M.n(c),N=M(4),a=M.n(N),r=M(0),C=M.n(r),D=M(8),B=M.n(D),s=M(15),Q=M.n(s),u=M(21),l={href:B.a.string,onClick:B.a.func,onKeyDown:B.a.func,disabled:B.a.bool,role:B.a.string,tabIndex:B.a.oneOfType([B.a.number,B.a.string]),componentClass:Q.a},y={componentClass:"a"},x=function(A){function t(M,e){E()(this,t);var I=T()(this,A.call(this,M,e));return I.handleClick=I.handleClick.bind(I),I.handleKeyDown=I.handleKeyDown.bind(I),I}return a()(t,A),t.prototype.handleClick=function(A){var t=this.props,M=t.disabled,I=t.href,g=t.onClick;if((M||e(I))&&A.preventDefault(),M)return void A.stopPropagation();g&&g(A)},t.prototype.handleKeyDown=function(A){" "===A.key&&(A.preventDefault(),this.handleClick(A))},t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.disabled,I=A.onKeyDown,i=n()(A,["componentClass","disabled","onKeyDown"]);return e(i.href)&&(i.role=i.role||"button",i.href=i.href||"#"),M&&(i.tabIndex=-1,i.style=g()({pointerEvents:"none"},i.style)),C.a.createElement(t,g()({},i,{onClick:this.handleClick,onKeyDown:Object(u.a)(this.handleKeyDown,I)}))},t}(C.a.Component);x.propTypes=l,x.defaultProps=y,t.a=x},function(A,t,M){var e=M(16);A.exports=function(A,t){if(!e(A))return A;var M,I;if(t&&"function"==typeof(M=A.toString)&&!e(I=M.call(A)))return I;if("function"==typeof(M=A.valueOf)&&!e(I=M.call(A)))return I;if(!t&&"function"==typeof(M=A.toString)&&!e(I=M.call(A)))return I;throw TypeError("Can't convert object to primitive value")}},function(A,t,M){var e=M(1),I=M(50),g=M(12);A.exports=function(A,t){var M=(I.Object||{})[A]||Object[A],i={};i[A]=t(M),e(e.S+e.F*g(function(){M(1)}),"Object",i)}},function(A,t,M){var e=M(51),I=M(91),g=M(24),i=M(22),n=M(409);A.exports=function(A,t){var M=1==A,o=2==A,E=3==A,c=4==A,T=6==A,N=5==A||T,a=t||n;return function(t,n,r){for(var C,D,B=g(t),s=I(B),Q=e(n,r,3),u=i(s.length),l=0,y=M?a(t,u):o?a(t,0):void 0;u>l;l++)if((N||l in s)&&(C=s[l],D=Q(C,l,B),A))if(M)y[l]=D;else if(D)switch(A){case 3:return!0;case 5:return C;case 6:return l;case 2:y.push(C)}else if(c)return!1;return T?-1:E||c?c:y}}},function(A,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var e=window.location.pathname;t.minioBrowserPrefix=e.slice(0,e.indexOf("/",1)),t.READ_ONLY="readonly",t.WRITE_ONLY="writeonly",t.READ_WRITE="readwrite",t.SHARE_OBJECT_EXPIRY_DAYS=5,t.SHARE_OBJECT_EXPIRY_HOURS=0,t.SHARE_OBJECT_EXPIRY_MINUTES=0},function(A,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var e=t.SET="alert/SET",I=t.CLEAR="alert/CLEAR",g=t.alertId=0;t.set=function(A){var M=(t.alertId=g+=1,g-1);return function(t,g){"danger"!==A.type&&setTimeout(function(){t({type:I,alert:{id:M}})},5e3),t({type:e,alert:Object.assign({},A,{id:M})})}},t.clear=function(){return{type:I}}},function(A,t,M){"use strict";function e(A){if(A&&A.__esModule)return A;var t={};if(null!=A)for(var M in A)Object.prototype.hasOwnProperty.call(A,M)&&(t[M]=A[M]);return t.default=A,t}function I(A){return A&&A.__esModule?A:{default:A}}Object.defineProperty(t,"__esModule",{value:!0}),t.hideBucketPolicy=t.showBucketPolicy=t.setPolicies=t.fetchPolicies=t.hideMakeBucketModal=t.showMakeBucketModal=t.removeBucket=t.addBucket=t.deleteBucket=t.makeBucket=t.setCurrentBucket=t.selectBucket=t.setFilter=t.setList=t.fetchBuckets=t.SET_POLICIES=t.SHOW_BUCKET_POLICY=t.SHOW_MAKE_BUCKET_MODAL=t.SET_CURRENT_BUCKET=t.SET_FILTER=t.REMOVE=t.ADD=t.SET_LIST=void 0;var g=M(27),i=I(g),n=M(96),o=I(n),E=M(45),c=e(E),T=M(36),N=e(T),a=M(174),r=t.SET_LIST="buckets/SET_LIST",C=t.ADD="buckets/ADD",D=t.REMOVE="buckets/REMOVE",B=t.SET_FILTER="buckets/SET_FILTER",s=t.SET_CURRENT_BUCKET="buckets/SET_CURRENT_BUCKET",Q=t.SHOW_MAKE_BUCKET_MODAL="buckets/SHOW_MAKE_BUCKET_MODAL",u=t.SHOW_BUCKET_POLICY="buckets/SHOW_BUCKET_POLICY",l=t.SET_POLICIES="buckets/SET_POLICIES",y=t.fetchBuckets=function(){return function(A){return i.default.ListBuckets().then(function(t){var M=t.buckets?t.buckets.map(function(A){return A.name}):[];if(A(x(M)),M.length>0){var e=(0,a.pathSlice)(o.default.location.pathname),I=e.bucket,g=e.prefix;A(I&&M.indexOf(I)>-1?j(I,g):j(M[0]))}else A(j("")),o.default.replace("/")})}},x=t.setList=function(A){return{type:r,buckets:A}},j=(t.setFilter=function(A){return{type:B,filter:A}},t.selectBucket=function(A,t){return function(M){M(w(A)),M(N.selectPrefix(t||""))}}),w=t.setCurrentBucket=function(A){return{type:s,bucket:A}},d=(t.makeBucket=function(A){return function(t){return i.default.MakeBucket({bucketName:A}).then(function(){t(d(A)),t(j(A))}).catch(function(A){return t(c.set({type:"danger",message:A.message}))})}},t.deleteBucket=function(A){return function(t){return i.default.DeleteBucket({bucketName:A}).then(function(){t(c.set({type:"info",message:"Bucket '"+A+"' has been deleted."})),t(Y(A)),t(y())}).catch(function(A){t(c.set({type:"danger",message:A.message}))})}},t.addBucket=function(A){return{type:C,bucket:A}}),Y=t.removeBucket=function(A){return{type:D,bucket:A}},h=(t.showMakeBucketModal=function(){return{type:Q,show:!0}},t.hideMakeBucketModal=function(){return{type:Q,show:!1}},t.fetchPolicies=function(A){return function(t){return i.default.ListAllBucketPolicies({bucketName:A}).then(function(A){var M=A.policies;t(h(M?M:[]))}).catch(function(A){t(c.set({type:"danger",message:A.message}))})}},t.setPolicies=function(A){return{type:l,policies:A}});t.showBucketPolicy=function(){return{type:u,show:!0}},t.hideBucketPolicy=function(){return{type:u,show:!1}}},function(A,t){var M=A.exports={version:"2.4.0"};"number"==typeof __e&&(__e=M)},function(A,t,M){var e=M(181)("wks"),I=M(125),g=M(59).Symbol,i="function"==typeof g;(A.exports=function(A){return e[A]||(e[A]=i&&g[A]||(i?g:I)("Symbol."+A))}).store=e},function(A,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var e=M(704);M.d(t,"Accordion",function(){return e.a});var I=M(705);M.d(t,"Alert",function(){return I.a});var g=M(706);M.d(t,"Badge",function(){return g.a});var i=M(707);M.d(t,"Breadcrumb",function(){return i.a});var n=M(280);M.d(t,"BreadcrumbItem",function(){return n.a});var o=M(109);M.d(t,"Button",function(){return o.a});var E=M(198);M.d(t,"ButtonGroup",function(){return E.a});var c=M(708);M.d(t,"ButtonToolbar",function(){return c.a});var T=M(709);M.d(t,"Carousel",function(){return T.a});var N=M(281);M.d(t,"CarouselItem",function(){return N.a});var a=M(719);M.d(t,"Checkbox",function(){return a.a});var r=M(720);M.d(t,"Clearfix",function(){return r.a});var C=M(197);M.d(t,"CloseButton",function(){return C.a});var D=M(721);M.d(t,"ControlLabel",function(){return D.a});var B=M(722);M.d(t,"Col",function(){return B.a});var s=M(201);M.d(t,"Collapse",function(){return s.a});var Q=M(128);M.d(t,"Dropdown",function(){return Q.a});var u=M(729);M.d(t,"DropdownButton",function(){return u.a});var l=M(130);M.d(t,"Fade",function(){return l.a});var y=M(730);M.d(t,"Form",function(){return y.a});var x=M(731);M.d(t,"FormControl",function(){return x.a});var j=M(734);M.d(t,"FormGroup",function(){return j.a});var w=M(200);M.d(t,"Glyphicon",function(){return w.a});var d=M(288);M.d(t,"Grid",function(){return d.a});var Y=M(735);M.d(t,"HelpBlock",function(){return Y.a});var h=M(736);M.d(t,"Image",function(){return h.a});var L=M(737);M.d(t,"InputGroup",function(){return L.a});var S=M(740);M.d(t,"Jumbotron",function(){return S.a});var z=M(741);M.d(t,"Label",function(){return z.a});var U=M(742);M.d(t,"ListGroup",function(){return U.a});var p=M(289);M.d(t,"ListGroupItem",function(){return p.a});var f=M(131);M.d(t,"Media",function(){return f.a});var F=M(749);M.d(t,"MenuItem",function(){return F.a});var m=M(750);M.d(t,"Modal",function(){return m.a});var O=M(296);M.d(t,"ModalBody",function(){return O.a});var R=M(297);M.d(t,"ModalFooter",function(){return R.a});var k=M(298);M.d(t,"ModalHeader",function(){return k.a});var G=M(299);M.d(t,"ModalTitle",function(){return G.a});var b=M(300);M.d(t,"Nav",function(){return b.a});var J=M(776);M.d(t,"Navbar",function(){return J.a});var H=M(301);M.d(t,"NavbarBrand",function(){return H.a});var v=M(780);M.d(t,"NavDropdown",function(){return v.a});var V=M(302);M.d(t,"NavItem",function(){return V.a});var X=M(303);M.d(t,"Overlay",function(){return X.a});var W=M(787);M.d(t,"OverlayTrigger",function(){return W.a});var P=M(788);M.d(t,"PageHeader",function(){return P.a});var K=M(789);M.d(t,"PageItem",function(){return K.a});var Z=M(791);M.d(t,"Pager",function(){return Z.a});var q=M(792);M.d(t,"Pagination",function(){return q.a});var _=M(794);M.d(t,"Panel",function(){return _.a});var $=M(278);M.d(t,"PanelGroup",function(){return $.a});var AA=M(800);M.d(t,"Popover",function(){return AA.a});var tA=M(801);M.d(t,"ProgressBar",function(){return tA.a});var MA=M(802);M.d(t,"Radio",function(){return MA.a});var eA=M(803);M.d(t,"ResponsiveEmbed",function(){return eA.a});var IA=M(804);M.d(t,"Row",function(){return IA.a});var gA=M(40);M.d(t,"SafeAnchor",function(){return gA.a});var iA=M(805);M.d(t,"SplitButton",function(){return iA.a});var nA=M(807);M.d(t,"Tab",function(){return nA.a});var oA=M(204);M.d(t,"TabContainer",function(){return oA.a});var EA=M(205);M.d(t,"TabContent",function(){return EA.a});var cA=M(808);M.d(t,"Table",function(){return cA.a});var TA=M(309);M.d(t,"TabPane",function(){return TA.a});var NA=M(809);M.d(t,"Tabs",function(){return NA.a});var aA=M(810);M.d(t,"Thumbnail",function(){return aA.a});var rA=M(310);M.d(t,"ToggleButton",function(){return rA.a});var CA=M(811);M.d(t,"ToggleButtonGroup",function(){return CA.a});var DA=M(812);M.d(t,"Tooltip",function(){return DA.a});var BA=M(813);M.d(t,"Well",function(){return BA.a});var sA=M(814);M.d(t,"utils",function(){return sA})},function(A,t){var M=A.exports={version:"2.4.0"};"number"==typeof __e&&(__e=M)},function(A,t,M){var e=M(31);A.exports=function(A,t,M){if(e(A),void 0===t)return A;switch(M){case 1:return function(M){return A.call(t,M)};case 2:return function(M,e){return A.call(t,M,e)};case 3:return function(M,e,I){return A.call(t,M,e,I)}}return function(){return A.apply(t,arguments)}}},function(A,t,M){"use strict";if(M(18)){var e=M(64),I=M(11),g=M(12),i=M(1),n=M(119),o=M(160),E=M(51),c=M(70),T=M(54),N=M(29),a=M(71),r=M(56),C=M(22),D=M(66),B=M(41),s=M(26),Q=M(212),u=M(93),l=M(16),y=M(24),x=M(152),j=M(67),w=M(35),d=M(68).f,Y=M(154),h=M(63),L=M(17),S=M(43),z=M(111),U=M(157),p=M(156),f=M(78),F=M(115),m=M(69),O=M(155),R=M(221),k=M(19),G=M(34),b=k.f,J=G.f,H=I.RangeError,v=I.TypeError,V=I.Uint8Array,X=Array.prototype,W=o.ArrayBuffer,P=o.DataView,K=S(0),Z=S(2),q=S(3),_=S(4),$=S(5),AA=S(6),tA=z(!0),MA=z(!1),eA=p.values,IA=p.keys,gA=p.entries,iA=X.lastIndexOf,nA=X.reduce,oA=X.reduceRight,EA=X.join,cA=X.sort,TA=X.slice,NA=X.toString,aA=X.toLocaleString,rA=L("iterator"),CA=L("toStringTag"),DA=h("typed_constructor"),BA=h("def_constructor"),sA=n.CONSTR,QA=n.TYPED,uA=n.VIEW,lA=S(1,function(A,t){return YA(U(A,A[BA]),t)}),yA=g(function(){return 1===new V(new Uint16Array([1]).buffer)[0]}),xA=!!V&&!!V.prototype.set&&g(function(){new V(1).set({})}),jA=function(A,t){if(void 0===A)throw v("Wrong length!");var M=+A,e=C(A);if(t&&!Q(M,e))throw H("Wrong length!");return e},wA=function(A,t){var M=r(A);if(M<0||M%t)throw H("Wrong offset!");return M},dA=function(A){if(l(A)&&QA in A)return A;throw v(A+" is not a typed array!")},YA=function(A,t){if(!(l(A)&&DA in A))throw v("It is not a typed array constructor!");return new A(t)},hA=function(A,t){return LA(U(A,A[BA]),t)},LA=function(A,t){for(var M=0,e=t.length,I=YA(A,e);e>M;)I[M]=t[M++];return I},SA=function(A,t,M){b(A,t,{get:function(){return this._d[M]}})},zA=function(A){var t,M,e,I,g,i,n=y(A),o=arguments.length,c=o>1?arguments[1]:void 0,T=void 0!==c,N=Y(n);if(void 0!=N&&!x(N)){for(i=N.call(n),e=[],t=0;!(g=i.next()).done;t++)e.push(g.value);n=e}for(T&&o>2&&(c=E(c,arguments[2],2)),t=0,M=C(n.length),I=YA(this,M);M>t;t++)I[t]=T?c(n[t],t):n[t];return I},UA=function(){for(var A=0,t=arguments.length,M=YA(this,t);t>A;)M[A]=arguments[A++];return M},pA=!!V&&g(function(){aA.call(new V(1))}),fA=function(){return aA.apply(pA?TA.call(dA(this)):dA(this),arguments)},FA={copyWithin:function(A,t){return R.call(dA(this),A,t,arguments.length>2?arguments[2]:void 0)},every:function(A){return _(dA(this),A,arguments.length>1?arguments[1]:void 0)},fill:function(A){return O.apply(dA(this),arguments)},filter:function(A){return hA(this,Z(dA(this),A,arguments.length>1?arguments[1]:void 0))},find:function(A){return $(dA(this),A,arguments.length>1?arguments[1]:void 0)},findIndex:function(A){return AA(dA(this),A,arguments.length>1?arguments[1]:void 0)},forEach:function(A){K(dA(this),A,arguments.length>1?arguments[1]:void 0)},indexOf:function(A){return MA(dA(this),A,arguments.length>1?arguments[1]:void 0)},includes:function(A){return tA(dA(this),A,arguments.length>1?arguments[1]:void 0)},join:function(A){return EA.apply(dA(this),arguments)},lastIndexOf:function(A){return iA.apply(dA(this),arguments)},map:function(A){return lA(dA(this),A,arguments.length>1?arguments[1]:void 0)},reduce:function(A){return nA.apply(dA(this),arguments)},reduceRight:function(A){return oA.apply(dA(this),arguments)},reverse:function(){for(var A,t=this,M=dA(t).length,e=Math.floor(M/2),I=0;I1?arguments[1]:void 0)},sort:function(A){return cA.call(dA(this),A)},subarray:function(A,t){var M=dA(this),e=M.length,I=D(A,e);return new(U(M,M[BA]))(M.buffer,M.byteOffset+I*M.BYTES_PER_ELEMENT,C((void 0===t?e:D(t,e))-I))}},mA=function(A,t){return hA(this,TA.call(dA(this),A,t))},OA=function(A){dA(this);var t=wA(arguments[1],1),M=this.length,e=y(A),I=C(e.length),g=0;if(I+t>M)throw H("Wrong length!");for(;g255?255:255&e),I.v[r](M*t+I.o,e,yA)},L=function(A,t){b(A,t,{get:function(){return Y(this,t)},set:function(A){return h(this,t,A)},enumerable:!0})};Q?(D=M(function(A,M,e,I){c(A,D,E,"_d");var g,i,n,o,T=0,a=0;if(l(M)){if(!(M instanceof W||"ArrayBuffer"==(o=u(M))||"SharedArrayBuffer"==o))return QA in M?LA(D,M):zA.call(D,M);g=M,a=wA(e,t);var r=M.byteLength;if(void 0===I){if(r%t)throw H("Wrong length!");if((i=r-a)<0)throw H("Wrong length!")}else if((i=C(I)*t)+a>r)throw H("Wrong length!");n=i/t}else n=jA(M,!0),i=n*t,g=new W(i);for(N(A,"_d",{b:g,o:a,l:i,e:n,v:new P(g)});T0?e:M)(A)}},function(A,t,M){A.exports=M(537)()},function(A,t,M){var e=M(59),I=M(47),g=M(175),i=M(83),n=function(A,t,M){var o,E,c,T=A&n.F,N=A&n.G,a=A&n.S,r=A&n.P,C=A&n.B,D=A&n.W,B=N?I:I[t]||(I[t]={}),s=B.prototype,Q=N?e:a?e[t]:(e[t]||{}).prototype;N&&(M=t);for(o in M)(E=!T&&Q&&void 0!==Q[o])&&o in B||(c=E?Q[o]:M[o],B[o]=N&&"function"!=typeof Q[o]?M[o]:C&&E?g(c,e):D&&Q[o]==c?function(A){var t=function(t,M,e){if(this instanceof A){switch(arguments.length){case 0:return new A;case 1:return new A(t);case 2:return new A(t,M)}return new A(t,M,e)}return A.apply(this,arguments)};return t.prototype=A.prototype,t}(c):r&&"function"==typeof c?g(Function.call,c):c,r&&((B.virtual||(B.virtual={}))[o]=c,A&n.R&&s&&!s[o]&&i(s,o,c)))};n.F=1,n.G=2,n.S=4,n.P=8,n.B=16,n.W=32,n.U=64,n.R=128,A.exports=n},function(A,t){var M=A.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=M)},function(A,t,M){var e=M(262),I=M(178);A.exports=function(A){return e(I(A))}},function(A,t,M){"use strict";function e(A,t,M,e,I){M&&(A._notifying=!0,M.call.apply(M,[A,e].concat(I)),A._notifying=!1),A._values[t]=e,A.unmounted||A.forceUpdate()}t.__esModule=!0;var I=M(656),g=function(A){return A&&A.__esModule?A:{default:A}}(I),i={shouldComponentUpdate:function(){return!this._notifying}};t.default=(0,g.default)(i,e),A.exports=t.default},function(A,t,M){A.exports={default:M(659),__esModule:!0}},function(A,t){var M=0,e=Math.random();A.exports=function(A){return"Symbol(".concat(void 0===A?"":A,")_",(++M+e).toString(36))}},function(A,t){A.exports=!1},function(A,t,M){var e=M(208),I=M(138);A.exports=Object.keys||function(A){return e(A,I)}},function(A,t,M){var e=M(56),I=Math.max,g=Math.min;A.exports=function(A,t){return A=e(A),A<0?I(A+t,0):g(A,t)}},function(A,t,M){var e=M(10),I=M(209),g=M(138),i=M(137)("IE_PROTO"),n=function(){},o=function(){var A,t=M(135)("iframe"),e=g.length;for(t.style.display="none",M(140).appendChild(t),t.src="javascript:",A=t.contentWindow.document,A.open(),A.write("