/*! For license information please see main.5e19d5c8.js.LICENSE.txt */ (()=>{"use strict";var e,t,r,n={227:(e,t,r)=>{var n=r(7294),a=r(745),i=(0,n.createContext)(),o=r(9655),s=r(9250),l=r(5697),u=r.n(l),c=r(6574),f=r(6501),d=r(5725),m=r(3584),p=r(2658),h=r(9062);function g(e){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(e)}function y(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}(o);try{for(l.s();!(n=l.n()).done;){var u=n.value;u?"string"==typeof u?s.appendChild(a.createTextNode(u)):s.appendChild(u):s.appendChild(a.createTextNode(""))}}catch(e){l.e(e)}finally{l.f()}return s}},{key:"constructXMLDocument",value:function(e,t,r,n,a){var i=document.implementation.createDocument("http://www.srspharmacy.com/XML/PatientRefillRequest","PatientRefillRequest",null),o=i.documentElement;return o.appendChild(this.entity(i,"To",this.state.tag)),o.appendChild(this.entity(i,"From","srsrfl")),o.appendChild(this.entity(i,"Auth",this.state.hash)),o.appendChild(this.entity(i,"SentTime",(new Date).toISOString())),o.appendChild(this.entity(i,"MessageID",(new Date).getTime().toString())),o.appendChild(this.entity(i,"RxNumbers",this.entity(i,"RxNumber",this.state.rxNumber))),o.appendChild(this.entity(i,"Contact",this.entity(i,"LastName",e),this.entity(i,"FirstName",t),this.entity(i,"Phone",r),this.entity(i,"Email",n))),o.appendChild(this.entity(i,"Comment",a)),i}},{key:"load",value:function(){var e=this,t={tag:this.getStoreNumber(),rx_number:this.getRxNumber(),auth:this.getHash()};O({method:"get",endpoint:"query",params:t}).then((function(t){var r=JSON.parse(t.data);e.setState({store_name:r.name,logo:r.logo,store_address:r.address1,store_address_two:r.address2,city:r.city,state:r.state,zip:r.zip,pharmacy_phone:r.phone,store_uuid:r.store_uuid,loaded:!0,register_enabled:r.srsrfl_register,showForm:"Y"==r.srsrfl_register,patient_user:!!(r.users&&r.users.length>0)}),r.patient_uuid&&e.context.setPatient(r.patient_uuid)})).catch((function(t){var r;console.log(t);var n=null!=t&&null!==(r=t.response)&&void 0!==r&&r.data?JSON.parse(t.response.data):"";if(n)if(n.redirect)e.setState({redirect:!0,loaded:!0});else{var a=n.message;e.setState({errors:C(a),loaded:!0})}else e.setState({errors:"Something unexpected happened",loaded:!0})}))}},{key:"componentDidMount",value:function(){this.load()}},{key:"componentDidUpdate",value:function(){this.state.loaded||this.load()}},{key:"requestRefill",value:function(){var e=this,t=''+(new XMLSerializer).serializeToString(this.constructXMLDocument());O({method:"post",endpoint:"submit",headers:{"Content-Type":"text/xml"},data:t}).then((function(t){e.setState({requested:"Refill requested successfully.",showRegisterButton:"O"==e.state.register_enabled})})).catch((function(t){console.log(t),e.setState({errors:C(t),loaded:!0})}))}},{key:"render",value:function(){var e=this,t=n.createElement(A,null);if(this.state.loaded)if(this.state.redirect){var r=this.getStoreNumber();window.location.href="webrefillform/"+r}else if(this.state.errors){var a="";"Invalid data format"==this.state.errors||"Unexpected value provide"==this.state.errors?a="Missing or invalid store tag in request":"Not enough parameters supplied in request"==this.state.errors||"Unexpected/Missing query string supplied"==this.state.errors?a="Missing store tag or Rx number in query string":"Invalid data supplied in the request"==this.state.errors&&(a="Invalid hash given in the query string");var i={message:a||this.state.errors};t=x(i)}else this.state.patient_user?window.location.href="portal.html?store_uuid="+this.state.store_uuid+"#/":t=n.createElement(d.ZP,null,n.createElement(L.Z,{position:"static"},n.createElement(W.Z,null,this.state.logo?n.createElement("img",{src:this.state.logo,style:{margin:"5px",borderRadius:"5px",height:"5rem"}}):n.createElement(p.Z,null,this.state.store_name))),n.createElement(d.ZP,{container:!0,justifyContent:"center"},n.createElement(d.ZP,{item:!0},n.createElement(m.Z,null,n.createElement(p.Z,{variant:"h6"},"Refill Request for Rx# ",this.state.rxNumber)))),n.createElement("br",null),n.createElement(d.ZP,{container:!0,direction:"column",justifyContent:"space-evenly",alignItems:"center",spacing:2},n.createElement(d.ZP,{item:!0},this.state.requested?n.createElement(c.Z,{maxWidth:"lg"},n.createElement(f.Z,{square:!1,elevation:0,variant:"outlined",sx:{color:"green",py:"0.5rem",px:"1rem"}},n.createElement(p.Z,{variant:"h5",align:"center"}," ",this.state.requested))):n.createElement(n.Fragment,null)),n.createElement(d.ZP,{item:!0},this.state.showForm&&"N"!==this.state.register_enabled?n.createElement(D,{store_uuid:this.state.store_uuid,store_name:this.state.store_name,register_enabled:this.state.register_enabled}):n.createElement(n.Fragment,null)),n.createElement(d.ZP,{item:!0},this.state.showForm||this.state.showRegisterButton?n.createElement(n.Fragment,null):n.createElement("div",null,n.createElement(E.Z,{variant:"contained",color:"primary",size:"large",disabled:this.state.disable_button,onClick:function(t){t.stopPropagation(),t.preventDefault(),e.requestRefill(t),e.setState({disable_button:!0})}},"Request Refill"),n.createElement("br",null),n.createElement("br",null),n.createElement("br",null),n.createElement("br",null))),this.state.showRegisterButton?n.createElement("div",null,n.createElement(d.ZP,{container:!0,direction:"column",alignItems:"center",width:"100%"},n.createElement(d.ZP,{item:!0},n.createElement(p.Z,{sx:{textAlign:"center",margin:"2rem"}},"Optional: To make this process easier next time, press Continue to begin registering for ",this.state.store_name,"'s Patient Portal.")),n.createElement(d.ZP,{item:!0},n.createElement(E.Z,{variant:"contained",color:"primary",size:"large",onClick:function(t){t.stopPropagation(),t.preventDefault(),e.setState({showRegisterButton:!1,showForm:!0})}},"Continue"))),n.createElement("br",null)):n.createElement(n.Fragment,null)),n.createElement(d.ZP,{container:!0,direction:"row",justifyContent:"space-around",alignItems:"center"},n.createElement(d.ZP,{item:!0},n.createElement(E.Z,{variant:"outlined",size:"large",href:"/m/"+this.state.tag},"Mobile Site")),n.createElement(d.ZP,{item:!0},n.createElement(E.Z,{href:"tel://+1"+this.state.pharmacy_phone.replace(/[^+\d]/g,""),variant:"outlined",size:"large"},"Call Pharmacy"))),n.createElement("hr",null),n.createElement(d.ZP,{container:!0,direction:"column",justifyContent:"flex-end",alignItems:"center"},n.createElement(p.Z,null,this.state.store_name),n.createElement(p.Z,null,this.state.store_address),n.createElement(p.Z,null,this.state.city,", ",this.state.state," ",this.state.zip),n.createElement(p.Z,null,this.state.pharmacy_phone)));else t=n.createElement(A,null);return n.createElement("div",null,t)}}],r&&Q(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),s}(n.Component);Y(J,"propTypes",{prescription:u().object,setRefillResponse:u().func,themeMode:u().string.isRequired}),Y(J,"contextType",i);const K=J;var H=r(9617),$=r(2233),ee=r(6720);function te(e){return te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},te(e)}function re(){re=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function u(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,r){return e[t]=r}}function c(e,t,r,n){var i=t&&t.prototype instanceof y?t:y,o=Object.create(i.prototype),s=new j(n||[]);return a(o,"_invoke",{value:O(e,r,s)}),o}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=c;var d="suspendedStart",m="suspendedYield",p="executing",h="completed",g={};function y(){}function v(){}function b(){}var w={};u(w,o,(function(){return this}));var A=Object.getPrototypeOf,E=A&&A(A(I([])));E&&E!==r&&n.call(E,o)&&(w=E);var P=b.prototype=y.prototype=Object.create(w);function x(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function r(a,i,o,s){var l=f(e[a],e,i);if("throw"!==l.type){var u=l.arg,c=u.value;return c&&"object"==te(c)&&n.call(c,"__await")?t.resolve(c.__await).then((function(e){r("next",e,o,s)}),(function(e){r("throw",e,o,s)})):t.resolve(c).then((function(e){u.value=e,o(u)}),(function(e){return r("throw",e,o,s)}))}s(l.arg)}var i;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return i=i?i.then(a,a):a()}})}function O(t,r,n){var a=d;return function(i,o){if(a===p)throw new Error("Generator is already running");if(a===h){if("throw"===i)throw o;return{value:e,done:!0}}for(n.method=i,n.arg=o;;){var s=n.delegate;if(s){var l=C(s,n);if(l){if(l===g)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===d)throw a=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=p;var u=f(t,r,n);if("normal"===u.type){if(a=n.done?h:m,u.arg===g)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(a=h,n.method="throw",n.arg=u.arg)}}}function C(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,C(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=f(a,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,g;var o=i.arg;return o?o.done?(r[t.resultName]=o.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,g):o:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,g)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function Z(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function I(t){if(t||""===t){var r=t[o];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,i=function r(){for(;++a=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),u=n.call(o,"finallyLoc");if(l&&u){if(this.prev=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),Z(r),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;Z(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:I(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),g}},t}function ne(e,t,r,n,a,i,o){try{var s=e[i](o),l=s.value}catch(e){return void r(e)}s.done?t(l):Promise.resolve(l).then(n,a)}function ae(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){ne(i,n,a,o,s,"next",e)}function s(e){ne(i,n,a,o,s,"throw",e)}o(void 0)}))}}function ie(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null;e||(e=window.matchMedia("(prefers-color-scheme: dark)"));var t=e.matches?"dark":"light";this.setState({theme:t})}},{key:"setPatient",value:function(e){localStorage.setItem("patient_uuid",e)}},{key:"setUsername",value:function(e){localStorage.setItem("username",e)}},{key:"getUsername",value:function(){try{return localStorage.getItem("username")}catch(e){return null}}},{key:"getPatient",value:function(){try{return localStorage.getItem("patient_uuid")}catch(e){return null}}},{key:"setTokens",value:function(e){localStorage.setItem("tokens",JSON.stringify(e)),this.setState({authTokens:e})}},{key:"setPassword",value:function(e){localStorage.setItem("password",e)}},{key:"getPassword",value:function(){try{return localStorage.getItem("password")}catch(e){return null}}},{key:"setUserUUID",value:function(e){localStorage.setItem("user_uuid",e)}},{key:"getUserUUID",value:function(){try{return localStorage.getItem("user_uuid")}catch(e){return null}}},{key:"setFirstName",value:function(e){localStorage.setItem("first_name",e)}},{key:"getFirstName",value:function(){try{return localStorage.getItem("first_name")}catch(e){return null}}},{key:"setLastName",value:function(e){localStorage.setItem("last_name",e)}},{key:"getLastName",value:function(){try{return localStorage.getItem("last_name")}catch(e){return null}}},{key:"removeItem",value:function(e){localStorage.removeItem(e)}},{key:"render",value:function(){var e={authTokens:this.state.authTokens,setUsername:this.setUsername,getUsername:this.getUsername,setPatient:this.setPatient,getPatient:this.getPatient,setPassword:this.setPassword,getPassword:this.getPassword,setUserUUID:this.setUserUUID,getUserUUID:this.getUserUUID,setFirstName:this.setFirstName,getFirstName:this.getFirstName,setLastName:this.setLastName,getLastName:this.getLastName,removeItem:this.removeItem,setAuthTokens:this.setTokens};return n.createElement(i.Provider,{value:e},n.createElement($.Z,{theme:"dark"===this.state.theme?this.themeDark:this.themeLight},n.createElement(ee.ZP,null),n.createElement("div",null,n.createElement(o.UT,null,n.createElement(s.Z5,null,n.createElement(s.AW,{path:"/",element:n.createElement(K,{themeMode:this.state.theme})}))))))}}],r&&ie(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),d}(n.Component);a.createRoot(document.getElementById("container")).render(n.createElement(n.StrictMode,null,n.createElement(pe,null)))}},a={};function i(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return n[e](r,r.exports,i),r.exports}i.m=n,e=[],i.O=(t,r,n,a)=>{if(!r){var o=1/0;for(c=0;c=a)&&Object.keys(i.O).every((e=>i.O[e](r[l])))?r.splice(l--,1):(s=!1,a0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[r,n,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(e,n){if(1&n&&(e=this(e)),8&n)return e;if("object"==typeof e&&e){if(4&n&&e.__esModule)return e;if(16&n&&"function"==typeof e.then)return e}var a=Object.create(null);i.r(a);var o={};t=t||[null,r({}),r([]),r(r)];for(var s=2&n&&e;"object"==typeof s&&!~t.indexOf(s);s=r(s))Object.getOwnPropertyNames(s).forEach((t=>o[t]=()=>e[t]));return o.default=()=>e,i.d(a,o),a},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={179:0};i.O.j=t=>0===e[t];var t=(t,r)=>{var n,a,[o,s,l]=r,u=0;if(o.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(l)var c=l(i)}for(t&&t(r);ui(227)));o=i.O(o)})(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFVeUIsR0FIVGxCLEVBQVVxQixFQUFhQyxHQUFXblksRUFHaEI4TCxFQUFJLEVBQzNCLEdBQUcrSyxFQUFTdUIsTUFBTWhULEdBQWdDLElBQXhCMFMsRUFBZ0IxUyxLQUFhLENBQ3RELElBQUlrUixLQUFZNEIsRUFDWjdCLEVBQW9CekssRUFBRXNNLEVBQWE1QixLQUNyQ0QsRUFBb0JNLEVBQUVMLEdBQVk0QixFQUFZNUIsSUFHaEQsR0FBRzZCLEVBQVMsSUFBSTFFLEVBQVMwRSxFQUFROUIsRUFDbEMsQ0FFQSxJQURHNEIsR0FBNEJBLEVBQTJCalksR0FDckQ4TCxFQUFJK0ssRUFBU3BXLE9BQVFxTCxJQUN6QmlNLEVBQVVsQixFQUFTL0ssR0FDaEJ1SyxFQUFvQnpLLEVBQUVrTSxFQUFpQkMsSUFBWUQsRUFBZ0JDLElBQ3JFRCxFQUFnQkMsR0FBUyxLQUUxQkQsRUFBZ0JDLEdBQVcsRUFFNUIsT0FBTzFCLEVBQW9CTyxFQUFFbkQsRUFBTyxFQUdqQzRFLEVBQXFCcEgsS0FBK0IseUJBQUlBLEtBQStCLDBCQUFLLEdBQ2hHb0gsRUFBbUIxSyxRQUFRcUssRUFBcUJwVixLQUFLLEtBQU0sSUFDM0R5VixFQUFtQm5KLEtBQU84SSxFQUFxQnBWLEtBQUssS0FBTXlWLEVBQW1CbkosS0FBS3RNLEtBQUt5VixRQzdDdkYsSUFBSUMsRUFBc0JqQyxFQUFvQk8sT0FBRTFULEVBQVcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxNQUFNLElBQU9tVCxFQUFvQixPQUM5SGlDLEVBQXNCakMsRUFBb0JPLEVBQUUwQiIsInNvdXJjZXMiOlsid2VicGFjazovL3Nyc3JmbC1yZWFjdC93ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC93ZWJwYWNrL3J1bnRpbWUvY3JlYXRlIGZha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9zcmMvY29udGV4dC9jb250ZXh0LmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uLi8uLi9saWIvbG9hZGluZy5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi4vLi4vbGliL2Vycm9yLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uLi8uLi9pbWcvTG9hZGluZ0NhcHN1bGUucG5nIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uLi8uLi9saWIvYXBpQ2FsbC5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi4vLi4vbGliL2dldEVycm9yTWVzc2FnZS5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9zcmMvY29tcG9uZW50cy9SZWdpc3RyYXRpb25Gb3JtLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL3NyYy9wYWdlcy9Ib21lLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL3NyYy9BcHAuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vc3JjL2luZGV4LmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3Qvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3Qvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3Qvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3Qvd2VicGFjay9ydW50aW1lL2pzb25wIGNodW5rIGxvYWRpbmciLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0L3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVmZXJyZWQgPSBbXTtcbl9fd2VicGFja19yZXF1aXJlX18uTyA9IChyZXN1bHQsIGNodW5rSWRzLCBmbiwgcHJpb3JpdHkpID0+IHtcblx0aWYoY2h1bmtJZHMpIHtcblx0XHRwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG5cdFx0Zm9yKHZhciBpID0gZGVmZXJyZWQubGVuZ3RoOyBpID4gMCAmJiBkZWZlcnJlZFtpIC0gMV1bMl0gPiBwcmlvcml0eTsgaS0tKSBkZWZlcnJlZFtpXSA9IGRlZmVycmVkW2kgLSAxXTtcblx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcblx0XHRyZXR1cm47XG5cdH1cblx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGRlZmVycmVkLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIFtjaHVua0lkcywgZm4sIHByaW9yaXR5XSA9IGRlZmVycmVkW2ldO1xuXHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgY2h1bmtJZHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdGlmICgocHJpb3JpdHkgJiAxID09PSAwIHx8IG5vdEZ1bGZpbGxlZCA+PSBwcmlvcml0eSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoa2V5KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5PW2tleV0oY2h1bmtJZHNbal0pKSkpIHtcblx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmdWxmaWxsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihmdWxmaWxsZWQpIHtcblx0XHRcdGRlZmVycmVkLnNwbGljZShpLS0sIDEpXG5cdFx0XHR2YXIgciA9IGZuKCk7XG5cdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTsiLCJ2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgPyAob2JqKSA9PiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpIDogKG9iaikgPT4gKG9iai5fX3Byb3RvX18pO1xudmFyIGxlYWZQcm90b3R5cGVzO1xuLy8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLy8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vLyBtb2RlICYgMTY6IHJldHVybiB2YWx1ZSB3aGVuIGl0J3MgUHJvbWlzZS1saWtlXG4vLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuXHRpZihtb2RlICYgMSkgdmFsdWUgPSB0aGlzKHZhbHVlKTtcblx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcblx0aWYodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSkge1xuXHRcdGlmKChtb2RlICYgNCkgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuXHRcdGlmKChtb2RlICYgMTYpICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSAnZnVuY3Rpb24nKSByZXR1cm4gdmFsdWU7XG5cdH1cblx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcblx0dmFyIGRlZiA9IHt9O1xuXHRsZWFmUHJvdG90eXBlcyA9IGxlYWZQcm90b3R5cGVzIHx8IFtudWxsLCBnZXRQcm90byh7fSksIGdldFByb3RvKFtdKSwgZ2V0UHJvdG8oZ2V0UHJvdG8pXTtcblx0Zm9yKHZhciBjdXJyZW50ID0gbW9kZSAmIDIgJiYgdmFsdWU7IHR5cGVvZiBjdXJyZW50ID09ICdvYmplY3QnICYmICF+bGVhZlByb3RvdHlwZXMuaW5kZXhPZihjdXJyZW50KTsgY3VycmVudCA9IGdldFByb3RvKGN1cnJlbnQpKSB7XG5cdFx0T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY3VycmVudCkuZm9yRWFjaCgoa2V5KSA9PiAoZGVmW2tleV0gPSAoKSA9PiAodmFsdWVba2V5XSkpKTtcblx0fVxuXHRkZWZbJ2RlZmF1bHQnXSA9ICgpID0+ICh2YWx1ZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChucywgZGVmKTtcblx0cmV0dXJuIG5zO1xufTsiLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgY29uc3QgQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUF1dGgoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KENvbnRleHQpO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2lyY3VsYXJQcm9ncmVzcyxcbiAgR3JpZCxcbiAgUGFwZXIsXG4gIFR5cG9ncmFwaHksXG4gIENvbnRhaW5lcixcbn0gZnJvbSAnQG11aS9tYXRlcmlhbCc7XG5jbGFzcyBMb2FkaW5nIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgYm9keSA9IChcbiAgICAgIDxDb250YWluZXIgbWF4V2lkdGg9J2xnJz5cbiAgICAgICAgPFBhcGVyXG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIHBhZGRpbmc6ICc1cHgnLFxuICAgICAgICAgICAgbWFyZ2luVG9wOiAnMTBweCcsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfT5cbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIGRpc3BsYXk9XCJmbGV4XCJcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudD1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A6IDEwMCxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PSdoMyc+TG9hZGluZy4uLjwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0+XG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBkaXNwbGF5PVwiZmxleFwiXG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tOiAxMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENpcmN1bGFyUHJvZ3Jlc3MgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0+XG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBkaXNwbGF5PVwiZmxleFwiXG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tOiAxMDAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9J3N1YnRpdGxlMSc+VGhpcyBtYXkgdGFrZSBhIG1vbWVudC48L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQ29udGFpbmVyPlxuICAgICk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2FkaW5nO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFByb3BUeXBlcyB9IGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgR3JpZCwgVHlwb2dyYXBoeSwgQnV0dG9uLCBDb250YWluZXIgfSBmcm9tICdAbXVpL21hdGVyaWFsJztcbmltcG9ydCBMb2FkaW5nQ2Fwc3VsZUltZyBmcm9tICcuLi9pbWcvTG9hZGluZ0NhcHN1bGUucG5nJztcblxuY29uc3QgRXJyb3IgPSAocHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIG1heFdpZHRoPSdsZyc+XG4gICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPSdjb2x1bW4nIGp1c3RpZnlDb250ZW50PSdjZW50ZXInIGFsaWduSXRlbXM9J2NlbnRlcic+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPGltZyBzcmM9e0xvYWRpbmdDYXBzdWxlSW1nfSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD0naDYnPlxuICAgICAgICAgICAgRXJyb3I6IHtwcm9wcy5tZXNzYWdlfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIHsgcHJvcHMucmV0dXJuVG9cbiAgICAgICAgICAgICYmIChcbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9J2NvbnRhaW5lZCdcbiAgICAgICAgICAgICAgICB3aWR0aD0nNTAlJ1xuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgcHJvcHMucmV0dXJuVG8oKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEJhY2tcbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5FcnJvci5wcm9wVHlwZXMgPSB7XG4gIG1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgcmV0dXJuVG86IFByb3BUeXBlcy5mdW5jLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXJyb3I7XG4iLCJleHBvcnQgZGVmYXVsdCBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDSkNBWUFBQURrTVRBREFBQUt4bWxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFTSW1WbHdkWVUxa1dnTzk3TDczUUFoR1FFbm9UcEZjcG9ZY3VIV3lFSkpCUVlrd0lLalpVQmtkd0xLaElVd1FjRkZGd0xJQ01CYkZnUlZFQit3UVpWTlJ4c0NBcUt2dUFKY3pzZnJ2NzdYbmZ5ZjNmZWVlZWMrNzk3djIrRXdDb0JMWklsQUVyQVpBcHpCSkhCbmd6NGhNU0dmamZBUXdRb0F3QXdMQTVFaEV6SWlJRVpUQTEvbDArOWdCb2ZMeGpPUjdyMzcvL1YxSG04aVFjQUtBSWxKTzVFazRteXNkUmZjTVJpYk1BUVBhaGRvT2xXYUp4dm95eXFoZ3RFT1ZINDV3NnlVUGpuRHpCR015RVQzU2tEOHJxQUJBb2JMWTRGUUNLSVdwblpITlMwVGdVWDVTdGhWeUJFR1gwSFhodytHd3V5bWhlTUNzemMvRTR5MUEyVGY1TG5OUy94VXlXeDJTelUrVTh1WllKSWZnS0pLSU05dkwvY3p2K3QyUm1TS2R5R0tOSzRZc0RJOUdSanU3WnZmVEZ3WElXSm9lRlQ3R0FPK0Uvd1h4cFlNd1VjeVEraVZQTVpmc0d5K2RtaElWTWNZckFueVdQazhXS25tS2V4QzlxaXNXTEkrVzVVc1ErekNsbWk2ZnpTdE5qNUhZK2p5V1BuOE9QanB2aWJFRnMyQlJMMHFPQ3AzMTg1SGF4TkZKZVAwOFk0RDJkMTErKzlrekpYOVlyWU1ublp2R2pBK1ZyWjAvWHp4TXlwMk5LNHVXMWNYbStmdE0rTVhKL1VaYTNQSmNvSTBMdXo4c0lrTnNsMlZIeXVWbm9nWnllR3lIZnd6UjJVTVFVQTEvZ0IwTFFod0ZpZ0Myd0J6Ym9ieWdBV2J4bDQyY1UrQ3dXTFJjTFV2bFpEQ1o2eTNnTWxwQmpOWXRoYTIxckRjRDRuWjA4RXUvdlRkeEZpRTZZdG9uUStDN29tVWRxcG0zSm1nQTBvK2RJZ3podE05d1BnR0k4QUUyNUhLazRlOUkyZnAwQUZwQ0FJbEFGR2tBSEdBQlRZSWxXNWdqY2dCZGFjUkFJQjlFZ0FTd0VITUFIbVVBTWxvS1ZZQzNJQjRWZ0s5Z0p5a0FscUFFSHdHRndGRFNEVStBY3VBU3VnVnVnR3p3RU1qQUFYb0VoOEJHTVFoQ0VoNmdRRGRLQWRDRWp5QUt5aFp3aEQ4Z1BDb0Vpb1FRb0NVcUZoSkFVV2dtdGh3cWhJcWdNcW9McW9GK2drOUE1NkFyVUJkMkgrcUJCNkIzMEJVWmdDcXdLYThQRzhHellHV2JDd1hBMHZBQk9oWmZBT1hBZXZCa3VnYXZoUTNBVGZBNitCbmZETXZnVlBJd0FoSXpRRVQzRUVuRkdmSkJ3SkJGSlFjVElhcVFBS1VhcWtRYWtGZWxBN2lBeTVEWHlHWVBEMERBTWpDWEdEUk9JaWNGd01Fc3dxekdiTUdXWUE1Z216QVhNSFV3ZlpnanpIVXZGYW1FdHNLNVlGalllbTRwZGlzM0hGbU5yc1Nld0Y3SGQyQUhzUnh3T1I4ZVo0Snh3Z2JnRVhCcHVCVzRUYmpldUVkZUc2OEwxNDRieGVMd0czZ0x2amcvSHMvRlorSHg4S2Y0US9peitObjRBLzRsQUp1Z1NiQW4raEVTQ2tMQ09VRXc0U0RoRHVFMTRUaGdsS2hHTmlLN0VjQ0tYdUp5NGhiaVAyRXE4U1J3Z2pwS1VTU1lrZDFJMEtZMjBsbFJDYWlCZEpEMGl2U2VUeWZwa0YvSmNzb0NjU3k0aEh5RmZKdmVSUDFOVUtPWVVIOHA4aXBTeW1iS2Ywa2E1VDNsUHBWS05xVjdVUkdvV2RUTzFqbnFlK29UNlNZR21ZS1hBVXVBcXJGRW9WMmhTdUszd1JwR29hS1RJVkZ5b21LTllySGhNOGFiaWF5V2lrckdTanhKYmFiVlN1ZEpKcFY2bFlXV2FzbzF5dUhLbThpYmxnOHBYbEYrbzRGV01WZnhVdUNwNUtqVXE1MVg2YVFqTmdPWkQ0OURXMC9iUkx0SUdWSEdxSnFvczFUVFZRdFhEcXAycVEyb3Fhdlpxc1dyTDFNclZUcXZKNkFqZG1NNmlaOUMzMEkvU2UraGZabWpQWU03Z3pkZzRvMkhHN1JrajZqUFZ2ZFI1NmdYcWplcmQ2bDgwR0JwK0d1a2EyelNhTlI1cllqVE5OZWRxTHRYY28zbFI4L1ZNMVpsdU16a3pDMlllbmZsQUM5WXkxNHJVV3FGVm8zVmRhMWhiUnp0QVc2UmRxbjFlKzdVT1hjZExKMDFuaDg0Wm5VRmRtcTZIcmtCM2grNVozWmNNTlFhVGtjRW9ZVnhnRE9scDZRWHFTZldxOURyMVJ2Vk45R1AwMStrMzZqODJJQms0RzZRWTdEQm9OeGd5MURVTU5WeHBXRy80d0lobzVHekVOOXBsMUdFMFlteGlIR2U4d2JqWitJV0p1Z25MSk1lazN1U1JLZFhVMDNTSmFiWHBYVE9jbWJOWnV0bHVzMXZtc0xtRE9kKzgzUHltQld6aGFDR3cyRzNSTlFzN3kyV1djRmIxckY1TGlpWFRNdHV5M3JMUGltNFZZclhPcXRucXpXekQyWW16dDgzdW1QM2Qyc0U2dzNxZjlVTWJGWnNnbTNVMnJUYnZiTTF0T2JibHRuZnRxSGIrZG12c1d1emUybHZZOCt6MzJOOXpvRG1FT214d2FIZjQ1dWprS0hac2NCeDBNblJLY3FwdzZuVldkWTV3M3VSODJRWHI0dTJ5eHVXVXkyZFhSOWNzMTZPdWY3cFp1cVc3SFhSN01jZGtEbS9PdmpuOTd2cnViUGNxZDVrSHd5UEpZNitIekZQUGsrMVo3Zm5VeThDTDYxWHI5WnhweGt4akhtSys4YmIyRm51ZjhCN3hjZlZaNWRQbWkvZ0crQmI0ZHZxcCtNWDRsZms5OGRmM1QvV3Y5eDhLY0FoWUVkQVdpQTBNRHR3VzJNdlNabkZZZGF5aElLZWdWVUVYZ2luQlVjRmx3VTlEekVQRUlhMmhjR2hRNlBiUVIyRkdZY0t3NW5BUXpncmZIdjQ0d2lSaVNjU3ZjM0Z6SSthV3ozMFdhUk81TXJJamloYTFLT3BnMU1kbzcrZ3QwUTlqVEdPa01lMnhpckh6WSt0aVIrSjg0NHJpWlBHejQxZkZYMHZRVEJBa3RDVGlFMk1UYXhPSDUvbk4yemx2WUw3RC9QejVQUXRNRml4YmNHV2g1c0tNaGFjWEtTNWlMenFXaEUyS1N6cVk5SlVkenE1bUR5ZXpraXVTaHpnK25GMmNWMXd2N2c3dUlNK2RWOFI3bnVLZVVwVHlJdFU5ZFh2cUlOK1RYOHgvTGZBUmxBbmVwZ1dtVmFhTnBJZW43MDhmeTRqTGFNd2taQ1psbmhTcUNOT0ZGeGJyTEY2MnVFdGtJY29YeVphNEx0bTVaRWdjTEs2VlFKSUZrcFlzVmJRNXVpNDFsZjRnN2N2MnlDN1AvclEwZHVteFpjckxoTXV1THpkZnZuSDU4eHovbko5WFlGWndWclN2MUZ1NWRtWGZLdWFxcXRYUTZ1VFY3V3NNMXVTdEdjZ055RDJ3bHJRMmZlMk5kZGJyaXRaOVdCKzN2alZQT3k4M3IvK0hnQi9xOHhYeXhmbTlHOXcyVlA2SStWSHdZK2RHdTQybEc3OFhjQXV1RmxvWEZoZCszY1RaZFBVbm01OUtmaHJibkxLNWM0dmpsajFiY1Z1RlczdTJlVzQ3VUtSY2xGUFV2ejEwZTlNT3hvNkNIUjkyTHRwNXBkaSt1SElYYVpkMGw2d2twS1NsMUxCMGErblhNbjVaZDdsM2VXT0ZWc1hHaXBIZDNOMjM5M2p0YWFqVXJpeXMvTEpYc1BkZVZVQlZVN1Z4ZFhFTnJpYTc1dG0rMkgwZFB6di9YRmVyV1Z0WSsyMi9jTC9zUU9TQkMzVk9kWFVIdFE1dXFZZnJwZldEaCtZZnVuWFk5M0JMZzJWRFZTTzlzZkFJT0NJOTh2S1hwRjk2amdZZmJUL21mS3podU5IeGloTzBFd1ZOVU5QeXBxRm1mck9zSmFHbDYyVFF5ZlpXdDlZVHYxcjl1ditVM3FueTAycW50NXdobmNrN00zWTI1K3h3bTZqdDliblVjLzN0aTlvZm5vOC9mL2ZDM0F1ZEY0TXZYcjdrZitsOEI3UGo3R1gzeTZldXVGNDVlZFg1YXZNMXgydE4xeDJ1bjdqaGNPTkVwMk5uMDAybm15MjNYRzYxZHMzcE9uUGI4L2E1Tzc1M0x0MWwzYjNXSGRiZDFSUFRjNjkzZnEvc0h2ZmVpL3NaOTk4K3lINHcrakQzRWZaUndXT2x4OFZQdEo1VS8yYjJXNlBNVVhhNno3ZnYrdE9vcHcvN09mMnZmcGY4L25VZzd4bjFXZkZ6M2VkMUwyeGZuQnIwSDd6MWN0N0xnVmVpVjZPdjgvOVEvcVBpamVtYjQzOTYvWGw5S0g1bzRLMzQ3ZGk3VGU4MTN1Ly9ZUCtoZlRoaStNbkh6SStqSXdXZk5ENGQrT3o4dWVOTDNKZm5vMHUvNHIrV2ZEUDcxdm85K1B1anNjeXhNUkZieko1b0JSQlU0WlFVQU42aGZRSTFBUURhTFFCSTh5Wjc2Z21CSnY4SFRCRDRUenpaZDArSUl3QTFiUUJFNXdJUWdvNmw2R2lNcXFJWEFCR29SbnNCMk01T3J2OFVTWXFkN1dRc2NqUGFtaFNQamIxSCswZThHUURmZXNmR1Jwdkh4cjdWb3NVK0FLRHQ0MlF2UHk1S2h3RFl1OExCS1N6a3hramJNUGdYK1FmV3lCSVA1OHNrbWdBQUFGWmxXRWxtVFUwQUtnQUFBQWdBQVlkcEFBUUFBQUFCQUFBQUdnQUFBQUFBQTVLR0FBY0FBQUFTQUFBQVJLQUNBQVFBQUFBQkFBQUFnS0FEQUFRQUFBQUJBQUFBaVFBQUFBQkJVME5KU1FBQUFGTmpjbVZsYm5Ob2IzVDduaUh2QUFBQjFtbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05TNDBMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenBsZUdsbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMMlY0YVdZdk1TNHdMeUkrQ2lBZ0lDQWdJQ0FnSUR4bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNHhNamc4TDJWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwVmMyVnlRMjl0YldWdWRENVRZM0psWlc1emFHOTBQQzlsZUdsbU9sVnpaWEpEYjIxdFpXNTBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01UTTNQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ252MXVDVUFBQmJNU1VSQlZIZ0I3VjBKY0JYbmZmOERBaVJ1Y1VuaUVraml4Z1p4T0Jpd3pZMmRPQjdIU1dhYWVveG5QRTJheWJSTzNNNmtTVHNldDA2UFROdWtHWGZxWnBMWWNSTGl4clhiU1JwekdBSEdCekVJaklVdzZPSVE0aFFnY1FrRVFvaitmN3Y3MzkyM2I5L1QyN2ZYMDlQK05VL2Y3cmZmOGYrKzMrODc5cnUyejEwV2lxVFg1a0RmWHB2eUtPRktEa1FFNk9WRWlBZ1FFYUNYNTBBdlQzNVVBMFFFNk9VNTBNdVRIOVVBRVFGNmVRNzA4dVJITlVCRWdGNmVBNzA4K1RsQnB4OER6eTFYMnVsR3h4M0s2ZHVIaGcwZVFFUHkrZ2V0UmhTZmxnT0JFR0JEUlQxVjFweW5UNCszMHZHejE5U28reGdZREJzMGdNb21ES2Y1WmFOb3laeENXbEUrM25nWVhmbWFBMzM4bWd6YXZLZUpmclBqQ0wxLzRLeWFBQlBna2lMRHlyakNzNUZEQjlMakQ1YlFVMnZLcUxoZ3FEaVBUQjl5d0hNQ3ZGdDFobDU2cTVxcWpyUVF4ZUtxcUc5WUdWZDZ1aXhXZHptQVp4NmVSczk5K2Q2b21kQXp5ZHNMendpQXR2MzVWeXZwMTlzYTRqUTBjRFd1RkVlV1c5Z0JkSWorZXNLM0JmbDU5UHo2QmZUSWZST1ZaOUUvNzNMQUV3S2NhTDVHei83N0g2ajY2RVZkTXdOYjQwcDVhTG1GblIzb2VrRGFCUll0Zk91TDk5Q3pUOHl4UG9ydVhlU0Fhd0xVTkYybXovN1ZSa1VGQTF2anl2SkFWelZWMEhVUHVPalRoOWF2blVwL3k3VkJKTjdrZ0t1M2dGTVgydWhQZi9DZVZtazdBMTF4YmZHQ0pNVXRUMkxRemZMTHJRMDBzRjlmK3U2VDVXYnI2RHJOSE5DYjJuVDgvOFhMdStuVStldnNWUU1KaHZ5MEFGSFM4Y01mSXVOWGZ4czNLdkE2K0FCZGZsbzRpbC9ONjg4MjE5RXZ0OVpyVHlMRFRRNmtUWUMvMzdDZjl0V2VOOEFFc0pwNEFib0FEaE5CZ3h3R1FZais3bGY3bFhFRkxjcklTRE1IMGlMQVhnYisxVTIxS2pJS01Hb3BUMWJTQlVBeEZYMmxsR3ZWdkJsMGNXY0dYV0dDaVdqZmYrTkFtc21PdkVrT3BFV0FsLzczVTZWYWw1S3VBd2R3NU1lWGNTQWlWbGVnUytDcStkR2g4L1QyUjAwSU5aSTBjOEF4QVQ0NGVJNCsvTFJaYmM4NVVtdWI3Z1Iwd0JqbjNveXhrcWc0aXhnT3ZmcE8xQmRJRTN2Rm0yTUN2TG56cUdlZzY0ckhZUnhuRVFPNjdvOHZEaHhycGQwOHp4Qkplam5naUFCdDdiZHA0MjYxeW8wcnVZZy9RZlVPT01XOXJtWWN4bkVXMXVCMHI5TDB3SVM4dmZ1ay9peTZjSllEamdpQWlaMFlJTTJBV3pweWZvT3VKRlBqekJ0Y0swV1NYZzQ0SWtCbC9ZVzRVbzVvRVFoK1FZS092b2NhcC9vRzhvZkR6VkFsRW9jNTRJZ0FOU2N1NmNFbkJGMHJsZWEzQVpVYThpQ1dRMXJGb1lkcnJkNlZCNXBYSytqU0JNRE45ayswYVdjOXBPZ2lsUnh3UklCVHpXMzJKVjJ3aGFsTHJLVzV0ZENkYUJkcGdXNE9ucTkvVVJFL0MybU5KN3FQendGSEJEaDMrYWJTQjFDQ01RT2doeHRyNlFoMGs5ZUVKZDNrUnFLVVBnbk12UTNHYktROGo4emtPWkF5QVRvNnU2dzF1Ulp5TENwcGc4NmhRUm5NR1VpTm9FUVFHN3hpWlFZZEZ2Q0gzNDc5WjNBYmlZTWNTSmtBV01CcFNDd3FZWUxlMXhUNXo3WkVnMElHUnFsZHBVeUF2a3dBTE41VXE0SFlqcHcxS2luQmVpZE40NHRVN1lqVVRVazNneTV4UzYxUWZkem9xTXF6eUV5Y0F5a1RBRUZNR0RORUg1eXhCcGtLNkluY0tHOE1Xb0FDSkV3SUZGUitwcEt1UE9CL1ZyY0lwK0tUcUJtUS9FbkZkRVNBcVJPR3hZU1pDRkJ6U1Uva1JrQTNnNWd1NkVwWVdndjFuMi9YeE9nWTNTVFBBVWNFbUZjNlN1K2dBVmhGTE5XN3VXcTN1aEV2WnRCRlBhY2wzUXc2d2tDODhsZDc4b29FRzVuZDVJQWpBbURUaGlKSlFOZmowOXdvUUxHbEU5RE5icVZXVU1LUk1EazhBVnRNUFY2KzJGWVZEUXFaOHlQWnRTTUNsQlVOVldZQzRRa1pMOVc3SG9FQUJKUEZES1JxazdoTnQzT2JESFFKVDh5N0hLZjhmdlRiUTJJZG1kM2tnQ01DSUt3Ly84SWNCWGc5M0F3QlhkWEhVT2FvYkVIVEZZMHU3SExBTVFGV2xZOUQ4VGQrZkdsWGVoR3c4clAwM3UzY1dzT1RhaDJtVmFTVXcxVEZVRWEvNG92dFVUTWdHWlRVZEV5QTJjVWpsQUN0UU9xQTgxUHJlN3JWclJLQWpwYXFueGVnNjBUaUlQLzVmejVWQTQ3K0o4MEJ4d1JBYUY5L2RJWVNxQmwwZllBQUpaN0ZMOUJWb21nVmtJVkUxamliTG1ESmVpVEpjaUF0QXF5ZVAxNnAzcnNGM1F5UXlnc3VwTWFmVmJGRTFic1pkTDJVYStGWlFWZkMxSnFkYlFmT1dhT0k3aTA1a0JZQjVwV001Q0tvSWhBSGdCbDBMVElEY2cwMWt4S2VnRzd1WjJoNklhWWR2Rk01a3VRNWtQYldNR3piZmtVbVgrSnhWY3E1WGRSRzU4MzhWQTFBRDBhL01OeUFhREdpQVcyMnMzcmJVM2VSbW5rS3UyQkVydGxaWU5mdDdlM1UydHBLVjY1Y29ldlhyOU90Vzdmb3l0V3JOR1R3WU1ySnlhSGMzRndhT25Rb0RSOCtuRWFQSGszOSt2VUxURGVKS0cwQ3JDNHZvbGNzUzdKUjB1MGtTTkFsZm9sekc5Y0NUeTR2RVd2ZnpUdDM3dERKcHBOMDV1d1p1blQ1c20xOGJVd0dSWmdZNTVxTnBXeUZCUVUwYnR3NEtpb3FzdlhuaDZXcjNjRmx6N3lWRVNWZE1rWkFsM3VZRDg0dW9GZS91Y1JzNWR0MVEwTURIVHQyakRxWkJHNWwzdHk1Tkg2OC8wZmxwTlVIa01ROXRhcE1MaFVUQU1qUGVJQmFRWG9CV3RkQnRkS2R4UGNqMklHMDY1b3I4UUxUTEJKZkxQaUc2L2Q1OTFCclc0ZlppK2ZYelZ5S2QrN2NTZlZNQUMvQWg0SlZCdzVRWldVbHRiVzFlYTZ2T1VCWEJGakRnMExKQU5CNzd3WWVldHgrZ281SWRQN3doWitEUXZYMTliVHY0NC9wK28wYmV0cTh1cmh3OFNKOThPRUhkT2FNZjUxWlZ3UllNbXVzS2EwcXlvbEFOd091ZCtnRUpaZ3NacDZvTmtid3lZaW0rb3dGM1R4UDRkZnJZSFYxTlRVY09XSW82Y05WVjlkZCtxU3FpbzRkUCs1RDZPcG9yYXVBLytpaEVxMkNWd0hRVWVSUXphRHJrU1FCWFhlalhiZ0JIVUZJL051cXo5SDE5azVyOEs3dUQzQVZmZkxVS1ZkaE9QRmNVMU5EeHhzYm5YaEp5YTJyR2dBeHJKN0hVOFJTZFBsZU1oMm1McTVBbDhERlRGelNFWjgxZmlIUjFtcnZwb2pyNnVybzFPblRldktDdWpoOCtEQy9OWGc3dU9XYUFNdnZMWXJMZENWRFBBTmR6VjRKRG8yN3VYckgwMFNnZzVpZ0RmNTcxUXljUFh1V2pod05ieXNhbXAyYk4yOHFxZkxpbjJzQ1FJa25saFNydWdoS01GbWt6S3AzcWhQNUx5VVRwaXJ4cmlVNEsraG13SEVOa2ZETW9KdUpzbm4vV1ZLV3Rxdk8wL3JmMWRWRk5iWGhMam03ZmJ1VDBCeDRKWjRRQUlOQ1NyZWJ0WXFIMFZCVlFISUx1b1FvNFNVQ0hlN0VEY3dLbDNNRGVNOXZiL2V1OUVrNm5KcG51QmE2Y042YkxmSGVFR0Jla1E2OE5URm1BTlJuOFJSSnBhUkx1QkplcXFERG45UVliZ2lBYWpmTXFsL1NMK1pSSG5EeVFqd2hBT2IvUC84WjR4UlBBUW1tS3NHRHZwQVBuaGJnUll2ZjdUMUY2WDRtODdoUHIyR2ltMU96aGVjWUVnMDFPd25MRXdJZ3dwVnpDL1hxVmxVZ0ZuUXA1VENUdGVtcVg2UHFkbExTSCtHQnFSODhYVTdWUC93c3ZmbVhTNVdnUkFzbFRvNjhnbys0Y1NxWTFQSHJQZHlwTG1iM1p6eDRFMGw3TXNpc0NLNVh6OFVFQnJMYkVBVnM3UllkTXJOSTV5M0dUbk1pb0ttZE9NT0ZVYU1ZZG84dEdrOXI3aTJrTlJ6L3dQNnhmUDdxbWxMNjZUYWpxa1NjYUFiV3Nuc25rbW1sWDNSdlB0OU1zMmZQbHR1MFRNOElrRHVnSDYyYlgwUmJ0WDM2VnZDZ25SVjBNNkJPUVAvaS9aTVk5QUlHdlZCZGZwWWc2V3Y0RmZVbkpnTEEyWDkvZEpMKzVhbDVDWHpFVzkvZ0lWNC9CbURpWTNKdWd3N3B0V3ZYbENsbDU3NVZINTRSQU1HdG5qdU8zdmtrdG9ydERuVDRzNUxGVEF3OGgzeGxXYkVDK0lvNUJhcEZDdi92SytPRkt5elc4TjdsQ2FJVnM4M0QySWtEeTlUU0x4cGY1ZlVGV0ZPUXJuaExBSDRiZ0hnRit0TXJTcFNTdm5UR21IVFRSK3M1akYvc2xHWkFiV08yOHRCd0tnVEFJbzdHRXlmU2pqc0lqOURSalhoS2dLRjVPYlNTMjlmdG5NRlM2cVJxaDVLcGxQU3ZyaTVWU3ZvaTdzVjdJV3Z2S1dBQ0hJOGg1WVlQbStpZnZuSnZ0OEZuZXVsSEF0eU9DbnBLQUNpMGNtNEJiZWVldGxyV1ZOQmhMeUxFa0h1WTMzaGtHcTNtTnIxOGNyN1oycFByQjJhTTFzRy9hK3FWZmxqZlFzdW1KU1laNXVGUE5EVjVvb09mZ1hSMnVwdms4cHdBNkkzLzlZYnFtRFJiUVVjVDhhMUhweXM5OTltV0hjY3hIajI2K1dQdVAveDZsd0VtNGtjemtJd0FXTm5URzhSekFvemlEejR0bXptR1BxamxJK1ZNZ2t6L3p1TXp1YVFYRXZZWUJpbHJ1WGJab0JGQW1xUlgzbXVrRjc5ay93cUZubldRVTcxdThnS0xTOTFJN0l1em01Qk1mcFVwWXI0SDZQSmJQRzAwZlgzZDFNREJoMXFydU1ldk5FbjhEN1dSMUVoN2o3YmljWnowcE5LUGxjVnV4QmNDNFAwYndJc2c4L2ZVWHlTY01oYVdmR254QkNYcUxxYUMvRFlmTkZia2lsNTRyUXBqcmwvaWQyb09HVExFcVpjWTk3NFFvQ2cvVnlseGFxbmorWHZ1Zk9GWElkOFFqRkVobUJzMEF3QmVCTFhBeXp1T3k2MXU5cVRTRDZXeHA4Q04rRUlBS1BRMzNMNUtyMXVhZ1FxYkV1ZEdlU2QrSCtiWFFhbitwUWxBNHF1YWpOTkVzSUhqdEk4TE1KM29tNHJid1lNRzBXRGVaT0pHZkNNQXh1Y0ZlRkZ3WjgwRjM1ZG9TMXhXRXpPV1gxZ3dUdDJ5emc5UkYwQS9jelBRMDBwL1lhR3pPUTFybnVEZU53SVVqMUdaYVMxMVc2dmoyMTA3eGZ5d1czZlAyRGhTL21pcnVyenJNdS9pd1VLTG5pVFlSZVJXZkNNQUZQczJ2L2FwZ3ZLbXJ1V3I0UGZ2c0FUTkFLU0xhd1A1NGI2R1R4UHBhYVYvN0pneE5HeFk3S2x0U0l0VDhaVUFtSGFWNFY5VXQ1Q3QzQTlvdStsdTlFb055Zm4vM1A3OTZHR2VRWVJJOHdSejU0RW1PbnN1UEdJcUNqbjhOMlhLRkljKzdKMzdTb0NwaGVvcmlyd0ZpTGtseEZyZ0lkUFFNRmNFeWxMR1BiWCs3Ynl4ejNaM3RnVmp4eXE3aWQyRm92cjJsUUNJNHJuUFRkZjFsRkszOWFBM0N4cjFnQjFjeko4MFhBRWQ0S3UxVXg5cWFQRjM3NkFEOVZKeTZsWHBSMlMrRTJBZHYzOUw5WStlQUxyZkcva0FKN2RMdEJGVU9sTENuVk1CSHY2aDI1bWJ2bWRET3FyYStzRVc4bEdqRWs5aTJYcEtZdWw3eXBYSkhwUTI3U2U2YkFscFRHQklibzRDdXRSRzBPZGFwKy9aSU1sMmJYcForcUZNSUNsL2RtMlprbkFaZ29XSjJiZ3dSZm9qTUpFSlVrdUZxVk4zY1JmeGUvL0lrZW9xcCs3Y3B2bzhFQUtZaDJHbEpuanJZLzRDV1FpNWZyM2pEdmNCdEE5WmN5NmhXWUlhTUROZHZDNzlTRzhnQkNqbnN3VUZlSWtVRWIvRFh5QU5XazYwdE1jMUFRVzU3ay8wOERzZDQvalltUHg4N3hmTUJFSUFaTTQzVms1UjJDWWxEcVZ1Y3dodkF3ZTBrOFNGa0RBbkR1cnlHei9YNGZ0UitxRlVZQVJZaDhrWVV6WmdKTzQzZTA2WmJJSzUzTm5Rb3RSR2lFMzZKS1hETXJzR0dNOUR2aU5HcUNlMGVwMUxnUkhnTTZVajllRlhnQThCSVRhNTNMQ3BCSlRpdjNadS85LzgrSndPdkhpYm1wL1pQWUNTa2hKUjFYTXpNQUpBOHo5NXNEaXUvZjBWYjlRSVNsNzd5S2h4a0hEOEJ2TFJmQ1dqM0MycjhsUC9DWHhTbUJkai9vbDBESlFBajJNYnVTYW9CUERiWHR0Q0ZZZGoxdytLR3kvTkc3ZnYwUE8vcTFQN0lSeXY5QUhXRnR4U3Y0YnVaV1FlaHVWbjZZZWFnUkpnVVVrK0xlYW1BTWliUitQKzRmZjF2cjhTdm9nNE5PQ1JjRFEvK0gxdTlnaGF2V29WbFV5WkF1dU1rb2tUSnJqYTlaTktZZ0lsQUJUNjJ2TEppbDRDQU14RFBCMzczQnYrSGUvK2V1VnArdW11a3pyb2lCT3lmRXdIclZ3MGt3WU9IRWd6Wjg2a1ZTdFgwcFRKazVWbm1mRFA3OUtQTkFaT2dFZDVibUNOdGkvUFBCcjMrcDdUOUwzZjEzbWU3Mi96cSthZnZYRklBVjhDbDNqWEw4aVBtVlhEQ3R0WnMyYlJ5aFVyYUhKeHNUZ1B4WncwY1NLNVhmQ1ppdUtCRXdCS3ZmRDVhZFMzWC94bzNFczdHdW5iYng1T1JlK1UzR3hnVXExL3JZcXJmbU5oS3E0aHoweHBwNGNXeW9LVjJPRHk4dktVYmRjcmxpK240a21UWWg4R2RCZEU2VWRTWEowVjdDWXZYdDk5aXI3SkpWTUU3YlBJd3NrajZNWEhwdE45YktZamwvbE13QmMzTmREUFRiMStoS05oVDh2eWI5RUw2NHBvd1lJRktRV1BEWmhZTWRSME1wZzNGcEJ1enB3NUtlbm0xbEZvQklEaTM5OThoUDYxUWwyVEp3a3hMOTErOGo0Ky9HSDJHSHFNMS9LbEloZjVUT0RYbUZndnYzZUNMbWtIUXdybzRuL3E0RTc2em9LN3RQeUJKWlR2Y0hBRit3VkJCTDkzRGFIbUdjUXJmb09RVUFtQUJINXZZejM5Mi9iR21MUkt1eVMxd29LSncyZ0ZyK1NaejJicDJDRTBlbkIvd3JlTXJ6TElKMXJicWZyMFZYci9TQ3R0T2F4K1B0NEt1Z1NPTjQ4Zkw3bEZVNHVMYVA3OCtXTHQyTVRXTVJEQmp3MGs2SHU0UGZYRFNZSkNKd0NVL1krZGpmVEMvOVVyZWd2bzVrUklyMTNzcEIyWGU1akpRTWZ6eGZrZDlMVTVkMmxBVGg5YXVtU0pKME9yMkVVRUluaTVsd0FkVVBSQmdwS01JQUFTKzI1ZEMzMzN0N1hVY0Y0OThNQUwwQ1VUbnk1dXB6VWw2dGM0TUt0V1hsNHVqend4cjE2OVFrZVBIbk85ckJ5dm9IZ0xDVkl5aGdDUzZIL2NnbjZCdWpYYld0SVRsWEw0UmZWdWxmdEhkdEFUSlYxVU5GUWFGYUpsUzVlNjNrNWxqVWZ1c2JjQU5VSzZLNHd4RHVGMnM2Zm9rcXFaY1FTQTR1ak0vWnpuQ1A1cjMxbHE1RFkra2RpQmpvbmRKL2lRaXNYOVR0Q0U0UWJ3Q0FPemF2UG1wWDVBVktKNHU3UEgrWDNIK0R4aDgrZGd1dk9Ea1VnTVJnVXRHVWtBY3laVU5sNm1keHRhYWYvSnExUjNybzFPWGJsRmQvZ01mWkhoZy9wVDZlZzhtanQrR04wL1pRUjl1YnhRZVYwN2VQQ2dPTkhOQjVZdDgzVmlSWTlJdTJocGFTRWNNOU9jd3JHdUdJN0dpR1RRa3ZFRXNNdVF0bHVkMU1ra0dNUWJQUWJreEpaeXVOKzRhVk9jTjh5cXplWHY4SVFoRi9uTEh5REMrUXYyazE2bFBOMDdZOGFNTUZRTGZpallpMVFPR1poREkvTDYyNExmbE9CY242QkcxdXpTaDAvQ0xWcTBpRVluV000ZHBtN3h4Y2N1QlQzSXp1NWtyeUJtMWJyTEloem1kSkdiQkt1VWxaYlNnQUVEck5hQjNXY1ZBYzV6VzZ0L2s4K1VoV0dXTUZFRGJ3ZDJFclp1V1VXQWN6WWJQTkh6RDJKV3pRNWNzZXZvNkxEOXVOVFVzakxxMzcrL09BdkZ6Q29Db0Fhd1NoQWZYN1RHYWIyM2E1YmdKdXpTRHgyeWhnQVluNy9GSmMwc09md3Qzakc4ano1TXdmZUM3VDQwTVgzYU5PWDd3V0hxaHJpemlnRFd6UFI2RzVVMS9GVHVFNVgrS1R6d2t3bVNOUVRBc2U1V0NidnR4em0rZHA5Mm1URjllaWhmQ3JmbUQrNnpoZ0RvYUZrbGpKRTFzdzZaWHZxaGE5WVFBSjkwczBxZnZ1RWxMOUZuWm1ieWlGL2ZFUFd5NWxGNE9XVFZ4T1c5WGFiZWNYbVN0aHVWZWtMcFIvcXloZ0IybzJsdXo5SlBsd0NKUGpNemkyZjdzRFU5a3lSckNHQzNpZ2F2aG1GSVR5bjl5SnVzSVlEZGQzTmFMMTJpTzNlQzNmbWI2RE16UWEvMFNaWDRXVU1BYktERXdJOVZtcHVEUFlRaVllbm41VjZaS0ZsREFHVHVXRDQvenlvbkExckxqM2dUZldabWpzdHYrMW5UNU9WOVZoSEFickVucG1EdDVnaTh6RVFKSzlHTVgzSEkyOHhFUHpzenF3aUFCT2JsNWNhbGMrKytmWEYyWGx0YzROVStkaHRHN2dsb2gwKzY2Y2s2QWlUYTFGbGJXNXR1SG5YcjcvYnQyM1Rva0xITnpleGhVa2g3QzgwNkpMdk9PZ0tVbEpRU1BxUmdGWXpKTng1dnRGcDdjbDlWVlVYWGJlWWk1b1cwQnRGSm9yS09BRWo4ZEo1c3NaTkROWWQ1M1g3c1hrUTdkNm5hNFJWejc5Njl0b3M5Y2FSckpxeEY2QzR0V1VtQUl0NzlnMTAyZGxKVFcwZlYxZFhrOW9PTFdQSzlhOWN1Vy9BSDhDcWZUSDN2dCtaSmoxd1diazFFb3Z0RXBWUGNvNFBtdEkzR1FBL2U5Wk45VlhUUndvVzJyNlFTYnlhWldVMEFWTkdWbFpXRUVjRmtnbDA1V0RtRUJTUjJrMHFZVTBDSng1ckQ3bmI3bFBQT0l5OCs1WkpNWHkrZlpUVUJrRkdZSnQ2L2YzOUt1M1BnSGgxSVRDeUJDQzJ0OWgrV2hEczdXYkJnUGhVV3VQK1FrMTNZZnRsbFBRRWs0K3JxNm16WDVzbHpOeVlPbXNDSkhuNmU1K2RHdjJSK2V3MEJrQW5Zb2xWZlgwL1l2T21GWUdKM0dpL3VMT1BsM1QxVmVoVUJCS1F6L0hISXhzWkdWMFRBZnI3Si9LWVI5SFp1U1lOWFpxOGtnR1FldmhTSzJVSU00MTdtNjJTU3gwZkk0Vk10WTNqQ0NZZE1aSXYwYWdLWVFiekxYNjlROWhad2ovODJMeVhEZmIrY2ZyeGxPNWNHOFpFdFlTOHdOZXZxNVhWRUFDOXpzd2VHbFpVamdUMFFoOUJVamdnUVd0Wm5Sc1FSQVRJRGg5QzBpQWdRV3RablJzUVJBVElEaDlDMGlBZ1FXdFpuUnNUL0QveG9scTU2alJwbEFBQUFBRWxGVGtTdVFtQ0NcIiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbmNvbnN0IGFwaUNhbGwgPSAob3B0cykgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIG9wdHMgPSBvcHRzIHx8IHt9O1xuICAgIG9wdHMuY29udGV4dCA9IG9wdHMuY29udGV4dCB8fCBudWxsO1xuICAgIG9wdHMucmVzcG9uc2VUeXBlID0gb3B0cy5yZXNwb25zZVR5cGUgfHwgJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgIGxldCB1cmwgPSAnJztcbiAgICBpZiAob3B0cy51cmwpIHtcbiAgICAgIHVybCA9IG9wdHMudXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgPT0gJ2xvY2FsaG9zdCcgPyBgaHR0cHM6Ly9zcnNyZmwtc3RhZ2luZy5jb20vYCA6ICcvJztcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG9wdHMuaGVhZGVycyB8fCB7fTtcbiAgICBheGlvcyh7XG4gICAgICBtZXRob2Q6IG9wdHMubWV0aG9kLnRvTG93ZXJDYXNlKCksXG4gICAgICB1cmw6IGAke3VybH0ke29wdHMuZW5kcG9pbnR9YCxcbiAgICAgIHJlc3BvbnNlVHlwZTogb3B0cy5yZXNwb25zZVR5cGUsXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgcGFyYW1zOiBvcHRzLnBhcmFtcyxcbiAgICAgIGRhdGE6IG9wdHMuZGF0YSxcbiAgICB9KS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgYXBpQ2FsbDtcbiIsImNvbnN0IGdldEVycm9yTWVzc2FnZSA9IChlcnIpID0+IHtcbiAgbGV0IGVycm9yID0gJyc7XG4gIGlmIChlcnIucmVzcG9uc2UgJiYgZXJyLnJlc3BvbnNlLmRhdGEpIHtcbiAgICBpZiAoZXJyLnJlc3BvbnNlLmRhdGEubWVzc2FnZSkge1xuICAgICAgaWYgKGVyci5yZXNwb25zZS5kYXRhLm1lc3NhZ2UgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgZXJyb3IgPSBlcnIucmVzcG9uc2UuZGF0YS5tZXNzYWdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3IgPSBKU09OLnN0cmluZ2lmeShlcnIucmVzcG9uc2UuZGF0YS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnIucmVzcG9uc2UuZGF0YSA9PSAnc3RyaW5nJykge1xuICAgICAgaWYgKGVyci5yZXNwb25zZS5kYXRhLmluY2x1ZGVzKCdtZXNzYWdlJykpIHtcbiAgICAgICAgZXJyb3IgPSBlcnIucmVzcG9uc2UuZGF0YS5zdWJzdHJpbmcoMTIsIChlcnIucmVzcG9uc2UuZGF0YS5sZW5ndGggLSAyKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9yID0gSlNPTi5zdHJpbmdpZnkoZXJyLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBlcnJvciA9IGVyci5tZXNzYWdlID8gZXJyLm1lc3NhZ2UgOiBKU09OLnN0cmluZ2lmeShlcnIpO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGdldEVycm9yTWVzc2FnZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYXBpQ2FsbCBmcm9tICcuLi8uLi8uLi8uLi9saWIvYXBpQ2FsbC5qcyc7XG5pbXBvcnQgRXJyb3IgZnJvbSAnLi4vLi4vLi4vLi4vbGliL2Vycm9yLmpzJztcbmltcG9ydCBMb2FkaW5nIGZyb20gJy4uLy4uLy4uLy4uL2xpYi9sb2FkaW5nJztcbmltcG9ydCBnZXRFcnJvck1lc3NhZ2UgZnJvbSAnLi4vLi4vLi4vLi4vbGliL2dldEVycm9yTWVzc2FnZS5qcyc7XG5pbXBvcnQgcHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQvY29udGV4dC5qcyc7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5LCBHcmlkLCBDb250YWluZXIsIFBhcGVyLCBUZXh0RmllbGQsIEJ1dHRvbiB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuXG5jbGFzcyBSZWdpc3RyYXRpb25Gb3JtIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGVycm9yczogbnVsbCxcbiAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgIHZpZXc6ICdSZWdpc3RlcicsXG4gICAgICBzdG9yZV9uYW1lOiBudWxsLFxuICAgICAgc3RvcmVfdXVpZDogbnVsbCxcbiAgICAgIHBhdGllbnRfdXVpZDogbnVsbCxcbiAgICAgIG5ld19wYXRpZW50X3V1aWQ6IG51bGwsXG4gICAgICB1c2VyX3V1aWQ6IG51bGwsXG4gICAgICB1c2VybmFtZTogbnVsbCxcbiAgICAgIHBhc3N3b3JkOiBudWxsLFxuICAgICAgZmlyc3RfbmFtZTogbnVsbCxcbiAgICAgIGxhc3RfbmFtZTogbnVsbCxcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIGZpZWxkczogZmllbGRzLFxuICAgICAgZmllbGRzMjogZmllbGRzMixcbiAgICB9O1xuICAgIGNvbnN0IGZpZWxkcyA9IHtcbiAgICAgIGZpcnN0X25hbWU6IHtcbiAgICAgICAgdGl0bGU6ICdGaXJzdCBOYW1lJyxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgIHR5cGVuYW1lOiAndGV4dCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvcHkgPSB7IC4uLnRoaXMuc3RhdGUgfTtcbiAgICAgICAgICBpZiAoIS9eWyAtfl17MSwyMH0kLy50ZXN0KHZhbHVlLnRyaW0oKSkpIHtcbiAgICAgICAgICAgIGZpZWxkcy5maXJzdF9uYW1lLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIGZpZWxkcy5maXJzdF9uYW1lLmZlZWRiYWNrID0gJ0ludmFsaWQgRmlyc3QgTmFtZSBGb3JtYXQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZHMuZmlyc3RfbmFtZS5lcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgZmllbGRzLmZpcnN0X25hbWUuZmVlZGJhY2sgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29weS5maWVsZHMuZmlyc3RfbmFtZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoY29weSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bGx3aWR0aDogdHJ1ZSxcbiAgICAgICAgZmVlZGJhY2s6ICcnLFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICB9LFxuICAgICAgbGFzdF9uYW1lOiB7XG4gICAgICAgIHRpdGxlOiAnTGFzdCBOYW1lJyxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgIHR5cGVuYW1lOiAndGV4dCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvcHkgPSB7IC4uLnRoaXMuc3RhdGUgfTtcbiAgICAgICAgICBpZiAoIS9eWyAtfl17MSwyMH0kLy50ZXN0KHZhbHVlLnRyaW0oKSkpIHtcbiAgICAgICAgICAgIGZpZWxkcy5sYXN0X25hbWUuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgZmllbGRzLmxhc3RfbmFtZS5mZWVkYmFjayA9ICdJbnZhbGlkIExhc3QgTmFtZSBGb3JtYXQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZHMubGFzdF9uYW1lLmVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICBmaWVsZHMubGFzdF9uYW1lLmZlZWRiYWNrID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvcHkuZmllbGRzLmxhc3RfbmFtZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoY29weSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bGx3aWR0aDogdHJ1ZSxcbiAgICAgICAgZmVlZGJhY2s6ICcnLFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICB9LFxuICAgICAgZW1haWw6IHtcbiAgICAgICAgdGl0bGU6ICdFbWFpbCBBZGRyZXNzJyxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgIHR5cGVuYW1lOiAndGV4dCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvcHkgPSB7IC4uLnRoaXMuc3RhdGUgfTtcbiAgICAgICAgICBpZiAoIS9eLitAKC4rXFwuKSsuKyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICBmaWVsZHMuZW1haWwuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgZmllbGRzLmVtYWlsLmZlZWRiYWNrID0gJ0ludmFsaWQgRW1haWwgQWRkcmVzcyBGb3JtYXQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZHMuZW1haWwuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIGZpZWxkcy5lbWFpbC5mZWVkYmFjayA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb3B5LmZpZWxkcy5lbWFpbC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoY29weSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bGx3aWR0aDogdHJ1ZSxcbiAgICAgICAgZmVlZGJhY2s6ICcnLFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICB9LFxuICAgICAgcGFzc3dvcmQ6IHtcbiAgICAgICAgdGl0bGU6ICdQYXNzd29yZCcsXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICB0eXBlbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICBvbkNoYW5nZTogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29weSA9IHsgLi4udGhpcy5zdGF0ZSB9O1xuICAgICAgICAgIGNvcHkuZmllbGRzLnBhc3N3b3JkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBmaWVsZHMucGFzc3dvcmQuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgZmllbGRzLnBhc3N3b3JkLmZlZWRiYWNrID0gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxsaT5BdCBsZWFzdCA4IGNoYXJhY3RlcnMgbG9uZzwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPkF0IGxlYXN0IG9uZSBzcGVjaWFsIGNoYXJhY3RlcjwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPkF0IGxlYXN0IG9uZSBjYXBpdGFsIGxldHRlcjwvbGk+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCEvWyAtLzotQFstYHstfl0vLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgIGZpZWxkcy5wYXNzd29yZC5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIGZpZWxkcy5wYXNzd29yZC5mZWVkYmFjayA9ICdBdCBsZWFzdCAxIHNwZWNpYWwgY2hhcmFjdGVyIGlzIHJlcXVpcmVkJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIS9bQS1aXS8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgZmllbGRzLnBhc3N3b3JkLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgZmllbGRzLnBhc3N3b3JkLmZlZWRiYWNrID0gJ0F0IGxlYXN0IDEgY2FwaXRhbCBsZXR0ZXIgaXMgcmVxdWlyZWQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPCA4KSB7XG4gICAgICAgICAgICAgIGZpZWxkcy5wYXNzd29yZC5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIGZpZWxkcy5wYXNzd29yZC5mZWVkYmFjayA9ICdBdCBsZWFzdCA4IGNoYXJhY3RlcnMgaXMgcmVxdWlyZWQnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGRzLnBhc3N3b3JkLmVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgIGZpZWxkcy5wYXNzd29yZC5mZWVkYmFjayA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvcHkuZmllbGRzLmNvbmZpcm0udmFsdWUgIT09IGNvcHkuZmllbGRzLnBhc3N3b3JkLnZhbHVlKSB7XG4gICAgICAgICAgICAgIGNvcHkuZmllbGRzLmNvbmZpcm0uZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICBjb3B5LmZpZWxkcy5jb25maXJtLmZlZWRiYWNrID0gJ1Bhc3N3b3JkcyBtdXN0IG1hdGNoJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvcHkuZmllbGRzLmNvbmZpcm0uZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgY29weS5maWVsZHMuY29uZmlybS5mZWVkYmFjayA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKGNvcHkpO1xuICAgICAgICB9LFxuICAgICAgICBmdWxsd2lkdGg6IHRydWUsXG4gICAgICAgIGZlZWRiYWNrOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxsaT5BdCBsZWFzdCA4IGNoYXJhY3RlcnMgbG9uZzwvbGk+XG4gICAgICAgICAgICA8bGk+QXQgbGVhc3Qgb25lIHNwZWNpYWwgY2hhcmFjdGVyPC9saT5cbiAgICAgICAgICAgIDxsaT5BdCBsZWFzdCBvbmUgY2FwaXRhbCBsZXR0ZXI8L2xpPlxuICAgICAgICAgIDwvPlxuICAgICAgICApLFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICB9LFxuICAgICAgY29uZmlybToge1xuICAgICAgICB0aXRsZTogJ0NvbmZpcm0gUGFzc3dvcmQnLFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgdHlwZW5hbWU6ICdwYXNzd29yZCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvcHkgPSB7IC4uLnRoaXMuc3RhdGUgfTtcbiAgICAgICAgICBjb3B5LmZpZWxkcy5jb25maXJtLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgaWYgKGNvcHkuZmllbGRzLmNvbmZpcm0udmFsdWUubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGNvcHkuZmllbGRzLmNvbmZpcm0uZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgY29weS5maWVsZHMuY29uZmlybS5mZWVkYmFjayA9ICdQYXNzd29yZHMgbXVzdCBtYXRjaCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjb3B5LmZpZWxkcy5jb25maXJtLnZhbHVlICE9PSBjb3B5LmZpZWxkcy5wYXNzd29yZC52YWx1ZSkge1xuICAgICAgICAgICAgICBjb3B5LmZpZWxkcy5jb25maXJtLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29weS5maWVsZHMuY29uZmlybS5mZWVkYmFjayA9ICdQYXNzd29yZHMgbXVzdCBtYXRjaCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb3B5LmZpZWxkcy5jb25maXJtLmVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgIGNvcHkuZmllbGRzLmNvbmZpcm0uZmVlZGJhY2sgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShjb3B5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZnVsbHdpZHRoOiB0cnVlLFxuICAgICAgICBmZWVkYmFjazogJycsXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgIH0sXG4gICAgICB2YWx1ZTogJycsXG4gICAgICBlcnJvcjogZmFsc2UsXG4gICAgICBmZWVkYmFjazogJycsXG4gICAgfTtcbiAgICBjb25zdCBmaWVsZHMyID0ge1xuICAgICAgY29uZmlybWF0aW9uOiB7XG4gICAgICAgIHRpdGxlOiAnQ29uZmlybWF0aW9uIENvZGUnLFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgdHlwZW5hbWU6ICd0ZXh0JyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICBvbkNoYW5nZTogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29weSA9IHsgLi4udGhpcy5zdGF0ZSB9O1xuICAgICAgICAgIGlmICghL15bIC1+XXsxLDIwfSQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICBmaWVsZHMyLmNvbmZpcm1hdGlvbi5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICBmaWVsZHMyLmNvbmZpcm1hdGlvbi5mZWVkYmFjayA9ICdJbnZhbGlkIENvbmZpcm1hdGlvbiBDb2RlIEZvcm1hdCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkczIuY29uZmlybWF0aW9uLmVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICBmaWVsZHMyLmNvbmZpcm1hdGlvbi5mZWVkYmFjayA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb3B5LmZpZWxkczIuY29uZmlybWF0aW9uLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShjb3B5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZnVsbHdpZHRoOiB0cnVlLFxuICAgICAgICBmZWVkYmFjazogJycsXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLnN0YXRlLmZpZWxkcyA9IGZpZWxkcztcbiAgICB0aGlzLnN0YXRlLmZpZWxkczIgPSBmaWVsZHMyO1xuICAgIHRoaXMuY2xlYXJGaWVsZHMgPSB0aGlzLmNsZWFyRmllbGRzLmJpbmQodGhpcyk7XG4gICAgdGhpcy5jaGFuZ2VWaWV3ID0gdGhpcy5jaGFuZ2VWaWV3LmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZWdpc3RlclVzZXIgPSB0aGlzLnJlZ2lzdGVyVXNlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY2xlYXJTdGF0ZSA9IHRoaXMuY2xlYXJTdGF0ZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIGNvbnRleHRUeXBlID0gQ29udGV4dDtcblxuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIHN0b3JlX3V1aWQ6IHByb3BUeXBlcy5zdHJpbmcsXG4gICAgc3RvcmVfbmFtZTogcHJvcFR5cGVzLnN0cmluZyxcbiAgICByZWdpc3Rlcl9lbmFibGVkOiBwcm9wVHlwZXMuc3RyaW5nLFxuICB9O1xuXG4gIGNsZWFyRmllbGRzKCkge1xuICAgIGNvbnN0IGNvcHkgPSB7IC4uLnRoaXMuc3RhdGUgfTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjb3B5LmZpZWxkcykge1xuICAgICAgaWYgKGNvcHkuZmllbGRzW2tleV0udmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb3B5LmZpZWxkc1trZXldLnZhbHVlID0gJyc7XG4gICAgICAgIGlmIChjb3B5LmZpZWxkc1trZXldLnJlcXVpcmVkKSB7XG4gICAgICAgICAgY29weS5maWVsZHNba2V5XS5lcnJvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvcHkuZmllbGRzLnBhc3N3b3JkLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvcHkuZmllbGRzLnBhc3N3b3JkLmZlZWRiYWNrID0gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxsaT5BdCBsZWFzdCA4IGNoYXJhY3RlcnMgbG9uZzwvbGk+XG4gICAgICAgICAgPGxpPkF0IGxlYXN0IG9uZSBzcGVjaWFsIGNoYXJhY3RlcjwvbGk+XG4gICAgICAgICAgPGxpPkF0IGxlYXN0IG9uZSBjYXBpdGFsIGxldHRlcjwvbGk+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShjb3B5KTtcbiAgfVxuXG4gIGNoYW5nZVZpZXcodmlldykge1xuICAgIHRoaXMuc2V0U3RhdGUoeyB2aWV3OiB2aWV3IH0pO1xuICB9XG5cbiAgY2xlYXJTdGF0ZSgpIHtcbiAgICBjb25zdCBjb3B5ID0geyAuLi50aGlzLnN0YXRlIH07XG4gICAgY29weS5lcnJvcnMgPSBudWxsO1xuICAgIGNvcHkubG9hZGVkID0gdHJ1ZTtcbiAgICBjb3B5LnZpZXcgPSAnUmVnaXN0ZXInO1xuICAgIGNvcHkuc3RvcmVfbmFtZSA9IG51bGw7XG4gICAgY29weS5zdG9yZV91dWlkID0gbnVsbDtcbiAgICBjb3B5LnBhdGllbnRfdXVpZCA9IG51bGw7XG4gICAgY29weS5uZXdfcGF0aWVudF91dWlkID0gbnVsbDtcbiAgICBjb3B5LnVzZXJfdXVpZCA9IG51bGw7XG4gICAgY29weS51c2VybmFtZSA9IG51bGw7XG4gICAgY29weS5wYXNzd29yZCA9IG51bGw7XG4gICAgdGhpcy5jb250ZXh0LnJlbW92ZUl0ZW0oJ3Bhc3N3b3JkJyk7XG4gICAgdGhpcy5jb250ZXh0LnJlbW92ZUl0ZW0oJ3VzZXJfdXVpZCcpO1xuICAgIHRoaXMuY29udGV4dC5yZW1vdmVJdGVtKCdwYXRpZW50X3V1aWQnKTtcbiAgICB0aGlzLmNvbnRleHQucmVtb3ZlSXRlbSgnZmlyc3RfbmFtZScpO1xuICAgIHRoaXMuY29udGV4dC5yZW1vdmVJdGVtKCdsYXN0X25hbWUnKTtcbiAgICB0aGlzLnNldFN0YXRlKGNvcHkpO1xuICB9XG5cbiAgcmVnaXN0ZXJVc2VyKCkge1xuICAgIGNvbnN0IGNvcHkgPSB7IC4uLnRoaXMuc3RhdGUgfTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBmaXJzdF9uYW1lOiB0aGlzLnN0YXRlLmZpZWxkcy5maXJzdF9uYW1lLnZhbHVlLFxuICAgICAgbGFzdF9uYW1lOiB0aGlzLnN0YXRlLmZpZWxkcy5sYXN0X25hbWUudmFsdWUsXG4gICAgICBlbWFpbDogdGhpcy5zdGF0ZS5maWVsZHMuZW1haWwudmFsdWUsXG4gICAgICBwYXRpZW50X3V1aWQ6IHRoaXMuY29udGV4dC5nZXRQYXRpZW50KCksXG4gICAgICBzdG9yZV91dWlkOiB0aGlzLnByb3BzLnN0b3JlX3V1aWQsXG4gICAgfTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6ICdodHRwczovL2FwaS1zdGFnaW5nLnNyc3BoYXJtYWN5LmNvbS8nLFxuICAgICAgZW5kcG9pbnQ6ICdwdWJsaWMvdjEvYXV0aC9yZWdpc3RlcicsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9LFxuICAgICAgZGF0YTogcGFyYW1zLFxuICAgIH07XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRlZDogZmFsc2UgfSk7XG4gICAgYXBpQ2FsbChvcHRpb25zKS50aGVuKCAocmVzcCkgPT4ge1xuICAgICAgY29uc3QgciA9IEpTT04ucGFyc2UocmVzcC5kYXRhKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB1c2VybmFtZTogY29weS5maWVsZHMuZW1haWwudmFsdWUsXG4gICAgICAgIHBhc3N3b3JkOiBjb3B5LmZpZWxkcy5wYXNzd29yZC52YWx1ZSxcbiAgICAgICAgZmlyc3RfbmFtZTogY29weS5maWVsZHMuZmlyc3RfbmFtZS52YWx1ZSxcbiAgICAgICAgbGFzdF9uYW1lOiBjb3B5LmZpZWxkcy5sYXN0X25hbWUudmFsdWUsXG4gICAgICAgIHVzZXJfdXVpZDogci51c2VyLnVzZXJfdXVpZCxcbiAgICAgICAgbmV3X3BhdGllbnRfdXVpZDogci5wYXRpZW50X3VzZXIucGF0aWVudF91dWlkLFxuICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29udGV4dC5zZXRVc2VyVVVJRChyLnVzZXIudXNlcl91dWlkKTtcbiAgICAgIHRoaXMuY29udGV4dC5zZXRQYXNzd29yZCh0aGlzLnN0YXRlLmZpZWxkcy5wYXNzd29yZC52YWx1ZSk7XG4gICAgICB0aGlzLmNvbnRleHQuc2V0VXNlcm5hbWUodGhpcy5zdGF0ZS5maWVsZHMuZW1haWwudmFsdWUpO1xuICAgICAgdGhpcy5jb250ZXh0LnNldFBhdGllbnQoci5wYXRpZW50X3VzZXIucGF0aWVudF91dWlkKTtcbiAgICAgIHRoaXMuY29udGV4dC5zZXRGaXJzdE5hbWUodGhpcy5zdGF0ZS5maWVsZHMuZmlyc3RfbmFtZS52YWx1ZSk7XG4gICAgICB0aGlzLmNvbnRleHQuc2V0TGFzdE5hbWUodGhpcy5zdGF0ZS5maWVsZHMubGFzdF9uYW1lLnZhbHVlKTtcbiAgICAgIHRoaXMuY2hhbmdlVmlldygnQ29uZmlybWF0aW9uJyk7XG4gICAgfSkuY2F0Y2goIChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3JzOiBnZXRFcnJvck1lc3NhZ2UoZXJyKSwgbG9hZGVkOiB0cnVlIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgY29uZmlybUNvZGUoKSB7XG4gICAgY29uc3QgY29weSA9IHsgLi4udGhpcy5zdGF0ZSB9O1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHVzZXJuYW1lOiB0aGlzLmNvbnRleHQuZ2V0VXNlcm5hbWUoKSxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmNvbnRleHQuZ2V0UGFzc3dvcmQoKSxcbiAgICAgIHN0b3JlX3V1aWQ6IHRoaXMucHJvcHMuc3RvcmVfdXVpZCxcbiAgICAgIHVzZXJfdXVpZDogdGhpcy5jb250ZXh0LmdldFVzZXJVVUlEKCksXG4gICAgICBwYXRpZW50X3V1aWQ6IHRoaXMuY29udGV4dC5nZXRQYXRpZW50KCksXG4gICAgICBjb2RlOiB0aGlzLnN0YXRlLmZpZWxkczIuY29uZmlybWF0aW9uLnZhbHVlLFxuICAgICAgZmlyc3RfbmFtZTogdGhpcy5jb250ZXh0LmdldEZpcnN0TmFtZSgpLFxuICAgICAgbGFzdF9uYW1lOiB0aGlzLmNvbnRleHQuZ2V0TGFzdE5hbWUoKSxcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogJ2h0dHBzOi8vYXBpLXN0YWdpbmcuc3JzcGhhcm1hY3kuY29tLycsXG4gICAgICBlbmRwb2ludDogJ2F1dGgvcGF0aWVudC9sb2dpbicsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9LFxuICAgICAgZGF0YTogcGFyYW1zLFxuICAgIH07XG4gICAgYXBpQ2FsbChvcHRpb25zKS50aGVuKCAocmVzcCkgPT4ge1xuICAgICAgY29uc3QgciA9IEpTT04ucGFyc2UocmVzcC5kYXRhKTtcbiAgICAgIHRoaXMuY29udGV4dC5zZXRBdXRoVG9rZW5zKHIpO1xuICAgICAgdGhpcy5jbGVhclN0YXRlKCk7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdwb3J0YWwuaHRtbD9zdG9yZV91dWlkPScgKyB0aGlzLnByb3BzLnN0b3JlX3V1aWQ7XG4gICAgfSkuY2F0Y2goIChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICBjb3B5LmZpZWxkczIuY29uZmlybWF0aW9uLmVycm9yID0gdHJ1ZTtcbiAgICAgIGNvcHkuZmllbGRzMi5jb25maXJtYXRpb24uZmVlZGJhY2sgPSAnSW5jb3JyZWN0IENvbmZpcm1hdGlvbiBDb2RlJztcbiAgICAgIGNvcHkuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoY29weSk7XG4gICAgfSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgbGV0IHJlZ2lzdGVyU3VidGl0bGUgPSAnJztcbiAgICBpZiAodGhpcy5wcm9wcy5yZWdpc3Rlcl9lbmFibGVkID09ICdZJykge1xuICAgICAgcmVnaXN0ZXJTdWJ0aXRsZSA9IGBUbyBzdWJtaXQgeW91ciByZWZpbGwgcmVxdWVzdCwgcmVnaXN0ZXIgZm9yICR7dGhpcy5wcm9wcy5zdG9yZV9uYW1lfSdzIFBhdGllbnQgUG9ydGFsLmA7XG4gICAgfVxuICAgIGxldCBib2R5ID0gKFxuICAgICAgPHA+Tm90IEltcGxlbWVudGVkIFlldDwvcD5cbiAgICApO1xuICAgIGlmICghdGhpcy5zdGF0ZS5sb2FkZWQpIHtcbiAgICAgIGJvZHkgPSAoXG4gICAgICAgIDxDb250YWluZXIgbWF4V2lkdGg9J2xnJyBzeD17eyBwYWRkaW5nOiAnMjBweCAnIH19PlxuICAgICAgICAgIDxMb2FkaW5nLz5cbiAgICAgICAgPC9Db250YWluZXI+XG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5lcnJvcnMpIHtcbiAgICAgIGxldCBlcnJvciA9ICcnO1xuICAgICAgaWYgKHRoaXMuc3RhdGUuZXJyb3JzID09ICdJbnZhbGlkIGRhdGEgZm9ybWF0JyB8fCB0aGlzLnN0YXRlLmVycm9ycyA9PSAnVW5leHBlY3RlZCB2YWx1ZSBwcm92aWRlJykge1xuICAgICAgICBlcnJvciA9ICdNaXNzaW5nIG9yIGludmFsaWQgc3RvcmUgdGFnIGluIHJlcXVlc3QnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmVycm9yc1xuICAgICAgICA9PSAnTm90IGVub3VnaCBwYXJhbWV0ZXJzIHN1cHBsaWVkIGluIHJlcXVlc3QnXG4gICAgICAgIHx8IHRoaXMuc3RhdGUuZXJyb3JzXG4gICAgICAgID09ICdVbmV4cGVjdGVkL01pc3NpbmcgcXVlcnkgc3RyaW5nIHN1cHBsaWVkJykge1xuICAgICAgICBlcnJvciA9ICdNaXNzaW5nIHN0b3JlIHRhZyBvciBSeCBudW1iZXIgaW4gcXVlcnkgc3RyaW5nJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5lcnJvcnMgPT0gJ0ludmFsaWQgZGF0YSBzdXBwbGllZCBpbiB0aGUgcmVxdWVzdCcpIHtcbiAgICAgICAgZXJyb3IgPSAnSW52YWxpZCBoYXNoIGdpdmVuIGluIHRoZSBxdWVyeSBzdHJpbmcnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmVycm9ycy5pbmNsdWRlcygnVXNlciBhbHJlYWR5IGV4aXN0JykpIHtcbiAgICAgICAgZXJyb3IgPSAnQSB1c2VyIHdpdGggdGhhdCBlbWFpbCBhbHJlYWR5IGV4aXN0cy4nO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmVycm9ycy5pbmNsdWRlcygnRW1haWwgZG9lcyBub3QgbWF0Y2ggd2hhdCBpcyBhc3NvY2lhdGVkIHRvIHRoZSBwYXRpZW50LicpKSB7XG4gICAgICAgIGVycm9yID0gJ0VtYWlsIGRvZXMgbm90IG1hdGNoIHdoYXQgaXMgYXNzb2NpYXRlZCB0byB0aGUgcGF0aWVudC4gJ1xuICAgICAgICArICdQbGVhc2UgY29udGFjdCAnICsgdGhpcy5wcm9wcy5zdG9yZV9uYW1lICsgJyB0byByZWdpc3Rlci4nO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yID8gZXJyb3IgOiB0aGlzLnN0YXRlLmVycm9ycyxcbiAgICAgIH07XG4gICAgICBib2R5ID0gKFxuICAgICAgICA8Q29udGFpbmVyIG1heFdpZHRoPSdsZycgc3g9e3sgcGFkZGluZzogJzIwcHggJyB9fT5cbiAgICAgICAgICB7RXJyb3IocHJvcHMpfVxuICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBkaXJlY3Rpb249J3JvdycganVzdGlmeUNvbnRlbnQ9J3NwYWNlLWFyb3VuZCcgYWxpZ25JdGVtcz0nY2VudGVyJz5cbiAgICAgICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PSdjb250YWluZWQnXG4gICAgICAgICAgICAgICAgY29sb3I9J3ByaW1hcnknXG4gICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVZpZXcodGhpcy5zdGF0ZS52aWV3KTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcnM6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgQmFja1xuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZXJyb3IgPT0gJ0EgdXNlciB3aXRoIHRoYXQgZW1haWwgYWxyZWFkeSBleGlzdHMuJ1xuICAgICAgICAgICAgICA/IDxHcmlkIGl0ZW0+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgdmFyaWFudD0nY29udGFpbmVkJ1xuICAgICAgICAgICAgICAgICAgY29sb3I9J3ByaW1hcnknXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ3BvcnRhbC5odG1sP3N0b3JlX3V1aWQ9JyArIHRoaXMucHJvcHMuc3RvcmVfdXVpZDtcbiAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgTG9nIEluXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgOiA8PjwvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9Db250YWluZXI+XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUudmlldykge1xuICAgICAgICBjYXNlICdSZWdpc3Rlcic6XG4gICAgICAgICAgaWYgKHRoaXMuY29udGV4dC5nZXRQYXNzd29yZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVZpZXcoJ0NvbmZpcm1hdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBib2R5ID0gKFxuICAgICAgICAgICAgPGZvcm0gaWQ9J3JlZ2lzdGVyJz5cbiAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezF9IHN4PXt7IHBhZGRpbmc6ICcyMHB4ICcgfX0+XG4gICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9PlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD0naDQnPlxuICAgICAgICAgICAgICAgICAgICAgIFVzZXIgUmVnaXN0cmF0aW9uXG4gICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PSdzdWJ0aXRsZTEnPlxuICAgICAgICAgICAgICAgICAgICB7cmVnaXN0ZXJTdWJ0aXRsZX1cbiAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfT5cbiAgICAgICAgICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsyfT5cbiAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9e3RoaXMuc3RhdGUuZmllbGRzLmZpcnN0X25hbWUuZXJyb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD17dGhpcy5zdGF0ZS5maWVsZHMuZmlyc3RfbmFtZS5yZXF1aXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9J3NtYWxsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ndGV4dCdcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXt0aGlzLnN0YXRlLmZpZWxkcy5maXJzdF9uYW1lLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSAmJiB0aGlzLnN0YXRlLmZpZWxkcy5maXJzdF9uYW1lLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuc3RhdGUuZmllbGRzLmZpcnN0X25hbWUuZmVlZGJhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmZpZWxkcy5maXJzdF9uYW1lLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmllbGRzLmZpcnN0X25hbWUub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yPXt0aGlzLnN0YXRlLmZpZWxkcy5sYXN0X25hbWUuZXJyb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD17dGhpcy5zdGF0ZS5maWVsZHMubGFzdF9uYW1lLnJlcXVpcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0nc21hbGwnXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSd0ZXh0J1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e3RoaXMuc3RhdGUuZmllbGRzLmxhc3RfbmFtZS50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZS5maWVsZHMubGFzdF9uYW1lLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuc3RhdGUuZmllbGRzLmxhc3RfbmFtZS5mZWVkYmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuZmllbGRzLmxhc3RfbmFtZS52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZpZWxkcy5sYXN0X25hbWUub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yPXt0aGlzLnN0YXRlLmZpZWxkcy5lbWFpbC5lcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXt0aGlzLnN0YXRlLmZpZWxkcy5lbWFpbC5yZXF1aXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9J3NtYWxsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ndGV4dCdcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXt0aGlzLnN0YXRlLmZpZWxkcy5lbWFpbC50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZS5maWVsZHMuZW1haWwuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zdGF0ZS5maWVsZHMuZW1haWwuZmVlZGJhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmZpZWxkcy5lbWFpbC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZpZWxkcy5lbWFpbC5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9IHN4PXt7IGRpc3BsYXk6ICdmbGV4JywganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInIH19PlxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9e3RoaXMuc3RhdGUuZmllbGRzLnBhc3N3b3JkLmVycm9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e3RoaXMuc3RhdGUuZmllbGRzLnBhc3N3b3JkLnJlcXVpcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0nc21hbGwnXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdwYXNzd29yZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXt0aGlzLnN0YXRlLmZpZWxkcy5wYXNzd29yZC50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZS5maWVsZHMucGFzc3dvcmQuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zdGF0ZS5maWVsZHMucGFzc3dvcmQuZmVlZGJhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmZpZWxkcy5wYXNzd29yZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZpZWxkcy5wYXNzd29yZC5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9IHN4PXt7IGRpc3BsYXk6ICdmbGV4JywganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInIH19PlxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9e3RoaXMuc3RhdGUuZmllbGRzLmNvbmZpcm0uZXJyb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD17dGhpcy5zdGF0ZS5maWVsZHMuY29uZmlybS5yZXF1aXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9J3NtYWxsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ncGFzc3dvcmQnXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17dGhpcy5zdGF0ZS5maWVsZHMuY29uZmlybS50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZS5maWVsZHMuY29uZmlybS5lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnN0YXRlLmZpZWxkcy5jb25maXJtLmZlZWRiYWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5maWVsZHMuY29uZmlybS52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZpZWxkcy5jb25maXJtLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0gc3g9e3sgcGFkZGluZ1RvcDogJzVweCcsIGJnY29sb3I6ICdyZ2JhKDAsMCwwLC4wNScgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17Nn0gc3g9e3sgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtc3RhcnQnIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdyZXNldCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PSdjb250YWluZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9J2Vycm9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckZpZWxkcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17Nn0gc3g9e3sgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nc2F2ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PSdjb250YWluZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9J3ByaW1hcnknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLnN0YXRlLmZpZWxkcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJtaXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBpbiBmaWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tmaWVsZF0uZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Ym1pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyVXNlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1Ym1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdDb25maXJtYXRpb24nOlxuICAgICAgICAgIGJvZHkgPSAoXG4gICAgICAgICAgICA8Zm9ybSBpZD0nY29uZmlybWF0aW9uJz5cbiAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezF9IHN4PXt7IHBhZGRpbmc6ICcyMHB4JyB9fT5cbiAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0+XG4gICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PSdoNCc+RW1haWwgQ29uZmlybWF0aW9uPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD0nc3VidGl0bGUxJz5DaGVjayB5b3VyIGVtYWlsIGZvciB5b3VyIGNvbmZpcm1hdGlvbiBjb2RlLjwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfT5cbiAgICAgICAgICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsyfT5cbiAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9e3RoaXMuc3RhdGUuZmllbGRzMi5jb25maXJtYXRpb24uZXJyb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD17dGhpcy5zdGF0ZS5maWVsZHMyLmNvbmZpcm1hdGlvbi5yZXF1aXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9J3NtYWxsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ndGV4dCdcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXt0aGlzLnN0YXRlLmZpZWxkczIuY29uZmlybWF0aW9uLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSAmJiB0aGlzLnN0YXRlLmZpZWxkczIuY29uZmlybWF0aW9uLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuc3RhdGUuZmllbGRzMi5jb25maXJtYXRpb24uZmVlZGJhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmZpZWxkczIuY29uZmlybWF0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmllbGRzMi5jb25maXJtYXRpb24ub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfSBzeD17eyBwYWRkaW5nVG9wOiAnNXB4JywgYmdjb2xvcjogJ3JnYmEoMCwwLDAsLjA1JyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0gc3g9e3sgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J3NhdmUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD0nY29udGFpbmVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPSdwcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRzMiA9IHRoaXMuc3RhdGUuZmllbGRzMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJtaXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBpbiBmaWVsZHMyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZHMyW2ZpZWxkXS5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1pdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VibWl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkaXNhYmxlZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maXJtQ29kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJtaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxDb250YWluZXIgbWF4V2lkdGg9J2xnJz5cbiAgICAgICAgPFBhcGVyIHZhcmlhbnQ9J291dGxpbmVkJz5cbiAgICAgICAgICB7Ym9keX1cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQ29udGFpbmVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRm9ybTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IExvYWRpbmcgZnJvbSAnLi4vLi4vLi4vLi4vbGliL2xvYWRpbmcuanMnO1xuaW1wb3J0IEVycm9yIGZyb20gJy4uLy4uLy4uLy4uL2xpYi9lcnJvci5qcyc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9jb250ZXh0LmpzJztcbmltcG9ydCBhcGlDYWxsIGZyb20gJy4uLy4uLy4uLy4uL2xpYi9hcGlDYWxsLmpzJztcbmltcG9ydCBnZXRFcnJvck1lc3NhZ2UgZnJvbSAnLi4vLi4vLi4vLi4vbGliL2dldEVycm9yTWVzc2FnZS5qcyc7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRm9ybSBmcm9tICcuLi9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkZvcm0uanMnO1xuaW1wb3J0IHsgQXBwQmFyLCBUb29sYmFyLCBCdXR0b24sIFR5cG9ncmFwaHksIEdyaWQsIEJveCwgUGFwZXIsIENvbnRhaW5lciB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuXG5cbmNsYXNzIEhvbWUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZXJyb3JzOiBudWxsLFxuICAgICAgbG9hZGVkOiBmYWxzZSxcbiAgICAgIHN1Ym1pdDogZmFsc2UsXG4gICAgICByZWRpcmVjdDogZmFsc2UsXG4gICAgICB0YWc6IHRoaXMuZ2V0U3RvcmVOdW1iZXIoKSxcbiAgICAgIHJ4TnVtYmVyOiB0aGlzLmdldFJ4TnVtYmVyKCksXG4gICAgICBoYXNoOiB0aGlzLmdldEhhc2goKSxcbiAgICAgIHBhdGllbnRfdXNlcjogZmFsc2UsXG4gICAgICBzdG9yZV9uYW1lOiAnJyB8fCBudWxsLFxuICAgICAgbG9nbzogbnVsbCxcbiAgICAgIHN0b3JlX2FkZHJlc3M6ICcnIHx8IG51bGwsXG4gICAgICBzdG9yZV9hZGRyZXNzX3R3bzogJycgfHwgbnVsbCxcbiAgICAgIGNpdHk6ICcnIHx8IG51bGwsXG4gICAgICBzdGF0ZTogJycgfHwgbnVsbCxcbiAgICAgIHppcDogJycgfHwgbnVsbCxcbiAgICAgIHBoYXJtYWN5X3Bob25lOiAnJyB8fCBudWxsLFxuICAgICAgc3RvcmVfdXVpZDogJycgfHwgbnVsbCxcbiAgICAgIHJlcXVlc3RlZDogJycgfHwgbnVsbCxcbiAgICAgIGRpc2FibGVfYnV0dG9uOiBmYWxzZSxcbiAgICAgIHNob3dGb3JtOiBmYWxzZSxcbiAgICAgIHJlZ2lzdGVyX2VuYWJsZWQ6ICdOJyxcbiAgICAgIHNob3dSZWdpc3RlckJ1dHRvbjogZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLnJlcXVlc3RSZWZpbGwgPSB0aGlzLnJlcXVlc3RSZWZpbGwuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldEZ1bGxBdXRoID0gdGhpcy5nZXRGdWxsQXV0aC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0SGFzaCA9IHRoaXMuZ2V0SGFzaC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0U3RvcmVOdW1iZXIgPSB0aGlzLmdldFN0b3JlTnVtYmVyLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRSeE51bWJlciA9IHRoaXMuZ2V0UnhOdW1iZXIuYmluZCh0aGlzKTtcbiAgICB0aGlzLmNvbnN0cnVjdFhNTERvY3VtZW50ID0gdGhpcy5jb25zdHJ1Y3RYTUxEb2N1bWVudC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZW50aXR5ID0gdGhpcy5lbnRpdHkuYmluZCh0aGlzKTtcbiAgICB0aGlzLmxvYWQgPSB0aGlzLmxvYWQuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgcHJlc2NyaXB0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNldFJlZmlsbFJlc3BvbnNlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB0aGVtZU1vZGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfTtcblxuICBzdGF0aWMgY29udGV4dFR5cGUgPSBDb250ZXh0O1xuXG4gIGdldEZ1bGxBdXRoKCkge1xuICAgIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKSA9PSAnZGVtbydcbiAgICB8fCB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKSA9PSAndD1kZW1vJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ2h0dHBzOi8vc3JzcmZsLXN0YWdpbmcuY29tLz90PTFIczFGMnk3NzEwMjcxMDEwODYnO1xuICAgIH0gZWxzZSBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSwgMykgPT0gJ3Q9Jykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SGFzaCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGdWxsQXV0aCgpLnN1YnN0cmluZygwLCA3KTtcbiAgfVxuXG4gIGdldFN0b3JlTnVtYmVyKCkge1xuICAgIHJldHVybiB0aGlzLmdldEZ1bGxBdXRoKCkuc3Vic3RyaW5nKDcsIDEzKTtcbiAgfVxuXG4gIGdldFJ4TnVtYmVyKCkge1xuICAgIHJldHVybiB0aGlzLmdldEZ1bGxBdXRoKCkuc3Vic3RyaW5nKDEzKS5yZXBsYWNlKC9bXjAtOV0vZywgJycpO1xuICB9XG5cbiAgZW50aXR5KC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbZG9jLCBlbnRpdHlOYW1lLCAuLi5leHRyYV0gPSBhcmdzO1xuICAgIGNvbnN0IG5vZGUgPSBkb2MuY3JlYXRlRWxlbWVudChlbnRpdHlOYW1lKTtcbiAgICBmb3IgKGNvbnN0IGFyZyBvZiBleHRyYSkge1xuICAgICAgaWYgKCFhcmcpIHtcbiAgICAgICAgbm9kZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJycpKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbm9kZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoYXJnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLmFwcGVuZENoaWxkKGFyZyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgY29uc3RydWN0WE1MRG9jdW1lbnQobGFzdG5hbWUsIGZpcnN0bmFtZSwgcGhvbmUsIGVtYWlsLCBtZXNzYWdlKSB7XG4gICAgY29uc3QgZG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJ2h0dHA6Ly93d3cuc3JzcGhhcm1hY3kuY29tL1hNTC9QYXRpZW50UmVmaWxsUmVxdWVzdCcsXG4gICAgICAgICdQYXRpZW50UmVmaWxsUmVxdWVzdCcsXG4gICAgICAgIG51bGwpO1xuXG4gICAgY29uc3Qgcm9vdCA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG4gICAgcm9vdC5hcHBlbmRDaGlsZCh0aGlzLmVudGl0eShkb2MsICdUbycsIHRoaXMuc3RhdGUudGFnKSk7XG4gICAgcm9vdC5hcHBlbmRDaGlsZCh0aGlzLmVudGl0eShkb2MsICdGcm9tJywgJ3Nyc3JmbCcpKTtcbiAgICByb290LmFwcGVuZENoaWxkKHRoaXMuZW50aXR5KGRvYywgJ0F1dGgnLCB0aGlzLnN0YXRlLmhhc2gpKTtcbiAgICByb290LmFwcGVuZENoaWxkKHRoaXMuZW50aXR5KGRvYywgJ1NlbnRUaW1lJywgbmV3IERhdGUoKS50b0lTT1N0cmluZygpKSk7XG4gICAgcm9vdC5hcHBlbmRDaGlsZCh0aGlzLmVudGl0eShkb2MsICdNZXNzYWdlSUQnLCBuZXcgRGF0ZSgpLmdldFRpbWUoKS50b1N0cmluZygpKSk7XG4gICAgcm9vdC5hcHBlbmRDaGlsZCh0aGlzLmVudGl0eShkb2MsICdSeE51bWJlcnMnLFxuICAgICAgICB0aGlzLmVudGl0eShkb2MsICdSeE51bWJlcicsIHRoaXMuc3RhdGUucnhOdW1iZXIpKSk7XG4gICAgcm9vdC5hcHBlbmRDaGlsZCh0aGlzLmVudGl0eShkb2MsICdDb250YWN0JyxcbiAgICAgICAgdGhpcy5lbnRpdHkoZG9jLCAnTGFzdE5hbWUnLCBsYXN0bmFtZSksXG4gICAgICAgIHRoaXMuZW50aXR5KGRvYywgJ0ZpcnN0TmFtZScsIGZpcnN0bmFtZSksXG4gICAgICAgIHRoaXMuZW50aXR5KGRvYywgJ1Bob25lJywgcGhvbmUpLFxuICAgICAgICB0aGlzLmVudGl0eShkb2MsICdFbWFpbCcsIGVtYWlsKSkpO1xuICAgIHJvb3QuYXBwZW5kQ2hpbGQodGhpcy5lbnRpdHkoZG9jLCAnQ29tbWVudCcsIG1lc3NhZ2UpKTtcbiAgICByZXR1cm4gZG9jO1xuICB9XG5cbiAgbG9hZCgpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICB0YWc6IHRoaXMuZ2V0U3RvcmVOdW1iZXIoKSxcbiAgICAgIHJ4X251bWJlcjogdGhpcy5nZXRSeE51bWJlcigpLFxuICAgICAgYXV0aDogdGhpcy5nZXRIYXNoKCksXG4gICAgfTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIGVuZHBvaW50OiAncXVlcnknLFxuICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgfTtcbiAgICBhcGlDYWxsKG9wdGlvbnMpLnRoZW4oIChyZXNwKSA9PiB7XG4gICAgICBjb25zdCByID0gSlNPTi5wYXJzZShyZXNwLmRhdGEpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHN0b3JlX25hbWU6IHIubmFtZSxcbiAgICAgICAgbG9nbzogci5sb2dvLFxuICAgICAgICBzdG9yZV9hZGRyZXNzOiByLmFkZHJlc3MxLFxuICAgICAgICBzdG9yZV9hZGRyZXNzX3R3bzogci5hZGRyZXNzMixcbiAgICAgICAgY2l0eTogci5jaXR5LFxuICAgICAgICBzdGF0ZTogci5zdGF0ZSxcbiAgICAgICAgemlwOiByLnppcCxcbiAgICAgICAgcGhhcm1hY3lfcGhvbmU6IHIucGhvbmUsXG4gICAgICAgIHN0b3JlX3V1aWQ6IHIuc3RvcmVfdXVpZCxcbiAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICByZWdpc3Rlcl9lbmFibGVkOiByLnNyc3JmbF9yZWdpc3RlcixcbiAgICAgICAgc2hvd0Zvcm06IHIuc3JzcmZsX3JlZ2lzdGVyID09ICdZJyA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgcGF0aWVudF91c2VyOiByLnVzZXJzICYmIHIudXNlcnMubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgaWYgKHIucGF0aWVudF91dWlkKSB7XG4gICAgICAgIHRoaXMuY29udGV4dC5zZXRQYXRpZW50KHIucGF0aWVudF91dWlkKTtcbiAgICAgIH1cbiAgICB9KS5jYXRjaCggKGVycikgPT4ge1xuICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBlcnI/LnJlc3BvbnNlPy5kYXRhID8gSlNPTi5wYXJzZShlcnIucmVzcG9uc2UuZGF0YSkgOiAnJztcbiAgICAgIGlmICghZGF0YSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3JzOiAnU29tZXRoaW5nIHVuZXhwZWN0ZWQgaGFwcGVuZWQnLCBsb2FkZWQ6IHRydWUgfSk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEucmVkaXJlY3QpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHJlZGlyZWN0OiB0cnVlLCBsb2FkZWQ6IHRydWUgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZGF0YS5tZXNzYWdlO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3JzOiBnZXRFcnJvck1lc3NhZ2UobWVzc2FnZSksIGxvYWRlZDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIGlmICghdGhpcy5zdGF0ZS5sb2FkZWQpIHtcbiAgICAgIHRoaXMubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RSZWZpbGwoKSB7XG4gICAgY29uc3QgcmVmaWxsID0gJzw/eG1sIHZlcnNpb249XCIxLjBcIj8+JyArIG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcodGhpcy5jb25zdHJ1Y3RYTUxEb2N1bWVudCgpKTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICBlbmRwb2ludDogJ3N1Ym1pdCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC94bWwnLFxuICAgICAgfSxcbiAgICAgIGRhdGE6IHJlZmlsbCxcbiAgICB9O1xuICAgIGFwaUNhbGwob3B0aW9ucykudGhlbiggKHJlc3ApID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICByZXF1ZXN0ZWQ6ICdSZWZpbGwgcmVxdWVzdGVkIHN1Y2Nlc3NmdWxseS4nLFxuICAgICAgICBzaG93UmVnaXN0ZXJCdXR0b246IHRoaXMuc3RhdGUucmVnaXN0ZXJfZW5hYmxlZCA9PSAnTycgPyB0cnVlIDogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9KS5jYXRjaCggKGVycikgPT4ge1xuICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcnM6IGdldEVycm9yTWVzc2FnZShlcnIpLCBsb2FkZWQ6IHRydWUgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgbGV0IGJvZHkgPSAoXG4gICAgICA8TG9hZGluZy8+XG4gICAgKTtcbiAgICBpZiAoIXRoaXMuc3RhdGUubG9hZGVkKSB7XG4gICAgICBib2R5ID0gKFxuICAgICAgICA8TG9hZGluZy8+XG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5yZWRpcmVjdCkge1xuICAgICAgY29uc3Qgc3RvcmV0YWcgPSB0aGlzLmdldFN0b3JlTnVtYmVyKCk7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICd3ZWJyZWZpbGxmb3JtLycgKyBzdG9yZXRhZztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuZXJyb3JzKSB7XG4gICAgICBsZXQgZXJyb3IgPSAnJztcbiAgICAgIGlmICh0aGlzLnN0YXRlLmVycm9ycyA9PSAnSW52YWxpZCBkYXRhIGZvcm1hdCcgfHwgdGhpcy5zdGF0ZS5lcnJvcnMgPT0gJ1VuZXhwZWN0ZWQgdmFsdWUgcHJvdmlkZScpIHtcbiAgICAgICAgZXJyb3IgPSAnTWlzc2luZyBvciBpbnZhbGlkIHN0b3JlIHRhZyBpbiByZXF1ZXN0JztcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tdWx0aS1zcGFjZXNcbiAgICAgIH0gZWxzZSBpZiAoICAgdGhpcy5zdGF0ZS5lcnJvcnMgPT0gJ05vdCBlbm91Z2ggcGFyYW1ldGVycyBzdXBwbGllZCBpbiByZXF1ZXN0J1xuICAgICAgICAgICAgICAgICB8fCB0aGlzLnN0YXRlLmVycm9ycyA9PSAnVW5leHBlY3RlZC9NaXNzaW5nIHF1ZXJ5IHN0cmluZyBzdXBwbGllZCcpIHtcbiAgICAgICAgZXJyb3IgPSAnTWlzc2luZyBzdG9yZSB0YWcgb3IgUnggbnVtYmVyIGluIHF1ZXJ5IHN0cmluZyc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuZXJyb3JzID09ICdJbnZhbGlkIGRhdGEgc3VwcGxpZWQgaW4gdGhlIHJlcXVlc3QnKSB7XG4gICAgICAgIGVycm9yID0gJ0ludmFsaWQgaGFzaCBnaXZlbiBpbiB0aGUgcXVlcnkgc3RyaW5nJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvciA/IGVycm9yIDogdGhpcy5zdGF0ZS5lcnJvcnMsXG4gICAgICB9O1xuICAgICAgYm9keSA9IChcbiAgICAgICAgRXJyb3IocHJvcHMpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5wYXRpZW50X3VzZXIpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAncG9ydGFsLmh0bWw/c3RvcmVfdXVpZD0nICsgdGhpcy5zdGF0ZS5zdG9yZV91dWlkICsgJyMvJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJvZHkgPSAoXG4gICAgICAgICAgPEdyaWQ+XG4gICAgICAgICAgICA8QXBwQmFyIHBvc2l0aW9uPVwic3RhdGljXCI+XG4gICAgICAgICAgICAgIDxUb29sYmFyPlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUubG9nbyA/IChcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e3RoaXMuc3RhdGUubG9nb30gc3R5bGU9e3sgbWFyZ2luOiAnNXB4JywgYm9yZGVyUmFkaXVzOiAnNXB4JywgaGVpZ2h0OiAnNXJlbScgfX0vPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+e3RoaXMuc3RhdGUuc3RvcmVfbmFtZX08L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L1Rvb2xiYXI+XG4gICAgICAgICAgICA8L0FwcEJhcj5cbiAgICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD0nY2VudGVyJz5cbiAgICAgICAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD0naDYnXG4gICAgICAgICAgICAgICAgICA+UmVmaWxsIFJlcXVlc3QgZm9yIFJ4IyB7dGhpcy5zdGF0ZS5yeE51bWJlcn1cbiAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPSdjb2x1bW4nIGp1c3RpZnlDb250ZW50PSdzcGFjZS1ldmVubHknIGFsaWduSXRlbXM9J2NlbnRlcicgc3BhY2luZz17Mn0+XG4gICAgICAgICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnJlcXVlc3RlZFxuICAgICAgICAgICAgICAgICAgICA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8Q29udGFpbmVyIG1heFdpZHRoPSdsZyc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFwZXIgc3F1YXJlPXtmYWxzZX0gZWxldmF0aW9uPXswfSB2YXJpYW50PSdvdXRsaW5lZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3sgY29sb3I6ICdncmVlbicsIHB5OiAnMC41cmVtJywgcHg6ICcxcmVtJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD0naDUnIGFsaWduPSdjZW50ZXInPiB7dGhpcy5zdGF0ZS5yZXF1ZXN0ZWR9PC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogPD48Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnNob3dGb3JtICYmIHRoaXMuc3RhdGUucmVnaXN0ZXJfZW5hYmxlZCAhPT0gJ04nXG4gICAgICAgICAgICAgICAgICAgID8gPFJlZ2lzdHJhdGlvbkZvcm1cbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZV91dWlkPXt0aGlzLnN0YXRlLnN0b3JlX3V1aWR9XG4gICAgICAgICAgICAgICAgICAgICAgc3RvcmVfbmFtZT17dGhpcy5zdGF0ZS5zdG9yZV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2VuYWJsZWQ9e3RoaXMuc3RhdGUucmVnaXN0ZXJfZW5hYmxlZH0vPlxuICAgICAgICAgICAgICAgICAgICA6IDw+PC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIXRoaXMuc3RhdGUuc2hvd0Zvcm0gJiYgIXRoaXMuc3RhdGUuc2hvd1JlZ2lzdGVyQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgID8gPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZV9idXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdFJlZmlsbChlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZV9idXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0IFJlZmlsbFxuICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgOiA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnNob3dSZWdpc3RlckJ1dHRvblxuICAgICAgICAgICAgICAgICAgPyA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPVwiY29sdW1uXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiIHdpZHRoPVwiMTAwJVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSBzeD17eyB0ZXh0QWxpZ246ICdjZW50ZXInLCBtYXJnaW46ICcycmVtJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDogVG8gbWFrZSB0aGlzIHByb2Nlc3MgZWFzaWVyIG5leHQgdGltZSwgcHJlc3MgQ29udGludWUgdG8gYmVnaW4gcmVnaXN0ZXJpbmcgZm9yIHt0aGlzLnN0YXRlLnN0b3JlX25hbWV9JmFwb3M7cyBQYXRpZW50IFBvcnRhbC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1JlZ2lzdGVyQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGb3JtOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgOiA8PjwvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPSdyb3cnIGp1c3RpZnlDb250ZW50PSdzcGFjZS1hcm91bmQnIGFsaWduSXRlbXM9J2NlbnRlcic+XG4gICAgICAgICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICBocmVmPXsgJy9tLycgKyB0aGlzLnN0YXRlLnRhZyB9XG4gICAgICAgICAgICAgICAgPk1vYmlsZSBTaXRlPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBocmVmPXsndGVsOi8vKzEnICsgdGhpcy5zdGF0ZS5waGFybWFjeV9waG9uZS5yZXBsYWNlKC9bXitcXGRdL2csICcnKX1cbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgIENhbGwgUGhhcm1hY3lcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBkaXJlY3Rpb249J2NvbHVtbicganVzdGlmeUNvbnRlbnQ9J2ZsZXgtZW5kJyBhbGlnbkl0ZW1zPSdjZW50ZXInPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeT57dGhpcy5zdGF0ZS5zdG9yZV9uYW1lfTwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+e3RoaXMuc3RhdGUuc3RvcmVfYWRkcmVzc308L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5Pnt0aGlzLnN0YXRlLmNpdHl9LCB7dGhpcy5zdGF0ZS5zdGF0ZX0ge3RoaXMuc3RhdGUuemlwfTwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+e3RoaXMuc3RhdGUucGhhcm1hY3lfcGhvbmV9PC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBIb21lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQvY29udGV4dC5qcyc7XG5pbXBvcnQgeyBIYXNoUm91dGVyLCBSb3V0ZXMsIFJvdXRlIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgSG9tZSBmcm9tICcuL3BhZ2VzL0hvbWUuanMnO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciwgY3JlYXRlVGhlbWUgfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcyc7XG5pbXBvcnQgeyBDc3NCYXNlbGluZSB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuXG5jbGFzcyBBcHAgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAjZGFya01vZGUgPSBudWxsO1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZXJyb3JzOiBudWxsLFxuICAgICAgdGhlbWU6ICdsaWdodCcsXG4gICAgfTtcbiAgICB0aGlzLnRoZW1lTGlnaHQgPSBjcmVhdGVUaGVtZSh7XG4gICAgICBwYWxldHRlOiB7XG4gICAgICAgIG1vZGU6ICdsaWdodCcsXG4gICAgICAgIGJhY2tncm91bmQ6IHtcbiAgICAgICAgICBkZWZhdWx0OiAnI2VmZWZlZicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMudGhlbWVEYXJrID0gY3JlYXRlVGhlbWUoe1xuICAgICAgcGFsZXR0ZToge1xuICAgICAgICBtb2RlOiAnZGFyaycsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlVGhlbWUgPSB0aGlzLnVwZGF0ZVRoZW1lLmJpbmQodGhpcyk7XG4gICAgdGhpcy5wcmVmZXJzRGFya01vZGUgPSB0aGlzLnByZWZlcnNEYXJrTW9kZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0UGF0aWVudCA9IHRoaXMuc2V0UGF0aWVudC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0VXNlcm5hbWUgPSB0aGlzLnNldFVzZXJuYW1lLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRVc2VybmFtZSA9IHRoaXMuZ2V0VXNlcm5hbWUuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFBhdGllbnQgPSB0aGlzLmdldFBhdGllbnQuYmluZCh0aGlzKTtcbiAgICB0aGlzLnNldFBhc3N3b3JkID0gdGhpcy5zZXRQYXNzd29yZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0UGFzc3dvcmQgPSB0aGlzLmdldFBhc3N3b3JkLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zZXRVc2VyVVVJRCA9IHRoaXMuc2V0VXNlclVVSUQuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFVzZXJVVUlEID0gdGhpcy5nZXRVc2VyVVVJRC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0Rmlyc3ROYW1lID0gdGhpcy5zZXRGaXJzdE5hbWUuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldEZpcnN0TmFtZSA9IHRoaXMuZ2V0Rmlyc3ROYW1lLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zZXRMYXN0TmFtZSA9IHRoaXMuc2V0TGFzdE5hbWUuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldExhc3ROYW1lID0gdGhpcy5nZXRMYXN0TmFtZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVtb3ZlSXRlbSA9IHRoaXMucmVtb3ZlSXRlbS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0VG9rZW5zID0gdGhpcy5zZXRUb2tlbnMuYmluZCh0aGlzKTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMucHJlZmVyc0RhcmtNb2RlKCk7XG4gIH1cblxuICBhc3luYyBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBpZiAodGhpcy4jZGFya01vZGUpIHtcbiAgICAgIHRoaXMuI2RhcmtNb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMudXBkYXRlVGhlbWUpO1xuICAgICAgdGhpcy4jZGFya01vZGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByZWZlcnNEYXJrTW9kZSgpIHtcbiAgICB0aGlzLnVwZGF0ZVRoZW1lKCk7XG4gICAgdGhpcy4jZGFya01vZGUgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICAgIHRoaXMuI2RhcmtNb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMudXBkYXRlVGhlbWUpO1xuICB9XG5cbiAgdXBkYXRlVGhlbWUoZSA9IG51bGwpIHtcbiAgICBpZiAoIWUpIHtcbiAgICAgIGUgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICAgIH1cbiAgICBjb25zdCB0aGVtZSA9IGUubWF0Y2hlcyA/ICdkYXJrJyA6ICdsaWdodCc7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHRoZW1lIH0pO1xuICB9XG5cbiAgc2V0UGF0aWVudChkYXRhKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3BhdGllbnRfdXVpZCcsIGRhdGEpO1xuICB9XG5cbiAgc2V0VXNlcm5hbWUoZGF0YSkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VybmFtZScsIGRhdGEpO1xuICB9XG5cbiAgZ2V0VXNlcm5hbWUoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlcm5hbWUnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXRQYXRpZW50KCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BhdGllbnRfdXVpZCcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNldFRva2VucyhkYXRhKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rva2VucycsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICB0aGlzLnNldFN0YXRlKHsgYXV0aFRva2VuczogZGF0YSB9KTtcbiAgfVxuXG4gIHNldFBhc3N3b3JkKGRhdGEpIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncGFzc3dvcmQnLCBkYXRhKTtcbiAgfVxuXG4gIGdldFBhc3N3b3JkKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Bhc3N3b3JkJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2V0VXNlclVVSUQoZGF0YSkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VyX3V1aWQnLCBkYXRhKTtcbiAgfVxuXG4gIGdldFVzZXJVVUlEKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJfdXVpZCcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpcnN0TmFtZShkYXRhKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZpcnN0X25hbWUnLCBkYXRhKTtcbiAgfVxuXG4gIGdldEZpcnN0TmFtZSgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmaXJzdF9uYW1lJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2V0TGFzdE5hbWUoZGF0YSkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYXN0X25hbWUnLCBkYXRhKTtcbiAgfVxuXG4gIGdldExhc3ROYW1lKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhc3RfbmFtZScpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUl0ZW0oZGF0YSkge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGRhdGEpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHZhbHMgPSB7XG4gICAgICBhdXRoVG9rZW5zOiB0aGlzLnN0YXRlLmF1dGhUb2tlbnMsXG4gICAgICBzZXRVc2VybmFtZTogdGhpcy5zZXRVc2VybmFtZSxcbiAgICAgIGdldFVzZXJuYW1lOiB0aGlzLmdldFVzZXJuYW1lLFxuICAgICAgc2V0UGF0aWVudDogdGhpcy5zZXRQYXRpZW50LFxuICAgICAgZ2V0UGF0aWVudDogdGhpcy5nZXRQYXRpZW50LFxuICAgICAgc2V0UGFzc3dvcmQ6IHRoaXMuc2V0UGFzc3dvcmQsXG4gICAgICBnZXRQYXNzd29yZDogdGhpcy5nZXRQYXNzd29yZCxcbiAgICAgIHNldFVzZXJVVUlEOiB0aGlzLnNldFVzZXJVVUlELFxuICAgICAgZ2V0VXNlclVVSUQ6IHRoaXMuZ2V0VXNlclVVSUQsXG4gICAgICBzZXRGaXJzdE5hbWU6IHRoaXMuc2V0Rmlyc3ROYW1lLFxuICAgICAgZ2V0Rmlyc3ROYW1lOiB0aGlzLmdldEZpcnN0TmFtZSxcbiAgICAgIHNldExhc3ROYW1lOiB0aGlzLnNldExhc3ROYW1lLFxuICAgICAgZ2V0TGFzdE5hbWU6IHRoaXMuZ2V0TGFzdE5hbWUsXG4gICAgICByZW1vdmVJdGVtOiB0aGlzLnJlbW92ZUl0ZW0sXG4gICAgICBzZXRBdXRoVG9rZW5zOiB0aGlzLnNldFRva2VucyxcbiAgICB9O1xuICAgIHJldHVybiAoXG4gICAgICA8Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsc30+XG4gICAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGlzLnN0YXRlLnRoZW1lID09PSAnZGFyaycgPyB0aGlzLnRoZW1lRGFyayA6IHRoaXMudGhlbWVMaWdodH0+XG4gICAgICAgICAgPENzc0Jhc2VsaW5lLz5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPEhhc2hSb3V0ZXI+XG4gICAgICAgICAgICAgIDxSb3V0ZXM+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9Jy8nIGVsZW1lbnQ9ezxIb21lIHRoZW1lTW9kZT17dGhpcy5zdGF0ZS50aGVtZX0gLz59IC8+XG4gICAgICAgICAgICAgIDwvUm91dGVzPlxuICAgICAgICAgICAgPC9IYXNoUm91dGVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgICA8L0NvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBcHA7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuaW1wb3J0IEFwcCBmcm9tICcuL0FwcCc7XG5cbmNvbnN0IHJvb3QgPSBSZWFjdERPTS5jcmVhdGVSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKSk7XG5yb290LnJlbmRlcihcbiAgICA8UmVhY3QuU3RyaWN0TW9kZT5cbiAgICAgIDxBcHAgLz5cbiAgICA8L1JlYWN0LlN0cmljdE1vZGU+XG4pO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0MTc5OiAwXG59O1xuXG4vLyBubyBjaHVuayBvbiBkZW1hbmQgbG9hZGluZ1xuXG4vLyBubyBwcmVmZXRjaGluZ1xuXG4vLyBubyBwcmVsb2FkZWRcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdFxuXG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8uaiA9IChjaHVua0lkKSA9PiAoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID09PSAwKTtcblxuLy8gaW5zdGFsbCBhIEpTT05QIGNhbGxiYWNrIGZvciBjaHVuayBsb2FkaW5nXG52YXIgd2VicGFja0pzb25wQ2FsbGJhY2sgPSAocGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24sIGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3QsXG5cdC8vIHRoZW4gZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFja1xuXHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwO1xuXHRpZihjaHVua0lkcy5zb21lKChpZCkgPT4gKGluc3RhbGxlZENodW5rc1tpZF0gIT09IDApKSkge1xuXHRcdGZvcihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcblx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYocnVudGltZSkgdmFyIHJlc3VsdCA9IHJ1bnRpbWUoX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cdH1cblx0aWYocGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24pIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xuXHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuXHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oaW5zdGFsbGVkQ2h1bmtzLCBjaHVua0lkKSAmJiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcblx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXVswXSgpO1xuXHRcdH1cblx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAwO1xuXHR9XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLk8ocmVzdWx0KTtcbn1cblxudmFyIGNodW5rTG9hZGluZ0dsb2JhbCA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtzcnNyZmxfcmVhY3RcIl0gPSBzZWxmW1wid2VicGFja0NodW5rc3JzcmZsX3JlYWN0XCJdIHx8IFtdO1xuY2h1bmtMb2FkaW5nR2xvYmFsLmZvckVhY2god2VicGFja0pzb25wQ2FsbGJhY2suYmluZChudWxsLCAwKSk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IHdlYnBhY2tKc29ucENhbGxiYWNrLmJpbmQobnVsbCwgY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2guYmluZChjaHVua0xvYWRpbmdHbG9iYWwpKTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGRlcGVuZHMgb24gb3RoZXIgbG9hZGVkIGNodW5rcyBhbmQgZXhlY3V0aW9uIG5lZWQgdG8gYmUgZGVsYXllZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbNCw3MzIsNzU2LDYzLDI5MSw5MDcsMzczLDEwOSwzOTQsMTQzXSwgKCkgPT4gKF9fd2VicGFja19yZXF1aXJlX18oMjI3KSkpXG5fX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKF9fd2VicGFja19leHBvcnRzX18pO1xuIl0sIm5hbWVzIjpbImRlZmVycmVkIiwibGVhZlByb3RvdHlwZXMiLCJnZXRQcm90byIsIkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiX1JlYWN0JENvbXBvbmVudCIsIl9pbmhlcml0cyIsIkxvYWRpbmciLCJfc3VwZXIiLCJwcm9wcyIsIl9jbGFzc0NhbGxDaGVjayIsImNhbGwiLCJrZXkiLCJ2YWx1ZSIsImJvZHkiLCJSZWFjdCIsIkNvbnRhaW5lciIsIm1heFdpZHRoIiwiUGFwZXIiLCJzdHlsZSIsInBhZGRpbmciLCJtYXJnaW5Ub3AiLCJHcmlkIiwiY29udGFpbmVyIiwiaXRlbSIsInhzIiwiQm94IiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiVHlwb2dyYXBoeSIsInZhcmlhbnQiLCJDaXJjdWxhclByb2dyZXNzIiwiRXJyb3IiLCJkaXJlY3Rpb24iLCJzcmMiLCJtZXNzYWdlIiwicmV0dXJuVG8iLCJCdXR0b24iLCJ3aWR0aCIsIm9uQ2xpY2siLCJlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwiZnVuYyIsIm9wdHMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImNvbnRleHQiLCJyZXNwb25zZVR5cGUiLCJ1cmwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhvc3RuYW1lIiwiaGVhZGVycyIsImF4aW9zIiwibWV0aG9kIiwidG9Mb3dlckNhc2UiLCJjb25jYXQiLCJlbmRwb2ludCIsInBhcmFtcyIsImRhdGEiLCJ0aGVuIiwiZXJyIiwiZXJyb3IiLCJyZXNwb25zZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpbmNsdWRlcyIsInN1YnN0cmluZyIsImxlbmd0aCIsIlJlZ2lzdHJhdGlvbkZvcm0iLCJfdGhpcyIsInN0YXRlIiwiZXJyb3JzIiwibG9hZGVkIiwidmlldyIsInN0b3JlX25hbWUiLCJzdG9yZV91dWlkIiwicGF0aWVudF91dWlkIiwibmV3X3BhdGllbnRfdXVpZCIsInVzZXJfdXVpZCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwiZGlzYWJsZWQiLCJmaWVsZHMiLCJmaWVsZHMyIiwidGl0bGUiLCJ0eXBlIiwidHlwZW5hbWUiLCJyZXF1aXJlZCIsIm9uQ2hhbmdlIiwiY29weSIsIl9vYmplY3RTcHJlYWQiLCJ0ZXN0IiwidHJpbSIsImZlZWRiYWNrIiwic2V0U3RhdGUiLCJmdWxsd2lkdGgiLCJlbWFpbCIsImNvbmZpcm0iLCJjb25maXJtYXRpb24iLCJjbGVhckZpZWxkcyIsImJpbmQiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiY2hhbmdlVmlldyIsInJlZ2lzdGVyVXNlciIsImNsZWFyU3RhdGUiLCJ0aGlzIiwidW5kZWZpbmVkIiwicmVtb3ZlSXRlbSIsIl90aGlzMiIsIm9wdGlvbnMiLCJnZXRQYXRpZW50IiwiYXBpQ2FsbCIsInJlc3AiLCJyIiwicGFyc2UiLCJ1c2VyIiwicGF0aWVudF91c2VyIiwic2V0VXNlclVVSUQiLCJzZXRQYXNzd29yZCIsInNldFVzZXJuYW1lIiwic2V0UGF0aWVudCIsInNldEZpcnN0TmFtZSIsInNldExhc3ROYW1lIiwiY29uc29sZSIsImxvZyIsImdldEVycm9yTWVzc2FnZSIsIl90aGlzMyIsImdldFVzZXJuYW1lIiwiZ2V0UGFzc3dvcmQiLCJnZXRVc2VyVVVJRCIsImNvZGUiLCJnZXRGaXJzdE5hbWUiLCJnZXRMYXN0TmFtZSIsInNldEF1dGhUb2tlbnMiLCJocmVmIiwiX3RoaXM0IiwicmVnaXN0ZXJTdWJ0aXRsZSIsInJlZ2lzdGVyX2VuYWJsZWQiLCJzeCIsImNvbG9yIiwiaWQiLCJzcGFjaW5nIiwiVGV4dEZpZWxkIiwiZnVsbFdpZHRoIiwic2l6ZSIsImxhYmVsIiwiaGVscGVyVGV4dCIsInRhcmdldCIsImJnY29sb3IiLCJjbGFzc05hbWUiLCJzdWJtaXQiLCJmaWVsZCIsImNvbmZpcm1Db2RlIiwiX2RlZmluZVByb3BlcnR5IiwiSG9tZSIsInJlZGlyZWN0IiwidGFnIiwiZ2V0U3RvcmVOdW1iZXIiLCJyeE51bWJlciIsImdldFJ4TnVtYmVyIiwiaGFzaCIsImdldEhhc2giLCJsb2dvIiwic3RvcmVfYWRkcmVzcyIsInN0b3JlX2FkZHJlc3NfdHdvIiwiY2l0eSIsInppcCIsInBoYXJtYWN5X3Bob25lIiwicmVxdWVzdGVkIiwiZGlzYWJsZV9idXR0b24iLCJzaG93Rm9ybSIsInNob3dSZWdpc3RlckJ1dHRvbiIsInJlcXVlc3RSZWZpbGwiLCJnZXRGdWxsQXV0aCIsImNvbnN0cnVjdFhNTERvY3VtZW50IiwiZW50aXR5IiwibG9hZCIsInNlYXJjaCIsInJlcGxhY2UiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIl9zdGVwIiwiZG9jIiwiZW50aXR5TmFtZSIsImV4dHJhIiwic2xpY2UiLCJub2RlIiwiY3JlYXRlRWxlbWVudCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJkb25lIiwiYXJnIiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSIsImYiLCJsYXN0bmFtZSIsImZpcnN0bmFtZSIsInBob25lIiwiZG9jdW1lbnQiLCJpbXBsZW1lbnRhdGlvbiIsImNyZWF0ZURvY3VtZW50Iiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImdldFRpbWUiLCJ0b1N0cmluZyIsInJ4X251bWJlciIsImF1dGgiLCJuYW1lIiwiYWRkcmVzczEiLCJhZGRyZXNzMiIsInNyc3JmbF9yZWdpc3RlciIsInVzZXJzIiwiX2VyciRyZXNwb25zZSIsInJlZmlsbCIsIlhNTFNlcmlhbGl6ZXIiLCJzZXJpYWxpemVUb1N0cmluZyIsInN0b3JldGFnIiwiQXBwQmFyIiwicG9zaXRpb24iLCJUb29sYmFyIiwibWFyZ2luIiwiYm9yZGVyUmFkaXVzIiwiaGVpZ2h0Iiwic3F1YXJlIiwiZWxldmF0aW9uIiwicHkiLCJweCIsImFsaWduIiwidGV4dEFsaWduIiwicHJlc2NyaXB0aW9uIiwic2V0UmVmaWxsUmVzcG9uc2UiLCJ0aGVtZU1vZGUiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwidCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsImgiLCJsIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJfdHlwZW9mIiwiX19hd2FpdCIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJfbmV4dCIsIl90aHJvdyIsImluZm8iLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFwcGx5IiwiX2RlZmluZVByb3BlcnRpZXMiLCJkZXNjcmlwdG9yIiwiX3RvUHJvcGVydHlLZXkiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIl90b1ByaW1pdGl2ZSIsIl9zZXRQcm90b3R5cGVPZiIsIlJlZmVyZW5jZUVycm9yIiwiX2dldFByb3RvdHlwZU9mIiwiX2NsYXNzUHJpdmF0ZUZpZWxkU2V0IiwicmVjZWl2ZXIiLCJwcml2YXRlTWFwIiwic2V0IiwiX2NsYXNzQXBwbHlEZXNjcmlwdG9yU2V0IiwiX2NsYXNzRXh0cmFjdEZpZWxkRGVzY3JpcHRvciIsIl9jbGFzc1ByaXZhdGVGaWVsZEdldCIsImdldCIsIl9jbGFzc0FwcGx5RGVzY3JpcHRvckdldCIsImFjdGlvbiIsImhhcyIsIl9kYXJrTW9kZSIsIldlYWtNYXAiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJBcHAiLCJDb25zdHJ1Y3RvciIsInByb3RvUHJvcHMiLCJfY29tcG9uZW50V2lsbFVubW91bnQiLCJfY29tcG9uZW50RGlkTW91bnQiLCJEZXJpdmVkIiwiaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzaGFtIiwiUHJveHkiLCJCb29sZWFuIiwidmFsdWVPZiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJyZXN1bHQiLCJTdXBlciIsIk5ld1RhcmdldCIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwib2JqIiwiaW5zdGFuY2UiLCJwcml2YXRlQ29sbGVjdGlvbiIsIl9jaGVja1ByaXZhdGVSZWRlY2xhcmF0aW9uIiwidGhlbWUiLCJ0aGVtZUxpZ2h0IiwiY3JlYXRlVGhlbWUiLCJwYWxldHRlIiwibW9kZSIsImJhY2tncm91bmQiLCJkZWZhdWx0IiwidGhlbWVEYXJrIiwidXBkYXRlVGhlbWUiLCJwcmVmZXJzRGFya01vZGUiLCJzZXRUb2tlbnMiLCJfY2FsbGVlIiwiX2NvbnRleHQiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJtYXRjaE1lZGlhIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm1hdGNoZXMiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwiZ2V0SXRlbSIsImF1dGhUb2tlbnMiLCJ2YWxzIiwiUHJvdmlkZXIiLCJUaGVtZVByb3ZpZGVyIiwiQ3NzQmFzZWxpbmUiLCJIYXNoUm91dGVyIiwiUm91dGVzIiwiUm91dGUiLCJwYXRoIiwiZWxlbWVudCIsIlJlYWN0RE9NIiwiZ2V0RWxlbWVudEJ5SWQiLCJyZW5kZXIiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJleHBvcnRzIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIm0iLCJPIiwiY2h1bmtJZHMiLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiZnVsZmlsbGVkIiwiaiIsImV2ZXJ5Iiwic3BsaWNlIiwiZ2V0dGVyIiwiX19lc01vZHVsZSIsIm5zIiwiZGVmIiwiY3VycmVudCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZGVmaW5pdGlvbiIsInByb3AiLCJpbnN0YWxsZWRDaHVua3MiLCJjaHVua0lkIiwid2VicGFja0pzb25wQ2FsbGJhY2siLCJwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiIsIm1vcmVNb2R1bGVzIiwicnVudGltZSIsInNvbWUiLCJjaHVua0xvYWRpbmdHbG9iYWwiLCJfX3dlYnBhY2tfZXhwb3J0c19fIl0sInNvdXJjZVJvb3QiOiIifQ==