(window.__LOADABLE_LOADED_CHUNKS__=window.__LOADABLE_LOADED_CHUNKS__||[]).push([[27],{
/***/"11Hm":
/***/function(n,t,e){"use strict";
/* harmony export (binding) */e.d(t,"a",(function(){return y})),
/* harmony export (binding) */e.d(t,"b",(function(){return k})),
/* harmony export (binding) */e.d(t,"d",(function(){return E})),
/* harmony export (binding) */e.d(t,"c",(function(){return d})),
/* harmony export (binding) */e.d(t,"f",(function(){return l})),
/* unused harmony export parsePath */
/* harmony export (binding) */e.d(t,"e",(function(){return h}));
/* harmony import */var o=e("cxan"),i=e("xcxk"),r=e("2hhZ"),a=e("h7FZ");
/* harmony import */function c(n){return"/"===n.charAt(0)?n:"/"+n}function u(n){return"/"===n.charAt(0)?n.substr(1):n}function f(n,t){return function(n,t){return 0===n.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(n.charAt(t.length))}(n,t)?n.substr(t.length):n}function s(n){return"/"===n.charAt(n.length-1)?n.slice(0,-1):n}function h(n){var t=n.pathname,e=n.search,o=n.hash,i=t||"/";return e&&"?"!==e&&(i+="?"===e.charAt(0)?e:"?"+e),o&&"#"!==o&&(i+="#"===o.charAt(0)?o:"#"+o),i}function d(n,t,e,r){var a;"string"===typeof n?(
// Two-arg form: push(path, state)
a=function(n){var t=n||"/",e="",o="",i=t.indexOf("#");-1!==i&&(o=t.substr(i),t=t.substr(0,i));var r=t.indexOf("?");return-1!==r&&(e=t.substr(r),t=t.substr(0,r)),{pathname:t,search:"?"===e?"":e,hash:"#"===o?"":o}}(n)).state=t:(
// One-arg form: push(location)
void 0===(a=Object(o.a)({},n)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(c){throw c instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):c}return e&&(a.key=e),r?
// Resolve incomplete/relative pathname relative to current location.
a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=Object(i.a)(a.pathname,r.pathname)):a.pathname=r.pathname:
// When there is no prior location and pathname is empty, set it to /
a.pathname||(a.pathname="/"),a}function l(n,t){return n.pathname===t.pathname&&n.search===t.search&&n.hash===t.hash&&n.key===t.key&&Object(r.a)(n.state,t.state)}function v(){var n=null;var t=[];return{setPrompt:function(t){return n=t,function(){n===t&&(n=null)}},confirmTransitionTo:function(t,e,o,i){
// TODO: If another transition starts while we're still confirming
// the previous one, we may end up in a weird state. Figure out the
// best way to handle this.
if(null!=n){var r="function"===typeof n?n(t,e):n;"string"===typeof r?"function"===typeof o?o(r,i):i(!0):
// Return false from a transition hook to cancel the transition.
i(!1!==r)}else i(!0)},appendListener:function(n){var e=!0;function o(){e&&n.apply(void 0,arguments)}return t.push(o),function(){e=!1,t=t.filter((function(n){return n!==o}))}},notifyListeners:function(){for(var n=arguments.length,e=new Array(n),o=0;o<n;o++)e[o]=arguments[o];t.forEach((function(n){return n.apply(void 0,e)}))}}}var w=!("undefined"===typeof window||!window.document||!window.document.createElement);function p(n,t){t(window.confirm(n));// eslint-disable-line no-alert
}
/**
 * Returns true if the HTML5 history API is supported. Taken from Modernizr.
 *
 * https://github.com/Modernizr/Modernizr/blob/master/LICENSE
 * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js
 * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586
 */var m="popstate",g="hashchange";function O(){try{return window.history.state||{}}catch(n){
// IE 11 sometimes throws when accessing window.history.state
// See https://github.com/ReactTraining/history/pull/289
return{}}}
/**
 * Creates a history object that uses the HTML5 history API including
 * pushState, replaceState, and the popstate event.
 */function y(n){void 0===n&&(n={}),w||Object(a.a)(!1);var t=window.history,e=function(){var n=window.navigator.userAgent;return(-1===n.indexOf("Android 2.")&&-1===n.indexOf("Android 4.0")||-1===n.indexOf("Mobile Safari")||-1!==n.indexOf("Chrome")||-1!==n.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history}
/**
 * Returns true if browser fires popstate on hash change.
 * IE10 and IE11 do not.
 */(),i=!(-1===window.navigator.userAgent.indexOf("Trident")),r=n,u=r.forceRefresh,l=void 0!==u&&u,y=r.getUserConfirmation,P=void 0===y?p:y,x=r.keyLength,b=void 0===x?6:x,A=n.basename?s(c(n.basename)):"";function L(n){var t=n||{},e=t.key,o=t.state,i=window.location,r=i.pathname+i.search+i.hash;return A&&(r=f(r,A)),d(r,o,e)}function k(){return Math.random().toString(36).substr(2,b)}var T=v();function E(n){Object(o.a)(M,n),M.length=t.length,T.notifyListeners(M.location,M.action)}function S(n){
// Ignore extraneous popstate events in WebKit.
(
/**
 * Returns true if a given popstate event is an extraneous WebKit event.
 * Accounts for the fact that Chrome on iOS fires real popstate events
 * containing undefined state when pressing the back button.
 */
function(n){return void 0===n.state&&-1===navigator.userAgent.indexOf("CriOS")})(n)||U(L(n.state))}function C(){U(L(O()))}var _=!1;function U(n){if(_)_=!1,E();else{T.confirmTransitionTo(n,"POP",P,(function(t){t?E({action:"POP",location:n}):function(n){var t=M.location,e=j.indexOf(t.key);// TODO: We could probably make this more reliable by
// keeping a list of keys we've seen in sessionStorage.
// Instead, we just default to 0 for keys we don't know.
-1===e&&(e=0);var o=j.indexOf(n.key);-1===o&&(o=0);var i=e-o;i&&(_=!0,R(i))}(n)}))}}var H=L(O()),j=[H.key];// Public interface
function I(n){return A+h(n)}function R(n){t.go(n)}var D=0;function B(n){1===(D+=n)&&1===n?(window.addEventListener(m,S),i&&window.addEventListener(g,C)):0===D&&(window.removeEventListener(m,S),i&&window.removeEventListener(g,C))}var F=!1;var M={length:t.length,action:"POP",location:H,createHref:I,push:function(n,o){var i="PUSH",r=d(n,o,k(),M.location);T.confirmTransitionTo(r,i,P,(function(n){if(n){var o=I(r),a=r.key,c=r.state;if(e)if(t.pushState({key:a,state:c},null,o),l)window.location.href=o;else{var u=j.indexOf(M.location.key),f=j.slice(0,u+1);f.push(r.key),j=f,E({action:i,location:r})}else window.location.href=o}}))},replace:function(n,o){var i="REPLACE",r=d(n,o,k(),M.location);T.confirmTransitionTo(r,i,P,(function(n){if(n){var o=I(r),a=r.key,c=r.state;if(e)if(t.replaceState({key:a,state:c},null,o),l)window.location.replace(o);else{var u=j.indexOf(M.location.key);-1!==u&&(j[u]=r.key),E({action:i,location:r})}else window.location.replace(o)}}))},go:R,goBack:function(){R(-1)},goForward:function(){R(1)},block:function(n){void 0===n&&(n=!1);var t=T.setPrompt(n);return F||(B(1),F=!0),function(){return F&&(F=!1,B(-1)),t()}},listen:function(n){var t=T.appendListener(n);return B(1),function(){B(-1),t()}}};return M}var P="hashchange",x={hashbang:{encodePath:function(n){return"!"===n.charAt(0)?n:"!/"+u(n)},decodePath:function(n){return"!"===n.charAt(0)?n.substr(1):n}},noslash:{encodePath:u,decodePath:c},slash:{encodePath:c,decodePath:c}};function b(n){var t=n.indexOf("#");return-1===t?n:n.slice(0,t)}function A(){
// We can't use window.location.hash here because it's not
// consistent across browsers - Firefox will pre-decode it!
var n=window.location.href,t=n.indexOf("#");return-1===t?"":n.substring(t+1)}function L(n){window.location.replace(b(window.location.href)+"#"+n)}function k(n){void 0===n&&(n={}),w||Object(a.a)(!1);var t=window.history,e=(window.navigator.userAgent.indexOf("Firefox"),n),i=e.getUserConfirmation,r=void 0===i?p:i,u=e.hashType,l=void 0===u?"slash":u,m=n.basename?s(c(n.basename)):"",g=x[l],O=g.encodePath,y=g.decodePath;function k(){var n=y(A());return m&&(n=f(n,m)),d(n)}var T=v();function E(n){Object(o.a)(M,n),M.length=t.length,T.notifyListeners(M.location,M.action)}var S=!1,C=null;function _(){var n,t,e=A(),o=O(e);if(e!==o)
// Ensure we always have a properly-encoded hash.
L(o);else{var i=k(),a=M.location;if(!S&&(t=i,(n=a).pathname===t.pathname&&n.search===t.search&&n.hash===t.hash))return;// A hashchange doesn't always == location change.
if(C===h(i))return;// Ignore this change; we already setState in push/replace.
C=null,function(n){if(S)S=!1,E();else{var t="POP";T.confirmTransitionTo(n,t,r,(function(e){e?E({action:t,location:n}):function(n){var t=M.location,e=I.lastIndexOf(h(t));// TODO: We could probably make this more reliable by
// keeping a list of paths we've seen in sessionStorage.
// Instead, we just default to 0 for paths we don't know.
-1===e&&(e=0);var o=I.lastIndexOf(h(n));-1===o&&(o=0);var i=e-o;i&&(S=!0,R(i))}// Ensure the hash is encoded properly before doing anything else.
(n)}))}}(i)}}var U=A(),H=O(U);U!==H&&L(H);var j=k(),I=[h(j)];function R(n){t.go(n)}var D=0;function B(n){1===(D+=n)&&1===n?window.addEventListener(P,_):0===D&&window.removeEventListener(P,_)}var F=!1;var M={length:t.length,action:"POP",location:j,createHref:// Public interface
function(n){var t=document.querySelector("base"),e="";return t&&t.getAttribute("href")&&(e=b(window.location.href)),e+"#"+O(m+h(n))},push:function(n,t){var e="PUSH",o=d(n,void 0,void 0,M.location);T.confirmTransitionTo(o,e,r,(function(n){if(n){var t=h(o),i=O(m+t);if(A()!==i){
// We cannot tell if a hashchange was caused by a PUSH, so we'd
// rather setState here and ignore the hashchange. The caveat here
// is that other hash histories in the page will consider it a POP.
C=t,function(n){window.location.hash=n}(i);var r=I.lastIndexOf(h(M.location)),a=I.slice(0,r+1);a.push(t),I=a,E({action:e,location:o})}else E()}}))},replace:function(n,t){var e="REPLACE",o=d(n,void 0,void 0,M.location);T.confirmTransitionTo(o,e,r,(function(n){if(n){var t=h(o),i=O(m+t);A()!==i&&(
// We cannot tell if a hashchange was caused by a REPLACE, so we'd
// rather setState here and ignore the hashchange. The caveat here
// is that other hash histories in the page will consider it a POP.
C=t,L(i));var r=I.indexOf(h(M.location));-1!==r&&(I[r]=t),E({action:e,location:o})}}))},go:R,goBack:function(){R(-1)},goForward:function(){R(1)},block:function(n){void 0===n&&(n=!1);var t=T.setPrompt(n);return F||(B(1),F=!0),function(){return F&&(F=!1,B(-1)),t()}},listen:function(n){var t=T.appendListener(n);return B(1),function(){B(-1),t()}}};return M}function T(n,t,e){return Math.min(Math.max(n,t),e)}
/**
 * Creates a history object that stores locations in memory.
 */function E(n){void 0===n&&(n={});var t=n,e=t.getUserConfirmation,i=t.initialEntries,r=void 0===i?["/"]:i,a=t.initialIndex,c=void 0===a?0:a,u=t.keyLength,f=void 0===u?6:u,s=v();function l(n){Object(o.a)(y,n),y.length=y.entries.length,s.notifyListeners(y.location,y.action)}function w(){return Math.random().toString(36).substr(2,f)}var p=T(c,0,r.length-1),m=r.map((function(n){return d(n,void 0,"string"===typeof n?w():n.key||w())})),g=h;function O(n){var t=T(y.index+n,0,y.entries.length-1),o=y.entries[t];s.confirmTransitionTo(o,"POP",e,(function(n){n?l({action:"POP",location:o,index:t}):
// Mimic the behavior of DOM histories by
// causing a render after a cancelled POP.
l()}))}var y={length:m.length,action:"POP",location:m[p],index:p,entries:m,createHref:g,push:function(n,t){var o="PUSH",i=d(n,t,w(),y.location);s.confirmTransitionTo(i,o,e,(function(n){if(n){var t=y.index+1,e=y.entries.slice(0);e.length>t?e.splice(t,e.length-t,i):e.push(i),l({action:o,location:i,index:t,entries:e})}}))},replace:function(n,t){var o="REPLACE",i=d(n,t,w(),y.location);s.confirmTransitionTo(i,o,e,(function(n){n&&(y.entries[y.index]=i,l({action:o,location:i}))}))},go:O,goBack:function(){O(-1)},goForward:function(){O(1)},canGo:function(n){var t=y.index+n;return t>=0&&t<y.entries.length},block:function(n){return void 0===n&&(n=!1),s.setPrompt(n)},listen:function(n){return s.appendListener(n)}};return y}
/***/}}]);
//# sourceMappingURL=client-f9bba502.e8fad9b4.chunk.js.map