<!DOCTYPE html>
<html data-env='production' lang='en' xml:lang='en'>
<head>
<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"faaaef6476","applicationID":"1135420","transactionName":"cAkNR0ENXQpXF0tJDUASEBxACl4R","queueTime":0,"applicationTime":65,"agent":""}</script>
<script type="text/javascript">(window.NREUM||(NREUM={})).loader_config={xpid:"VwYHUF9ACQIDUVVQBw=="};window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,n){function r(t){try{c.console&&console.log(t)}catch(e){}}var o,i=t("ee"),a=t(20),c={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(c.console=!0,o.indexOf("dev")!==-1&&(c.dev=!0),o.indexOf("nr_dev")!==-1&&(c.nrDev=!0))}catch(s){}c.nrDev&&i.on("internal-error",function(t){r(t.stack)}),c.dev&&i.on("fn-err",function(t,e,n){r(n.stack)}),c.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(c,function(t,e){return t}).join(", ")))},{}],2:[function(t,e,n){function r(t,e,n,r,c){try{h?h-=1:o(c||new UncaughtException(t,e,n),!0)}catch(f){try{i("ierr",[f,s.now(),!0])}catch(d){}}return"function"==typeof u&&u.apply(this,a(arguments))}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function o(t,e){var n=e?null:s.now();i("err",[t,n])}var i=t("handle"),a=t(21),c=t("ee"),s=t("loader"),f=t("gos"),u=window.onerror,d=!1,p="nr@seenError",h=0;s.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(l){"stack"in l&&(t(13),t(12),"addEventListener"in window&&t(6),s.xhrWrappable&&t(14),d=!0)}c.on("fn-start",function(t,e,n){d&&(h+=1)}),c.on("fn-err",function(t,e,n){d&&!n[p]&&(f(n,p,function(){return!0}),this.thrown=!0,o(n))}),c.on("fn-end",function(){d&&!this.thrown&&h>0&&(h-=1)}),c.on("internal-error",function(t){i("ierr",[t,s.now(),!0])})},{}],3:[function(t,e,n){t("loader").features.ins=!0},{}],4:[function(t,e,n){function r(){M++,S=y.hash,this[u]=b.now()}function o(){M--,y.hash!==S&&i(0,!0);var t=b.now();this[l]=~~this[l]+t-this[u],this[d]=t}function i(t,e){E.emit("newURL",[""+y,e])}function a(t,e){t.on(e,function(){this[e]=b.now()})}var c="-start",s="-end",f="-body",u="fn"+c,d="fn"+s,p="cb"+c,h="cb"+s,l="jsTime",m="fetch",v="addEventListener",w=window,y=w.location,b=t("loader");if(w[v]&&b.xhrWrappable){var g=t(10),x=t(11),E=t(8),P=t(6),O=t(13),R=t(7),T=t(14),L=t(9),j=t("ee"),N=j.get("tracer");t(15),b.features.spa=!0;var S,M=0;j.on(u,r),j.on(p,r),j.on(d,o),j.on(h,o),j.buffer([u,d,"xhr-done","xhr-resolved"]),P.buffer([u]),O.buffer(["setTimeout"+s,"clearTimeout"+c,u]),T.buffer([u,"new-xhr","send-xhr"+c]),R.buffer([m+c,m+"-done",m+f+c,m+f+s]),E.buffer(["newURL"]),g.buffer([u]),x.buffer(["propagate",p,h,"executor-err","resolve"+c]),N.buffer([u,"no-"+u]),L.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),a(T,"send-xhr"+c),a(j,"xhr-resolved"),a(j,"xhr-done"),a(R,m+c),a(R,m+"-done"),a(L,"new-jsonp"),a(L,"jsonp-end"),a(L,"cb-start"),E.on("pushState-end",i),E.on("replaceState-end",i),w[v]("hashchange",i,!0),w[v]("load",i,!0),w[v]("popstate",function(){i(0,M>1)},!0)}},{}],5:[function(t,e,n){function r(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var o=t("ee"),i=t("handle"),a=t(13),c=t(12),s="learResourceTimings",f="addEventListener",u="resourcetimingbufferfull",d="bstResource",p="resource",h="-start",l="-end",m="fn"+h,v="fn"+l,w="bstTimer",y="pushState",b=t("loader");b.features.stn=!0,t(8);var g=NREUM.o.EV;o.on(m,function(t,e){var n=t[0];n instanceof g&&(this.bstStart=b.now())}),o.on(v,function(t,e){var n=t[0];n instanceof g&&i("bst",[n,e,this.bstStart,b.now()])}),a.on(m,function(t,e,n){this.bstStart=b.now(),this.bstType=n}),a.on(v,function(t,e){i(w,[e,this.bstStart,b.now(),this.bstType])}),c.on(m,function(){this.bstStart=b.now()}),c.on(v,function(t,e){i(w,[e,this.bstStart,b.now(),"requestAnimationFrame"])}),o.on(y+h,function(t){this.time=b.now(),this.startPath=location.pathname+location.hash}),o.on(y+l,function(t){i("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),f in window.performance&&(window.performance["c"+s]?window.performance[f](u,function(t){i(d,[window.performance.getEntriesByType(p)]),window.performance["c"+s]()},!1):window.performance[f]("webkit"+u,function(t){i(d,[window.performance.getEntriesByType(p)]),window.performance["webkitC"+s]()},!1)),document[f]("scroll",r,{passive:!0}),document[f]("keypress",r,!1),document[f]("click",r,!1)}},{}],6:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){c.inPlace(t,[u,d],"-",i)}function i(t,e){return t[1]}var a=t("ee").get("events"),c=t(23)(a,!0),s=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";e.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,e){var n=t[1],r=s(n,"nr@wrapped",function(){function t(){if("function"==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,"function":n}[typeof n];return e?c(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=t[1]=r}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],7:[function(t,e,n){function r(t,e,n){var r=t[e];"function"==typeof r&&(t[e]=function(){var t=r.apply(this,arguments);return o.emit(n+"start",arguments,t),t.then(function(e){return o.emit(n+"end",[null,e],t),e},function(e){throw o.emit(n+"end",[e],t),e})})}var o=t("ee").get("fetch"),i=t(20);e.exports=o;var a=window,c="fetch-",s=c+"body-",f=["arrayBuffer","blob","json","text","formData"],u=a.Request,d=a.Response,p=a.fetch,h="prototype";u&&d&&p&&(i(f,function(t,e){r(u[h],e,s),r(d[h],e,s)}),r(a,"fetch",c),o.on(c+"end",function(t,e){var n=this;e?e.clone().arrayBuffer().then(function(t){n.rxSize=t.byteLength,o.emit(c+"done",[null,e],n)}):o.emit(c+"done",[t],n)}))},{}],8:[function(t,e,n){var r=t("ee").get("history"),o=t(23)(r);e.exports=r,o.inPlace(window.history,["pushState","replaceState"],"-")},{}],9:[function(t,e,n){function r(t){function e(){s.emit("jsonp-end",[],p),t.removeEventListener("load",e,!1),t.removeEventListener("error",n,!1)}function n(){s.emit("jsonp-error",[],p),s.emit("jsonp-end",[],p),t.removeEventListener("load",e,!1),t.removeEventListener("error",n,!1)}var r=t&&"string"==typeof t.nodeName&&"script"===t.nodeName.toLowerCase();if(r){var o="function"==typeof t.addEventListener;if(o){var a=i(t.src);if(a){var u=c(a),d="function"==typeof u.parent[u.key];if(d){var p={};f.inPlace(u.parent,[u.key],"cb-",p),t.addEventListener("load",e,!1),t.addEventListener("error",n,!1),s.emit("new-jsonp",[t.src],p)}}}}}function o(){return"addEventListener"in window}function i(t){var e=t.match(u);return e?e[1]:null}function a(t,e){var n=t.match(p),r=n[1],o=n[3];return o?a(o,e[r]):e[r]}function c(t){var e=t.match(d);return e&&e.length>=3?{key:e[2],parent:a(e[1],window)}:{key:t,parent:window}}var s=t("ee").get("jsonp"),f=t(23)(s);if(e.exports=s,o()){var u=/[?&](?:callback|cb)=([^&#]+)/,d=/(.*)\.([^.]+)/,p=/^(\w+)(\.|$)(.*)$/,h=["appendChild","insertBefore","replaceChild"];f.inPlace(HTMLElement.prototype,h,"dom-"),f.inPlace(HTMLHeadElement.prototype,h,"dom-"),f.inPlace(HTMLBodyElement.prototype,h,"dom-"),s.on("dom-start",function(t){r(t[0])})}},{}],10:[function(t,e,n){var r=t("ee").get("mutation"),o=t(23)(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],11:[function(t,e,n){function r(t){var e=a.context(),n=c(t,"executor-",e),r=new f(n);return a.context(r).getCtx=function(){return e},a.emit("new-promise",[r,e],e),r}function o(t,e){return e}var i=t(23),a=t("ee").get("promise"),c=i(a),s=t(20),f=NREUM.o.PR;e.exports=a,f&&(window.Promise=r,["all","race"].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){a.emit("propagate",[null,!o],i),o=o||!t}}var o=!1;s(n,function(e,n){Promise.resolve(n).then(r("all"===t),r(!1))});var i=e.apply(f,arguments),c=f.resolve(i);return c}}),["resolve","reject"].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&a.emit("propagate",[t,!0],n),n}}),f.prototype["catch"]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),s(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),a.on("executor-start",function(t){t[0]=c(t[0],"resolve-",this),t[1]=c(t[1],"resolve-",this)}),a.on("executor-err",function(t,e,n){t[1](n)}),c.inPlace(f.prototype,["then"],"then-",o),a.on("then-start",function(t,e){this.promise=e,t[0]=c(t[0],"cb-",this),t[1]=c(t[1],"cb-",this)}),a.on("then-end",function(t,e,n){this.nextPromise=n;var r=this.promise;a.emit("propagate",[r,!0],n)}),a.on("cb-end",function(t,e,n){a.emit("propagate",[n,!0],this.nextPromise)}),a.on("propagate",function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=a.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return""+f})},{}],12:[function(t,e,n){var r=t("ee").get("raf"),o=t(23)(r),i="equestAnimationFrame";e.exports=r,o.inPlace(window,["r"+i,"mozR"+i,"webkitR"+i,"msR"+i],"raf-"),r.on("raf-start",function(t){t[0]=o(t[0],"fn-")})},{}],13:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],"fn-",null,n)}function o(t,e,n){this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],"fn-",this,n)}var i=t("ee").get("timer"),a=t(23)(i),c="setTimeout",s="setInterval",f="clearTimeout",u="-start",d="-";e.exports=i,a.inPlace(window,[c,"setImmediate"],c+d),a.inPlace(window,[s],s+d),a.inPlace(window,[f,"clearImmediate"],f+d),i.on(s+u,r),i.on(c+u,o)},{}],14:[function(t,e,n){function r(t,e){d.inPlace(e,["onreadystatechange"],"fn-",c)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit("xhr-resolved",[],t)),d.inPlace(t,y,"fn-",c)}function i(t){b.push(t),l&&(x?x.then(a):v?v(a):(E=-E,P.data=E))}function a(){for(var t=0;t<b.length;t++)r([],b[t]);b.length&&(b=[])}function c(t,e){return e}function s(t,e){for(var n in t)e[n]=t[n];return e}t(6);var f=t("ee"),u=f.get("xhr"),d=t(23)(u),p=NREUM.o,h=p.XHR,l=p.MO,m=p.PR,v=p.SI,w="readystatechange",y=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],b=[];e.exports=u;var g=window.XMLHttpRequest=function(t){var e=new h(t);try{u.emit("new-xhr",[e],e),e.addEventListener(w,o,!1)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}return e};if(s(h,g),g.prototype=h.prototype,d.inPlace(g.prototype,["open","send"],"-xhr-",c),u.on("send-xhr-start",function(t,e){r(t,e),i(e)}),u.on("open-xhr-start",r),l){var x=m&&m.resolve();if(!v&&!m){var E=1,P=document.createTextNode(E);new l(a).observe(P,{characterData:!0})}}else f.on("fn-end",function(t){t[0]&&t[0].type===w||a()})},{}],15:[function(t,e,n){function r(t){var e=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var r=0;r<d;r++)t.removeEventListener(u[r],this.listener,!1);if(!e.aborted){if(n.duration=a.now()-this.startTime,4===t.readyState){e.status=t.status;var i=o(t,this.lastSize);if(i&&(n.rxSize=i),this.sameOrigin){var s=t.getResponseHeader("X-NewRelic-App-Data");s&&(e.cat=s.split(", ").pop())}}else e.status=0;n.cbTime=this.cbTime,f.emit("xhr-done",[t],t),c("xhr",[e,n,this.startTime])}}}function o(t,e){var n=t.responseType;if("json"===n&&null!==e)return e;var r="arraybuffer"===n||"blob"===n||"json"===n?t.response:t.responseText;return l(r)}function i(t,e){var n=s(e),r=t.params;r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.sameOrigin=n.sameOrigin}var a=t("loader");if(a.xhrWrappable){var c=t("handle"),s=t(16),f=t("ee"),u=["load","error","abort","timeout"],d=u.length,p=t("id"),h=t(19),l=t(18),m=window.XMLHttpRequest;a.features.xhr=!0,t(14),f.on("new-xhr",function(t){var e=this;e.totalCbs=0,e.called=0,e.cbTime=0,e.end=r,e.ended=!1,e.xhrGuids={},e.lastSize=null,h&&(h>34||h<10)||window.opera||t.addEventListener("progress",function(t){e.lastSize=t.loaded},!1)}),f.on("open-xhr-start",function(t){this.params={method:t[0]},i(this,t[1]),this.metrics={}}),f.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid)}),f.on("send-xhr-start",function(t,e){var n=this.metrics,r=t[0],o=this;if(n&&r){var i=l(r);i&&(n.txSize=i)}this.startTime=a.now(),this.listener=function(t){try{"abort"===t.type&&(o.params.aborted=!0),("load"!==t.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof e.onload))&&o.end(e)}catch(n){try{f.emit("internal-error",[n])}catch(r){}}};for(var c=0;c<d;c++)e.addEventListener(u[c],this.listener,!1)}),f.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),f.on("xhr-load-added",function(t,e){var n=""+p(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),f.on("xhr-load-removed",function(t,e){var n=""+p(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),f.on("addEventListener-end",function(t,e){e instanceof m&&"load"===t[0]&&f.emit("xhr-load-added",[t[1],t[2]],e)}),f.on("removeEventListener-end",function(t,e){e instanceof m&&"load"===t[0]&&f.emit("xhr-load-removed",[t[1],t[2]],e)}),f.on("fn-start",function(t,e,n){e instanceof m&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=a.now()))}),f.on("fn-end",function(t,e){this.xhrCbStart&&f.emit("xhr-cb-time",[a.now()-this.xhrCbStart,this.onload,e],e)})}},{}],16:[function(t,e,n){e.exports=function(t){var e=document.createElement("a"),n=window.location,r={};e.href=t,r.port=e.port;var o=e.href.split("://");!r.port&&o[1]&&(r.port=o[1].split("/")[0].split("@").pop().split(":")[1]),r.port&&"0"!==r.port||(r.port="https"===o[0]?"443":"80"),r.hostname=e.hostname||n.hostname,r.pathname=e.pathname,r.protocol=o[0],"/"!==r.pathname.charAt(0)&&(r.pathname="/"+r.pathname);var i=!e.protocol||":"===e.protocol||e.protocol===n.protocol,a=e.hostname===document.domain&&e.port===n.port;return r.sameOrigin=i&&(!e.hostname||a),r}},{}],17:[function(t,e,n){function r(){}function o(t,e,n){return function(){return i(t,[f.now()].concat(c(arguments)),e?null:this,n),e?void 0:this}}var i=t("handle"),a=t(20),c=t(21),s=t("ee").get("tracer"),f=t("loader"),u=NREUM;"undefined"==typeof window.newrelic&&(newrelic=u);var d=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],p="api-",h=p+"ixn-";a(d,function(t,e){u[e]=o(p+e,!0,"api")}),u.addPageAction=o(p+"addPageAction",!0),u.setCurrentRouteName=o(p+"routeName",!0),e.exports=newrelic,u.interaction=function(){return(new r).get()};var l=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(h+"tracer",[f.now(),t,n],r),function(){if(s.emit((o?"":"no-")+"fn-start",[f.now(),r,o],n),o)try{return e.apply(this,arguments)}catch(t){throw s.emit("fn-err",[arguments,this,t],n),t}finally{s.emit("fn-end",[f.now()],n)}}}};a("setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(t,e){l[e]=o(h+e)}),newrelic.noticeError=function(t){"string"==typeof t&&(t=new Error(t)),i("err",[t,f.now()])}},{}],18:[function(t,e,n){e.exports=function(t){if("string"==typeof t&&t.length)return t.length;if("object"==typeof t){if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!("undefined"!=typeof FormData&&t instanceof FormData))try{return JSON.stringify(t).length}catch(e){return}}}},{}],19:[function(t,e,n){var r=0,o=navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);o&&(r=+o[1]),e.exports=r},{}],20:[function(t,e,n){function r(t,e){var n=[],r="",i=0;for(r in t)o.call(t,r)&&(n[i]=e(r,t[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],21:[function(t,e,n){function r(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(o<0?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=r},{}],22:[function(t,e,n){e.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],23:[function(t,e,n){function r(t){return!(t&&t instanceof Function&&t.apply&&!t[a])}var o=t("ee"),i=t(21),a="nr@original",c=Object.prototype.hasOwnProperty,s=!1;e.exports=function(t,e){function n(t,e,n,o){function nrWrapper(){var r,a,c,s;try{a=this,r=i(arguments),c="function"==typeof n?n(r,a):n||{}}catch(f){p([f,"",[r,a,o],c])}u(e+"start",[r,a,o],c);try{return s=t.apply(a,r)}catch(d){throw u(e+"err",[r,a,d],c),d}finally{u(e+"end",[r,a,s],c)}}return r(t)?t:(e||(e=""),nrWrapper[a]=t,d(t,nrWrapper),nrWrapper)}function f(t,e,o,i){o||(o="");var a,c,s,f="-"===o.charAt(0);for(s=0;s<e.length;s++)c=e[s],a=t[c],r(a)||(t[c]=n(a,f?c+o:o,i,c))}function u(n,r,o){if(!s||e){var i=s;s=!0;try{t.emit(n,r,o,e)}catch(a){p([a,n,r,o])}s=i}}function d(t,e){if(Object.defineProperty&&Object.keys)try{var n=Object.keys(t);return n.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(r){p([r])}for(var o in t)c.call(t,o)&&(e[o]=t[o]);return e}function p(e){try{t.emit("internal-error",e)}catch(n){}}return t||(t=o),n.inPlace=f,n.flag=a,n}},{}],ee:[function(t,e,n){function r(){}function o(t){function e(t){return t&&t instanceof r?t:t?s(t,c,i):i()}function n(n,r,o,i){if(!p.aborted||i){t&&t(n,r,o);for(var a=e(o),c=l(n),s=c.length,f=0;f<s;f++)c[f].apply(a,r);var d=u[y[n]];return d&&d.push([b,n,r,a]),a}}function h(t,e){w[t]=l(t).concat(e)}function l(t){return w[t]||[]}function m(t){return d[t]=d[t]||o(n)}function v(t,e){f(t,function(t,n){e=e||"feature",y[n]=e,e in u||(u[e]=[])})}var w={},y={},b={on:h,emit:n,get:m,listeners:l,context:e,buffer:v,abort:a,aborted:!1};return b}function i(){return new r}function a(){(u.api||u.feature)&&(p.aborted=!0,u=p.backlog={})}var c="nr@context",s=t("gos"),f=t(20),u={},d={},p=e.exports=o();p.backlog=u},{}],gos:[function(t,e,n){function r(t,e,n){if(o.call(t,e))return t[e];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return t[e]=r,r}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(t,e,n){function r(t,e,n,r){o.buffer([t],r),o.emit(t,e,n)}var o=t("ee").get("handle");e.exports=r,r.ee=o},{}],id:[function(t,e,n){function r(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:a(t,i,function(){return o++})}var o=1,i="nr@id",a=t("gos");e.exports=r},{}],loader:[function(t,e,n){function r(){if(!x++){var t=g.info=NREUM.info,e=p.getElementsByTagName("script")[0];if(setTimeout(u.abort,3e4),!(t&&t.licenseKey&&t.applicationID&&e))return u.abort();f(y,function(e,n){t[e]||(t[e]=n)}),s("mark",["onload",a()+g.offset],null,"api");var n=p.createElement("script");n.src="https://"+t.agent,e.parentNode.insertBefore(n,e)}}function o(){"complete"===p.readyState&&i()}function i(){s("mark",["domContent",a()+g.offset],null,"api")}function a(){return E.exists&&performance.now?Math.round(performance.now()):(c=Math.max((new Date).getTime(),c))-g.offset}var c=(new Date).getTime(),s=t("handle"),f=t(20),u=t("ee"),d=window,p=d.document,h="addEventListener",l="attachEvent",m=d.XMLHttpRequest,v=m&&m.prototype;NREUM.o={ST:setTimeout,SI:d.setImmediate,CT:clearTimeout,XHR:m,REQ:d.Request,EV:d.Event,PR:d.Promise,MO:d.MutationObserver};var w=""+location,y={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-spa-1071.min.js"},b=m&&v&&v[h]&&!/CriOS/.test(navigator.userAgent),g=e.exports={offset:c,now:a,origin:w,features:{},xhrWrappable:b};t(17),p[h]?(p[h]("DOMContentLoaded",i,!1),d[h]("load",r,!1)):(p[l]("onreadystatechange",o),d[l]("onload",r)),s("mark",["firstbyte",c],null,"api");var x=0,E=t(22)},{}]},{},["loader",2,15,5,3,4]);</script>
<script>/* observer-7.2.1 */ eval(atob("IWZ1bmN0aW9uIHQoZSxuLG8pe2Z1bmN0aW9uIHIoYSxzKXtpZighblthXSl7aWYoIWVbYV0pe3ZhciB1PSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFzJiZ1KXJldHVybiB1KGEsITApO2lmKGkpcmV0dXJuIGkoYSwhMCk7dmFyIGQ9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrYSsiJyIpO3Rocm93IGQuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsZH12YXIgYz1uW2FdPXtleHBvcnRzOnt9fTtlW2FdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKHQpe3ZhciBuPWVbYV1bMV1bdF07cmV0dXJuIHIobnx8dCl9LGMsYy5leHBvcnRzLHQsZSxuLG8pfXJldHVybiBuW2FdLmV4cG9ydHN9Zm9yKHZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGE9MDthPG8ubGVuZ3RoO2ErKylyKG9bYV0pO3JldHVybiByfSh7MTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiTkVXX1NDUklQVF9FVkVOVCIsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30sbz1uZXcgcihlLHtkZXRhaWw6bn0pO3QuZGlzcGF0Y2hFdmVudChvKX12YXIgcj10KDMpO2UuZXhwb3J0cz1vfSx7MzozfV0sMjpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQpe3QuYWRvbmlzPXQuYWRvbmlzfHx7fSx0LmFkb25pcy5zY3JpcHRTdGF0dXNlcz17fSx0LmFkb25pcy5yZXF1ZXN0U3RhdHVzZXM9e307dmFyIGU9dC5YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUub3Blbjt0LlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uKG4sbyl7dGhpcy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZnVuY3Rpb24oZSl7MD09PXRoaXMuc3RhdHVzP3QuYWRvbmlzLnNjcmlwdFN0YXR1c2VzW29dPSJlcnJvciI6dC5hZG9uaXMuc2NyaXB0U3RhdHVzZXNbb109ImxvYWQifSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbihlKXt0LmFkb25pcy5zY3JpcHRTdGF0dXNlc1tvXT0ibG9hZCJ9KSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlbmQiLGZ1bmN0aW9uKGUpe3QuYWRvbmlzLnJlcXVlc3RTdGF0dXNlc1tvXT10aGlzLnN0YXR1cyxyKHQpfSk7dmFyIGk9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIGUuYXBwbHkodGhpcyxpKX19dmFyIHI9dCgxKTtlLmV4cG9ydHM9e3dyYXBYTUxIdHRwUmVxdWVzdDpvfX0sezE6MX1dLDM6W2Z1bmN0aW9uKHQsZSxuKXsoZnVuY3Rpb24odCl7dmFyIG49dC5DdXN0b21FdmVudDtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7dmFyIHQ9bmV3IG4oImNhdCIse2RldGFpbDp7Zm9vOiJiYXIifX0pO3JldHVybiJjYXQiPT09dC50eXBlJiYiYmFyIj09PXQuZGV0YWlsLmZvb31jYXRjaCh0KXt9cmV0dXJuITF9KCk/bjoidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZG9jdW1lbnQuY3JlYXRlRXZlbnQ/ZnVuY3Rpb24odCxlKXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKTtyZXR1cm4gZT9uLmluaXRDdXN0b21FdmVudCh0LGUuYnViYmxlcyxlLmNhbmNlbGFibGUsZS5kZXRhaWwpOm4uaW5pdEN1c3RvbUV2ZW50KHQsITEsITEsdm9pZCAwKSxufTpmdW5jdGlvbih0LGUpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KCk7cmV0dXJuIG4udHlwZT10LGU/KG4uYnViYmxlcz1Cb29sZWFuKGUuYnViYmxlcyksbi5jYW5jZWxhYmxlPUJvb2xlYW4oZS5jYW5jZWxhYmxlKSxuLmRldGFpbD1lLmRldGFpbCk6KG4uYnViYmxlcz0hMSxuLmNhbmNlbGFibGU9ITEsbi5kZXRhaWw9dm9pZCAwKSxufX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDQ6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0LGUsbixvKXsiYWRkRXZlbnRMaXN0ZW5lciJpbiB0P3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4sbyk6ImF0dGFjaEV2ZW50ImluIHQmJnQuYXR0YWNoRXZlbnQoIm9uIitlLG4pfXZhciByPXQoMiksaT10KDEpOyFmdW5jdGlvbigpe3dpbmRvdy5hZG9uaXM9d2luZG93LmFkb25pc3x8e30sd2luZG93LmFkb25pcy5zY3JpcHRTdGF0dXNlcz17fSxyLndyYXBYTUxIdHRwUmVxdWVzdCh3aW5kb3cpLG8oZG9jdW1lbnQsImxvYWQiLGZ1bmN0aW9uKHQpe3QudGFyZ2V0JiYiU0NSSVBUIj09PXQudGFyZ2V0Lm5vZGVOYW1lJiYod2luZG93LmFkb25pcy5zY3JpcHRTdGF0dXNlc1t0LnRhcmdldC5zcmNdPSJsb2FkIixpKHdpbmRvdykpfSwhMCksbyhkb2N1bWVudCwiZXJyb3IiLGZ1bmN0aW9uKHQpe3QudGFyZ2V0JiYiU0NSSVBUIj09PXQudGFyZ2V0Lm5vZGVOYW1lJiYod2luZG93LmFkb25pcy5zY3JpcHRTdGF0dXNlc1t0LnRhcmdldC5zcmNdPSJlcnJvciIsaSh3aW5kb3cpKX0sITApfSgpfSx7MToxLDI6Mn1dfSx7fSxbNF0pOw=="));</script>

<script>
  window.__o = {"channel":"science","content_type":"article","v_buy_i":null,"h_pub_buy":null,"v_cur_i":0,"v_max_i":0,"events":"","top_channel":"science","content_source_type":"Internal","content_source_name":"Internal","author_name":"Andrew Freedman","age":"169","pub_day":28,"pub_month":8,"pub_year":2017,"pub_date":"08/28/2017","sourced_from":"Internal","isPostView":true,"post_lead_type":"Alt Image Lead","topics":"activism,climate,climate-environment,flood,houston-flood,hurricane-harvey,hurricanes,science,tropical-storm-harvey","campaign":null,"display_mode":null,"viral_video_type":null,"standalone_video_show":null,"b_flag":true,"cms_author_name":null,"cms_author_geo":"us","cms_author_team":"Science","bp_id":55298,"shoppable":null,"voice":"Mashable","level_of_effort":"One day","content_format":"Article","video_platform_target":null,"classification_options":false,"key_topics":["Activism","Climate & Environment"],"job_function":"Explainer/Analysis"};
  window._gaq = window._gaq || [];
  window._gaq.push(['_setAccount', 'UA-92124-1']);
  window._geo = "US";
  window.__domStart = (new Date().getTime())
  window.optimizely = [["setCookieExpiration", 730]];
  !function(){var n;return n={},window.getExperimentValue=function(e,t,u){var r,i;return i=n[e]&&null!=n[e][t]&&n[e][t]||u,null!=(r="function"==typeof i?i():void 0)?r:i},window.setExperimentValue=function(e,t,u){return n[e]||(n[e]={}),n[e][t]=u}}();
  var adonis = adonis || {};
  adonis.conditionalAdRendering = true;
  adonis.transport = 'https://www.adiode.com/http';
  adonis.scriptResources = ['c.amazon-adsystem.com/aax2/', 'js-sec.indexww.com/ht/'];
</script>
<title>Tropical Storm Harvey serves as a warning on infrastructure, climate</title>
<link href="https://a.amz.mshcdn.com/assets/app-822eda06a07be6f8c794ecd1dab77cbd5a5048048719833ef079c1ce84a1fcf6.css" media="screen" rel="stylesheet" />
<link href="https://a.amz.mshcdn.com/assets/posts-0deb2e7172af65dffb6ac7a0cb4b6151fe8f819f54dfe539169d13fb9a0d64d2.css" media="all" rel="stylesheet" />
<link href='https://plus.google.com/113493854651753327245' rel='publisher'>
<link href='http://feeds.mashable.com/Mashable' rel='alternate' title='Mashable' type='application/rss+xml'>
<link href='https://mashable.com/apple-touch-icon-57x57.png?v=m2Pmw8zNwl' rel='apple-touch-icon' sizes='57x57'>
<link href='https://mashable.com/apple-touch-icon-60x60.png?v=m2Pmw8zNwl' rel='apple-touch-icon' sizes='60x60'>
<link href='https://mashable.com/apple-touch-icon-72x72.png?v=m2Pmw8zNwl' rel='apple-touch-icon' sizes='72x72'>
<link href='https://mashable.com/apple-touch-icon-76x76.png?v=m2Pmw8zNwl' rel='apple-touch-icon' sizes='76x76'>
<link href='https://mashable.com/apple-touch-icon-114x114.png?v=m2Pmw8zNwl' rel='apple-touch-icon' sizes='114x114'>
<link href='https://mashable.com/apple-touch-icon-120x120.png?v=m2Pmw8zNwl' rel='apple-touch-icon' sizes='120x120'>
<link href='https://mashable.com/apple-touch-icon-144x144.png?v=m2Pmw8zNwl' rel='apple-touch-icon' sizes='144x144'>
<link href='https://mashable.com/apple-touch-icon-152x152.png?v=m2Pmw8zNwl' rel='apple-touch-icon' sizes='152x152'>
<link href='https://mashable.com/apple-touch-icon-180x180.png?v=m2Pmw8zNwl' rel='apple-touch-icon' sizes='180x180'>
<link href='https://mashable.com/favicon-32x32.png?v=m2Pmw8zNwl' rel='icon' sizes='32x32' type='image/png'>
<link href='https://mashable.com/android-chrome-192x192.png?v=m2Pmw8zNwl' rel='icon' sizes='192x192' type='image/png'>
<link href='https://mashable.com/favicon-96x96.png?v=m2Pmw8zNwl' rel='icon' sizes='96x96' type='image/png'>
<link href='https://mashable.com/favicon-16x16.png?v=m2Pmw8zNwl' rel='icon' sizes='16x16' type='image/png'>
<link href='https://mashable.com/manifest.json?v=m2Pmw8zNwl' rel='manifest'>
<link href='https://mashable.com/favicon.ico?v=m2Pmw8zNwl' rel='shortcut icon'>
<link href='https://a.amz.mshcdn.com/assets/mashable.touchicon-85568436777b97f88ef7182140a53fd1a4f7cec7c0fa5568a3783fcdb0d08eb5.png' rel='apple-touch-icon-precomposed'>

<meta content='no' name='apple-mobile-web-app-capable'>
<meta content='MASHABLEV1' name='zd_ptax_version'>
<meta content='activism,climate,climate-environment,flood,houston-flood,hurricane-harvey,hurricanes,science,tropical-storm-harvey,activism,climate &amp; environment' name='zd_ptax'>
<meta content='width=device-width, initial-scale=1.0' name='viewport'>
<meta content='#da532c' name='msapplication-TileColor'>
<meta content='/mstile-144x144.png?v=m2Pmw8zNwl' name='msapplication-TileImage'>
<meta content='#ffffff' name='theme-color'>
<meta content='mid:12105681' name='linkedin:owner'>
<meta content='122071082108' property='fb:app_id'>
<meta content='18807449704' property='fb:page_id'>
<meta content='nYmtX7H2sSCkK8gHpQGxr7Es2526DgUaqb6PGYSX' name='readability-verification'>
<meta content='YfjJNAwfOEsk9gCpEyro9wrDs3yzGlkO1w2tJ7GdxDo' name='google-site-verification'>

<link data-page-subject="true" href="https://mashable.com/2017/08/28/harvey-houston-flood-infrastructure-climate-change-concerns/" rel="canonical" /><link data-page-subject="true" href="https://i.amz.mshcdn.com/fjXvLUTuEpZEvy7kSFgrcC8j71g=/1200x627/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" rel="image_src" /><meta content="https://mashable.com/2017/08/28/harvey-houston-flood-infrastructure-climate-change-concerns/" data-page-subject="true" property="og:url" /><meta content="Tropical Storm Harvey raises red flags on infrastructure, climate planning" data-page-subject="true" property="og:title" /><meta content="article" data-page-subject="true" property="og:type" /><meta content="Mashable" data-page-subject="true" property="og:site_name" /><meta content="Rainfall like this would overwhelm any city." data-page-subject="true" property="og:description" /><meta content="https://i.amz.mshcdn.com/_aRyMIuMK60o3FMKXud9-Mtm_Rw=/1200x630/2017%2F08%2F28%2Fe4%2F1dbf4608e37640d4889b6e6570ccf225.7eee3.jpg" data-page-subject="true" property="og:image" /><meta content="2017-08-28T20:35:42Z" data-page-subject="true" property="og:article:published_time" /><meta content="2017-08-29T15:30:51Z" data-page-subject="true" property="og:article:modified_time" /><meta content="https://www.facebook.com/mashable" data-page-subject="true" property="og:article:publisher" /><meta content="Such extreme rainfall would be enough to overwhelm any city, but Houston is well-known for its vulnerability. " data-page-subject="true" name="description" /><meta content="climate, global-warming, extreme-weather, climate-change, flood, hurricanes, tropical-storm-harvey, hurricane-harvey, houston-flood, science" data-page-subject="true" name="keywords" /><meta content="Tropical Storm Harvey raises red flags on infrastructure, climate planning" data-page-subject="true" name="twitter:title" /><meta content="Such extreme rainfall would be enough to overwhelm any city, but Houston is well-known for its vulnerability. " data-page-subject="true" name="twitter:description" /><meta content="https://i.amz.mshcdn.com/8FaNIjMc1ErCCxrhf7FlrO9vC-g=/640x360/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" data-page-subject="true" name="twitter:image" /><meta content="@mashable" data-page-subject="true" name="twitter:site" /><meta content="mashable" data-page-subject="true" name="twitter:via" /><meta content="https://mashable.com/2017/08/28/harvey-houston-flood-infrastructure-climate-change-concerns/" data-page-subject="true" name="twitter:url" /><meta content="@mashable" data-page-subject="true" name="twitter:creator" /><meta content="photo" data-page-subject="true" name="twitter:card" /><meta content="640" data-page-subject="true" name="twitter:image:width" /><meta content="360" data-page-subject="true" name="twitter:image:height" /><meta content="2017-08-28 20:35:42 UTC" data-page-subject="true" name="date" /><meta content="Andrew Freedman" data-page-subject="true" name="sailthru.author" /><meta content="https://i.amz.mshcdn.com/HThacQxPh7kEdR5iVK8yz79F8M0=/115x115/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" data-page-subject="true" name="sailthru.image.thumb" /><meta content="https://i.amz.mshcdn.com/DXzL24FgAhsBk7yZI5TZHKHYf_g=/950x534/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" data-page-subject="true" name="sailthru.image.full" /><meta content="https://i.amz.mshcdn.com/OHtVUzPUDUKsZ6va8rqpNTYnwt0=/600x338/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" data-page-subject="true" name="sailthru.lead_image" /><meta content="https://i.amz.mshcdn.com/rG7aX3yZt-ZIa4mNxd9oVDiX6dk=/288x162/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" data-page-subject="true" name="sailthru.secondary_image" /><meta content="false" data-page-subject="true" name="sailthru.exclude_homepage" /><meta content="false" data-page-subject="true" name="sailthru.exclude_uk" /><meta content="false" data-page-subject="true" name="sailthru.exclude_australia" /><meta content="false" data-page-subject="true" name="sailthru.exclude_india" /><meta content="Andrew Freedman" data-page-subject="true" name="author" /><meta content="http://on.mash.to/2wE28pm" data-page-subject="true" name="short_url" /><script type="application/ld+json">{"@context":"http://schema.org","headline":"Tropical Storm Harvey serves as a warning on infrastructure, climate","url":"https://mashable.com/2017/08/28/harvey-houston-flood-infrastructure-climate-change-concerns/","keywords":["climate","global-warming","extreme-weather","climate-change","flood","hurricanes","tropical-storm-harvey","hurricane-harvey","houston-flood","science"],"image":{"@type":"ImageObject","url":"https://https://i.amz.mshcdn.com/CDhVV5P0rMUFJtwtUGMVPAP5epw=/1200x627/2017%2F08%2F28%2Fb3%2Fdda81768ea28454985e0740aefe90fc8.7eee3.jpg","width":"1200","height":"627"},"@type":"Article","mainEntityOfPage":"True","publisher":{"@type":"Organization","name":"Mashable","url":"https://mashable.com","logo":{"@type":"ImageObject","url":"https://a.amz.mshcdn.com/assets/mashable-publisher-logo-d1800cc5b71606b40182307b4f7158b5dbb17dee6b9c4b612a40c0be40c60bbc.png","width":"357","height":"60"}},"dateCreated":"2017-08-28T20:35:42.864Z","datePublished":"2017-08-28T20:35:42.864Z","author":"Andrew Freedman","creator":"Andrew Freedman","dateModified":"2017-08-29T15:30:51.571Z","articleSection":"science"}</script><meta content="{&quot;page&quot;:1,&quot;omnitureData&quot;:{&quot;channel&quot;:&quot;science&quot;,&quot;content_type&quot;:&quot;article&quot;,&quot;v_buy_i&quot;:null,&quot;h_pub_buy&quot;:null,&quot;v_cur_i&quot;:0,&quot;v_max_i&quot;:0,&quot;events&quot;:&quot;&quot;,&quot;top_channel&quot;:&quot;science&quot;,&quot;content_source_type&quot;:&quot;Internal&quot;,&quot;content_source_name&quot;:&quot;Internal&quot;,&quot;author_name&quot;:&quot;Andrew Freedman&quot;,&quot;age&quot;:&quot;169&quot;,&quot;pub_day&quot;:28,&quot;pub_month&quot;:8,&quot;pub_year&quot;:2017,&quot;pub_date&quot;:&quot;08/28/2017&quot;,&quot;sourced_from&quot;:&quot;Internal&quot;,&quot;isPostView&quot;:true,&quot;post_lead_type&quot;:&quot;Alt Image Lead&quot;,&quot;topics&quot;:&quot;activism,climate,climate-environment,flood,houston-flood,hurricane-harvey,hurricanes,science,tropical-storm-harvey&quot;,&quot;campaign&quot;:null,&quot;display_mode&quot;:null,&quot;viral_video_type&quot;:null,&quot;standalone_video_show&quot;:null,&quot;b_flag&quot;:true,&quot;cms_author_name&quot;:null,&quot;cms_author_geo&quot;:&quot;us&quot;,&quot;cms_author_team&quot;:&quot;Science&quot;,&quot;bp_id&quot;:55298,&quot;shoppable&quot;:null,&quot;voice&quot;:&quot;Mashable&quot;,&quot;level_of_effort&quot;:&quot;One day&quot;,&quot;content_format&quot;:&quot;Article&quot;,&quot;video_platform_target&quot;:null,&quot;classification_options&quot;:false,&quot;key_topics&quot;:[&quot;Activism&quot;,&quot;Climate \u0026 Environment&quot;],&quot;job_function&quot;:&quot;Explainer/Analysis&quot;}}" name="parsely-metadata" /><script type="application/javascript">window.digitalData={"page":{"pageInfo":{"title":"Tropical Storm Harvey raises red flags on infrastructure, climate planning","slug":"harvey-houston-flood-infrastructure-climate-change-concerns","lead_type":"Alt Image Lead","channel":"science","supported":false,"sponsored":false,"sensitive":false,"tags":["climate","global-warming","extreme-weather","climate-change","flood","hurricanes","tropical-storm-harvey","hurricane-harvey","houston-flood","science","activism","climate-environment"],"video_show":"science","video_show_season":null,"video_show_episode":null,"voice":"Mashable","level_of_effort":"One day","content_format":"Article","video_platform_target":null,"key_topics":["Activism","Climate \u0026 Environment"],"job_function":"Explainer/Analysis"}}}</script><meta content="500945955060" property="fb:pages" /><meta content="783687755045531" property="fb:pages" /><meta content="1588247311398272" property="fb:pages" /><meta content="509566152532329" property="fb:pages" /><meta content="1598012253812197" property="fb:pages" /><meta content="335422937918" property="fb:pages" /><meta content="340410803690" property="fb:pages" /><meta content="10150118108915437" property="fb:pages" /><meta content="1705722619660593" property="fb:pages" /><meta content="1540370916252268" property="fb:pages" /><meta content="597623103592762" property="fb:pages" /><meta content="320998960486" property="fb:pages" /><meta content="1890822731197902" property="fb:pages" /><meta content="1612601102326559" property="fb:pages" /><meta content="1433510483565957" property="fb:pages" /><meta content="139498499419544" property="fb:pages" /><meta content="282071091819646" property="fb:pages" /><meta content="18807449704" property="fb:pages" /><meta content="315957273077" property="fb:pages" /><meta content="108273123135" property="fb:pages" /><meta content="356739731067762" property="fb:pages" />

<script src='https://cdn.optimizely.com/js/58011369.js'></script>
<script src='https://content.jwplatform.com/libraries/hrrl7x1B.js'></script>
<script debug="false" src="https://a.amz.mshcdn.com/assets/advertisement-05dc9dd632adb4df020fc426e931cbf5c678486fac51ea65ff563a9f577dc7bc.js"></script>
<script debug="false" src="https://a.amz.mshcdn.com/assets/templates-58e1af6a8c68fbde0cc775d6c9a46d91d5746e04e51651e7c81052bc9c4ebecb.js"></script>
<script src="https://a.amz.mshcdn.com/assets/app-ede328c2b8e42c3c267ce2a74dffec3d106efe00b46f19aaf5834301b09d8425.js"></script>

<link href='https://mashable.com/2017/08/28/harvey-houston-flood-infrastructure-climate-change-concerns.amp' rel='amphtml'>

</head>
<body class='body_posts body_show' data-campaign='none' data-caninterrupt data-jsid='posts/show' data-postid='bp55298' data-sec0='science' data-sec1='' data-sec2='posts' data-topic='climate,science' viewport='fixed'>
<script src='https://cdn.static.zdbb.net/js/z0WVjCBSEeGLoxIxOQVEwQ.min.js' type='text/javascript'></script>
<noscript>
<img alt='' height='1' src='https://zdbb.net/l/z0WVjCBSEeGLoxIxOQVEwQ' style='display: none;' width='1'>
</noscript>

<script>/* wrapper-7.2.1 */ eval(atob("IWZ1bmN0aW9uIHQoZSxuLHIpe2Z1bmN0aW9uIG8oYSxjKXtpZighblthXSl7aWYoIWVbYV0pe3ZhciBkPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFjJiZkKXJldHVybiBkKGEsITApO2lmKGkpcmV0dXJuIGkoYSwhMCk7dmFyIHU9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrYSsiJyIpO3Rocm93IHUuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsdX12YXIgcz1uW2FdPXtleHBvcnRzOnt9fTtlW2FdWzBdLmNhbGwocy5leHBvcnRzLGZ1bmN0aW9uKHQpe3ZhciBuPWVbYV1bMV1bdF07cmV0dXJuIG8obnx8dCl9LHMscy5leHBvcnRzLHQsZSxuLHIpfXJldHVybiBuW2FdLmV4cG9ydHN9Zm9yKHZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGE9MDthPHIubGVuZ3RoO2ErKylvKHJbYV0pO3JldHVybiBvfSh7MTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjshZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7biYmY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSxhcmd1bWVudHMpfWZ1bmN0aW9uIGUodCxuLHIsbyxpLGEsYyxkLHUscyxmKXt2YXIgbD1mdW5jdGlvbigpeyEwPT09dCYmY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSxhcmd1bWVudHMpfSxnPVsnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPignLGUudG9TdHJpbmcoKSwiKSgiLFt0LnRvU3RyaW5nKCksbi50b1N0cmluZygpLHIudG9TdHJpbmcoKSxvLnRvU3RyaW5nKCksaS50b1N0cmluZygpLGEudG9TdHJpbmcoKSxjLnRvU3RyaW5nKCksZC50b1N0cmluZygpLHUudG9TdHJpbmcoKSxzLnRvU3RyaW5nKCksIiciK3dpbmRvdy5sb2NhdGlvbi5vcmlnaW4rIiciXS5qb2luKCIsIikudG9TdHJpbmcoKSwiKTwiLCIvc2NyaXB0PiJdLmpvaW4oIiIpO24oKShIVE1MSUZyYW1lRWxlbWVudCwibmFtZSIscigpLG8oZykpLG4oKShIVE1MSUZyYW1lRWxlbWVudCwiY29udGVudERvY3VtZW50IixjKGEoZyksaSgpKSxkKCkpLG4oKShIVE1MSUZyYW1lRWxlbWVudCwiY29udGVudFdpbmRvdyIsdShhKGcpLGkoKSkscygpKSx3aW5kb3cuZmFpbGVkX3VybHM9d2luZG93LmZhaWxlZF91cmxzfHxbXTt2YXIgcD1bInNjcmlwdCIsImltZyJdO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKHQpe2woIndpdGhpbklmcmFtZSBsb2FkIGV2ZW50Iix0LnRhcmdldCksIXQudGFyZ2V0fHwiU0NSSVBUIiE9PXQudGFyZ2V0Lm5vZGVOYW1lJiYiSU1HIiE9PXQudGFyZ2V0Lm5vZGVOYW1lfHwodC50YXJnZXQuX2xvYWRTdGF0ZT0ibG9hZCIpfSwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGZ1bmN0aW9uKHQpe2woIndpdGhpbklmcmFtZSBlcnJvciBldmVudCIsdC50YXJnZXQpLCF0LnRhcmdldHx8IlNDUklQVCIhPT10LnRhcmdldC5ub2RlTmFtZSYmIklNRyIhPT10LnRhcmdldC5ub2RlTmFtZXx8KHQudGFyZ2V0Ll9sb2FkU3RhdGU9ImVycm9yIix3aW5kb3cuZmFpbGVkX3VybHM9d2luZG93LmZhaWxlZF91cmxzfHxbXSx3aW5kb3cuZmFpbGVkX3VybHMucHVzaCh0LnRhcmdldC5zcmMpKX0sITApLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbih0KXtpZih0Lm9yaWdpbj09PWYpe3ZhciBlPXQuZGF0YS5ldmVudE5hbWU7aWYodm9pZCAwIT09ZSlzd2l0Y2goZSl7Y2FzZSJmcmFtZUxvYWRlZCI6Y2FzZSJidWJibGV1cCI6d2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSh0LmRhdGEsZil9aWYodm9pZCAwIT09dC5kYXRhLmlmcmFtZUlkKXtsKCJtZXNzYWdlIHJlY2VpdmVkICIrdC5kYXRhLmlmcmFtZUlkKTt2YXIgbj10LmRhdGEscj1mdW5jdGlvbiB0KGUpe3ZhciBuPXtvcmlnaW5JZnJhbWVJZDplLmlmcmFtZUlkLHJlYWR5U3RhdGU6ZG9jdW1lbnQucmVhZHlTdGF0ZSxyZXF1ZXN0RGF0YTpbXSxjc3NEYXRhOltdfSxyPWUuc3JjU3Vic3RyaW5ncztpZih2b2lkIDAhPT1yKWZvcih2YXIgbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHAuam9pbigiLCIpKSxpPTA7aTxvLmxlbmd0aDtpKyspe3ZhciBhPW9baV07aWYoYS5zcmMpe3ZhciBjPXIuc29tZShmdW5jdGlvbih0KXtyZXR1cm4tMSE9PWEuc3JjLmluZGV4T2YodCl9KTtpZihjKXtpZih2b2lkIDA9PT1hLl9sb2FkU3RhdGUpcmV0dXJuIGwoIldhaXQgZm9yIGV2ZW50IGZyb20gIithLnNyYyksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe3QoZSl9KSx2b2lkIGEuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGZ1bmN0aW9uKCl7dChlKX0pO24ucmVxdWVzdERhdGEucHVzaCh7dHlwZTphLm5vZGVOYW1lLHNyYzphLnNyYyxzdGF0ZTphLl9sb2FkU3RhdGV9KX19fXZhciBkPWUuZGlzcGxheVR5cGVzLHU9ZS5jc3NBdHRyaWJ1dGVzO3ZvaWQgMCE9PWQmJnZvaWQgMCE9PXUmJihvPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZC5qb2luKCIsIikpLEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobyxmdW5jdGlvbih0KXt2YXIgZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxyPXt9O3UuZm9yRWFjaChmdW5jdGlvbih0KXtyW3RdPWUuZ2V0UHJvcGVydHlWYWx1ZSh0KX0pLG4uY3NzRGF0YS5wdXNoKHt0eXBlOnQubm9kZU5hbWUsaWQ6dC5pZCxjbGFzczp0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKSxjc3NBdHRyaWJ1dGVzOnJ9KX0pKSxsKCJzZW5kIHJlc3BvbnNlICIrZS5pZnJhbWVJZCksbi5mYWlsZWRfdXJscz13aW5kb3cuZmFpbGVkX3VybHMscGFyZW50LnBvc3RNZXNzYWdlKG4sZil9OyFmdW5jdGlvbih0KXsibG9hZGluZyIhPT1kb2N1bWVudC5yZWFkeVN0YXRlP3QoKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIix0KX0oZnVuY3Rpb24oKXtyKG4pfSl9fX0pfXdpbmRvdy5hZG9uaXNIYXNoPXdpbmRvdy5hZG9uaXNIYXNofHx3aW5kb3cubG9jYXRpb24uaGFzaHx8IiI7dmFyIG49LTEhPT13aW5kb3cuYWRvbmlzSGFzaC5pbmRleE9mKCJhZG9uaXMtbG9nZ2luZyIpLHI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlLG4scil7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LnByb3RvdHlwZSxlKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsZSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4oby5nZXQsdGhpcyxhcmd1bWVudHMpfSxzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcihvLnNldCx0aGlzLGFyZ3VtZW50cyl9LGVudW1lcmFibGU6ITB9KX19LG89ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmFwcGx5KGUsbil9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuLHIsbyl7dHJ5e3ZhciBpPW9bMF07aWYoLTEhPT1pLmluZGV4T2YoImh0bWwiKSl7dmFyIGE9aS5zcGxpdCgiOyIpLGM9YVsxXSxkPXBhcnNlSW50KGMpK2UubGVuZ3RoO2FbMV09ZC50b1N0cmluZygpLGk9YS5qb2luKCI7IiksaT1pLnJlcGxhY2UoIjxoZWFkPiIsIjxoZWFkPiIrZSksb1swXT1pfX1jYXRjaChlKXt0KGUpfXJldHVybiBuLmFwcGx5KHIsbyl9fSxhPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPSExO2lmKHQuc3JjJiYwIT09dC5zcmMuaW5kZXhPZigiamF2YXNjcmlwdDoiKSYmMCE9PXQuc3JjLmluZGV4T2YoImFib3V0OmJsYW5rIikpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtuLmhyZWY9dC5zcmM7bi5ob3N0PT09d2luZG93LmxvY2F0aW9uLmhvc3QmJihlPSEwKX1lbHNlIGU9ITA7cmV0dXJuIGV9fSxjPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBvPXIud3JpdGU7ci53cml0ZT1mdW5jdGlvbihuKXt0cnl7aWYoIXRoaXMuX2luamVjdGVkKXt2YXIgcj0vPCg/IShib2R5fGhlYWR8aHRtbHxkb2N0eXBlKSkoW14+IVwvXHNdKykvaTtyLnRlc3QobikmJihuPW4ucmVwbGFjZShyLGZ1bmN0aW9uKHQpe3JldHVybiBlK3R9KSksdGhpcy5faW5qZWN0ZWQ9ITB9fWNhdGNoKGUpe3QoZSl9cmV0dXJuIG8uY2FsbCh0aGlzLG4pfX19LGQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZnVuY3Rpb24ocixvLGkpe3ZhciBhPXIuYXBwbHkobyxpKTt0cnl7aWYoby5jb250ZW50RG9jdW1lbnREZWNvcmF0ZWQpcmV0dXJuIGE7by5jb250ZW50RG9jdW1lbnREZWNvcmF0ZWQ9ITAsbihvKSYmZShvLGEpfWNhdGNoKGUpe3QoZSl9cmV0dXJuIGF9fSx1PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC5hcHBseShlLG4pfX0scz1mdW5jdGlvbihlLG4pe3JldHVybiBmdW5jdGlvbihyLG8saSl7dmFyIGE9ci5hcHBseShvLGkpO3RyeXtpZihvLmNvbnRlbnRXaW5kb3dEZWNvcmF0ZWQpcmV0dXJuIGE7aWYoby5jb250ZW50V2luZG93RGVjb3JhdGVkPSEwLG4obykpdHJ5e2UobyxhLmRvY3VtZW50KX1jYXRjaChlKXt0KCJUaGUgZm9sbG93aW5nIGZyYW1lIHdhcyBzdXBwb3NlZCB0byBiZSBmcmllbmRseSBidXQgd2UgZ290IGEgc2VjdXJpdHkgdmlvbGF0aW9uIHdoaWxlIGF0dGVtcHRpbmcgdG8gZGVjb3JhdGU6IixvKX19Y2F0Y2goZSl7dChlKX1yZXR1cm4gYX19LGY9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmFwcGx5KGUsbil9fSxsPVsnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPignLGUudG9TdHJpbmcoKSwiKSgiLFtuLnRvU3RyaW5nKCksci50b1N0cmluZygpLG8udG9TdHJpbmcoKSxpLnRvU3RyaW5nKCksYS50b1N0cmluZygpLGMudG9TdHJpbmcoKSxkLnRvU3RyaW5nKCksdS50b1N0cmluZygpLHMudG9TdHJpbmcoKSxmLnRvU3RyaW5nKCksIiciK3dpbmRvdy5sb2NhdGlvbi5vcmlnaW4rIiciXS5qb2luKCIsIikudG9TdHJpbmcoKSwiKTwiLCIvc2NyaXB0PiJdLmpvaW4oIiIpO3IoKShIVE1MSUZyYW1lRWxlbWVudCwibmFtZSIsbygpLGkobCkpLHIoKShIVE1MSUZyYW1lRWxlbWVudCwiY29udGVudERvY3VtZW50IixkKGMobCksYSgpKSx1KCkpLHIoKShIVE1MSUZyYW1lRWxlbWVudCwiY29udGVudFdpbmRvdyIscyhjKGwpLGEoKSksZigpKX0oKX0se31dfSx7fSxbMV0pOw=="));</script>

<h1 class='semantic'>Mashable</h1>
<header id='flyout-container'></header>
<div id='peek'>
<div id='sticky'>
<div class='cookie-notice'>
<div class='wrap'>
We're using cookies to improve your experience.
<a class="cta" href="/cookie-policy/">Click Here to find out more.</a>
<div class='dismiss'></div>
</div>
</div>


<header id='site-header'><div class='navbar'>
<div class='navbar-inner'><ul class='inline main-menu nav us'>
<li class='menu'><a class='icon-reorder' href='#'></a></li>
<li class='logo us'><a class='brand' data-turbo-target='body-container' href='/'><span>Mashable</span>
<img alt="Header logo.v2.us 6653972cc831bd09732d26dc9da67bd6be0c4d2b28757f116791336ccf2146ec" class="light" src="https://a.amz.mshcdn.com/assets/header_logo.v2.us-6653972cc831bd09732d26dc9da67bd6be0c4d2b28757f116791336ccf2146ec.png" /><img alt="Header logo.v2.us.dark dd0a18bfb3d211980944b582cfc03c24db96b9069f2a3234fb6cf064c72f58aa" class="dark" src="https://a.amz.mshcdn.com/assets/header_logo.v2.us.dark-dd0a18bfb3d211980944b582cfc03c24db96b9069f2a3234fb6cf064c72f58aa.png" /></a>
<div class='geos-content'>
<a class='geo' href='?geo=AS&amp;utm_cid=mash-prod-nav-geo' onclick='$.cookie(&quot;geo&quot;,&quot;AS&quot;)'>Mashable Asia</a>
<a class='geo' href='?geo=AU&amp;utm_cid=mash-prod-nav-geo' onclick='$.cookie(&quot;geo&quot;,&quot;AU&quot;)'>Mashable Australia</a>
<a class='geo' href='http://mashable.france24.com/?ns_campaign=mashablefr&amp;ns_source=mashnav'>Mashable France</a>
<a class='geo' href='?geo=IN&amp;utm_cid=mash-prod-nav-geo' onclick='$.cookie(&quot;geo&quot;,&quot;IN&quot;)'>Mashable India</a>
<a class='geo' href='?geo=GB&amp;utm_cid=mash-prod-nav-geo' onclick='$.cookie(&quot;geo&quot;,&quot;GB&quot;)'>Mashable UK</a>
</div></li>
<li class='submenu collapsable pull-right' id='sign-in'><a href='/login/'><span>Sign in</span></a></li>
<li class='follow submenu follow-menu pull-right'><a class='follow-trigger' href='/follow-mashable/'><span class='fb'></span>
<span class='tw'></span>
<span class='gp'></span></a>
<div class='dropdown-menu pull-right social-badges'>
<ul>
<li class='facebook-container'>
<a class='social-stub social-share facebook like' data-default='1' data-href='https://facebook.com/mashable' data-shares='2.4m'>Like</a>
</li>
<li>
<a class='twitter-follow-button' data-dnt='true' data-show-count='true' data-show-screen-name='false' href='https://twitter.com/mashable'>
Follow
</a>
</li>
<li class='linked-in'>
<script data-counter='right' data-id='200000' type='IN/FollowCompany'></script>
</li>
<li>
<iframe allowtransparency='true' border='0' frameborder='0' height='20' id='tmblrFollowBtn' scrolling='no' width='100'></iframe>
</li>
<li>
<div class='pinterest'>
<a data-pin-do='buttonFollow' href='https://www.pinterest.com/Mashable/'>
Mashable
</a>
</div>
</li>
<li>
<a alt='RSS Feed' class='rss' href='http://feeds.mashable.com/Mashable' title='RSS Feed'></a>
<a alt='Email Subscriptions' class='email' href='/subscriptions/' title='Email Subscriptions'></a>
<div class='more'>
<a href="/follow-mashable">see more&nbsp;&nbsp;&gt;</a>
</div>
</li>
</ul>
</div></li>
<li class='nav-search submenu pull-right'><a class='search-trigger' href='/search/'>Search</a>
<div class='dropdown-content'>
<div class='page-container'>
<div class='header-search-form'>
<form accept-charset="UTF-8" action="/search/" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div><div class='ie-search-wrapper'><input autocomplete="off" class="header-search" id="q" name="q" type="text" value="" /></div>
<input class="btn btn-primary header-search-submit" name="commit" type="submit" value="Search" />
</form><div class='header-search-results'></div>
</div>
</div>
</div></li>
<li class='channel' data-channel='Video' data-tags='mashable-video,scamalot,plugged-in,tl-dw,wtf-history'><a href="/videos/?utm_cid=mash-prod-nav-ch">Video</a></li>
<li class='channel' data-channel='Entertainment' data-tags='film,gaming,music,sports,television,mashreads,esports'><a href="/entertainment/?utm_cid=mash-prod-nav-ch">Entertainment</a></li>
<li class='channel' data-channel='Culture' data-tags='social-media,lifestyle,family-parenting,fashion,home,travel,travel-leisure,work-and-play,food,pics,memes,comics,conversations,videos-watercooler,how-to,facebook,twitter,youtube,google-plus'><a href="/culture/?utm_cid=mash-prod-nav-ch">Culture</a></li>
<li class='channel' data-channel='Tech' data-tags='apps-software,dev-design,gadgets,mobile,cars'><a href="/tech/?utm_cid=mash-prod-nav-ch">Tech</a></li>
<li class='channel' data-channel='Science' data-tags='space,health-fitness,climate'><a href="/science/?utm_cid=mash-prod-nav-ch">Science</a></li>
<li class='channel' data-channel='Business' data-tags='advertising,marketing,media,small-business,startups,jobs'><a href="/business/?utm_cid=mash-prod-nav-ch">Business</a></li>
<li class='channel' data-channel='Social Good' data-tags=''><a href="/social-good/?utm_cid=mash-prod-nav-ch">Social Good</a></li>
<li class='submenu more'><a href='#'><!-- %span=t "header.nav.more" -->
<span>More</span></a>
<div class='submenu-content'>
<div class='page-container'>
<ul class='columns'><li><ul class='column-list'><li class='header'>Channels</li>
<li><a href="/videos/">Video</a></li><li><a href="/entertainment/">Entertainment</a></li><li><a href="/culture/">Culture</a></li><li><a href="/tech/">Tech</a></li><li><a href="/science/">Science</a></li><li><a href="/business/">Business</a></li><li><a href="/social-good/">Social Good</a></li></ul></li><li><ul class='column-list'>
<li class='header'>Company</li><li><a href="/about/">About Us</a></li><li><a href="http://www.wrightsmedia.com/sites/mashable/">Licensing &amp; Reprints</a></li><li><a href="/2015/">Archive</a></li><li><a href="/careers/">Mashable Careers</a></li></ul></li><li><ul class='column-list'>
<li class='header'>Contact</li><li><a href="/contact-us/">Contact Us</a></li><li><a href="/submit/">Submit News</a></li></ul></li><li><ul class='column-list'>
<li class='header'>Advertise</li><li><a href="/advertise/">Advertise</a></li></ul></li><li><ul class='column-list'>
<li class='header'>Legal</li><li><a href="/privacy/">Privacy Policy</a></li><li><a href="/terms/">Terms of Use</a></li><li><a href="/cookie-policy/">Cookie Policy</a></li></ul></li><li><ul class='column-list'>
<li class='header'>Apps</li><li><a href="https://itunes.apple.com/us/app/mashable/id910775754?mt=8">iPhone / iPad</a></li><li><a href="https://play.google.com/store/apps/details?id=com.mashable.android.phoenix">Android</a></li></ul></li><li><ul class='column-list'>
<li class='header'>Resources</li><li><a href="/follow-mashable/">Subscriptions</a></li></ul></li><li><ul class='column-list'>
<li class='header'>Sites</li><li><a href="http://jobs.mashable.com">Job Board</a></li><li><a href="/sgs/">Social Good Summit</a></li></ul></li></ul>
</div>
</div></li>
</ul></div>
</div>
<div id='sticky-slot'></div></header>
</div>
<div id='scrollable'><div class='loader'></div>
<div id='srvSlot' style='position: absolute'><div class="ad_container ad-slot" data-overrides="{&quot;targeting&quot;:{&quot;tile&quot;:5,&quot;adnum&quot;:5,&quot;sec0&quot;:&quot;science&quot;,&quot;sec1&quot;:&quot;&quot;,&quot;sec2&quot;:&quot;posts&quot;,&quot;topic&quot;:&quot;climate,science&quot;,&quot;postid&quot;:&quot;bp55298&quot;,&quot;posts&quot;:&quot;none&quot;}}" data-type="survey"></div></div>
<header class='box970' id='lead-banner'>
<div class='page-container'><center class='visible-desktop'>
<div class="ad_container ad-slot" data-overrides="{&quot;targeting&quot;:{&quot;tile&quot;:6,&quot;adnum&quot;:1,&quot;sec0&quot;:&quot;science&quot;,&quot;sec1&quot;:&quot;&quot;,&quot;sec2&quot;:&quot;posts&quot;,&quot;topic&quot;:&quot;climate,science&quot;,&quot;postid&quot;:&quot;bp55298&quot;,&quot;posts&quot;:&quot;none&quot;}}" data-type="desktop_banner"></div>
</center></div>
</header><div class='posts show' id='body-container'><div id='main'>
<div class='page-container'>

<div class='body'><hgroup class='channel page-header post-head' data-channel='science' data-section='sec0=&amp;sec1=index&amp;sec2='>
<h2>Science</h2>
<div class='follow-channel'>
<div class='follow-buttons'>
<a class='social-stub social-share facebook like' data-default='1' data-href='https://facebook.com/mashable' data-shares='1.7m'>Like</a>
<a class='social-stub social-share twitter follow' data-shares='3.7m' href='https://twitter.com/intent/follow?region=follow_link&amp;screen_name=mashable&amp;tw_p=followbutton&amp;variant=2.0' target='_blank'>Follow</a>
<a class='social-stub social-share google_plus follow' data-shares='7.1m' href='https://plus.google.com/+Mashable/auto' target='_blank'>Follow</a>
</div>
</div>
</hgroup>

<div class='flex-box article-container'>
<div class='box-cell'>
<div class='above_960 adsense outside_post'>
<script>
  if(typeof(google_num_ads) != "undefined") google_skip = google_num_ads;
  google_ad_client = "pub-9942038924324175";
  if($('.adsense').last().filter('.above_960').length > 0 && $(document).width() < 960){
    var hideAd = true;
  }else{
    var hideAd = false;
  }
</script>
<script>
  if(!hideAd) google_ad_slot = "3991492827";
</script>
<script>
  if(!hideAd) google_ad_width = 728;
</script>
<script>
  if(!hideAd) google_ad_height = 15;
</script>
<script src='https://pagead2.googlesyndication.com/pagead/show_ads.js'></script>
</div>

<div class='post-content'>
<script>
  window.variationsData = [{"id":87488,"user_id":24,"title":"Tropical Storm Harvey raises red flags on Houston's infrastructure, climate planning","active":true,"published":true},{"id":87489,"user_id":24,"title":"Harvey raises red flags on infrastructure, climate planning","active":true,"published":true},{"id":87490,"user_id":24,"title":"Harvey shows why Trump's recent infrastructure order is so harmful","active":true,"published":true}]
</script>
<div class='post-slider'><article class='blueprint full post story' data-bp-id='55298' data-campaign='none' data-channel='science' data-id='59a47e7af11b2c2d2e0004a2' data-subchannels='' data-topic='climate,science' data-velocity='0'>
<header class='article-header'>
<h1 class='title' href='https://mashable.com/2017/08/28/harvey-houston-flood-infrastructure-climate-change-concerns/'>Tropical Storm Harvey raises red flags on infrastructure, climate planning</h1>
<script>
  window.variationsTitleElem = 'article header h1.title';
</script>
<aside class='shares social'>
<div class='share-buttons'>
<div class='share-button-boxy'><a class="social-stub social-share facebook" data-image="https://i.amz.mshcdn.com/TpRUxOiskrVmEh6LcbgxuBRTlSY=/1200x630/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" data-shares="296" data-title="Tropical Storm Harvey raises red flags on infrastructure, climate planning" data-uid="enU" href="#">Share</a></div>
<div class='share-button-boxy'><a class="social-stub social-share twitter" data-shares="410" data-tweet-text="Tropical Storm Harvey raises red flags on infrastructure, climate planning" data-uid="enU" href="https://twitter.com/intent/tweet?original_referer=https://mashable.com/&amp;source=tweetbutton&amp;text=Tropical+Storm+Harvey+raises+red+flags+on+infrastructure%2C+climate+planning&amp;url=https%3A%2F%2Fmashable.com%2F2017%2F08%2F28%2Fharvey-houston-flood-infrastructure-climate-change-concerns%2F&amp;via=mashable">Tweet</a></div>
<div class='share-button-boxy'><a class="social-stub social-share google_plus" data-image="https://i.amz.mshcdn.com/TpRUxOiskrVmEh6LcbgxuBRTlSY=/1200x630/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" data-shares="0" data-title="Tropical Storm Harvey raises red flags on infrastructure, climate planning" data-uid="enU" href="#">Share</a></div>
<div class='share-button-boxy'><a class="social-stub social-share linked_in" data-image="https://i.amz.mshcdn.com/TpRUxOiskrVmEh6LcbgxuBRTlSY=/1200x630/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" data-shares="8" data-title="Tropical Storm Harvey raises red flags on infrastructure, climate planning" data-uid="enU" href="#"></a></div>
<div class='share-button-boxy'><a class="social-stub social-share stumble_upon" data-image="https://i.amz.mshcdn.com/TpRUxOiskrVmEh6LcbgxuBRTlSY=/1200x630/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" data-shares="0" data-title="Tropical Storm Harvey raises red flags on infrastructure, climate planning" data-uid="enU" href="#"></a></div>
<div class='share-button-boxy'><a class="social-stub social-share pinterest" data-image="https://i.amz.mshcdn.com/TpRUxOiskrVmEh6LcbgxuBRTlSY=/1200x630/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg" data-shares="0" data-title="Tropical Storm Harvey raises red flags on infrastructure, climate planning" data-uid="enU" href="#"></a></div>
</div>
<div class='velocity-graph tooltip-trigger' title='The Mashable Velocity graph shows how quickly people are sharing this article on the social Web.'>
<canvas class='velocity'></canvas>
<div class='caption'>What&#39;s This?</div>
</div>
</aside>

<div class='above_960 adsense'>
<script>
  if(typeof(google_num_ads) != "undefined") google_skip = google_num_ads;
  google_ad_client = "pub-9942038924324175";
  if($('.adsense').last().filter('.above_960').length > 0 && $(document).width() < 960){
    var hideAd = true;
  }else{
    var hideAd = false;
  }
</script>
<script>
  if(!hideAd) google_ad_channel = "9077376301";
</script>
<script>
  if(!hideAd) google_ad_output = "js";
</script>
<script>
  if(!hideAd) google_max_num_ads = "3";
</script>
<script>
  if(!hideAd) google_ad_type = "text";
</script>
<script>
  if(!hideAd) google_feedback = "on";
</script>
<script src='https://pagead2.googlesyndication.com/pagead/show_ads.js'></script>
</div>

<figure class='article-image'><img alt="Joe Garcia, right, rescued from his flooded home as floodwaters from Tropical Storm Harvey rise, Aug. 28, 2017." class="microcontent" data-fragment="lead-image" data-image="https://i.amz.mshcdn.com/wmYFO8bFg7vDDaA996kHhZt_1pM=/950x534/filters:quality(90)/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fcard%2Fimage%2F575863%2Fdda81768-ea28-4549-85e0-740aefe90fc8.jpg" data-micro="1" data-url="null" src="https://i.amz.mshcdn.com/wmYFO8bFg7vDDaA996kHhZt_1pM=/950x534/filters:quality(90)/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fcard%2Fimage%2F575863%2Fdda81768-ea28-4549-85e0-740aefe90fc8.jpg" /><figcaption class="image-caption">Joe Garcia, right, rescued from his flooded home as floodwaters from Tropical Storm Harvey rise, Aug. 28, 2017.</figcaption><div class="image-credit">Image:  AP/REX/Shutterstock</div></figure>
<div class="article-info"><span class="byline "><a href="/author/andrew-freedman/"><img alt="2016%2f09%2f15%2f9c%2fhttpsd2mhye01h4nj2n.cloudfront.netmediazgkymde1lzaz.949e4" class="author_image" src="https://i.amz.mshcdn.com/XFhLfp8uOCvs2nrNQ8TVJR1PG4w=/90x90/2016%2F09%2F15%2F9c%2Fhttpsd2mhye01h4nj2n.cloudfront.netmediaZgkyMDE1LzAz.949e4.jpg" /></a><span class="author_name">By <a href="/author/andrew-freedman/">Andrew Freedman</a></span><time datetime="Mon, 28 Aug 2017 20:35:42 +0000">2017-08-28 20:35:42 UTC</time></span></div>

</header>
<section class='article-content blueprint'>

<p>Tropical Storm Harvey, which has shattered longstanding weather records, would've spelled disaster for just about any city it struck. After all, parts of the Houston area have received half their annual rainfall in just a few days' time. </p>
<p>Yet Houston is not an ordinary city when it comes to flood infrastructure. And this flood has lessons for policymakers at all levels of government — including President Donald Trump — about how to protect Americans in an era of rising disaster risks related to population growth, aging infrastructure, and climate change.</p>
<p>To some extent, the scenes of a major American city underwater seems like Mother Nature's riposte to the Trump administration, which has spent 7 months methodically reversing the climate change policies enacted of President Barack Obama. From the planned pullout of the Paris Climate Agreement to an <a href="https://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;ved=0ahUKEwiz6-f-zfrVAhVj8IMKHUW9CQcQFggmMAA&amp;url=http%3A%2F%2Fmashable.com%2F2017%2F08%2F16%2Fterrible-trump-executive-order-obama-flood-standards-climate%2F&amp;usg=AFQjCNEXWo2eMmZCAanhfyo45DxutGr_zg">executive order pulling back</a> Obama-era protections mandating that infrastructure plans take sea level rise into account, Trump is setting more American cities up for future Harvey-level disasters. </p>
<div class="see-also"><p class="see-also-link">SEE ALSO: <a href="https://mashable.com/2017/08/25/hurricane-harvey-unprecedented-flood-risk/">Hurricane Harvey is the biggest flood threat of any U.S. storm in modern times</a></p></div>
<p>The Houston flood is likely to go down in history as the worst flood in any U.S. city on record. </p>
<p>That's no surprise to experts who have long warned about Houston's vulnerability to tropical storms and hurricanes. The city is low-lying, rapidly growing, and its government is paying little attention to long-term disaster risk management and resilience. </p>
<p>History is replete with examples of severe Houston floods, including Tropical Storm Allison in 2001, which killed 41 and caused $9 billion in damage, as well as flooding in 2016 that shut down the city for days.    </p>
<p>Houston is America's poster child of sprawl — with development policies that give little regard to the need for drainage systems. The city is criss-crossed by a complex network of bayous that are easily overwhelmed by heavy rain, made worse by sudden inflows of water from impervious surfaces like concrete. </p>
<p>“Given that you have a city of 6.5 million people with a floodplain mostly paved over and populated, there’s a risk of this always,” said Adam Sobel, a professor of Earth and environmental sciences at Columbia University. </p>
<figure class="image"><p><img class="" data-credit-name="usgs/NOAA" data-credit-provider="custom type" data-caption="River gauge showing record flooding on Aug. 28, 2017." title="River gauge showing record flooding on Aug. 28, 2017." src="https://i.amz.mshcdn.com/V84aHg9OhTMk-Ene8tymycawn8k=/fit-in/1200x9600/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fcard%2Fimage%2F575866%2F93f5b486-5881-4d7e-a01c-da1f8f8aa6c9.png" alt="River gauge showing record flooding on Aug. 28, 2017." data-fragment="m!4ca2" data-image="https://i.amz.mshcdn.com/tyIOd-x1eFRR6znFrE2vPtAV-yE=/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fcard%2Fimage%2F575866%2F93f5b486-5881-4d7e-a01c-da1f8f8aa6c9.png" data-micro="1"></p>
<figcaption class="image-caption"><p>River gauge showing record flooding on Aug. 28, 2017.</p></figcaption><div class="image-credit"><p>Image:  usgs/NOAA</p></div></figure><p>Katharine Hayhoe, a climate scientist at Texas Tech University, said Houston is a "perfect storm" of flood risk due to population growth, crumbling infrastructure, and development based on the "obsolete assumption" that we have a stable climate. Houston's infrastructure flaws and extraordinary vulnerability to hurricanes were detailed in investigative reporting published last year by <a href="https://projects.propublica.org/houston/" target="_blank"><em>ProPublica</em></a> and the <em>Texas Tribune</em>.</p>
<p>According to that reporting, since 2010, more than 7,000 residential buildings have been built in 100-year floodplains within Harris County, which includes Houston. In addition, about 1,600 nonresidential buildings have been built in these areas. </p>
<p>Research by Texas A&amp;M University, detailed by <em>ProPublica</em> and the <em>Texas Tribune</em>, shows that  almost 30 percent of freshwater wetlands were lost between 1992 and 2010. Such areas help absorb freshwater runoff and reduce the severity of flooding. These wetlands have been replaced with impervious surfaces, such as parking lots and roadways.</p>
<h2>Was this climate change? Sort of</h2>
<p>Sobel, Hayhoe and others say that climate change may have played an important, but backseat role in creating the Houston flood disaster, with development decisions serving to more sharply heighten Houston's vulnerability to flash flooding.</p>
<p>“I think it’s clear that this storm or something close to it could’ve happened without any climate change," Sobel said, adding that climate change may have exacerbated the storm's hazards.</p>
<p>As for global warming's possible role in this event, climate scientists say there are aspects of this storm that are suspicious, and may point toward possible links to global warming. </p>
<p>One is the sheer amount of rain, upwards of 40 inches already, with final rainfall totals of 50 inches not out of the question. If this is reached, it would set an all-time Texas record. </p>
<div class="twitter-wrapper sort-rerender"><div><blockquote class="twitter-tweet">
<p lang="en" dir="ltr">4 day rain total with nearly entire metro area exceeding the 1% annual chance rainfall event (100 yr) and some areas near the 0.1% (1000 yr) <a href="https://t.co/12D9sHxNZD" target="_blank">pic.twitter.com/12D9sHxNZD</a></p>
<p>— UW-Madison SSEC (@UWSSEC) <a href="https://twitter.com/UWSSEC/status/902237246916579328" target="_blank">August 28, 2017</a></p>
</blockquote></div></div>
<p>Another is the sheer tenacity of the storm, which has remained a named tropical storm longer than any landfalling tropical cyclone in Texas' history, according to hurricane statistics expert Philip Klotzbach of Colorado State University.</p>
<p>The science linking Harvey to global warming is tenuous, however, but may be firmed up over time by peer reviewed studies. </p>
<p>Scientists suspect that the storm has lasted longer over land and dumped more rain than it otherwise would have, thanks to the ability of a warmer atmosphere to contain more moisture.</p>
<p>Studies published in the past few years have shown that extreme precipitation events are becoming  more common and more extreme in many parts of the world as the air and oceans continues to warm, and that this trend is expected to continue. </p>
<p>With tropical storms and hurricanes, computer model simulations show that future storms are likely to be wetter, posing even greater inland flood challenges than we're used to now. </p>
<p>There are elements of Harvey that stand out, including the 16.07 inches of rain that fell in Houston on August 27, setting a record for the wettest day in that city's history. The storm has dropped so much rain in southeast Texas that the National Weather Service <a href="https://mashable.com/2017/08/28/harvey-houston-floods-nws-adds-new-color-maps-rainfall/">had to add</a> a new color to its maps. </p>
<p>Scientists are likely to conduct extreme event attribution studies on the heavy rainfall from Hurricane Harvey, Sobel said, and these are likely, though not guaranteed, to show a climate change-related increase in the odds for such extreme rainfall amounts.</p>
<div class="twitter-wrapper sort-rerender"><div><blockquote class="twitter-tweet">
<p lang="en" dir="ltr">Here's a 9hr 200-frame <a href="https://twitter.com/hashtag/radar?src=hash" target="_blank">#radar</a> loop. +20" of rain has already fallen n/ <a href="https://twitter.com/hashtag/Houston?src=hash" target="_blank">#Houston</a>. +10" more expected w/ no end in sight as <a href="https://twitter.com/hashtag/Harvey?src=hash" target="_blank">#Harvey</a> drifts E. <a href="https://t.co/IwkUNzRdaE" target="_blank">pic.twitter.com/IwkUNzRdaE</a></p>
<p>— Philippe Papin (@pppapin) <a href="https://twitter.com/pppapin/status/901762538785865732" target="_blank">August 27, 2017</a></p>
</blockquote></div></div>
<p>“If I had to guess what those studies to show they’ll indicate that rainfall was magnified somewhat by the warmer atmosphere so that whatever the cost of this event… it will be a little higher than it would’ve otherwise been,” Sobel said.</p>
<p>Hayhoe agrees, saying, “Will there be more rain associated with a given hurricane? That is not a hard question to answer: The answer is yes.”</p>
<p>The rainfall totals have reached a historic magnitude in large part because the storm has sat nearly stationary since Saturday, pulling in moisture off the Gulf of Mexico and dumping it on southeast Texas. </p>
<p>Tropical Storm Harvey has been caught between two high pressure areas, a strong one to the west and another to the east. These have left it up to its own devices, as upper level steering currents collapsed. </p>
<p>Sobel said the storm's lack of movement is unlikely to be related to global warming. </p>
<p>“Every event has many causes and the predominant one is always natural. But climate change can amplify the odds,” Sobel said.</p>
<p>Kevin Trenberth, a climate scientist at the National Center for Atmospheric Research (NCAR) in Boulder, Colorado, said the historic rains can be thought of as the result of a combination of a climate change-related increase in water vapor plus a big contribution from natural weather patterns, which can greatly amplify the water vapor present in a given storm. </p>
<figure class="image"><p><img class="" data-credit-name="national academy of sciences" data-credit-provider="custom type" data-caption="Chart showing the level of scientific confidence in attributing types of extreme weather events to climate change." title="Chart showing the level of scientific confidence in attributing types of extreme weather events to climate change." src="https://i.amz.mshcdn.com/iaKc6K9s1s16oBzsaPnl7hM7eTk=/fit-in/1200x9600/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fcard%2Fimage%2F575876%2F4e212b60-7f62-4fd8-bdf0-a912db078cba.png" alt="Chart showing the level of scientific confidence in attributing types of extreme weather events to climate change." data-fragment="m!56cb" data-image="https://i.amz.mshcdn.com/x0yxbSN2EqQ88ktfynRW0PLJQRE=/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fcard%2Fimage%2F575876%2F4e212b60-7f62-4fd8-bdf0-a912db078cba.png" data-micro="1"></p>
<figcaption class="image-caption"><p>Chart showing the level of scientific confidence in attributing types of extreme weather events to climate change.</p></figcaption><div class="image-credit"><p>Image:  national academy of sciences</p></div></figure><p>"The outstanding thing about recent storms has been the prodigious rainfalls: over Louisiana one year ago, and the with [Hurricane] Matthew in October last year," he said in an email. </p>
<p>"In both cases record amounts of total column water vapor (called precipitable water) were recorded with radiosondes. No wonder the flooding occurred," Trenberth said, referring to measurements from weather balloons. </p>
<p>Hayhoe said reducing flood risk in cities like Houston will require sustained investments in improved infrastructure. Such actions would need to take into account the fact that our climate is changing, and that what was once a 500-year-flood is now closer to a 1-in-50 year event.</p>
<p>“If we build based only on what we’ve seen in the past, we won’t be able to cope with the naturally-occurring weather and extreme events that we get today, many of which are being exacerbated by the changing climate,” she said.</p>
<p>“Unfortunately, long-term planning and investment is not really a hot topic or a soundbite these days for many politicians,” she said. “It’s a very difficult thing to do.”</p>
<div class="bonus-video-card">
<h2 class="title"><a href="https://mashable.com/2017/08/28/hurricane-harvey-slams-texas/" target="_blank">WATCH: Hurricane Harvey is the strongest hurricane to hit the US in 12 years</a></h2>
<div class="content-mash-video" data-source="blueprint" data-template="bonus" data-video="4bo2QEglEd">
<p><img alt="Https%3a%2f%2fvdist.aws.mashable.com%2fcms%2f2017%2f8%2fc5b91067 f750 0f37%2fthumb%2f00001" src="https://i.amz.mshcdn.com/2YpihNXL8LqOTd1yZZCw0GClR90=/https%3A%2F%2Fvdist.aws.mashable.com%2Fcms%2F2017%2F8%2Fc5b91067-f750-0f37%2Fthumb%2F00001.jpg" data-fragment="m!ff32" data-image="https://i.amz.mshcdn.com/2YpihNXL8LqOTd1yZZCw0GClR90=/https%3A%2F%2Fvdist.aws.mashable.com%2Fcms%2F2017%2F8%2Fc5b91067-f750-0f37%2Fthumb%2F00001.jpg" data-micro="1"></p>
<script class="playerMetadata" type="application/json">{"player":{"description":"And even more rain is expected.","image":"https://i.amz.mshcdn.com/2YpihNXL8LqOTd1yZZCw0GClR90=/https%3A%2F%2Fvdist.aws.mashable.com%2Fcms%2F2017%2F8%2Fc5b91067-f750-0f37%2Fthumb%2F00001.jpg","mediaid":"4bo2QEglEd","preload":false,"title":"Hurricane Harvey is the strongest hurricane to hit the US in 12 years","sources":[{"file":"https://vdist.aws.mashable.com/cms/2017/8/c5b91067-f750-0f37/hls.m3u8"},{"file":"https://vdist.aws.mashable.com/cms/2017/8/c5b91067-f750-0f37/dash.mpd"},{"file":"https://vdist.aws.mashable.com/cms/2017/8/c5b91067-f750-0f37/mp4/1080.mp4"},{"file":"https://vdist.aws.mashable.com/cms/2017/8/c5b91067-f750-0f37/mp4/720.mp4"},{"file":"https://vdist.aws.mashable.com/cms/2017/8/c5b91067-f750-0f37/mp4/480.mp4"}]},"options":{"disableAds":false,"disableSharing":false,"nextupAction":"autoplay","embedUrl":"https://mashable.com/videos/blueprint:4bo2QEglEd/embed/?player=offsite","standaloneUrl":null,"post":{"url":"https://mashable.com/2017/08/27/harvey-dumps-11-trillion-gallons-water-houston-flood/","date":"2017-08-27T21:18:17.960Z","bp_id":55239,"wp_id":null}},"advertising":{"params":{"keywords":"mashable-video,water,culture,rescue,hurricane,houston,texas,storm,flood,tornado,flooding,natural disaster,disaster,mashable video,relief,shelter,houston flooding,real-time,real-time video,real time,roads,tropical storm,real-time-video,real time video,category 4,category,tropical storm harvey,hurricane harvey,catastrophic,rescue boats","sec0":null,"sec1":"","prc":""}},"analytics":{"labels":"mashable-video,water,culture,rescue,hurricane,houston,texas,storm,flood,tornado,flooding,natural disaster,disaster,mashable video,relief,shelter,houston flooding,real-time,real-time video,real time,roads,tropical storm,real-time-video,real time video,category 4,category,tropical storm harvey,hurricane harvey,catastrophic,rescue boats","videoSeriesName":null}}</script>
</div>
</div>
<script>      window._msla=window.loadScriptAsync||function(src,id){if(document.getElementById(id))return;var js=document.createElement('script');js.id=id;js.src=src;document.getElementsByTagName('script')[0].parentNode.insertBefore(js,fjs);};
_msla("https://platform.twitter.com/widgets.js","twitter_jssdk");</script>





</section>

<div class='fb-quote'></div><footer class='article-topics'>
Topics:
<a href="/category/activism/">activism</a>, <a href="/category/climate/">Climate</a>, <a href="/category/climate-environment/">climate-environment</a>, <a href="/category/flood/">flood</a>, <a href="/category/houston-flood/">houston-flood</a>, <a href="/category/hurricane-harvey/">hurricane-harvey</a>, <a href="/category/hurricanes/">hurricanes</a>, <a href="/category/science/">Science</a>, <a href="/category/tropical-storm-harvey/">tropical-storm-harvey</a>
</footer>
<div class='2017-boost-slot'><div class="ad_container ad-slot" data-overrides="{&quot;targeting&quot;:{&quot;tile&quot;:1,&quot;adnum&quot;:1,&quot;sec0&quot;:&quot;science&quot;,&quot;sec1&quot;:&quot;&quot;,&quot;sec2&quot;:&quot;posts&quot;,&quot;topic&quot;:&quot;climate,science&quot;,&quot;postid&quot;:&quot;bp55298&quot;,&quot;posts&quot;:&quot;none&quot;}}" data-type="btf_article_mobile_rec"></div></div>
<div id="taboola-below-article-thumbnails"></div>
<div data-display-daily-newsletter="show" id="newsletter-signup"></div>
<script>
  if (window.pageChanged)
    window.omni({"channel":"science","content_type":"article","v_buy_i":null,"h_pub_buy":null,"v_cur_i":0,"v_max_i":0,"events":"","top_channel":"science","content_source_type":"Internal","content_source_name":"Internal","author_name":"Andrew Freedman","age":"169","pub_day":28,"pub_month":8,"pub_year":2017,"pub_date":"08/28/2017","sourced_from":"Internal","isPostView":true,"post_lead_type":"Alt Image Lead","topics":"activism,climate,climate-environment,flood,houston-flood,hurricane-harvey,hurricanes,science,tropical-storm-harvey","campaign":null,"display_mode":null,"viral_video_type":null,"standalone_video_show":null,"b_flag":true,"cms_author_name":null,"cms_author_geo":"us","cms_author_team":"Science","bp_id":55298,"shoppable":null,"voice":"Mashable","level_of_effort":"One day","content_format":"Article","video_platform_target":null,"classification_options":false,"key_topics":["Activism","Climate & Environment"],"job_function":"Explainer/Analysis"});
    metaData = {"link":[["canonical","https://mashable.com/2017/08/28/harvey-houston-flood-infrastructure-climate-change-concerns/"],["image_src","https://i.amz.mshcdn.com/fjXvLUTuEpZEvy7kSFgrcC8j71g=/1200x627/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg"]],"meta_property":[["og:url","https://mashable.com/2017/08/28/harvey-houston-flood-infrastructure-climate-change-concerns/"],["og:title","Tropical Storm Harvey raises red flags on infrastructure, climate planning"],["og:type","article"],["og:site_name","Mashable"],["og:description","Rainfall like this would overwhelm any city."],["og:image","https://i.amz.mshcdn.com/_aRyMIuMK60o3FMKXud9-Mtm_Rw=/1200x630/2017%2F08%2F28%2Fe4%2F1dbf4608e37640d4889b6e6570ccf225.7eee3.jpg"],["og:article:published_time","2017-08-28T20:35:42Z"],["og:article:modified_time","2017-08-29T15:30:51Z"],["og:article:publisher","https://www.facebook.com/mashable"]],"meta_name":[["description","Such extreme rainfall would be enough to overwhelm any city, but Houston is well-known for its vulnerability. "],["keywords","climate, global-warming, extreme-weather, climate-change, flood, hurricanes, tropical-storm-harvey, hurricane-harvey, houston-flood, science"],["twitter:title","Tropical Storm Harvey raises red flags on infrastructure, climate planning"],["twitter:description","Such extreme rainfall would be enough to overwhelm any city, but Houston is well-known for its vulnerability. "],["twitter:image","https://i.amz.mshcdn.com/8FaNIjMc1ErCCxrhf7FlrO9vC-g=/640x360/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg"],["twitter:site","@mashable"],["twitter:via","mashable"],["twitter:url","https://mashable.com/2017/08/28/harvey-houston-flood-infrastructure-climate-change-concerns/"],["twitter:creator","@mashable"],["twitter:card","photo"],["twitter:image:width","640"],["twitter:image:height","360"],["date","2017-08-28 20:35:42 UTC"],["sailthru.author","Andrew Freedman"],["sailthru.image.thumb","https://i.amz.mshcdn.com/HThacQxPh7kEdR5iVK8yz79F8M0=/115x115/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg"],["sailthru.image.full","https://i.amz.mshcdn.com/DXzL24FgAhsBk7yZI5TZHKHYf_g=/950x534/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg"],["sailthru.lead_image","https://i.amz.mshcdn.com/OHtVUzPUDUKsZ6va8rqpNTYnwt0=/600x338/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg"],["sailthru.secondary_image","https://i.amz.mshcdn.com/rG7aX3yZt-ZIa4mNxd9oVDiX6dk=/288x162/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fstory%2Fthumbnail%2F55298%2F1dbf4608-e376-40d4-889b-6e6570ccf225.jpg"],["sailthru.exclude_homepage",false],["sailthru.exclude_uk",false],["sailthru.exclude_australia",false],["sailthru.exclude_india",false],["author","Andrew Freedman"]],"short_url":[["short_url","http://on.mash.to/2wE28pm"]]};
</script>
<div class='right_rail_replace'>
<div class="ad_container ad-slot" data-overrides="{&quot;targeting&quot;:{&quot;tile&quot;:2,&quot;adnum&quot;:2,&quot;sec0&quot;:&quot;science&quot;,&quot;sec1&quot;:&quot;&quot;,&quot;sec2&quot;:&quot;posts&quot;,&quot;topic&quot;:&quot;climate,science&quot;,&quot;postid&quot;:&quot;bp55298&quot;,&quot;posts&quot;:&quot;none&quot;}}" data-type="no_right_rail_desktop"></div>
</div>
</article>
</div>
</div>
</div>
<aside class='box-cell sidebar'>
<div class='ad sidebar-inset sidebar-drop'>
<div class="ad_container ad-slot" data-overrides="{&quot;targeting&quot;:{&quot;tile&quot;:3,&quot;adnum&quot;:1,&quot;sec0&quot;:&quot;science&quot;,&quot;sec1&quot;:&quot;&quot;,&quot;sec2&quot;:&quot;posts&quot;,&quot;topic&quot;:&quot;climate,science&quot;,&quot;postid&quot;:&quot;bp55298&quot;,&quot;posts&quot;:&quot;none&quot;}}" data-type="right_rail"></div>

</div>
<div class='sidebar-inset' id='big-stories'></div>
</aside>
</div>

<!-- Analytics -->

<!-- Twitter Ad Tracker -->
<noscript>
<img alt='' height='1' src='https://analytics.twitter.com/i/adsct?txn_id=l4o6d&amp;p_id=Twitter' style='display:none;' width='1'>
<img alt='' height='1' src='https://t.co/i/adsct?txn_id=l4o6d&amp;p_id=Twitter' style='display:none;' width='1'>
</noscript>
<img class='bluekai-test-img' height='0' src='https://mashable.com/favicon-16x16.png?bk_uuid=$_BK_UUID&amp;BK_SWAP_DEST=19275' width='0'>
</div>
</div>
<!-- scroll load stub - do not remove -->
<div class='after-page-container'></div>
<script id='banner-template' type='text/template'>
<div class='banner-ad-wrapper'>
<div class="ad_container ad-slot" data-overrides="{&quot;targeting&quot;:{&quot;tile&quot;:4,&quot;adnum&quot;:1,&quot;sec0&quot;:&quot;science&quot;,&quot;sec1&quot;:&quot;&quot;,&quot;sec2&quot;:&quot;posts&quot;,&quot;topic&quot;:&quot;climate,science&quot;,&quot;postid&quot;:&quot;bp55298&quot;,&quot;posts&quot;:&quot;none&quot;}}" data-type="banner"></div>
</div>
</script>

</div><div id='fb-root'></div><script>
  if(window.initPage) { window.initPage() }
  else { $(function() { window.initPage && window.initPage(); })}
</script>
</div><footer id='site-footer-wrapper'>
<div class='page-container' id='site-footer'><ul class='nav'><li><a href="/about/">About Us</a></li><li><a href="http://jobs.mashable.com">Jobs</a></li><li><a href="/advertise/">Advertise</a></li><li><a href="/2011/05/09/connect-with-mashable/">Subscribe</a></li><li><a href="/privacy/">Privacy</a></li><li><a href="/terms/">Terms</a></li></ul><ul class='social'><li><a class='facebook' href='https://www.facebook.com/mashable/' target='_social'></a></li>
<li><a class='twitter' href='https://twitter.com/mashable' target='_social'></a></li>
<li><a class='gplus' href='https://plus.google.com/+Mashable' target='_social'></a></li>
<li><a class='rss' href='http://feeds.mashable.com/Mashable' target='_social'></a></li>
<li><a class='pinterest' href='https://pinterest.com/mashable/' target='_social'></a></li>
<li><a class='youtube' href='https://www.youtube.com/user/mashable' target='_social'></a></li>
<li><a class='stumbleupon' href='https://www.stumbleupon.com/channel/Mashable' target='_social'></a></li>
<li><a class='linkedin' href='https://www.linkedin.com/company/mashable' target='_social'></a></li></ul>
<div class='about'>
<a class='brand' href='/'>
Mashable
</a>
<span class='blurb'>is a global, multi-platform media and entertainment company. Powered by its own proprietary technology, Mashable is the go-to source for tech, digital culture and entertainment content for its dedicated and influential audience around the globe.</span>
</div>
<ul class='copyright-and-legal'>
<li>
&copy;2005-2018
Mashable, Inc.
</li>
<li>
Reproduction without explicit permission is prohibited. All Rights Reserved.
</li>
<li>
Designed in collaboration with <a rel="nofollow" href="http://www.codeandtheory.com">Code &amp; Theory</a>
</li>
</ul>
</div>

</footer>

<noscript>
<img src='https://sb.scorecardresearch.com/p?c1=2&amp;c2=8750086&amp;cv=2.0&amp;cj=1'>
</noscript>
</div>
</div>
<script>
  !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
  n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
  document,'script','https://connect.facebook.net/en_US/fbevents.js');
  fbq('init', '1453039084979896');
  fbq('track', "PageView");
</script>
<noscript>
<img height='1' src='https://www.facebook.com/tr?id=1453039084979896&amp;ev=PageView&amp;noscript=1' style='display: none' width='1'>
</noscript>

<script>
  window.detectStaffEditableLink && window.detectStaffEditableLink();
</script>
<script type="text/javascript">
  /*<![CDATA[*/ window.lightboxjs || function (c) { function g(b, d) { d && (d += (/\?/.test(d) ? "&" : "?") + "lv=1"); c[b] || function () { var i = window, h = document, j = b, g = h.location.protocol, l = "load", k = 0; (function () { function b() { a.P(l); a.w = 1; c[j]("_load") } c[j] = function () { function m() { m.id = e; return c[j].apply(m, arguments) } var b, e = ++k; b = this && this != i ? this.id || 0 : 0; (a.s = a.s || []).push([e, b, arguments]); m.then = function (b, c, h) { var d = a.fh[e] = a.fh[e] || [], j = a.eh[e] = a.eh[e] || [], f = a.ph[e] = a.ph[e] || []; b && d.push(b); c && j.push(c); h && f.push(h); return m }; return m }; var a = c[j]._ = {}; a.fh = {}; a.eh = {}; a.ph = {}; a.l = d ? d.replace(/^\/\//, (g == "https:" ? g : "https:") + "//") : d; a.p = { 0: +new Date }; a.P = function (b) { a.p[b] = new Date - a.p[0] }; a.w && b(); i.addEventListener ? i.addEventListener(l, b, !1) : i.attachEvent("on" + l, b); var q = function () { function b() { return ["<head></head><", c, ' onload="var d=', n, ";d.getElementsByTagName('head')[0].", d, "(d.", g, "('script')).", i, "='", a.l, "'\"></", c, ">"].join("") } var c = "body", e = h[c]; if (!e) return setTimeout(q, 100); a.P(1); var d = "appendChild", g = "createElement",
  i = "src", k = h[g]("div"), l = k[d](h[g]("div")), f = h[g]("iframe"), n = "document", p; k.style.display = "none"; e.insertBefore(k, e.firstChild).id = o + "-" + j; f.frameBorder = "0"; f.id = o + "-frame-" + j; /MSIE[ ]+6/.test(navigator.userAgent) && (f[i] = "javascript:false"); f.allowTransparency = "true"; l[d](f); try { f.contentWindow[n].open() } catch (s) { a.domain = h.domain, p = "javascript:var d=" + n + ".open();d.domain='" + h.domain + "';", f[i] = p + "void(0);" } try { var r = f.contentWindow[n]; r.write(b()); r.close() } catch (t) { f[i] = p + 'd.write("' + b().replace(/"/g, String.fromCharCode(92) + '"') + '");d.close();' } a.P(2) }; a.l && q() })() }(); c[b].lv = "1"; return c[b] } var o = "lightboxjs", k = window[o] = g(o); k.require = g; k.modules = c }({}); /*]]>*/</script><script type="text/javascript">window.lightboxlib = lightboxjs.require("lightboxlib", "https://www.lightboxcdn.com/vendor/3c2be054-bb5f-4178-a524-c7877bda309d/lightbox.js?mb=" + (new Date().getTime()));
</script>

<script>/* loader-7.2.1 */ eval(atob("IWZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIG8oYSxjKXtpZighblthXSl7aWYoIXRbYV0pe3ZhciB1PSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFjJiZ1KXJldHVybiB1KGEsITApO2lmKGkpcmV0dXJuIGkoYSwhMCk7dmFyIHM9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrYSsiJyIpO3Rocm93IHMuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsc312YXIgbD1uW2FdPXtleHBvcnRzOnt9fTt0W2FdWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbYV1bMV1bZV07cmV0dXJuIG8obnx8ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW2FdLmV4cG9ydHN9Zm9yKHZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGE9MDthPHIubGVuZ3RoO2ErKylvKHJbYV0pO3JldHVybiBvfSh7MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlKDIzKTt2YXIgcj1lKDEyKSxvPWUoNyk7d2luZG93LmFkb25pc0Nvbm5UeXBlPSJodHRwIixyLmxvZ2dlci5pbmZvKCJbaHR0cExvYWRlcl06IFN0YXJ0aW5nIGJvb3RzdHJhcCIpLCgwLG8ucnVuKSgpfSx7MTI6MTIsMjM6MjMsNzo3fV0sMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIGkod2luZG93KSYmYyh3aW5kb3cpJiZ1KHdpbmRvdykmJmEod2luZG93KSYmcyh3aW5kb3cpfWZ1bmN0aW9uIG8oKXtyZXR1cm4gaSh3aW5kb3cpJiZ1KHdpbmRvdykmJmEod2luZG93KSYmcyh3aW5kb3cpfWZ1bmN0aW9uIGkoZSl7dHJ5e3JldHVybiBlLmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJfX3h5el9fIiwiX194eXpfXyIpLGUubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIl9feHl6X18iKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gYShlKXt0cnl7cmV0dXJuISFuZXcgZS5CbG9ifWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBjKGUpe3ZhciB0PWZ1bmN0aW9uKHQpe3JldHVybiB0LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gZX0pfSxuPVsiUlRDUGVlckNvbm5lY3Rpb24iLCJtb3pSVENQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIl0scj1bIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiIsIm1velJUQ1Nlc3Npb25EZXNjcmlwdGlvbiIsIndlYmtpdFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiJdLG89WyJSVENJY2VDYW5kaWRhdGUiLCJtb3pSVENJY2VDYW5kaWRhdGUiLCJ3ZWJraXRSVENJY2VDYW5kaWRhdGUiXTtyZXR1cm4gdChuKSYmdChyKSYmdChvKX1mdW5jdGlvbiB1KGUpe3JldHVybiJQcm9taXNlImluIGUmJiJyZXNvbHZlImluIGUuUHJvbWlzZSYmInJlamVjdCJpbiBlLlByb21pc2UmJiJhbGwiaW4gZS5Qcm9taXNlJiYicmFjZSJpbiBlLlByb21pc2V9ZnVuY3Rpb24gcyhlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5PYmplY3QuYXNzaWdufXQuZXhwb3J0cz17aXNTdXBwb3J0ZWRCcm93c2VyUnRjOnIsaXNTdXBwb3J0ZWRCcm93c2VyOm8saXNMb2NhbFN0b3JhZ2VTdXBwb3J0ZWQ6aSxpc1J0Y1N1cHBvcnRlZDpjLGlzQmxvYlN1cHBvcnRlZDphLGlzT2JqZWN0QXNzaWduU3VwcG9ydGVkOnMsaXNQcm9taXNlU3VwcG9ydGVkOnV9fSx7fV0sMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49dFsiYWRvbmlzLWNsaWVudC12ZXJzaW9uIl0scj10WyJjYWNoZS1jb250cm9sIl0sYT1yJiZyLnN0YXJ0c1dpdGgoIm1heC1hZ2UiKSxjPXQuZXhwaXJ5TWlsbGlzfHwwO2lmKGEpe2kubG9nZ2VyLmRlYnVnKHIpO3ZhciB1PXBhcnNlSW50KHIuc3BsaXQoIj0iKVsxXSwxMCk7aXNOYU4odSl8fChjPShuZXcgRGF0ZSkuZ2V0VGltZSgpKzFlMyp1KX1uJiYoaS5sb2dnZXIuaW5mbygiW2NhY2hlL3N0b3JlQWRvbmlzQ2xpZW50UmVzcG9uc2VdOiBuZXcgZXhwaXJ5ICIrYysiID0gIituZXcgRGF0ZShjKSksbyhlLG4sYykpfWZ1bmN0aW9uIG8oZSx0LG4pe3dpbmRvdy5sb2NhbFN0b3JhZ2UuYWRvbmlzQ2FjaGVTcmM9ZSx3aW5kb3cubG9jYWxTdG9yYWdlLmFkb25pc0NhY2hlRXhwaXJ5TWlsbGlzPW4sd2luZG93LmxvY2FsU3RvcmFnZS5hZG9uaXNDbGllbnRWZXJzaW9uPXR9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4uc3RvcmVBZG9uaXNDbGllbnRSZXNwb25zZT1yLG4uY2FjaGVBZG9uaXNDbGllbnQ9bzt2YXIgaT1lKDEyKX0sezEyOjEyfV0sNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDUpO3dpbmRvdy5hZG9uaXNIYXNoPXdpbmRvdy5hZG9uaXNIYXNofHx3aW5kb3cubG9jYXRpb24uaGFzaHx8IiI7dmFyIG89d2luZG93LmFkb25pc0hhc2guaW5kZXhPZigiYWRvbmlzLWxvZ2dpbmciKT49MDtyLkxPR19MRVZFTD1vPyJkZWJ1ZyI6ci5MT0dfTEVWRUw7dmFyIGk9d2luZG93LmFkb25pc3x8e307aS53c0hvc3QmJnIuV1MmJihyLldTLmhvc3Q9aS53c0hvc3QpLGkudHJhbnNwb3J0JiYoci5TVUVaX0hUVFBfRU5EUE9JTlQ9aS50cmFuc3BvcnQpLHQuZXhwb3J0cz1yfSx7NTo1fV0sNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9e1JFQUxfU1RVTl9IT1NUOiJzdHVuLnhwYW5hbWEubmV0OjM0NzgiLFRVUk5TSUdOQUxfSE9TVDoidHMucC54cGFuYW1hLm5ldDo3MDAwIixTVFVOR1VOX0hPU1Q6InNnLnAueHBhbmFtYS5uZXQ6MzQ4MCIsU0VSVkVSX0NBTkRJREFURToiY2FuZGlkYXRlOjgyNzY0ODAyNiAxIHVkcCAyMTIyMTk0Njg3IFNFUlZFUl9JUCBTRVJWRVJfUE9SVCB0eXAgaG9zdCBnZW5lcmF0aW9uIDAiLFJFUE9SVElOR19VUkw6Imh0dHBzOi8vbGIuc3RhdHNldmVudC5jb20vc3RhdHMiLFJFUE9SVElOR19SQVRFOi4wMSxMT0dfTEVWRUw6ImVycm9yIixSRVBPUlRfRVJST1JTOiEwLE1BTklGRVNUX1VSTDoiaHR0cHM6Ly9zcmkuanNpbnRlZ3JpdHkuY29tL21hbmlmZXN0Lmpzb24iLE1BTklGRVNUX0VYUElSQVRJT05fVElNRTo4NjQwMCxBRF9NQVJLRVI6ImFkb25pcy1tYXJrZXIiLEFET05JU19DTElFTlRfRkVUQ0hfVVJMOiJodHRwczovL2Fkc2VydmVyLnhwYW5hbWEubmV0L2NsaWVudC03LWxhdGVzdC5qcyIsV1M6e2hvc3Q6InN1ZXotc2VydmVyLnhwYW5hbWEubmV0IixwYXRoOiIvd3MiLHBvcnQ6NDQzLHNlY3VyZTohMCxwcm9taXNlVGltZW91dDozZTN9LFNFUlZJQ0VfU1RBVFVTX1VSTDpmdW5jdGlvbihlKXtyZXR1cm4iaHR0cHM6Ly9jbGllbnQucmVhY3RyanMuY29tLyIrZSsiLXN0YXR1cy5qc29uIn0sU1VFWl9IVFRQX1JFVFJZOjMsU1VFWl9IVFRQX0RFTEFZOjEwMH19LHt9XSw2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oKXt2YXIgZT0iY29udHJvbC1zZXJ2ZXIvY2hlY2siO2YubG9nZ2VyLmluZm8oIlsiK2UrIl06IENoZWNraW5nIHNlcnZpY2Ugc3RhdHVzIik7dmFyIHQ9aSh3aW5kb3cpO3JldHVybigwLHUucmVxdWVzdCkodCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZi5sb2dnZXIuZGVidWcoIlsiK2UrIl06IFN0YXR1cyBjaGVjayBmZXRjaGVkIHdpdGggc3RhdHVzLWNvZGUgPCIrdC5zdGF0dXMrIj4iKSxKU09OLnBhcnNlKHQucmVzcG9uc2VUZXh0KX0pLmNhdGNoKGZ1bmN0aW9uKHQpe2YubG9nZ2VyLmluZm8oIlsiK2UrIl06IEZhaWxlZCB0byBjaGVjayBjb250cm9sIHNlcnZlciBzdGF0dXMgPCIrdCsiPiIpO3ZhciBuPXZvaWQgMCE9PXQucmVxP3QucmVxLnN0YXR1czpudWxsO3Rocm93IDA9PT1uP25ldyBzLlhockJsb2NrRXJyb3I6bmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0YXR1cyBjb2RlIHdoaWxlIHBlcmZvcm1pbmcgY29udHJvbCBzZXJ2ZXIgY2hlY2ssIHN0YXR1cy1jb2RlID0gPCIrbisiPiIpfSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZC5kZWZhdWx0LlNFUlZJQ0VfU1RBVFVTX1VSTChjLmRlZmF1bHQuZ2V0KGUubG9jYXRpb24uaG9zdCkpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLmNoZWNrPW8sbi5nZXRTZXJ2aWNlU3RhdHVzVXJsPWk7dmFyIGE9ZSgyNSksYz1yKGEpLHU9ZSgxOSkscz1lKDkpLGw9ZSg0KSxkPXIobCksZj1lKDEyKX0sezEyOjEyLDE5OjE5LDI1OjI1LDQ6NCw5Ojl9XSw3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIGkoKXt2YXIgZT0iaHR0cC1hZG9uaXMtY2xpZW50LWxvYWRlci9ydW4iO3JldHVybiBwLmRlZmF1bHQucmVwb3J0RXZlbnQoImJvb3RzdHJhcC5odHRwLnBhZ2V2aWV3IiksZy5kZWZhdWx0LmlzU3VwcG9ydGVkQnJvd3NlcigpPyh5LmxvZ2dlci5pbmZvKCJbIitlKyJdOiBCcm93c2VyIGlzIGNvbXBhdGlibGUiKSxwLmRlZmF1bHQucmVwb3J0RXZlbnQoImJvb3RzdHJhcC5odHRwLnN1cHBvcnRlZCIpLGEoKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiB5LmxvZ2dlci5pbmZvKCJbIitlKyJdOiBSdW5uaW5nIGFuZCBjYWNoaW5nIGFkb25pc0NsaWVudCBzb3VyY2UiKSxwLmRlZmF1bHQucmVwb3J0RXZlbnQoImJvb3RzdHJhcC5odHRwLnJ1bmNsaWVudHNjcmlwdCIpLHAuZGVmYXVsdC5zYXZlVGltaW5nKCksZC5kZWZhdWx0LmRlZmluZVJlYWRPbmx5UHJvcGVydHkoImFkb25pc0NvbmZpZyIscy5kZWZhdWx0KSwoMCxtLnN0b3JlQWRvbmlzQ2xpZW50UmVzcG9uc2UpKHQuc291cmNlLHQubWV0YSksdy5kZWZhdWx0Lmluc2VydElubGluZVNjcmlwdCh0LnNvdXJjZSksbnVsbH0pLmNhdGNoKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgSS5YaHJCbG9ja0Vycm9yPyh5LmxvZ2dlci5pbmZvKCJbIitlKyJdOiBGYWlsZWQgdG8gZmV0Y2ggYWRvbmlzLWNsaWVudCB1c2luZyBTdWV6IikseS5sb2dnZXIuaW5mbygiWyIrZSsiXTogQWxsIGxvYWRlcnMgZmFpbGVkIHRvIGZldGNoIGFkb25pcy1jbGllbnQsIGNoZWNraW5nIGNvbnRyb2wgc2VydmVyIiksXy5jaGVjaygpKTooeS5sb2dnZXIud2FybigiWyIrZSsiXTogVW5leHBlY3RlZCBlcnJvciB3aGVuIHRyeWluZyB0byBmZXRjaCBhZG9uaXMtY2xpZW50IG92ZXIgU3VlejogPCIrdCsiPiIpLHAuZGVmYXVsdC5yZXBvcnRFcnJvcih0KSxudWxsKX0pLmNhdGNoKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgSS5YaHJCbG9ja0Vycm9yPyhwLmRlZmF1bHQucmVwb3J0RXZlbnQoImJvb3RzdHJhcC5odHRwLnN0YXR1c19ibG9ja2VkIikseS5sb2dnZXIuaW5mbygiWyIrZSsiXTogQ29udHJvbCBzZXJ2ZXIgY2hlY2sgZmFpbGVkLCBwcm9iYWJseSBhbiBhZGJsb2NrZXIiKSx7c3RhdHVzOiEwfSk6KHkubG9nZ2VyLndhcm4oIlsiK2UrIl06IFVuZXhwZWN0ZWQgZXJyb3IgZnJvbSBjb250cm9sIHNlcnZlciBjaGVjazogPCIrdCsiPiIpLHAuZGVmYXVsdC5yZXBvcnRFcnJvcih0KSxudWxsKX0pLnRoZW4oZnVuY3Rpb24odCl7KDAsUy5kZWZhdWx0KSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkmJnQmJiJzdGF0dXMiaW4gdCYmdC5zdGF0dXM/KHAuZGVmYXVsdC5yZXBvcnRFdmVudCgiYm9vdHN0cmFwLmh0dHAudHJpZ2dlZCIpLHkubG9nZ2VyLmluZm8oIlsiK2UrIl06IENvbnRyb2wgc2VydmVyIHJlcG9ydGVkIHN0YXR1cyBpcyBoZWFsdGh5IG9yIHdhcyBibG9ja2VkLCB0cmlnZ2VyaW5nIG9wcGVuaGVpbWVyIiksKDAsYy5yZXBsYWNlQ29udGVudCkod2luZG93LmRvY3VtZW50KSwoMCxULmRlZmF1bHQpKHdpbmRvdywiYWRvbmlzLWRldGVycmVudCIpKTp0JiYic3RhdHVzImluIHQmJiExPT09dC5zdGF0dXMmJihwLmRlZmF1bHQucmVwb3J0RXZlbnQoImJvb3RzdHJhcC5odHRwLm5vdF90cmlnZ2VkIikseS5sb2dnZXIud2FybigiWyIrZSsiXTogQ29udHJvbCBzZXJ2ZXIgcmVwb3J0ZWQgc3RhdHVzIGlzIHVuaGVhbHRoeSwgbm90IHRyaWdnZXJpbmcgb3BwZW5oZWltZXIiKSl9KSk6dm9pZCB5LmxvZ2dlci5pbmZvKCJbIitlKyJdOiBJbmNvbXBhdGlibGUgYnJvd3Nlciwgbm90IGNvbnRpbnVpbmciKX1mdW5jdGlvbiBhKCl7dmFyIGU9Imh0dHAtYWRvbmlzLWNsaWVudC1sb2FkZXIvbG9hZEFkb25pc0NsaWVudCI7cmV0dXJuIHkubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBUcnlpbmcgdG8gbG9hZCBhZG9uaXMtY2xpZW50IHdpdGggWEhSIGxvYWRlciAoZnJvbSBDRE4pIiksQy5sb2FkKCkuY2F0Y2goZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBJLlhockJsb2NrRXJyb3I/eS5sb2dnZXIuaW5mbygiWyIrZSsiXTogRmFpbGVkIHRvIGZldGNoIGFkb25pcy1jbGllbnQgb3ZlciBYSFIsIHRyeWluZyB0byBsb2FkIGZyb20gY2FjaGUiKTooeS5sb2dnZXIud2FybigiWyIrZSsiXTogVW5leHBlY3RlZCBlcnJvciB3aGVuIHRyeWluZyBmZXRjaCBhZG9uaXMtY2xpZW50IG92ZXIgWEhSLCB0cnlpbmcgdG8gbG9hZCBmcm9tIGNhY2hlOiA8Iit0KyI+IikscC5kZWZhdWx0LnJlcG9ydEVycm9yKHQpKSx4LmxvYWQoKX0pLmNhdGNoKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgSS5DYWNoZUxvYWRFcnJvcj95LmxvZ2dlci5pbmZvKCJbIitlKyJdOiBGYWlsZWQgdG8gZmV0Y2ggYWRvbmlzLWNsaWVudCBmcm9tIGNhY2hlLCB0cnlpbmcgdG8gbG9hZCBmcm9tIFN1ZXoiKTooeS5sb2dnZXIud2FybigiWyIrZSsiXTogVW5leHBlY3RlZCBlcnJvciB3aGVuIHRyeWluZyBmZXRjaCBhZG9uaXMtY2xpZW50IGZyb20gY2FjaGUsIHRyeWluZyB0byBsb2FkIGZyb20gU3VlejogPCIrdCsiPiIpLHAuZGVmYXVsdC5yZXBvcnRFcnJvcih0KSksTC5sb2FkKCl9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5ydW49aSxuLmxvYWRBZG9uaXNDbGllbnQ9YTt2YXIgYz1lKDIyKSx1PWUoNCkscz1vKHUpLGw9ZSgxOCksZD1vKGwpLGY9ZSgxNikscD1vKGYpLGg9ZSgyKSxnPW8oaCksdj1lKDE1KSx3PW8odiksYj1lKDYpLF89cihiKSxtPWUoMykseT1lKDEyKSxFPWUoMTcpLFM9byhFKSxPPWUoMTMpLFQ9byhPKSxSPWUoMTEpLEM9cihSKSxBPWUoMTApLEw9cihBKSxQPWUoOCkseD1yKFApLEk9ZSg5KX0sezEwOjEwLDExOjExLDEyOjEyLDEzOjEzLDE1OjE1LDE2OjE2LDE3OjE3LDE4OjE4LDI6MiwyMjoyMiwzOjMsNDo0LDY6Niw4OjgsOTo5fV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dmFyIGU9ImxvYWRlcnMvY2FjaGUvbG9hZCI7YS5sb2dnZXIuZGVidWcoIlsiK2UrIl06IFN0YXJ0aW5nIGNhY2hlIGxvYWRlciIpLHdpbmRvdy5sb2NhbFN0b3JhZ2UuYWRvbmlzQ2FjaGVFeHBpcnkmJndpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiYWRvbmlzQ2FjaGVFeHBpcnkiKTt2YXIgdD1wYXJzZUludCh3aW5kb3cubG9jYWxTdG9yYWdlLmFkb25pc0NhY2hlRXhwaXJ5TWlsbGlzLDEwKTtpc05hTih0KSYmKHQ9MCk7dmFyIG49d2luZG93LmxvY2FsU3RvcmFnZS5hZG9uaXNDbGllbnRWZXJzaW9uLHI9d2luZG93LmxvY2FsU3RvcmFnZS5hZG9uaXNDYWNoZVNyYyxvPShuZXcgRGF0ZSkuZ2V0VGltZSgpPj10LGM9eyJhZG9uaXMtY2xpZW50LXZlcnNpb24iOm4sZXhwaXJ5TWlsbGlzOnQsY2FjaGVkU291cmNlOnJ9O3JldHVybiByP28/KGEubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBDYWNoZWQgdmVyc2lvbiBvZiBhZG9uaXMtY2xpZW50IGlzIGV4cGlyZWQiKSxQcm9taXNlLnJlamVjdChuZXcgaS5DYWNoZUxvYWRFcnJvcihudWxsLGMpKSk6KGEubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBGb3VuZCBhIHZhbGlkIGNhY2hlZCB2ZXJzaW9uIG9mIGFkb25pcy1jbGllbnQiKSxQcm9taXNlLnJlc29sdmUoe3NvdXJjZTpyLG1ldGE6Y30pKTooYS5sb2dnZXIuZGVidWcoIlsiK2UrIl06IE5vIGNhY2hlZCB2ZXJzaW9uIG9mIGFkb25pcy1jbGllbnQgZm91bmQgaW4gdGhlIGxvY2FsU3RvcmFnZSIpLFByb21pc2UucmVqZWN0KG5ldyBpLkNhY2hlTG9hZEVycm9yKG51bGwsYykpKX1mdW5jdGlvbiBvKCl7cmV0dXJuIHIoKS5jYXRjaChmdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgaS5DYWNoZUxvYWRFcnJvcilyZXR1cm57c291cmNlOmUuc291cmNlLG1ldGE6ZS5tZXRhfX0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLmxvYWQ9cixuLmxvYWRJZ25vcmluZ0Vycm9ycz1vO3ZhciBpPWUoOSksYT1lKDEyKX0sezEyOjEyLDk6OX1dLDk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBpKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5DYWNoZUxvYWRFcnJvcj1uLldzQmxvY2tFcnJvcj1uLlhockJsb2NrRXJyb3I9dm9pZCAwO3ZhciBhPWUoMjEpLGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fShhKTtuLlhockJsb2NrRXJyb3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiByKHRoaXMsdCksbyh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBpKHQsZSksdH0oYy5kZWZhdWx0KSxuLldzQmxvY2tFcnJvcj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIHIodGhpcyx0KSxvKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGkodCxlKSx0fShjLmRlZmF1bHQpLG4uQ2FjaGVMb2FkRXJyb3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe3IodGhpcyx0KTt2YXIgaT1vKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcykpO3JldHVybiBpLnNvdXJjZT1lLGkubWV0YT1uLGl9cmV0dXJuIGkodCxlKSx0fShjLmRlZmF1bHQpfSx7MjE6MjF9XSwxMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKCl7dmFyIGU9ImxvYWRlcnMvc3Vlei1odHRwIjtkLmxvZ2dlci5kZWJ1ZygiWyIrZSsiXTogU3RhcnRpbmcgU3VleiBIVFRQIGxvYWRlciIpO3ZhciB0PUpTT04uc3RyaW5naWZ5KHtob3N0OiJhc3NldHMiLHBhdGg6ImNsaWVudCIscGFyYW1zOnt9LGhlYWRlcnM6e2Fkb25pc19jbGllbnRfYXBpOiI3LjAuMCJ9fSksbj17IkFkb25pcy1WZXJzaW9uIjoiNy4wLjAiLCJDYWNoZS1BZG9uaXMiOiJ0cnVlIn07cmV0dXJuIHZvaWQgMD09PWMuZGVmYXVsdC5TVUVaX0hUVFBfRU5EUE9JTlQ/UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJObyBhZG9uaXMgdHJhbnNwb3J0IGZvdW5kIikpOigwLGwucmVxdWVzdCkoYy5kZWZhdWx0LlNVRVpfSFRUUF9FTkRQT0lOVCwiUE9TVCIsdCxuKS50aGVuKGZ1bmN0aW9uKHQpe2QubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBTdWNjZXNzZnVsbHkgZmV0Y2hlZCBhZG9uaXMtY2xpZW50IG92ZXIgWEhSIik7dmFyIG49e307dHJ5e25bImFkb25pcy1jbGllbnQtdmVyc2lvbiJdPXQuZ2V0UmVzcG9uc2VIZWFkZXIoImFkb25pcy1jbGllbnQtdmVyc2lvbiIpfWNhdGNoKGUpe310cnl7blsiY2FjaGUtY29udHJvbCJdPXQuZ2V0UmVzcG9uc2VIZWFkZXIoImNhY2hlLWNvbnRyb2wiKX1jYXRjaChlKXt9cmV0dXJue3NvdXJjZTp0LnJlc3BvbnNlVGV4dCxtZXRhOm59fSkuY2F0Y2goZnVuY3Rpb24odCl7dGhyb3cgZC5sb2dnZXIuZGVidWcoIlsiK2UrIl06IEZhaWxlZCB0byBmZXRjaCBhZG9uaXMtY2xpZW50IGZyb20gU3VleiBvdmVyIFhIUiA8Iit0KyI+IiksMD09PXQucmVxLnN0YXR1cz9uZXcgZi5YaHJCbG9ja0Vycm9yOm5ldyBFcnJvcigiVW5leHBlY3RlZCBlcnJvciBmZXRjaGluIGFkb25pcy1jbGllbnQsIHN0YXR1cy1jb2RlID0gPCIrdC5yZXEuc3RhdHVzKyI+Iil9KX1mdW5jdGlvbiBpKCl7dmFyIGU9Yy5kZWZhdWx0LlNVRVpfSFRUUF9SRVRSWXx8MSx0PWMuZGVmYXVsdC5TVUVaX0hUVFBfREVMQVl8fDAsbj1BcnJheS5hcHBseSgwLEFycmF5KGUpKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG99KTtyZXR1cm4gcy5kZWZhdWx0LnJlcG9ydEV2ZW50KCJib290c3RyYXAuaHR0cC5zdWV6X29wZW5pbmciKSwoMCxwLmNoYWluKShuLHQpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHMuZGVmYXVsdC5yZXBvcnRFdmVudCgiYm9vdHN0cmFwLmh0dHAuc3Vlel9vcGVuZWQiKSxlfSkuY2F0Y2goZnVuY3Rpb24oZSl7dGhyb3cgZSBpbnN0YW5jZW9mIGYuWGhyQmxvY2tFcnJvciYmcy5kZWZhdWx0LnJlcG9ydEV2ZW50KCJib290c3RyYXAuaHR0cC5zdWV6X2Jsb2NrZWQiKSxlfSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4ubG9hZE9uY2U9byxuLmxvYWQ9aTt2YXIgYT1lKDQpLGM9cihhKSx1PWUoMTYpLHM9cih1KSxsPWUoMTkpLGQ9ZSgxMiksZj1lKDkpLHA9ZSgxNCl9LHsxMjoxMiwxNDoxNCwxNjoxNiwxOToxOSw0OjQsOTo5fV0sMTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbygpe3ZhciBlPSJsb2FkZXJzL2NhY2hlL3hociI7cmV0dXJuIGQubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBTdGFydGluZyBYSFIgbG9hZGVyIiksKDAsbC5yZXF1ZXN0KShjLmRlZmF1bHQuQURPTklTX0NMSUVOVF9GRVRDSF9VUkwpLnRoZW4oZnVuY3Rpb24odCl7ZC5sb2dnZXIuZGVidWcoIlsiK2UrIl06IFN1Y2Nlc3NmdWxseSBmZXRjaGVkIGFkb25pcy1jbGllbnQgb3ZlciBYSFIiKTt2YXIgbj17ImFkb25pcy1jbGllbnQtdmVyc2lvbiI6bnVsbH07dHJ5e25bImNhY2hlLWNvbnRyb2wiXT10LmdldFJlc3BvbnNlSGVhZGVyKCJjYWNoZS1jb250cm9sIil9Y2F0Y2goZSl7fXJldHVybntzb3VyY2U6dC5yZXNwb25zZVRleHQsbWV0YTpufX0pLmNhdGNoKGZ1bmN0aW9uKHQpe3Rocm93IGQubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBGYWlsZWQgdG8gZmV0Y2ggYWRvbmlzLWNsaWVudCBvdmVyIFhIUiA8Iit0KyI+IiksMD09PXQucmVxLnN0YXR1cz9uZXcgZi5YaHJCbG9ja0Vycm9yOm5ldyBFcnJvcigiVW5leHBlY3RlZCBlcnJvciBwZXJmb3JtaW5nIHN0YXR1cyBjaGVjayByZXF1ZXN0LCBzdGF0dXMtY29kZSA9IDwiK3QucmVxLnN0YXR1cysiPiIpfSl9ZnVuY3Rpb24gaSgpe3JldHVybiBvKCkuY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIGQubG9nZ2VyLmRlYnVnKCJmYWlsZWQgdG8gbG9hZCBhZG9uaXMtY2xpZW50IG92ZXIgaHR0cCIsZSkscy5kZWZhdWx0LnJlcG9ydEV2ZW50KCJib290c3RyYXAuY2xpZW50X2h0dHBfZmV0Y2hfZXJyb3IiKSx7c291cmNlOm51bGwsbWV0YTp7fX19KX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5sb2FkPW8sbi5sb2FkSWdub3JpbmdFcnJvcnM9aTt2YXIgYT1lKDQpLGM9cihhKSx1PWUoMTYpLHM9cih1KSxsPWUoMTkpLGQ9ZSgxMiksZj1lKDkpfSx7MTI6MTIsMTY6MTYsMTk6MTksNDo0LDk6OX1dLDEyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNCksbz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19KHIpLGk9ZSgyNyksYT0oMCxpLmNyZWF0ZSkoe2xldmVsOm8uZGVmYXVsdC5MT0dfTEVWRUx9KTt0LmV4cG9ydHM9e2xvZ2dlcjphLHN1ZXpMb2dnZXI6YX19LHsyNzoyNyw0OjR9XSwxMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiTkVXX1NDUklQVF9FVkVOVCIsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30scj1uZXcgbyh0LHtkZXRhaWw6bn0pO2UuZGlzcGF0Y2hFdmVudChyKX12YXIgbz1lKDIwKTt0LmV4cG9ydHM9cn0sezIwOjIwfV0sMTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSYmMD09PWUubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlamVjdChuKTt0PXR8fDA7dmFyIGk9ZVswXTtyZXR1cm4gZT1lLnNsaWNlKDEpLGkoKS5jYXRjaChmdW5jdGlvbihuKXtyZXR1cm4gbyh0KS50aGVuKGZ1bmN0aW9uKG8pe3JldHVybiByKGUsdCxuKX0pfSl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKGUpe3JldHVybiB0KCl9LGUpfSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4uY2hhaW49cn0se31dLDE1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXthLmRlYnVnKCJpbnNlcmluZyBibG9iIik7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7bi5zcmM9ZSx0JiYobi5pbnRlZ3JpdHk9dCksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuKX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49bmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDt0cnl7bi5vcGVuKCJHRVQiLGUsITApLG4uYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsZnVuY3Rpb24oZSl7ND09PW4ucmVhZHlTdGF0ZSYmMD09PW4uc3RhdHVzJiZpKHQpfSksbi5zZW5kKCl9Y2F0Y2goZSl7YS53YXJuKCJGYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIGlubGluZSBzY3JpcHQiKSxpKHQpfX1mdW5jdGlvbiBpKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3QuaW5uZXJIVE1MPWUsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0KX12YXIgYT1lKDEyKS5sb2dnZXI7dC5leHBvcnRzPXtpbnNlcnRCbG9iU2NyaXB0OnIsdGVzdEJsb2JBbmRJbnNlcnRGYWxsYmFjazpvLGluc2VydElubGluZVNjcmlwdDppfX0sezEyOjEyfV0sMTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1uZXcgWE1MSHR0cFJlcXVlc3Qsbj1bcy5SRVBPUlRJTkdfVVJMLGVdLmpvaW4oIiIpO3Qub3BlbigiR0VUIixuLCEwKSx0LnNlbmQoKX1mdW5jdGlvbiBvKGUpe3MuUkVQT1JUX0VSUk9SUyYmcigiL2Fkb25pc19lcnJvcj9lPSIrZS50b1N0cmluZygpKyImd2Vic2l0ZT0iK3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSl9ZnVuY3Rpb24gaSgpe3JldHVybiBudWxsIT13aW5kb3cuQURPTklTX0JPT1RTVFJBUF9TVEFUUz8hMD09PXdpbmRvdy5BRE9OSVNfQk9PVFNUUkFQX1NUQVRTOk1hdGgucmFuZG9tKCk8cy5SRVBPUlRJTkdfUkFURX1mdW5jdGlvbiBhKGUsdCl7aWYoYyhlKSxpKCkpe3ZhciBuPXt3ZWJzaXRlOndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxrZXk6ZX07bnVsbCE9dCYmKG4ucXVhbnRpdHk9dCkscihbIi9hZG9uaXNfZXZlbnQvP2V2ZW50PSIsSlNPTi5zdHJpbmdpZnkobildLmpvaW4oIiIpKX19ZnVuY3Rpb24gYyhlKXt2YXIgdD17a2V5OmUsdGltZV9tczpNYXRoLnJvdW5kKHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKSksd2Vic2l0ZTp3aW5kb3cubG9jYXRpb24uaG9zdG5hbWV9O2QucHVzaCh0KX1mdW5jdGlvbiB1KCl7bC5kZWZpbmVSZWFkT25seVByb3BlcnR5KCJhZG9uaXNCb290c3RyYXBUaW1pbmciLGQpfXZhciBzPWUoNCksbD1lKDE4KSxkPVtdO3QuZXhwb3J0cz17cmVwb3J0RXJyb3I6byxyZXBvcnRFdmVudDphLHNhdmVUaW1pbmc6dSxzaG91bGRSZXBvcnQ6aX19LHsxODoxOCw0OjR9XSwxNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PS9hbmRyb2lkfGlwaG9uZS9naSxuPS9DaHJvbWVcLyhcUykrIFNhZmFyaVwvKFxTKSskL2dpLHI9L1wpIEdlY2tvXC8oXFMpKyBGaXJlZm94XC8oXFMpKyQvZ2ksbz0vbGlrZSBHZWNrby4/XCkgVmVyc2lvblwvKFxTKSsgU2FmYXJpXC8oXFMpKyQvZ2k7cmV0dXJuLTE9PT1lLnNlYXJjaCh0KSYmKGUuc2VhcmNoKG4pPi0xfHxlLnNlYXJjaChyKT4tMXx8ZS5zZWFyY2gobyk+LTEpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLmRlZmF1bHQ9cn0se31dLDE4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdyxlLHt2YWx1ZTp0LHdyaXRhYmxlOiExfSl9Y2F0Y2goZSl7by53YXJuKCJDYW5ub3QgZGVmaW5lIHJlYWQtb25seSBwcm9wZXJ0eSBvZiB3aW5kb3cgb2JqZWN0OiAiK2UpfX12YXIgbz1lKDEyKS5sb2dnZXIsaT1mdW5jdGlvbihlKXsibG9hZGluZyIhPT1kb2N1bWVudC5yZWFkeVN0YXRlP2UoKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixlKX07dC5leHBvcnRzPXtkZWZpbmVSZWFkT25seVByb3BlcnR5OnIscmVhZHk6aX19LHsxMjoxMn1dLDE5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gaShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gYShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IkdFVCIsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxyPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTp7fTtyZXR1cm4gbmV3IHdpbmRvdy5Qcm9taXNlKGZ1bmN0aW9uKG8saSl7dmFyIGE9bmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDthLm9wZW4odCxlLCEwKTtmb3IodmFyIGMgaW4gcil7dmFyIHU9cltjXTthLnNldFJlcXVlc3RIZWFkZXIoYyx1KX1hLm9ubG9hZD1mdW5jdGlvbigpe2Euc3RhdHVzPj00MDA/aShuZXcgcyhhLCJVbmV4cGVjdGVkIHN0YXR1cyBjb2RlIikpOm8oYSl9LGEub25lcnJvcj1mdW5jdGlvbigpe2kobmV3IHMoYSwiRXJyb3IgZXN0YWJsaXNoaW5nIGNvbm5lY3Rpb24iKSl9LGEuc2VuZChuKX0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLlhoclJlcXVlc3RFcnJvcj12b2lkIDAsbi5yZXF1ZXN0PWE7dmFyIGM9ZSgyMSksdT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19KGMpLHM9bi5YaHJSZXF1ZXN0RXJyb3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe3IodGhpcyx0KTt2YXIgaT1vKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxuKSk7cmV0dXJuIGkucmVxPWUsaX1yZXR1cm4gaSh0LGUpLHR9KHUuZGVmYXVsdCl9LHsyMToyMX1dLDIwOltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKGUpe3ZhciBuPWUuQ3VzdG9tRXZlbnQ7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW5ldyBuKCJjYXQiLHtkZXRhaWw6e2ZvbzoiYmFyIn19KTtyZXR1cm4iY2F0Ij09PWUudHlwZSYmImJhciI9PT1lLmRldGFpbC5mb299Y2F0Y2goZSl7fXJldHVybiExfSgpP246InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmImZ1bmN0aW9uIj09dHlwZW9mIGRvY3VtZW50LmNyZWF0ZUV2ZW50P2Z1bmN0aW9uKGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkN1c3RvbUV2ZW50Iik7cmV0dXJuIHQ/bi5pbml0Q3VzdG9tRXZlbnQoZSx0LmJ1YmJsZXMsdC5jYW5jZWxhYmxlLHQuZGV0YWlsKTpuLmluaXRDdXN0b21FdmVudChlLCExLCExLHZvaWQgMCksbn06ZnVuY3Rpb24oZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCgpO3JldHVybiBuLnR5cGU9ZSx0PyhuLmJ1YmJsZXM9Qm9vbGVhbih0LmJ1YmJsZXMpLG4uY2FuY2VsYWJsZT1Cb29sZWFuKHQuY2FuY2VsYWJsZSksbi5kZXRhaWw9dC5kZXRhaWwpOihuLmJ1YmJsZXM9ITEsbi5jYW5jZWxhYmxlPSExLG4uZGV0YWlsPXZvaWQgMCksbn19KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHt9XSwyMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgYT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIiO3IodGhpcyx0KTt2YXIgbj1vKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxlKSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJtZXNzYWdlIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6ZSx3cml0YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJuYW1lIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6bi5jb25zdHJ1Y3Rvci5uYW1lLHdyaXRhYmxlOiEwfSksRXJyb3IuaGFzT3duUHJvcGVydHkoImNhcHR1cmVTdGFja1RyYWNlIik/KEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKG4sbi5jb25zdHJ1Y3RvciksbyhuKSk6KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJzdGFjayIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOm5ldyBFcnJvcihlKS5zdGFjayx3cml0YWJsZTohMH0pLG4pfXJldHVybiBpKHQsZSksdH0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSx0fShFcnJvcikpO24uZGVmYXVsdD1hLHQuZXhwb3J0cz1uLmRlZmF1bHR9LHt9XSwyMjpbZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbihlLHIpeyJvYmplY3QiPT10eXBlb2YgbiYmdm9pZCAwIT09dD9yKG4pOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyJdLHIpOnIoZS5vcHBlbmhlaW1lcj1lLm9wcGVuaGVpbWVyfHx7fSl9KHRoaXMsZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIHIucmVwbGFjZSgie3tUSVRMRX19IixlLnRpdGxlKX1mdW5jdGlvbiBuKGUpe2UuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTD10KGUpfXZhciByPSc8aGVhZD48bWV0YSBjaGFyc2V0PXV0Zi04PjxtZXRhIG5hbWU9dmlld3BvcnQgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSxtYXhpbXVtLXNjYWxlPTEsdXNlci1zY2FsYWJsZT1ubyI+PHRpdGxlPnt7VElUTEV9fTwvdGl0bGU+PHN0eWxlPmJvZHksaHRtbHtiYWNrZ3JvdW5kOiNlZmVmZWY7Zm9udC1mYW1pbHk6IkhlbHZldGljYSBOZXVlIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtoZWlnaHQ6MTAwJX0jbWFpbi1jb250ZW50e2hlaWdodDoxMDAlfSNtYWluLWNvbnRlbnQ+ZGl2e21heC13aWR0aDo4MDBweDttaW4td2lkdGg6MjAwcHg7bWFyZ2luOjAgYXV0bztwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfTwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9bWFpbi1jb250ZW50PjxkaXY+PGgxPlNvbWV0aGluZyBpbnRlcmZlcmVkIHdpdGggdGhpcyB3ZWJzaXRlIGxvYWRpbmc8L2gxPjxwPlRoaXMgY291bGQgYmUgYSB0ZW1wb3JhcnkgcHJvYmxlbSB3aXRoIHlvdXIgbmV0d29yaywgb3IgZHVlIHRvIHlvdXIgYWRibG9ja2VyPC9wPjxwPlRyeTo8L3A+PHVsPjxsaT5DaGVjayB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24gYW5kIHJlbG9hZCB0aGUgcGFnZTwvbGk+PGxpPklmIHlvdSBhcmUgdXNpbmcgYW4gYWRibG9ja2VyIGRpc2FibGUgaXQgYnkgY2xpY2tpbmcgb24gdGhlIGFkYmxvY2sgaWNvbiBpbiB5b3VyIGJyb3dzZXIgdG9vbGJhcjwvbGk+PGxpPklmIHRoZSBwcm9ibGVtIHBlcnNpc3RzLCBjb25zaWRlciBsZWF2aW5nIGEgbWVzc2FnZSBvbiB0aGUgPGEgaHJlZj1odHRwczovL2ZvcnVtcy5sYW5pay51cy8gdGFyZ2V0PV9CTEFOSz5hZGJsb2NrIHVzZXIgZm9ydW1zPC9hPjwvbGk+PC91bD48L2Rpdj48L2Rpdj48L2JvZHk+JztlLmRpc3BsYXlNZXNzYWdlPXQsZS5yZXBsYWNlQ29udGVudD1uLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pfSx7fV0sMjM6W2Z1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSl7InBlcmZvcm1hbmNlImluIGV8fChlLnBlcmZvcm1hbmNlPXt9KTt2YXIgdD1lLnBlcmZvcm1hbmNlO2UucGVyZm9ybWFuY2Uubm93PXQubm93fHx0Lm1vek5vd3x8dC5tc05vd3x8dC5vTm93fHx0LndlYmtpdE5vd3x8RGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fShzZWxmKX0se31dLDI0OltmdW5jdGlvbihlLHQsbil7dC5leHBvcnRzPVsiY29tIiwibmV0IiwiZnIiLCJjby51ayIsImRlIiwidHYiLCJ0b2RheSIsIm9yZyIsImluZm8iLCJpZSIsImJhIiwiZ2ciXX0se31dLDI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMjYpLG89e307by5ydWxlcz1lKDI0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue3J1bGU6ZSxzdWZmaXg6ZS5yZXBsYWNlKC9eKFwqXC58XCEpLywiIiksd2lsZGNhcmQ6IioiPT09ZS5jaGFyQXQoMCksZXhjZXB0aW9uOiIhIj09PWUuY2hhckF0KDApfX0pLG8uZW5kc1dpdGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4tMSE9PWUuaW5kZXhPZih0LGUubGVuZ3RoLXQubGVuZ3RoKX0sby5maW5kUnVsZT1mdW5jdGlvbihlKXt2YXIgdD1yLnRvQVNDSUkoZSk7cmV0dXJuIG8ucnVsZXMucmVkdWNlKGZ1bmN0aW9uKGUsbil7dmFyIGk9ci50b0FTQ0lJKG4uc3VmZml4KTtyZXR1cm4gby5lbmRzV2l0aCh0LCIuIitpKXx8dD09PWk/bjplfSxudWxsKX0sbi5lcnJvckNvZGVzPXtET01BSU5fVE9PX1NIT1JUOiJEb21haW4gbmFtZSB0b28gc2hvcnQuIixET01BSU5fVE9PX0xPTkc6IkRvbWFpbiBuYW1lIHRvbyBsb25nLiBJdCBzaG91bGQgYmUgbm8gbW9yZSB0aGFuIDI1NSBjaGFycy4iLExBQkVMX1NUQVJUU19XSVRIX0RBU0g6IkRvbWFpbiBuYW1lIGxhYmVsIGNhbiBub3Qgc3RhcnQgd2l0aCBhIGRhc2guIixMQUJFTF9FTkRTX1dJVEhfREFTSDoiRG9tYWluIG5hbWUgbGFiZWwgY2FuIG5vdCBlbmQgd2l0aCBhIGRhc2guIixMQUJFTF9UT09fTE9ORzoiRG9tYWluIG5hbWUgbGFiZWwgc2hvdWxkIGJlIGF0IG1vc3QgNjMgY2hhcnMgbG9uZy4iLExBQkVMX1RPT19TSE9SVDoiRG9tYWluIG5hbWUgbGFiZWwgc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcmFjdGVyIGxvbmcuIixMQUJFTF9JTlZBTElEX0NIQVJTOiJEb21haW4gbmFtZSBsYWJlbCBjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIGRhc2hlcy4ifSxvLnZhbGlkYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXIudG9BU0NJSShlKTtpZih0Lmxlbmd0aDwxKXJldHVybiJET01BSU5fVE9PX1NIT1JUIjtpZih0Lmxlbmd0aD4yNTUpcmV0dXJuIkRPTUFJTl9UT09fTE9ORyI7Zm9yKHZhciBuLG89dC5zcGxpdCgiLiIpLGk9MDtpPG8ubGVuZ3RoOysraSl7aWYobj1vW2ldLCFuLmxlbmd0aClyZXR1cm4iTEFCRUxfVE9PX1NIT1JUIjtpZihuLmxlbmd0aD42MylyZXR1cm4iTEFCRUxfVE9PX0xPTkciO2lmKCItIj09PW4uY2hhckF0KDApKXJldHVybiJMQUJFTF9TVEFSVFNfV0lUSF9EQVNIIjtpZigiLSI9PT1uLmNoYXJBdChuLmxlbmd0aC0xKSlyZXR1cm4iTEFCRUxfRU5EU19XSVRIX0RBU0giO2lmKCEvXlthLXowLTlcLV0rJC8udGVzdChuKSlyZXR1cm4iTEFCRUxfSU5WQUxJRF9DSEFSUyJ9fSxuLnBhcnNlPWZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEb21haW4gbmFtZSBtdXN0IGJlIGEgc3RyaW5nLiIpO3ZhciB0PWUuc2xpY2UoMCkudG9Mb3dlckNhc2UoKTsiLiI9PT10LmNoYXJBdCh0Lmxlbmd0aC0xKSYmKHQ9dC5zbGljZSgwLHQubGVuZ3RoLTEpKTt2YXIgaT1vLnZhbGlkYXRlKHQpO2lmKGkpcmV0dXJue2lucHV0OmUsZXJyb3I6e21lc3NhZ2U6bi5lcnJvckNvZGVzW2ldLGNvZGU6aX19O3ZhciBhPXtpbnB1dDplLHRsZDpudWxsLHNsZDpudWxsLGRvbWFpbjpudWxsLHN1YmRvbWFpbjpudWxsLGxpc3RlZDohMX0sYz10LnNwbGl0KCIuIik7aWYoImxvY2FsIj09PWNbYy5sZW5ndGgtMV0pcmV0dXJuIGE7dmFyIHU9ZnVuY3Rpb24oKXtyZXR1cm4veG4tLS8udGVzdCh0KT8oYS5kb21haW4mJihhLmRvbWFpbj1yLnRvQVNDSUkoYS5kb21haW4pKSxhLnN1YmRvbWFpbiYmKGEuc3ViZG9tYWluPXIudG9BU0NJSShhLnN1YmRvbWFpbikpLGEpOmF9LHM9by5maW5kUnVsZSh0KTtpZighcylyZXR1cm4gYy5sZW5ndGg8Mj9hOihhLnRsZD1jLnBvcCgpLGEuc2xkPWMucG9wKCksYS5kb21haW49W2Euc2xkLGEudGxkXS5qb2luKCIuIiksYy5sZW5ndGgmJihhLnN1YmRvbWFpbj1jLnBvcCgpKSx1KCkpO2EubGlzdGVkPSEwO3ZhciBsPXMuc3VmZml4LnNwbGl0KCIuIiksZD1jLnNsaWNlKDAsYy5sZW5ndGgtbC5sZW5ndGgpO3JldHVybiBzLmV4Y2VwdGlvbiYmZC5wdXNoKGwuc2hpZnQoKSksZC5sZW5ndGg/KHMud2lsZGNhcmQmJmwudW5zaGlmdChkLnBvcCgpKSxkLmxlbmd0aD8oYS50bGQ9bC5qb2luKCIuIiksYS5zbGQ9ZC5wb3AoKSxhLmRvbWFpbj1bYS5zbGQsYS50bGRdLmpvaW4oIi4iKSxkLmxlbmd0aCYmKGEuc3ViZG9tYWluPWQuam9pbigiLiIpKSx1KCkpOnUoKSk6dSgpfSxuLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gZT9uLnBhcnNlKGUpLmRvbWFpbnx8bnVsbDpudWxsfSxuLmlzVmFsaWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wYXJzZShlKTtyZXR1cm4gQm9vbGVhbih0LmRvbWFpbiYmdC5saXN0ZWQpfX0sezI0OjI0LDI2OjI2fV0sMjY6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHIpe2Z1bmN0aW9uIG8oZSl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoaltlXSl9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aCxyPVtdO24tLTspcltuXT10KGVbbl0pO3JldHVybiByfWZ1bmN0aW9uIGEoZSx0KXt2YXIgbj1lLnNwbGl0KCJAIikscj0iIjtyZXR1cm4gbi5sZW5ndGg+MSYmKHI9blswXSsiQCIsZT1uWzFdKSxlPWUucmVwbGFjZShJLCIuIikscitpKGUuc3BsaXQoIi4iKSx0KS5qb2luKCIuIil9ZnVuY3Rpb24gYyhlKXtmb3IodmFyIHQsbixyPVtdLG89MCxpPWUubGVuZ3RoO288aTspdD1lLmNoYXJDb2RlQXQobysrKSx0Pj01NTI5NiYmdDw9NTYzMTkmJm88aT8obj1lLmNoYXJDb2RlQXQobysrKSw1NjMyMD09KDY0NTEyJm4pP3IucHVzaCgoKDEwMjMmdCk8PDEwKSsoMTAyMyZuKSs2NTUzNik6KHIucHVzaCh0KSxvLS0pKTpyLnB1c2godCk7cmV0dXJuIHJ9ZnVuY3Rpb24gdShlKXtyZXR1cm4gaShlLGZ1bmN0aW9uKGUpe3ZhciB0PSIiO3JldHVybiBlPjY1NTM1JiYoZS09NjU1MzYsdCs9SChlPj4+MTAmMTAyM3w1NTI5NiksZT01NjMyMHwxMDIzJmUpLHQrPUgoZSl9KS5qb2luKCIiKX1mdW5jdGlvbiBzKGUpe3JldHVybiBlLTQ4PDEwP2UtMjI6ZS02NTwyNj9lLTY1OmUtOTc8MjY/ZS05NzpFfWZ1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZSsyMis3NSooZTwyNiktKCgwIT10KTw8NSl9ZnVuY3Rpb24gZChlLHQsbil7dmFyIHI9MDtmb3IoZT1uP2soZS9SKTplPj4xLGUrPWsoZS90KTtlPk4qTz4+MTtyKz1FKWU9ayhlL04pO3JldHVybiBrKHIrKE4rMSkqZS8oZStUKSl9ZnVuY3Rpb24gZihlKXt2YXIgdCxuLHIsaSxhLGMsbCxmLHAsaCxnPVtdLHY9ZS5sZW5ndGgsdz0wLGI9QSxfPUM7Zm9yKG49ZS5sYXN0SW5kZXhPZihMKSxuPDAmJihuPTApLHI9MDtyPG47KytyKWUuY2hhckNvZGVBdChyKT49MTI4JiZvKCJub3QtYmFzaWMiKSxnLnB1c2goZS5jaGFyQ29kZUF0KHIpKTtmb3IoaT1uPjA/bisxOjA7aTx2Oyl7Zm9yKGE9dyxjPTEsbD1FO2k+PXYmJm8oImludmFsaWQtaW5wdXQiKSxmPXMoZS5jaGFyQ29kZUF0KGkrKykpLChmPj1FfHxmPmsoKHktdykvYykpJiZvKCJvdmVyZmxvdyIpLHcrPWYqYyxwPWw8PV8/UzpsPj1fK08/TzpsLV8sIShmPHApO2wrPUUpaD1FLXAsYz5rKHkvaCkmJm8oIm92ZXJmbG93IiksYyo9aDt0PWcubGVuZ3RoKzEsXz1kKHctYSx0LDA9PWEpLGsody90KT55LWImJm8oIm92ZXJmbG93IiksYis9ayh3L3QpLHclPXQsZy5zcGxpY2UodysrLDAsYil9cmV0dXJuIHUoZyl9ZnVuY3Rpb24gcChlKXt2YXIgdCxuLHIsaSxhLHUscyxmLHAsaCxnLHYsdyxiLF8sbT1bXTtmb3IoZT1jKGUpLHY9ZS5sZW5ndGgsdD1BLG49MCxhPUMsdT0wO3U8djsrK3UpKGc9ZVt1XSk8MTI4JiZtLnB1c2goSChnKSk7Zm9yKHI9aT1tLmxlbmd0aCxpJiZtLnB1c2goTCk7cjx2Oyl7Zm9yKHM9eSx1PTA7dTx2OysrdSkoZz1lW3VdKT49dCYmZzxzJiYocz1nKTtmb3Iodz1yKzEscy10PmsoKHktbikvdykmJm8oIm92ZXJmbG93Iiksbis9KHMtdCkqdyx0PXMsdT0wO3U8djsrK3UpaWYoZz1lW3VdLGc8dCYmKytuPnkmJm8oIm92ZXJmbG93IiksZz09dCl7Zm9yKGY9bixwPUU7aD1wPD1hP1M6cD49YStPP086cC1hLCEoZjxoKTtwKz1FKV89Zi1oLGI9RS1oLG0ucHVzaChIKGwoaCtfJWIsMCkpKSxmPWsoXy9iKTttLnB1c2goSChsKGYsMCkpKSxhPWQobix3LHI9PWkpLG49MCwrK3J9KytuLCsrdH1yZXR1cm4gbS5qb2luKCIiKX1mdW5jdGlvbiBoKGUpe3JldHVybiBhKGUsZnVuY3Rpb24oZSl7cmV0dXJuIFAudGVzdChlKT9mKGUuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSk6ZX0pfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIGEoZSxmdW5jdGlvbihlKXtyZXR1cm4geC50ZXN0KGUpPyJ4bi0tIitwKGUpOmV9KX12YXIgdj0ib2JqZWN0Ij09dHlwZW9mIG4mJm4mJiFuLm5vZGVUeXBlJiZuLHc9Im9iamVjdCI9PXR5cGVvZiB0JiZ0JiYhdC5ub2RlVHlwZSYmdCxiPSJvYmplY3QiPT10eXBlb2YgZSYmZTtiLmdsb2JhbCE9PWImJmIud2luZG93IT09YiYmYi5zZWxmIT09Ynx8KHI9Yik7dmFyIF8sbSx5PTIxNDc0ODM2NDcsRT0zNixTPTEsTz0yNixUPTM4LFI9NzAwLEM9NzIsQT0xMjgsTD0iLSIsUD0vXnhuLS0vLHg9L1teXHgyMC1ceDdFXS8sST0vW1x4MkVcdTMwMDJcdUZGMEVcdUZGNjFdL2csaj17b3ZlcmZsb3c6Ik92ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzIiwibm90LWJhc2ljIjoiSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KSIsImludmFsaWQtaW5wdXQiOiJJbnZhbGlkIGlucHV0In0sTj1FLVMsaz1NYXRoLmZsb29yLEg9U3RyaW5nLmZyb21DaGFyQ29kZTtpZihfPXt2ZXJzaW9uOiIxLjQuMSIsdWNzMjp7ZGVjb2RlOmMsZW5jb2RlOnV9LGRlY29kZTpmLGVuY29kZTpwLHRvQVNDSUk6Zyx0b1VuaWNvZGU6aH0sdiYmdylpZih0LmV4cG9ydHM9PXYpdy5leHBvcnRzPV87ZWxzZSBmb3IobSBpbiBfKV8uaGFzT3duUHJvcGVydHkobSkmJih2W21dPV9bbV0pO2Vsc2Ugci5wdW55Y29kZT1ffSh0aGlzKX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDI3OltmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUscil7Im9iamVjdCI9PXR5cGVvZiBuJiZ2b2lkIDAhPT10P3Iobik6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0scik6cihlLnVsb2c9ZS51bG9nfHx7fSl9KHRoaXMsZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShjb25zb2xlKTtbImFzc2VydCIsInRyYWNlIiwiZGVidWciLCJsb2ciLCJpbmZvIiwid2FybiIsImVycm9yIl0uZm9yRWFjaChmdW5jdGlvbihuKXtlW25dPXRbbl19KX1mdW5jdGlvbiBuKGUsbil7dmFyIHI9aVtuXTt2b2lkIDAhPT1yJiYodChlKSxyPjAmJihlLmFzc2VydD1mdW5jdGlvbigpe30pLHI+NSYmKGUudHJhY2U9ZnVuY3Rpb24oKXt9KSxyPjEwJiYoZS5kZWJ1Zz1mdW5jdGlvbigpe30pLHI+MjAmJihlLmxvZz1mdW5jdGlvbigpe30pLHI+MzAmJihlLmluZm89ZnVuY3Rpb24oKXt9KSxyPjQwJiYoZS53YXJuPWZ1bmN0aW9uKCl7fSkscj41MCYmKGUuZXJyb3I9ZnVuY3Rpb24oKXt9KSl9ZnVuY3Rpb24gcihlLHQpe3Q9dHx8e30sbihlLHQubGV2ZWx8fCJkZWJ1ZyIpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShjb25zb2xlKTtyZXR1cm4gcih0LGUpLHR9dmFyIGk9e2FsbDowLHRyYWNlOjUsZGVidWc6MTAsbG9nOjIwLGluZm86MzAsd2Fybjo0MCxlcnJvcjo1MCxub25lOjFlM30sYT1vKCk7ZS5MRVZFTFM9aSxlLnNldExldmVsPW4sZS5jb25maWd1cmU9cixlLmNyZWF0ZT1vLGUubG9nZ2VyPWEsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSl9LHt9XX0se30sWzFdKTs="));</script>

<script>
  if(!window.cnxCommonUtils) {
    window.cnxCommonUtils = {
      getHref: function() {
        return document.location.href;
      }
    }
  }
</script>
<script async='async' src='https://cdn.connatix.com/min/connatix.handler.dfp.min.js'></script>
</body>
</html>
